diff --git a/Company.Domain/CustomizeWorkshopGroupSettingsAgg/Entities/CustomizeWorkshopGroupSettings.cs b/Company.Domain/CustomizeWorkshopGroupSettingsAgg/Entities/CustomizeWorkshopGroupSettings.cs index 48bd4fd7..a12a6086 100644 --- a/Company.Domain/CustomizeWorkshopGroupSettingsAgg/Entities/CustomizeWorkshopGroupSettings.cs +++ b/Company.Domain/CustomizeWorkshopGroupSettingsAgg/Entities/CustomizeWorkshopGroupSettings.cs @@ -219,7 +219,7 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity } - var permittedToOverWrite = CustomizeWorkshopEmployeeSettingsCollection.Where(x => employeeIds.Contains(x.id)); + var permittedToOverWrite = CustomizeWorkshopEmployeeSettingsCollection.Where(x => employeeIds.Contains(x.EmployeeId)); foreach (var item in permittedToOverWrite) { diff --git a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs index 553a98fe..cf4a3e61 100644 --- a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs +++ b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs @@ -1602,19 +1602,19 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo foreach (var command in commands) { var fromDateGr = command.FromDate.ToGeorgianDateTime(); - if (_checkoutRepository.Exists(x => x.WorkshopId == workshopId && x.EmployeeId == command.EmployeeId && fromDateGr <= x.ContractStart)) + if (_checkoutRepository.Exists(x => x.WorkshopId == workshopId && x.EmployeeId == command.EmployeeId && fromDateGr <= x.ContractEnd)) { isSuccess = false; employeeIdsHasCheckout.Add(command.EmployeeId); } - if (_customizeCheckoutRepository.Exists(x => x.WorkshopId == workshopId && x.EmployeeId == command.EmployeeId && fromDateGr <= x.ContractStart)) + if (_customizeCheckoutRepository.Exists(x => x.WorkshopId == workshopId && x.EmployeeId == command.EmployeeId && fromDateGr <= x.ContractEnd)) { isSuccess = false; employeeIdsHasCheckout.Add(command.EmployeeId); } - if (_customizeCheckoutTempRepository.Exists(x => x.WorkshopId == workshopId && x.EmployeeId == command.EmployeeId && fromDateGr <= x.ContractStart)) + if (_customizeCheckoutTempRepository.Exists(x => x.WorkshopId == workshopId && x.EmployeeId == command.EmployeeId && fromDateGr <= x.ContractEnd)) { isSuccess = false; employeeIdsHasCheckout.Add(command.EmployeeId); diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs index 25a4917d..2b8be490 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs @@ -38,7 +38,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall public CustomizeWorkshopSettingsViewModel RollCallWorkshopSettings; public List RollCallEmployeeList; - public GroupingModel(IPasswordHasher passwordHasher, IWorkshopApplication workshopApplication, ICustomizeWorkshopSettingsApplication rollCallWorkshopSettingsApplication, IEmployeeApplication employeeApplication, IHttpContextAccessor contextAccessor, IAuthHelper authHelper, IRollCallEmployeeApplication rollCallEmployeeApplication, IRollCallApplication rollCallApplication) + public GroupingModel(IPasswordHasher passwordHasher, IWorkshopApplication workshopApplication, ICustomizeWorkshopSettingsApplication rollCallWorkshopSettingsApplication, IEmployeeApplication employeeApplication, IHttpContextAccessor contextAccessor, IAuthHelper authHelper, IRollCallEmployeeApplication rollCallEmployeeApplication, IRollCallApplication rollCallApplication) { _passwordHasher = passwordHasher; _workshopApplication = workshopApplication; @@ -249,19 +249,19 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall public IActionResult OnGetEmployeesHaveToChange(long groupId, bool isChange) { - var result = _customizeWorkshopSettingsApplication.GetEmployeeSettingsByGroupSettingsId(groupId) - .Where(x => x.IsSettingChanged = isChange).ToList(); - return new JsonResult(new - { - success = true, - data = result - }); + var result = _customizeWorkshopSettingsApplication.GetEmployeeSettingsByGroupSettingsId(groupId) + .Where(x => x.IsSettingChanged = isChange).ToList(); + return new JsonResult(new + { + success = true, + data = result + }); } public IActionResult OnPostChangeEditEmployee(EditCustomizeEmployeeSettings command, List reCalculateCommand) { - command.WorkshopId = _workshopId; - OperationResult result = _customizeWorkshopSettingsApplication.EditSimpleRollCallEmployeeSetting(command, reCalculateCommand); + command.WorkshopId = _workshopId; + OperationResult result = _customizeWorkshopSettingsApplication.EditSimpleRollCallEmployeeSetting(command, reCalculateCommand); return new JsonResult(new { success = result.IsSuccedded, @@ -280,14 +280,14 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall public IActionResult OnPostReCalculateValues(List command) { - var result = _rollCallApplication.RecalculateValues(_workshopId, command); + var result = _rollCallApplication.RecalculateValues(_workshopId, command); - return new JsonResult(new - { - success = result.IsSuccedded, - message = result.Message - }); - } + return new JsonResult(new + { + success = result.IsSuccedded, + message = result.Message + }); + } public IActionResult OnGetDownloadExcel() { @@ -359,6 +359,17 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall $"اطلاعات گروهبندی.xlsx"); } + public IActionResult OnPostValidateGroupEdit(List command) + { + var result = _customizeWorkshopSettingsApplication.ValidateReCalculateValueForGroupEdit(command, _workshopId); + return new JsonResult(new + { + success = result.IsSuccedded, + message = result.Message, + data = result.Data + }); + } + // public IActionResult OnGetGroupingSetting(long groupId) // { // var command = _customizeWorkshopSettingsApplication.GetCustomizeWorkshopGroupSettingsDetails(groupId); diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/_Partials/ConfirmEmployeeChangeModal.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/_Partials/ConfirmEmployeeChangeModal.cshtml index 6f3ac9e2..c190fecc 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/_Partials/ConfirmEmployeeChangeModal.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/_Partials/ConfirmEmployeeChangeModal.cshtml @@ -4,58 +4,59 @@ } + \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsClient/pages/RollCall/css/ConfirmEditGroupTimeChangeModal.css b/ServiceHost/wwwroot/AssetsClient/pages/RollCall/css/ConfirmEditGroupTimeChangeModal.css index d0658cd7..21ad9c9a 100644 --- a/ServiceHost/wwwroot/AssetsClient/pages/RollCall/css/ConfirmEditGroupTimeChangeModal.css +++ b/ServiceHost/wwwroot/AssetsClient/pages/RollCall/css/ConfirmEditGroupTimeChangeModal.css @@ -233,3 +233,10 @@ input:focus { user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */ } + +.hasPaySlip { + background-color: #ffe6e6 !important; + border: 1px solid #ff9999 !important; + color: #b30000; + font-weight: bold; +} diff --git a/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/ConfirmEmployeeChange.js b/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/ConfirmEmployeeChange.js index 9ecbfda8..1a621d3a 100644 --- a/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/ConfirmEmployeeChange.js +++ b/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/ConfirmEmployeeChange.js @@ -154,11 +154,12 @@ function employeeList() { } $('#initialDateInput').on('input', function () { - new Cleave('.dateInput', { - delimiters: ['/', '/'], - blocks: [4, 2, 2], - numericOnly: true - }); + $('.dateInput').mask('0000/00/00') + //new Cleave('.dateInput', { + // delimiters: ['/', '/'], + // blocks: [4, 2, 2], + // numericOnly: true + //}); // new Cleave('.dateInput', { // date: true, // datePattern: ['Y', 'm', 'd'] @@ -175,4 +176,30 @@ function updateRowIndexes() { $('.btn-card').each(function (index) { $(this).text(index + 1); }); +} +function updateListEmployeeOrderByCheckout(paidIds = []) { + const rows = []; + + $('#employeeTable .TaleRowCell').each(function () { + const $row = $(this); + const employeeId = parseInt($row.find('input[name="EmployeeId[]"]').val()); + const isPaid = paidIds.includes(employeeId); + + if (isPaid) { + $row.addClass('hasPaySlip'); + } else { + $row.removeClass('hasPaySlip'); + } + + rows.push({ element: $row, isPaid }); + }); + + rows.sort((a, b) => b.isPaid - a.isPaid); + + $('#employeeTable').empty(); + rows.forEach(({ element }) => { + $('#employeeTable').append(element); + }); + + updateRowIndexes(); } \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/ModalEditGroup.js b/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/ModalEditGroup.js index 8ae8f690..502811ba 100644 --- a/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/ModalEditGroup.js +++ b/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/ModalEditGroup.js @@ -851,48 +851,65 @@ async function postChangeEditGroup() { FromDate: $('[name="FromDate[]"]').eq(index).val() }); }); - - const response = await $.ajax({ + + const responseValid = await $.ajax({ dataType: 'json', type: 'POST', - url: ajaxEditGroupSave, + url: ajaxValidateGroupEditUrl, headers: { "RequestVerificationToken": antiForgeryToken }, - data: { ...saveData, reCalculateCommand: command } + data: { command } }); - if (response.success) { - isShiftChangedGlobal = true; + if (responseValid.success) { + const responseEditGroup = await $.ajax({ + dataType: 'json', + type: 'POST', + url: ajaxEditGroupSave, + headers: { "RequestVerificationToken": antiForgeryToken }, + data: { ...saveData, reCalculateCommand: command } + }); + if (responseEditGroup.success) { + isShiftChangedGlobal = true; - $('.alert-success-msg').show(); - $('.alert-success-msg p').text(response.message); - setTimeout(function () { - $('.alert-success-msg').hide(); - $('.alert-success-msg p').text(''); - }, 2000); + $('.alert-success-msg').show(); + $('.alert-success-msg p').text(responseEditGroup.message); + setTimeout(function () { + $('.alert-success-msg').hide(); + $('.alert-success-msg p').text(''); + }, 2000); - loadDataAjax(); - $('#btn-register').addClass('disable'); - $('#MainModal').modal('hide'); + loadDataAjax(); + $('#btn-register').addClass('disable'); + $('#MainModal').modal('hide'); - $('#ConfirmRecalculationLoading').hide(); - $('.btn-confirm').removeClass('disable'); - //} + $('#ConfirmRecalculationLoading').hide(); + $('.btn-confirm').removeClass('disable'); + //} + } else { + $('.alert-msg').show(); + $('.alert-msg p').text(responseEditGroup.message); + setTimeout(function () { + $('.alert-msg').hide(); + $('.alert-msg p').text(''); + }, 3500); + $('#ConfirmRecalculationLoading').hide(); + $('.btn-confirm').removeClass('disable'); + } } else { $('.alert-msg').show(); - $('.alert-msg p').text(response.message); + $('.alert-msg p').text(responseValid.message); setTimeout(function () { $('.alert-msg').hide(); $('.alert-msg p').text(''); }, 3500); - $('#ConfirmRecalculationLoading').hide(); + + // Updating the employees that who has checkout + updateListEmployeeOrderByCheckout(responseValid.data); $('.btn-confirm').removeClass('disable'); } } - - - async function saveReCalculateValues(command) { var btnConfirm = $('.btn-confirm').addClass('disable'); @@ -908,6 +925,7 @@ async function saveReCalculateValues(command) { headers: { "RequestVerificationToken": antiForgeryToken }, data: { command: command }, }); + if (response.success) { $('.alert-success-msg').show(); $('.alert-success-msg p').text(response.message);