diff --git a/CompanyManagment.App.Contracts/RollCallEmployee/IRollCallEmployeeApplication.cs b/CompanyManagment.App.Contracts/RollCallEmployee/IRollCallEmployeeApplication.cs index f0eb2718..b736b0bc 100644 --- a/CompanyManagment.App.Contracts/RollCallEmployee/IRollCallEmployeeApplication.cs +++ b/CompanyManagment.App.Contracts/RollCallEmployee/IRollCallEmployeeApplication.cs @@ -38,4 +38,5 @@ public interface IRollCallEmployeeApplication (int activeEmployees, int deActiveEmployees) GetActiveAndDeActiveRollCallEmployees(long workshopId); bool HasEmployees(long workshopId); #endregion + } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/RollCallEmployeeStatus/IRollCallEmployeeStatusApplication.cs b/CompanyManagment.App.Contracts/RollCallEmployeeStatus/IRollCallEmployeeStatusApplication.cs index 3cf197a3..7378dc7c 100644 --- a/CompanyManagment.App.Contracts/RollCallEmployeeStatus/IRollCallEmployeeStatusApplication.cs +++ b/CompanyManagment.App.Contracts/RollCallEmployeeStatus/IRollCallEmployeeStatusApplication.cs @@ -17,5 +17,7 @@ namespace CompanyManagment.App.Contracts.RollCallEmployeeStatus List GetActiveByWorkshopIdInDate(long workshopId, DateTime startDateGr, DateTime endDateGr); bool IsActiveInPeriod(long employeeId, long workshopId, DateTime startDate, DateTime endDate); - } + void SyncRollCallEmployeeWithLeftWork(long rollCallEmployeeId); + + } } diff --git a/CompanyManagment.Application/RollCallEmployeeApplication.cs b/CompanyManagment.Application/RollCallEmployeeApplication.cs index 9a307b2e..9f4630cd 100644 --- a/CompanyManagment.Application/RollCallEmployeeApplication.cs +++ b/CompanyManagment.Application/RollCallEmployeeApplication.cs @@ -17,204 +17,206 @@ namespace CompanyManagment.Application; public class RollCallEmployeeApplication : IRollCallEmployeeApplication { - private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository; - private readonly IRollCallEmployeeStatusApplication _rollCallEmployeeStatusApplication; - private readonly IEmployeeRepository _employeeRepository; - private readonly ILeftWorkRepository _leftWorkRepository; - private readonly IRollCallEmployeeStatusRepository _rollCallEmployeeStatusRepository; - private readonly IWebHostEnvironment _webHostEnvironment; - public RollCallEmployeeApplication(IRollCallEmployeeRepository rollCallEmployeeRepository, IEmployeeRepository employeeRepository, IRollCallEmployeeStatusApplication rollCallEmployeeStatusApplication, ILeftWorkRepository leftWorkRepository, IRollCallEmployeeStatusRepository rollCallEmployeeStatusRepository, IWebHostEnvironment webHostEnvironment) - { - _rollCallEmployeeRepository = rollCallEmployeeRepository; - _employeeRepository = employeeRepository; - _rollCallEmployeeStatusApplication = rollCallEmployeeStatusApplication; - _leftWorkRepository = leftWorkRepository; - _rollCallEmployeeStatusRepository = rollCallEmployeeStatusRepository; - _webHostEnvironment = webHostEnvironment; - } + private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository; + private readonly IRollCallEmployeeStatusApplication _rollCallEmployeeStatusApplication; + private readonly IEmployeeRepository _employeeRepository; + private readonly ILeftWorkRepository _leftWorkRepository; + private readonly IRollCallEmployeeStatusRepository _rollCallEmployeeStatusRepository; + private readonly IWebHostEnvironment _webHostEnvironment; + public RollCallEmployeeApplication(IRollCallEmployeeRepository rollCallEmployeeRepository, IEmployeeRepository employeeRepository, IRollCallEmployeeStatusApplication rollCallEmployeeStatusApplication, ILeftWorkRepository leftWorkRepository, IRollCallEmployeeStatusRepository rollCallEmployeeStatusRepository, IWebHostEnvironment webHostEnvironment) + { + _rollCallEmployeeRepository = rollCallEmployeeRepository; + _employeeRepository = employeeRepository; + _rollCallEmployeeStatusApplication = rollCallEmployeeStatusApplication; + _leftWorkRepository = leftWorkRepository; + _rollCallEmployeeStatusRepository = rollCallEmployeeStatusRepository; + _webHostEnvironment = webHostEnvironment; + } - public OperationResult Create(CreateRollCallEmployee command) - { - var opreation = new OperationResult(); + public OperationResult Create(CreateRollCallEmployee command) + { + var opreation = new OperationResult(); - if (_rollCallEmployeeRepository.Exists(x => - x.EmployeeId == command.EmployeeId && x.WorkshopId == command.EmployeeId)) - return opreation.Succcedded(); - var fullname = _employeeRepository.GetDetails(command.EmployeeId); - if (fullname == null) - return opreation.Failed("پرسنل یافت نشد"); + if (_rollCallEmployeeRepository.Exists(x => + x.EmployeeId == command.EmployeeId && x.WorkshopId == command.EmployeeId)) + return opreation.Succcedded(); + var fullname = _employeeRepository.GetDetails(command.EmployeeId); + if (fullname == null) + return opreation.Failed("پرسنل یافت نشد"); var create = new RollCallEmployee(command.WorkshopId, command.EmployeeId, fullname.FName, fullname.LName); _rollCallEmployeeRepository.Create(create); - if (command.HasUploadedImage == "true") - create.HasImage(); + if (command.HasUploadedImage == "true") + create.HasImage(); - _rollCallEmployeeRepository.SaveChanges(); - return opreation.Succcedded(create.id); + _rollCallEmployeeRepository.SaveChanges(); + return opreation.Succcedded(create.id); - } + } - public OperationResult Active(long id) - { - var opreation = new OperationResult(); + public OperationResult Active(long id) + { + var opreation = new OperationResult(); - var emp = _rollCallEmployeeRepository.Get(id); + var emp = _rollCallEmployeeRepository.Get(id); - if (emp == null) - return opreation.Failed("پرسنل یافت نشد"); + if (emp == null) + return opreation.Failed("پرسنل یافت نشد"); - if (!_leftWorkRepository.Exists(x => x.EmployeeId == emp.EmployeeId && x.WorkshopId == emp.WorkshopId && - x.StartWorkDate <= DateTime.Now && x.LeftWorkDate > DateTime.Now)) - return opreation.Failed("کارمند شروع به کار ندارد"); + if (!_leftWorkRepository.Exists(x => x.EmployeeId == emp.EmployeeId && x.WorkshopId == emp.WorkshopId && + x.StartWorkDate <= DateTime.Now && x.LeftWorkDate > DateTime.Now)) + return opreation.Failed("کارمند شروع به کار ندارد"); - if (emp.HasUploadedImage == "false") - return opreation.Failed("لطفا ابتدا عکس پرسنل را آپلود کنید"); + if (emp.HasUploadedImage == "false") + return opreation.Failed("لطفا ابتدا عکس پرسنل را آپلود کنید"); - using var transaction = new TransactionScope(); + using var transaction = new TransactionScope(); emp.Active(); - var operation2 = _rollCallEmployeeStatusApplication.Create(new CreateRollCallEmployeeStatus() { RollCallEmployeeId = id }); - if (operation2.IsSuccedded == false) - return operation2; - + var operation2 = _rollCallEmployeeStatusApplication.Create(new CreateRollCallEmployeeStatus() { RollCallEmployeeId = id }); + if (operation2.IsSuccedded == false) + return operation2; + _rollCallEmployeeRepository.SaveChanges(); transaction.Complete(); return operation2; - } + } - public OperationResult DeActive(long id) - { - var opreation = new OperationResult(); - var emp = _rollCallEmployeeRepository.GetWithRollCallStatus(id); - if (emp == null) - return opreation.Failed("پرسنل یافت نشد"); - var lastStatus = emp.EmployeesStatus.MaxBy(x => x.StartDate); - emp.DeActive(); - _rollCallEmployeeRepository.SaveChanges(); - _rollCallEmployeeStatusApplication.Deactivate(lastStatus.id); - return opreation.Succcedded(); - } + public OperationResult DeActive(long id) + { + var opreation = new OperationResult(); + var emp = _rollCallEmployeeRepository.GetWithRollCallStatus(id); + if (emp == null) + return opreation.Failed("پرسنل یافت نشد"); + var lastStatus = emp.EmployeesStatus.MaxBy(x => x.StartDate); + emp.DeActive(); + _rollCallEmployeeRepository.SaveChanges(); + _rollCallEmployeeStatusApplication.Deactivate(lastStatus.id); + return opreation.Succcedded(); + } - public OperationResult UploadedImage(long Employeeid, long WorkshopId) - { - var opreation = new OperationResult(); - var emp = _rollCallEmployeeRepository.GetByEmployeeIdAndWorkshopId(Employeeid, WorkshopId); - if (emp == null) - return opreation.Failed("پرسنل یافت نشد"); + public OperationResult UploadedImage(long Employeeid, long WorkshopId) + { + var opreation = new OperationResult(); + var emp = _rollCallEmployeeRepository.GetByEmployeeIdAndWorkshopId(Employeeid, WorkshopId); + if (emp == null) + return opreation.Failed("پرسنل یافت نشد"); - var rollCall = _rollCallEmployeeRepository.Get(emp.Id); - rollCall.HasImage(); - _rollCallEmployeeRepository.SaveChanges(); - var path = Path.Combine(_webHostEnvironment.ContentRootPath, "Faces", WorkshopId.ToString(), Employeeid.ToString()); - var thumbnailPath = Path.Combine(path, "Thumbnail.jpg"); - try - { - var thumbnail = Tools.ResizeImage(Path.Combine(path, "1.jpg"), 150, 150); - System.IO.File.WriteAllBytes(thumbnailPath, Convert.FromBase64String(thumbnail)); - } - catch - { - // ignored - } + var rollCall = _rollCallEmployeeRepository.Get(emp.Id); + rollCall.HasImage(); + _rollCallEmployeeRepository.SaveChanges(); + var path = Path.Combine(_webHostEnvironment.ContentRootPath, "Faces", WorkshopId.ToString(), Employeeid.ToString()); + var thumbnailPath = Path.Combine(path, "Thumbnail.jpg"); + try + { + var thumbnail = Tools.ResizeImage(Path.Combine(path, "1.jpg"), 150, 150); + System.IO.File.WriteAllBytes(thumbnailPath, Convert.FromBase64String(thumbnail)); + } + catch + { + // ignored + } - return opreation.Succcedded(); - } + return opreation.Succcedded(); + } - public List GetByWorkshopId(long workshopId) - { - return _rollCallEmployeeRepository.GetByWorkshopId(workshopId); - } + public List GetByWorkshopId(long workshopId) + { + return _rollCallEmployeeRepository.GetByWorkshopId(workshopId); + } - public EditRollCallEmployee GetDetails(long id) - { - return _rollCallEmployeeRepository.GetDetails(id); - } + public EditRollCallEmployee GetDetails(long id) + { + return _rollCallEmployeeRepository.GetDetails(id); + } - public RollCallEmployeeViewModel GetByEmployeeIdAndWorkshopId(long employeeId, long workshopId) - { - return _rollCallEmployeeRepository.GetByEmployeeIdAndWorkshopId(employeeId, workshopId); - } + public RollCallEmployeeViewModel GetByEmployeeIdAndWorkshopId(long employeeId, long workshopId) + { + return _rollCallEmployeeRepository.GetByEmployeeIdAndWorkshopId(employeeId, workshopId); + } - public List GetPersonnelRollCallListPaginate(RollCallEmployeeSearchModel command) - { + public List GetPersonnelRollCallListPaginate(RollCallEmployeeSearchModel command) + { return _rollCallEmployeeRepository.GetPersonnelRollCallListPaginate(command); } - public int activedPerson(long workshopId) - { - return _rollCallEmployeeRepository.activedPerson(workshopId); - } + public int activedPerson(long workshopId) + { + return _rollCallEmployeeRepository.activedPerson(workshopId); + } - #region Pooya - public List GetRollCallEmployeesByWorkshopId(long workshopId) - { - return _rollCallEmployeeRepository.GetRollCallEmployeesByWorkshopId(workshopId); - } - public List GetActivePersonnelByWorkshopId(long workshopId) - { - return _rollCallEmployeeRepository.GetActivePersonnelByWorkshopId(workshopId); - } + #region Pooya + public List GetRollCallEmployeesByWorkshopId(long workshopId) + { + return _rollCallEmployeeRepository.GetRollCallEmployeesByWorkshopId(workshopId); + } + public List GetActivePersonnelByWorkshopId(long workshopId) + { + return _rollCallEmployeeRepository.GetActivePersonnelByWorkshopId(workshopId); + } - public bool IsEmployeeRollCallActive(long employeeId, long workshopId) - { - RollCallEmployeeViewModel rollCallEmployee = _rollCallEmployeeRepository.GetByEmployeeIdAndWorkshopId(employeeId, workshopId); - if (rollCallEmployee == null || rollCallEmployee.IsActiveString != "true" || rollCallEmployee.HasUploadedImage != "true") - return false; - var now = DateTime.Now; - return _rollCallEmployeeStatusRepository.Exists(x => x.RollCallEmployeeId == rollCallEmployee.Id && x.StartDate < now && x.EndDate > now); - - - - } - - public List GetEmployeeRollCalls(long workshopId) - { - return _rollCallEmployeeRepository.GetEmployeeRollCalls(workshopId); - } - - public (int activeEmployees, int deActiveEmployees) GetActiveAndDeActiveRollCallEmployees(long workshopId) - { - return _rollCallEmployeeRepository.GetActiveAndDeActiveRollCallEmployees(workshopId); - } - - public List GetPersonnelRollCallListAll(long workshopId) - { - return _rollCallEmployeeRepository.GetPersonnelRollCallListAll(workshopId); - } - - public bool HasEmployees(long workshopId) - { - return _rollCallEmployeeRepository.HasEmployees(workshopId); - } - - public OperationResult ChangeEmployeeRollCallName(long rollCallEmployeeId, string fName, string lName) - { - OperationResult result = new(); - if (string.IsNullOrWhiteSpace(lName) || string.IsNullOrWhiteSpace(fName)) - return result.Failed("نام و نام خانوادگی نمی توانند خالی باشند"); - fName = fName.Trim(); - lName = lName.Trim(); - var fullName = $"{fName} {lName}"; - var entity = _rollCallEmployeeRepository.Get(rollCallEmployeeId); + public bool IsEmployeeRollCallActive(long employeeId, long workshopId) + { + RollCallEmployeeViewModel rollCallEmployee = _rollCallEmployeeRepository.GetByEmployeeIdAndWorkshopId(employeeId, workshopId); + if (rollCallEmployee == null || rollCallEmployee.IsActiveString != "true" || rollCallEmployee.HasUploadedImage != "true") + return false; + var now = DateTime.Now; + return _rollCallEmployeeStatusRepository.Exists(x => x.RollCallEmployeeId == rollCallEmployee.Id && x.StartDate < now && x.EndDate > now); - if (entity == null) - return result.Failed(ApplicationMessages.RecordNotFound); - if (_rollCallEmployeeRepository.Exists(x => x.WorkshopId == entity.WorkshopId && x.EmployeeFullName == fullName && x.id != rollCallEmployeeId)) - return result.Failed("نام و نام خانوادگی کارمند نمی تواند با نام و نام خانوادگی کارمند دیگری در آن کارگاه یکسان باشد"); + } - if (entity.IsActiveString != "true") - return result.Failed("امکان تغییر نام برای کارمند غیر فعال وجود ندارد"); + public List GetEmployeeRollCalls(long workshopId) + { + return _rollCallEmployeeRepository.GetEmployeeRollCalls(workshopId); + } + + public (int activeEmployees, int deActiveEmployees) GetActiveAndDeActiveRollCallEmployees(long workshopId) + { + return _rollCallEmployeeRepository.GetActiveAndDeActiveRollCallEmployees(workshopId); + } + + public List GetPersonnelRollCallListAll(long workshopId) + { + return _rollCallEmployeeRepository.GetPersonnelRollCallListAll(workshopId); + } + + public bool HasEmployees(long workshopId) + { + return _rollCallEmployeeRepository.HasEmployees(workshopId); + } + + + + public OperationResult ChangeEmployeeRollCallName(long rollCallEmployeeId, string fName, string lName) + { + OperationResult result = new(); + if (string.IsNullOrWhiteSpace(lName) || string.IsNullOrWhiteSpace(fName)) + return result.Failed("نام و نام خانوادگی نمی توانند خالی باشند"); + fName = fName.Trim(); + lName = lName.Trim(); + var fullName = $"{fName} {lName}"; + var entity = _rollCallEmployeeRepository.Get(rollCallEmployeeId); - entity.ChangeName(fName, lName); - _rollCallEmployeeRepository.SaveChanges(); - return result.Succcedded(); - } + if (entity == null) + return result.Failed(ApplicationMessages.RecordNotFound); + + if (_rollCallEmployeeRepository.Exists(x => x.WorkshopId == entity.WorkshopId && x.EmployeeFullName == fullName && x.id != rollCallEmployeeId)) + return result.Failed("نام و نام خانوادگی کارمند نمی تواند با نام و نام خانوادگی کارمند دیگری در آن کارگاه یکسان باشد"); + + if (entity.IsActiveString != "true") + return result.Failed("امکان تغییر نام برای کارمند غیر فعال وجود ندارد"); + + + entity.ChangeName(fName, lName); + _rollCallEmployeeRepository.SaveChanges(); + return result.Succcedded(); + } #endregion } \ No newline at end of file diff --git a/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs b/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs index a27afe0b..44acfd3e 100644 --- a/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs +++ b/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs @@ -134,5 +134,38 @@ namespace CompanyManagment.Application { return _employeeRollCallStatusRepository.GetAll(); } - } + + public void SyncRollCallEmployeeWithLeftWork(long rollCallEmployeeId) + { + var rollCallEmployee = _rollCallEmployeeRepository.GetWithRollCallStatus(rollCallEmployeeId); + if (rollCallEmployee == null) + return; + + var rollCallStatus = rollCallEmployee.EmployeesStatus.MaxBy(x => x.StartDate); + + if (rollCallStatus == null) + return; + + var today = DateTime.Today; + + var firstDayOfMonth = today.FindFirstDayOfMonthGr(); + + + + var employeeId = rollCallEmployee.EmployeeId; + var workshopId = rollCallEmployee.WorkshopId; + + var leftWork = _leftWorkRepository.GetLastLeftWorkByEmployeeIdAndWorkshopId(workshopId, employeeId); + + if (leftWork == null) + return; + + var startWork = leftWork.StartWorkDate; + + rollCallStatus.Edit(startWork < firstDayOfMonth ? firstDayOfMonth : startWork, rollCallStatus.EndDate); + + _employeeRollCallStatusRepository.SaveChanges(); + + } + } } diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/EmployeeUploadPicture.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/EmployeeUploadPicture.cshtml.cs index 2a707653..062d22e6 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/EmployeeUploadPicture.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/EmployeeUploadPicture.cshtml.cs @@ -360,8 +360,10 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall message = createRollCallEmployeeStatus.Message, }); } - } - else + _rollCallEmployeeStatusApplication.SyncRollCallEmployeeWithLeftWork(result.SendId); + + } + else { if ( rollCallEmployee.Statuses == null || rollCallEmployee.Statuses?.Any(x => x.StartDateGr <= DateTime.Now.Date && x.EndDateGr >= DateTime.Now.Date)== false) {