diff --git a/Company.Domain/CustomizeWorkshopGroupSettingsAgg/ICustomizeWorkshopGroupSettingsRepository.cs b/Company.Domain/CustomizeWorkshopGroupSettingsAgg/ICustomizeWorkshopGroupSettingsRepository.cs index bf68f7a1..5432c232 100644 --- a/Company.Domain/CustomizeWorkshopGroupSettingsAgg/ICustomizeWorkshopGroupSettingsRepository.cs +++ b/Company.Domain/CustomizeWorkshopGroupSettingsAgg/ICustomizeWorkshopGroupSettingsRepository.cs @@ -23,4 +23,6 @@ public interface ICustomizeWorkshopGroupSettingsRepository : IRepository GetShiftChangesGroupAndEmployees(long customizeWorkshopSettingsId); List GetEmployeeSettingsByWorkshopId(long workshopId); CustomizeWorkshopGroupSettingsViewModel GetEmployeesGroupSettingsByEmployeeId(long employeeId, long workshopId); + + + bool HasAnyEmployeeWithoutGroup(long workshopId); } \ No newline at end of file diff --git a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs index c0382908..799d7eb3 100644 --- a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs +++ b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs @@ -1488,6 +1488,11 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo return _customizeWorkshopGroupSettingsRepository.GetEmployeesGroupSettingsByEmployeeId(employeeId, workshopId); } + public bool HasAnyEmployeeWithoutGroup(long workshopId) + { + return _customizeWorkshopGroupSettingsRepository.HasAnyEmployeeWithoutGroup(workshopId); + } + private OperationResult CreateGeneralGroup(CustomizeWorkshopSettings entity) { var op = new OperationResult(); diff --git a/CompanyManagment.EFCore/Repository/CustomizeWorkshopGroupSettingsRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeWorkshopGroupSettingsRepository.cs index 5681e69c..c73d2a44 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeWorkshopGroupSettingsRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeWorkshopGroupSettingsRepository.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; +using System.Runtime.InteropServices.JavaScript; using _0_Framework.Application; using _0_Framework.InfraStructure; using Company.Domain.CustomizeWorkshopGroupSettingsAgg; @@ -73,29 +74,76 @@ public class CustomizeWorkshopGroupSettingsRepository(CompanyContext companyCont public List GetEmployeesWithoutGroupByWorkshopId(long workshopId) { - var workshopSettings = _companyContext.CustomizeWorkshopSettings.Where(x=>x.WorkshopId==workshopId); + //var workshopSettings = _companyContext.CustomizeWorkshopSettings.Where(x=>x.WorkshopId==workshopId); - if (workshopSettings == null) - return new(); + //if (workshopSettings == null) + // return new(); - var existsEmployees = _companyContext.CustomizeWorkshopEmployeeSettings - .AsSplitQuery().Include(x => x.CustomizeWorkshopGroupSettings) - .Where(x => x.WorkshopId == workshopId && !x.CustomizeWorkshopGroupSettings.MainGroup) - .Select(x => x.EmployeeId).ToList(); + var dateNow = DateTime.Now.Date; - var rollCallEmployees = _rollCallEmployeeRepository.GetActivePersonnelByWorkshopId(workshopId); + //var existsEmployees = _companyContext.CustomizeWorkshopEmployeeSettings + // .AsSplitQuery().Include(x => x.CustomizeWorkshopGroupSettings) + // .Where(x => x.WorkshopId == workshopId && !x.CustomizeWorkshopGroupSettings.MainGroup) + // .Select(x => x.EmployeeId).ToList(); - var employees = rollCallEmployees - .Where(x => !existsEmployees.Contains(x.EmployeeId)) - .Select(x => new EmployeeViewModel() - { - EmployeeFullName = x.EmployeeFullName, - Id = x.EmployeeId - }).ToList(); + //var rollCallEmployees = _rollCallEmployeeRepository.GetActivePersonnelByWorkshopId(workshopId); - return employees; + //var employees = rollCallEmployees + // .Where(x => !existsEmployees.Contains(x.EmployeeId)) + // .Select(x => new EmployeeViewModel() + // { + // EmployeeFullName = x.EmployeeFullName, + // Id = x.EmployeeId + // }).ToList(); + + var employees = _companyContext.RollCallEmployees + .Include(x => + x.EmployeesStatus) + .Where( + x => + x.WorkshopId == workshopId && + x.EmployeesStatus.Any(y => y.StartDate.Date <= dateNow && y.EndDate.Date > dateNow) && + x.HasUploadedImage == "true") + .GroupJoin(_companyContext.CustomizeWorkshopEmployeeSettings + .AsSplitQuery() + .Include(x => x.CustomizeWorkshopGroupSettings) + .Where(x => !x.CustomizeWorkshopGroupSettings.MainGroup && x.WorkshopId == workshopId), rollCallEmployee => rollCallEmployee.EmployeeId, + cws => cws.EmployeeId, + (rollCallEmployee, cws) => new { rollCallEmployee, cws }) + .SelectMany(x => x.cws.DefaultIfEmpty(), (x, cws) => new { x.rollCallEmployee, cws }) + .Where(x => x.cws == null).Select(x=> new EmployeeViewModel() + { + EmployeeFullName = x.rollCallEmployee.EmployeeFullName, + Id = x.rollCallEmployee.EmployeeId + }); + + return employees.ToList(); } + public bool HasAnyEmployeeWithoutGroup(long workshopId) + { + var dateNow = DateTime.Now.Date; + + var rollCallEmployeesWithoutCWS = _companyContext.RollCallEmployees + .Include(x => + x.EmployeesStatus) + .Where( + x => + x.WorkshopId == workshopId && + x.EmployeesStatus.Any(y => y.StartDate.Date <= dateNow && y.EndDate.Date > dateNow) && + x.HasUploadedImage == "true") + .GroupJoin(_companyContext.CustomizeWorkshopEmployeeSettings + .AsSplitQuery() + .Include(x => x.CustomizeWorkshopGroupSettings) + .Where(x => !x.CustomizeWorkshopGroupSettings.MainGroup && x.WorkshopId == workshopId), rollCallEmployee => rollCallEmployee.EmployeeId, + cws => cws.EmployeeId, + (rollCallEmployee, cws) => new { rollCallEmployee, cws }) + .SelectMany(x => x.cws.DefaultIfEmpty(), (x, cws) => new { x.rollCallEmployee, cws }) + .Any(x => x.cws == null); + + return rollCallEmployeesWithoutCWS; + + } public CustomizeWorkshopGroupSettings GetWithEmployees(long groupId) { return _companyContext.CustomizeWorkshopGroupSettings.AsSplitQuery().Include(x => x.CustomizeWorkshopEmployeeSettingsCollection) diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml.cs index 267ba121..c1839776 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml.cs @@ -83,8 +83,8 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall //if (isWorkshopIrregular == false) // return true; - var employeesWithoutGroup = _customizeWorkshopSettingsApplication.GetEmployeesWithoutGroupByWorkshopId(workshopId); - if (employeesWithoutGroup.Any()) + var employeesWithoutGroup = _customizeWorkshopSettingsApplication.HasAnyEmployeeWithoutGroup(workshopId); + if (employeesWithoutGroup) return false; return true; } diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/CurrentDay.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/CurrentDay.cshtml.cs index 214e4f57..62dc884e 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/CurrentDay.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/CurrentDay.cshtml.cs @@ -49,13 +49,9 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall public bool IrregularWorkshopHaveGroupedAllPersonnelValidation(long workshopId) { - var isWorkshopIrregular = _customizeWorkshopSettingsApplication - .GetWorkshopSettingsDetails(workshopId).WorkshopShiftStatus == WorkshopShiftStatus.Irregular; - if (isWorkshopIrregular == false) - return true; - var employeesWithoutGroup= _customizeWorkshopSettingsApplication.GetEmployeesWithoutGroupByWorkshopId(workshopId); - if (employeesWithoutGroup.Any()) + var employeesWithoutGroup= _customizeWorkshopSettingsApplication.HasAnyEmployeeWithoutGroup(workshopId); + if (employeesWithoutGroup) return false; return true; } diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs index fddae673..464db1d6 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs @@ -48,13 +48,13 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall } public bool IrregularWorkshopHaveGroupedAllPersonnelValidation(long workshopId) { - var isWorkshopIrregular = _customizeWorkshopSettingsApplication - .GetWorkshopSettingsDetails(workshopId).WorkshopShiftStatus == WorkshopShiftStatus.Irregular; + //var isWorkshopIrregular = _customizeWorkshopSettingsApplication + // .GetWorkshopSettingsDetails(workshopId).WorkshopShiftStatus == WorkshopShiftStatus.Irregular; - if (isWorkshopIrregular == false) - return true; - var employeesWithoutGroup = _customizeWorkshopSettingsApplication.GetEmployeesWithoutGroupByWorkshopId(workshopId); - if (employeesWithoutGroup.Any()) + //if (isWorkshopIrregular == false) + // return true; + var employeesWithoutGroup = _customizeWorkshopSettingsApplication.HasAnyEmployeeWithoutGroup(workshopId); + if (employeesWithoutGroup) return false; return true; }