diff --git a/Company.Domain/LeftWorkInsuranceAgg/ILeftWorkInsuranceRepository.cs b/Company.Domain/LeftWorkInsuranceAgg/ILeftWorkInsuranceRepository.cs index ef638a91..0d6de0d1 100644 --- a/Company.Domain/LeftWorkInsuranceAgg/ILeftWorkInsuranceRepository.cs +++ b/Company.Domain/LeftWorkInsuranceAgg/ILeftWorkInsuranceRepository.cs @@ -52,5 +52,8 @@ public interface ILeftWorkInsuranceRepository : IRepository List GetEmployeesWithContractExitOnly(long workshopId); + LeftWorkInsurance GetLastLeftWorkByEmployeeIdAndWorkshopId(long workshopId, long employeeId); + #endregion + } \ No newline at end of file diff --git a/CompanyManagment.Application/EmployeeAplication.cs b/CompanyManagment.Application/EmployeeAplication.cs index 4a683a38..7201bbac 100644 --- a/CompanyManagment.Application/EmployeeAplication.cs +++ b/CompanyManagment.Application/EmployeeAplication.cs @@ -30,6 +30,7 @@ using Company.Domain.CustomizeWorkshopGroupSettingsAgg; using Company.Domain.LeftWorkAgg; using CompanyManagment.App.Contracts.Employee.DTO; using Company.Domain.EmployeeAuthorizeTempAgg; +using Company.Domain.LeftWorkInsuranceAgg; namespace CompanyManagment.Application; @@ -59,8 +60,9 @@ public class EmployeeAplication : RepositoryBase, IEmployeeAppli private readonly IEmployeeClientTempRepository _employeeClientTempRepository; private readonly ICustomizeWorkshopGroupSettingsRepository _customizeWorkshopGroupSettingsRepository; private readonly IEmployeeAuthorizeTempRepository _employeeAuthorizeTempRepository; + private readonly ILeftWorkInsuranceRepository _leftWorkInsuranceRepository ; - public EmployeeAplication(IEmployeeRepository employeeRepository, CompanyContext context, IWorkshopRepository workShopRepository, IWebHostEnvironment webHostEnvironment, IRollCallEmployeeStatusApplication rollCallEmployeeStatusApplication, IRollCallEmployeeRepository rollCallEmployeeRepository, ICustomizeWorkshopSettingsApplication customizeWorkshopSettingsApplication, IEmployeeDocumentsApplication employeeDocumentsApplication, IEmployeeDocumentsRepository employeeDocumentsRepository, IEmployeeBankInformationApplication employeeBankInformationApplication, ILeftWorkTempRepository leftWorkTempRepository, IUidService uidService, ICustomizeWorkshopEmployeeSettingsRepository customizeWorkshopEmployeeSettingsRepository, IPersonnelCodeRepository personnelCodeRepository, IEmployeeClientTempRepository employeeClientTempRepository, ICustomizeWorkshopGroupSettingsRepository customizeWorkshopGroupSettingsRepository, ILeftWorkRepository leftWorkRepository, IEmployeeAuthorizeTempRepository employeeAuthorizeTempRepository) : base(context) + public EmployeeAplication(IEmployeeRepository employeeRepository, CompanyContext context, IWorkshopRepository workShopRepository, IWebHostEnvironment webHostEnvironment, IRollCallEmployeeStatusApplication rollCallEmployeeStatusApplication, IRollCallEmployeeRepository rollCallEmployeeRepository, ICustomizeWorkshopSettingsApplication customizeWorkshopSettingsApplication, IEmployeeDocumentsApplication employeeDocumentsApplication, IEmployeeDocumentsRepository employeeDocumentsRepository, IEmployeeBankInformationApplication employeeBankInformationApplication, ILeftWorkTempRepository leftWorkTempRepository, IUidService uidService, ICustomizeWorkshopEmployeeSettingsRepository customizeWorkshopEmployeeSettingsRepository, IPersonnelCodeRepository personnelCodeRepository, IEmployeeClientTempRepository employeeClientTempRepository, ICustomizeWorkshopGroupSettingsRepository customizeWorkshopGroupSettingsRepository, ILeftWorkRepository leftWorkRepository, IEmployeeAuthorizeTempRepository employeeAuthorizeTempRepository, ILeftWorkInsuranceRepository leftWorkInsuranceRepository) : base(context) { _context = context; _WorkShopRepository = workShopRepository; @@ -77,6 +79,7 @@ public class EmployeeAplication : RepositoryBase, IEmployeeAppli _employeeClientTempRepository = employeeClientTempRepository; _leftWorkRepository = leftWorkRepository; _employeeAuthorizeTempRepository = employeeAuthorizeTempRepository; + _leftWorkInsuranceRepository = leftWorkInsuranceRepository; _EmployeeRepository = employeeRepository; } @@ -1009,7 +1012,9 @@ public class EmployeeAplication : RepositoryBase, IEmployeeAppli var startLeftWork = command.StartLeftWork.ToGeorgianDateTime(); var leftWorkViewModel = _leftWorkRepository.GetLastLeftWorkByEmployeeIdAndWorkshopId(command.WorkshopId, employee.id); - PersonnelCodeDomain personnelCode = null; + + + PersonnelCodeDomain personnelCode = null; if (leftWorkViewModel != null) { if (leftWorkViewModel.HasLeft == false && leftWorkViewModel.LeftWorkDate > DateTime.Now) @@ -1024,10 +1029,16 @@ public class EmployeeAplication : RepositoryBase, IEmployeeAppli } else { - var lastPersonnelCodeByWorkshop = _personnelCodeRepository.GetLastPersonnelCodeByWorkshop(command.WorkshopId); + var insuranceLeftWork = + _leftWorkInsuranceRepository.GetLastLeftWorkByEmployeeIdAndWorkshopId(command.WorkshopId, employee.id); + if (insuranceLeftWork == null) + { + var lastPersonnelCodeByWorkshop = + _personnelCodeRepository.GetLastPersonnelCodeByWorkshop(command.WorkshopId); - personnelCode = new PersonnelCodeDomain(command.WorkshopId, - employee.id, lastPersonnelCodeByWorkshop + 1); + personnelCode = new PersonnelCodeDomain(command.WorkshopId, + employee.id, lastPersonnelCodeByWorkshop + 1); + } } var leftWorkTemp = LeftWorkTemp.CreateStartWork(command.WorkshopId, employee.id, startLeftWork, command.JobId); diff --git a/CompanyManagment.EFCore/Repository/LeftWorkInsuranceRepository.cs b/CompanyManagment.EFCore/Repository/LeftWorkInsuranceRepository.cs index fdd2f89e..72b977ef 100644 --- a/CompanyManagment.EFCore/Repository/LeftWorkInsuranceRepository.cs +++ b/CompanyManagment.EFCore/Repository/LeftWorkInsuranceRepository.cs @@ -796,5 +796,11 @@ public class LeftWorkInsuranceRepository : RepositoryBase x.WorkshopId == workshopId && x.EmployeeId == employeeId) + .OrderByDescending(x => x.StartWorkDate).FirstOrDefault(); + } + #endregion } \ No newline at end of file