feat: enhance CameraController with refined roll call enter/exit endpoints and HTTP client integration
This commit is contained in:
@@ -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<double> Embeddings { get; set; }
|
||||
public float Confidence { get; set; }
|
||||
}
|
||||
|
||||
public class CameraFlagRequest
|
||||
{
|
||||
public long EmployeeId { get; set; }
|
||||
|
||||
@@ -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
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user