diff --git a/ServiceHost/Areas/Camera/Controllers/CameraController.cs b/ServiceHost/Areas/Camera/Controllers/CameraController.cs index 5d685e0d..4578d4d4 100644 --- a/ServiceHost/Areas/Camera/Controllers/CameraController.cs +++ b/ServiceHost/Areas/Camera/Controllers/CameraController.cs @@ -34,6 +34,8 @@ public class CameraController : CameraBaseController private readonly ICameraAccountApplication _cameraAccountApplication; private readonly IEmployeeFaceEmbeddingApplication _employeeFaceEmbeddingApplication; private long _workshopId; + private readonly IHttpClientFactory _httpClientFactory; + private readonly HttpClient _faceEmbeddingHttpClient; public CameraController(IWebHostEnvironment webHostEnvironment, IConfiguration configuration, @@ -46,7 +48,7 @@ public class CameraController : CameraBaseController IAccountApplication accountApplication, IPasswordHasher passwordHasher, ICameraAccountApplication cameraAccountApplication, - IEmployeeFaceEmbeddingApplication employeeFaceEmbeddingApplication) + IEmployeeFaceEmbeddingApplication employeeFaceEmbeddingApplication, IHttpClientFactory httpClientFactory) { _webHostEnvironment = webHostEnvironment; _configuration = configuration; @@ -60,7 +62,11 @@ public class CameraController : CameraBaseController _passwordHasher = passwordHasher; _cameraAccountApplication = cameraAccountApplication; _employeeFaceEmbeddingApplication = employeeFaceEmbeddingApplication; + _httpClientFactory = httpClientFactory; + _faceEmbeddingHttpClient = httpClientFactory.CreateClient(); + _faceEmbeddingHttpClient.BaseAddress = new Uri("http://localhost:8000/"); _workshopId= authHelper.GetWorkshopId(); + } [HttpPost("login")] @@ -98,10 +104,44 @@ public class CameraController : CameraBaseController }); } - [HttpPost("exit/{flagId:long}")] - public IActionResult Exit(long flagId) + [HttpPost("exit")] + public IActionResult Exit([FromBody]RollCallExitRequest request) { + var employeeId = request.EmployeeId; + var flagId = request.FlagId; + bool rollCallEmployee = _rollCallEmployeeApplication.IsEmployeeRollCallActive(employeeId, + _workshopId); + + if (!rollCallEmployee) + { + throw new BadRequestException("پرسنل مورد نظر غیر فعال است"); + } + + _faceEmbeddingHttpClient.PostAsync("embeddings/refine", + JsonContent.Create(new { + employeeId, + workshopId = _workshopId, + embedding =request.Embeddings , + confidence =request.Confidence , + metadata =new{}, + + })); + + + + var repeatStatus = _rollCallApplication.CheckRepeat(employeeId, _workshopId); + switch (repeatStatus) + { + case "IncomRegistred-InvalidOut": + throw new BadRequestException("شما به تازگی ثبت ورود نموده اید ,تا 2 دقیقه نمی توانید ثبت خروج نمایید"); + + case "outRegistred-InvalidIncom": + throw new BadRequestException("شما به تازگی ثبت خروج نموده اید تا 2 دقیقه نمی توانید ثبت ورود نمایید"); + + } + var res = _rollCallApplication.Edit(flagId); + if (res.IsSuccedded) { return new JsonResult(new @@ -113,16 +153,50 @@ public class CameraController : CameraBaseController throw new BadRequestException(res.Message); } - [HttpPost("enter/{employeeId:long}")] - public IActionResult Enter(long employeeId) + [HttpPost("enter")] + public IActionResult Enter([FromBody]RollCallEnterRequest request) { + var employeeId = request.EmployeeId; var now = DateTime.Now; var command = new CreateRollCall() { WorkshopId = _workshopId, - EmployeeId = employeeId, + EmployeeId = request.EmployeeId, StartDate = now, }; + bool rollCallEmployee = _rollCallEmployeeApplication.IsEmployeeRollCallActive(employeeId, + _workshopId); + + if (!rollCallEmployee) + { + throw new BadRequestException("پرسنل مورد نظر غیر فعال است"); + } + + _faceEmbeddingHttpClient.PostAsync("embeddings/refine", + JsonContent.Create(new { + employeeId, + workshopId = _workshopId, + embedding =request.Embeddings , + confidence =request.Confidence , + metadata =new{}, + + + })); + + + + var repeatStatus = _rollCallApplication.CheckRepeat(employeeId, _workshopId); + switch (repeatStatus) + { + case "IncomRegistred-InvalidOut": + throw new BadRequestException("شما به تازگی ثبت ورود نموده اید ,تا 2 دقیقه نمی توانید ثبت خروج نمایید"); + + case "outRegistred-InvalidIncom": + throw new BadRequestException("شما به تازگی ثبت خروج نموده اید تا 2 دقیقه نمی توانید ثبت ورود نمایید"); + + } + + var res = _rollCallApplication.Create(command); if (res.IsSuccedded) { @@ -203,72 +277,7 @@ public class CameraController : CameraBaseController flag = flagId }); } - - - - [HttpGet("ShowPicture")] - public IActionResult ShowPicture(int index, long workshopId, long label) - { - var filePath = Path.Combine(_webHostEnvironment.ContentRootPath, "Faces", workshopId.ToString(), - label.ToString(), $"{index}.jpg"); - - if (!System.IO.File.Exists(filePath)) - { - return NotFound(); - } - - var contentType = "image/jpeg"; - return PhysicalFile(filePath, contentType); - } - - [HttpGet("PersonnelWorkshopAjax")] - public IActionResult PersonnelWorkshopAjax() - { - 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 new JsonResult(result); - } - else - { - return new JsonResult(new - { - isSuccess = false, - message = "کارگاه ای یافت نشد!" - }); - } - } - - [HttpPost("CheckPassword")] - public IActionResult CheckPassword([FromForm] 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 = "گذرواژه اشتباه است", - }); - } + [HttpGet("Logout")] public IActionResult Logout() @@ -278,6 +287,17 @@ public class CameraController : CameraBaseController } } +public class RollCallExitRequest:RollCallEnterRequest +{ + public long FlagId { get; set; } +} +public class RollCallEnterRequest +{ + public long EmployeeId { get; set; } + public List Embeddings { get; set; } + public float Confidence { get; set; } +} + public class CameraFlagRequest { public long EmployeeId { get; set; } diff --git a/ServiceHost/Properties/launchSettings.json b/ServiceHost/Properties/launchSettings.json index 45d087cb..89af9011 100644 --- a/ServiceHost/Properties/launchSettings.json +++ b/ServiceHost/Properties/launchSettings.json @@ -19,7 +19,7 @@ "sqlDebugging": true, "dotnetRunMessages": "true", "nativeDebugging": true, - "applicationUrl": "https://localhost:5004;http://localhost:5003;https://192.168.28.36:8080;http://192.168.28.36:8081", + "applicationUrl": "https://localhost:5004;http://localhost:5003;https://192.168.0.117:8080;http://192.168.0.117:8081", "jsWebView2Debugging": false, "hotReloadEnabled": true },