324 lines
11 KiB
C#
324 lines
11 KiB
C#
using System.Diagnostics;
|
|
using _0_Framework.Application;
|
|
using CompanyManagment.App.Contracts.Employee;
|
|
using CompanyManagment.App.Contracts.RollCall;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
using System.IO;
|
|
using AccountManagement.Application.Contracts.Account;
|
|
using AccountManagement.Application.Contracts.CameraAccount;
|
|
using AccountManagement.Domain.TaskAgg;
|
|
using CompanyManagment.App.Contracts.PersonnleCode;
|
|
using CompanyManagment.App.Contracts.RollCallEmployee;
|
|
using CompanyManagment.App.Contracts.RollCallService;
|
|
using AccountManagement.Domain.AccountAgg;
|
|
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
|
|
|
|
namespace ServiceHost.Areas.Camera.Pages;
|
|
|
|
[Authorize]
|
|
public class IndexModel : PageModel
|
|
{
|
|
private readonly IWebHostEnvironment _webHostEnvironment;
|
|
private readonly IConfiguration _configuration;
|
|
private readonly IEmployeeApplication _employeeApplication;
|
|
private readonly IRollCallApplication _rollCallApplication;
|
|
private readonly IRollCallServiceApplication _rollCallServiceApplication;
|
|
private readonly IRollCallEmployeeApplication _rollCallEmployeeApplication;
|
|
private readonly IAuthHelper _authHelper;
|
|
private readonly IPersonnelCodeApplication _personnelCodeApplication;
|
|
private readonly IAccountApplication _accountApplication;
|
|
private readonly IPasswordHasher _passwordHasher;
|
|
private readonly ICameraAccountApplication _cameraAccountApplication;
|
|
|
|
public long WorkshopId;
|
|
public string UrlPath { get; set; }
|
|
public List<ImageData> ImageDataList;
|
|
public List<long> PersonelIds;
|
|
|
|
public IndexModel(IWebHostEnvironment webHostEnvironment, IConfiguration configuration, IEmployeeApplication employeeApplication, IRollCallApplication rollCallApplication, IAuthHelper authHelper, IRollCallServiceApplication rollCallServiceApplication, IRollCallEmployeeApplication rollCallEmployeeApplication, IPersonnelCodeApplication personnelCodeApplication, IAccountApplication accountApplication, IPasswordHasher passwordHasher, ICameraAccountApplication cameraAccountApplication)
|
|
{
|
|
_webHostEnvironment = webHostEnvironment;
|
|
_configuration = configuration;
|
|
_employeeApplication = employeeApplication;
|
|
_rollCallApplication = rollCallApplication;
|
|
_authHelper = authHelper;
|
|
_rollCallServiceApplication = rollCallServiceApplication;
|
|
_rollCallEmployeeApplication = rollCallEmployeeApplication;
|
|
_personnelCodeApplication = personnelCodeApplication;
|
|
_accountApplication = accountApplication;
|
|
_passwordHasher = passwordHasher;
|
|
_cameraAccountApplication = cameraAccountApplication;
|
|
}
|
|
|
|
public IActionResult OnGet()
|
|
{
|
|
var cameraAccount = _authHelper.CameraAccountInfo();
|
|
WorkshopId = cameraAccount.WorkshopId;
|
|
UrlPath = $"{Request.Scheme}://{Request.Host}";
|
|
var service = _rollCallServiceApplication.GetActiveServiceByWorkshopId(cameraAccount.WorkshopId);
|
|
if (service != null && service.IsActiveString == "true")
|
|
{
|
|
if (_rollCallEmployeeApplication.GetByWorkshopId(cameraAccount.WorkshopId).Count > 0)
|
|
{
|
|
//var personnelIdsList = _rollCallEmployeeApplication.GetByWorkshopId(cameraAccount.WorkshopId)
|
|
// .Where(x => x.IsActiveString == "true" && x.HasUploadedImage == "true")
|
|
// .Select(x => x.EmployeeId);
|
|
|
|
//if (service.MaxPersonValid != -1)
|
|
//{
|
|
// PersonelIds = personnelIdsList.Take(service.MaxPersonValid).ToList();
|
|
//}
|
|
//else
|
|
//{
|
|
// PersonelIds = personnelIdsList.ToList();
|
|
//}
|
|
|
|
//var imageData = new List<ImageData>();
|
|
//foreach (var personId in PersonelIds)
|
|
//{
|
|
// for (int i = 1; i <= 2; i++)
|
|
// {
|
|
// byte[] fileContent = System.IO.File.ReadAllBytes($"{_webHostEnvironment.ContentRootPath}\\Faces\\{WorkshopId}\\{personId}\\{i}.jpg");
|
|
// imageData.Add(new ImageData()
|
|
// {
|
|
// ImagePath = Convert.ToBase64String(fileContent),
|
|
// ImageNumber = i,
|
|
// Id = personId
|
|
// });
|
|
// }
|
|
//}
|
|
//ImageDataList = imageData;
|
|
}
|
|
else
|
|
{
|
|
var message = "EmployeeNotFound";
|
|
return Redirect("/Camera/ErrorMessage?message=" + message);
|
|
}
|
|
|
|
} else
|
|
{
|
|
var message = "ServiceNotFound";
|
|
return Redirect("/Camera/ErrorMessage?message=" + message);
|
|
}
|
|
|
|
return Page();
|
|
}
|
|
|
|
//یافتن کد آی دی پرسنل توسط کد پرسنلی و چک کردن فعال یا غیر فعال بودن او
|
|
public IActionResult OnGetSendPersonelCodeToGetEmployeeId(long personelCode, long workshopId)
|
|
{
|
|
|
|
long employeeId = _personnelCodeApplication.GetEmployeeIdByPersonelCode(personelCode, workshopId);
|
|
|
|
if (employeeId == 0)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = false,
|
|
message = "کد پرسنلی یافت نشد",
|
|
});
|
|
}
|
|
else
|
|
{
|
|
bool rollcallEmployee = _rollCallEmployeeApplication.IsEmployeeRollCallActive(employeeId, workshopId);
|
|
if (!rollcallEmployee)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = false,
|
|
message = "پرسنل مورد نظر غیر فعال است",
|
|
|
|
});
|
|
}
|
|
var repeatStatus = _rollCallApplication.CheckRepeat(employeeId, workshopId);
|
|
switch (repeatStatus)
|
|
{
|
|
case "IncomRegistred-InvalidOut":
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = false,
|
|
message = "شما به تازگی ثبت ورود نموده اید ,تا 5 دقیقه نمی توانید ثبت خروج نمایید",
|
|
});
|
|
case "outRegistred-InvalidIncom":
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = false,
|
|
message = "شما به تازگی ثبت خروج نموده اید تا 5 دقیقه نمی توانید ثبت ورود نمایید",
|
|
});
|
|
}
|
|
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = true,
|
|
message = "",
|
|
personId = $"{employeeId}",
|
|
|
|
});
|
|
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// یافتن رول کالی که ثبت خروج ندارد و ارسال آن به فرانت
|
|
/// در صورت صفر بودن فلاگ پرسنل ثبت خروج کرده است
|
|
/// </summary>
|
|
/// <param name="employeeId"></param>
|
|
/// <param name="workshopId"></param>
|
|
/// <returns></returns>
|
|
public IActionResult OnGetEmployeeFlag(long employeeId, long workshopId)
|
|
{
|
|
var employeeFullName = _rollCallEmployeeApplication.GetByEmployeeIdAndWorkshopId(employeeId, workshopId).EmployeeFullName;
|
|
var flagId = _rollCallApplication.Flag(employeeId, workshopId);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
employeeName = employeeFullName,
|
|
flag = flagId
|
|
|
|
});
|
|
|
|
}
|
|
//ثبت خروج
|
|
public IActionResult OnGetOut(long flagId)
|
|
{
|
|
var res = _rollCallApplication.Edit(flagId);
|
|
if (res.IsSuccedded)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = true,
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = false,
|
|
});
|
|
}
|
|
}
|
|
|
|
//ثبت ورود
|
|
public IActionResult OnGetInCom(long employeeId, long workshopId)
|
|
{
|
|
var now = DateTime.Now;
|
|
var command = new CreateRollCall()
|
|
{
|
|
WorkshopId = workshopId,
|
|
EmployeeId = employeeId,
|
|
StartDate = now,
|
|
|
|
};
|
|
var res = _rollCallApplication.Create(command);
|
|
if (res.IsSuccedded)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = true,
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = false,
|
|
});
|
|
}
|
|
|
|
}
|
|
//دریافت عکس پرسنل برای آنالیز
|
|
public IActionResult OnGetShowPicture(int index,long workshopId,long label)
|
|
{
|
|
Console.WriteLine(index);
|
|
var filePath = $"\\Faces\\{workshopId}\\{label}\\{index}.jpg";
|
|
|
|
if (string.IsNullOrEmpty(filePath))
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
var serverRoot = $"{_webHostEnvironment.ContentRootPath}{filePath}";
|
|
|
|
|
|
if (!System.IO.File.Exists(serverRoot))
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
var contentType = "image/jpeg";
|
|
return PhysicalFile(serverRoot, contentType);
|
|
}
|
|
|
|
|
|
//لیست پرسنل در قسمت جستجوی بالا
|
|
public IActionResult OnGetPersonnelWorkshopAjax()
|
|
{
|
|
var cameraAccount = _authHelper.CameraAccountInfo();
|
|
if (cameraAccount.WorkshopId > 0)
|
|
{
|
|
var result = _rollCallEmployeeApplication.GetActivePersonnelByWorkshopId(cameraAccount.WorkshopId);
|
|
if (cameraAccount.WorkshopId == 170)
|
|
result = result.Select(x =>
|
|
{
|
|
if (x.PersonelCode == 477)
|
|
x.EmployeeLName = "نوزاد";
|
|
return x;
|
|
}).ToList();
|
|
return Partial("ViewPersonnelModal", result);
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = false,
|
|
message = "کارگاه ای یافت نشد!"
|
|
});
|
|
}
|
|
}
|
|
|
|
//دریافت گذرواژه جهت خروج
|
|
public IActionResult OnPostCheckPassword(string password)
|
|
{
|
|
var cameraAccount = _authHelper.CameraAccountInfo();
|
|
var cameraPassword = _cameraAccountApplication.GetDetails(cameraAccount.Id).Password;
|
|
(bool Verified, bool NeedUpgrade) result = _passwordHasher.Check(cameraPassword, password);
|
|
if (result.Verified)
|
|
{
|
|
_accountApplication.Logout();
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = true,
|
|
|
|
});
|
|
}
|
|
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = false,
|
|
errorMessage = "گذرواژه اشتباه است",
|
|
});
|
|
|
|
|
|
}
|
|
|
|
public IActionResult OnGetLogout()
|
|
{
|
|
_accountApplication.Logout();
|
|
return RedirectToPage("/Index");
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
public class ImageData
|
|
{
|
|
|
|
public string ImagePath { get; set; }
|
|
public int ImageNumber { get; set; }
|
|
public long Id { get; set; }
|
|
|
|
|
|
} |