From f626bbe791e3048e5849c275b8db8e71a5a5a461 Mon Sep 17 00:00:00 2001 From: SamSys Date: Tue, 10 Dec 2024 03:31:35 +0330 Subject: [PATCH] RollCall Control For client in admin - checkoutPrint change --- .../ICameraAccountApplication.cs | 11 +- .../CameraAccountApplication.cs | 38 +- .../ICameraAccountRepository.cs | 2 +- .../Repository/CameraAccountRepository.cs | 18 + .../CheckoutDailyRollCallViewModel.cs | 8 +- .../Workshop/IWorkshopApplication.cs | 3 + .../WorkshopAppliction.cs | 6 + .../Repository/RollCallRepository.cs | 59 +- DadmehrGostar.sln | 28 +- Query.Bootstrapper/Query.Bootstrapper.csproj | 18 + Query.Bootstrapper/QueryBootstrapper.cs | 17 + .../GetWorkshopWithRollCallHandler.cs | 91 + ...kshopWithRollCallServiceQueryParameters.cs | 7 + .../Models/WorkshopWithRollCallViewModel.cs | 24 + .../NotSignedContractEmployeesQueryHandler.cs | 47 + .../NotSignedContractEmployeesQueryModel.cs | 12 + Query/Query.csproj | 13 + .../Checkouts/PrintDetailsRollCall.cshtml | 44 +- .../_Partials/PrintDetailsRollCallRaw.cshtml | 44 +- .../Areas/Admin/Pages/Shared/_Menu.cshtml | 22 +- .../Company/Partial/_EmptySection.cshtml | 10 + .../Company/RollCall/CameraAccounts.cshtml | 204 ++ .../Company/RollCall/CameraAccounts.cshtml.cs | 221 +++ .../Pages/Company/RollCall/CaseHistory.cshtml | 391 ++++ .../Company/RollCall/CaseHistory.cshtml.cs | 208 ++ .../Pages/Company/RollCall/CurrentDay.cshtml | 356 ++++ .../Company/RollCall/CurrentDay.cshtml.cs | 99 + .../RollCall/EmployeeUploadPicture.cshtml | 141 ++ .../RollCall/EmployeeUploadPicture.cshtml.cs | 364 ++++ .../Pages/Company/RollCall/Grouping.cshtml | 102 + .../Pages/Company/RollCall/Grouping.cshtml.cs | 274 +++ .../Pages/Company/RollCall/Index.cshtml | 325 ++- .../Pages/Company/RollCall/Index.cshtml.cs | 17 +- .../RollCall/ModalAddEmployeeToGroup.cshtml | 63 + .../Company/RollCall/ModalAddRollCall.cshtml | 192 ++ .../ModalCameraAccountChangePassword.cshtml | 184 ++ .../Company/RollCall/ModalChangeName.cshtml | 92 + .../RollCall/ModalCreateAccountSetting.cshtml | 310 +++ .../Company/RollCall/ModalCreateGroup.cshtml | 201 ++ .../ModalEditEmployeeFromGroup.cshtml | 277 +++ .../Company/RollCall/ModalEditGroup.cshtml | 277 +++ .../Company/RollCall/ModalEditRollCall.cshtml | 320 +++ .../RollCall/ModalSettingWorkTime.cshtml | 189 ++ .../Company/RollCall/ModalTakeImages.cshtml | 234 +++ .../Pages/Company/RollCall/Options.cshtml | 306 +++ .../Pages/Company/RollCall/Options.cshtml.cs | 275 +++ .../ConfirmReplaceGroupAndEmployee.cshtml | 54 + .../WorkTimeSetting.cshtml | 125 ++ .../ConfirmEmployeeChangeModal.cshtml | 60 + .../Areas/AdminNew/Pages/Shared/_Menu.cshtml | 15 +- .../Company/Checkouts/CheckoutPrintAll.cshtml | 364 +--- .../Company/Checkouts/PrintOneRollCall.cshtml | 44 +- .../_Partials/PrintDetailsRollCallRaw.cshtml | 44 +- .../BonusesPayAndBaseYearPay.cshtml | 14 +- .../FineAbsenceDeduction.cshtml | 193 +- .../BonusesPayAndBaseYearPay.cshtml | 14 +- .../FineAbsenceDeduction.cshtml | 193 +- .../BonusesPayAndBaseYearPay.cshtml | 14 +- .../FineAbsenceDeduction.cshtml | 193 +- .../_ModalPartials/FridayAndHoliday.cshtml | 37 +- .../Company/Employees/CreateLeave.cshtml | 19 +- .../Pages/Company/Employees/Index.cshtml | 12 +- .../Pages/Company/Employees/Index.cshtml.cs | 4 +- .../Pages/Company/Employees/Leave.cshtml | 109 +- .../Company/Employees/LeaveCreateModal.cshtml | 135 +- .../Pages/Company/WorkFlow/LeaveCreate.cshtml | 4 +- ServiceHost/Program.cs | 2 + ServiceHost/ServiceHost.csproj | 27 + .../RollCall/css/CaseHistory.css | 62 + .../RollCall/css/ConfirmEmployeeChange.css | 145 ++ .../RollCall/css/CurrentDay.css | 68 + .../AssetsAdminNew/RollCall/css/Group.css | 458 +++++ .../RollCall/css/ModalCreateGroup.css | 214 ++ .../css/ModalEditEmployeeFromGroup.css | 210 ++ .../RollCall/css/ModalEditGroup.css | 319 +++ .../RollCall/css/ModalRollCallSetting.css | 388 ++++ .../RollCall/css/ModalTakeImages.css | 201 ++ .../RollCall/css/cameraAccounts.css | 407 ++++ .../RollCall/js/CameraAccounts.js | 258 +++ .../AssetsAdminNew/RollCall/js/CaseHistory.js | 1749 +++++++++++++++++ .../RollCall/js/ConfirmEmployeeChange.js | 54 + .../AssetsAdminNew/RollCall/js/CurrentDay.js | 251 +++ .../RollCall/js/EditSettingWorkTime.js | 378 ++++ .../RollCall/js/EmployeeUploadPicture.js | 420 ++++ .../AssetsAdminNew/RollCall/js/Grouping.js | 398 ++++ .../AssetsAdminNew/RollCall/js/Index.js | 38 + .../RollCall/js/ModalAddEmployeeToGroup.js | 230 +++ .../RollCall/js/ModalAddRollCall.js | 551 ++++++ .../RollCall/js/ModalCameraAccount.js | 499 +++++ .../js/ModalCameraAccountChangePassword.js | 329 ++++ .../RollCall/js/ModalChangeName.js | 66 + .../RollCall/js/ModalEditEmployeeGroup.js | 548 ++++++ .../RollCall/js/ModalEditGroup.js | 574 ++++++ .../RollCall/js/ModalEditRollCall.js | 310 +++ .../RollCall/js/ModalOTPAction.js | 253 +++ .../RollCall/js/ModalOTPActionFree.js | 164 ++ .../RollCall/js/ModalRollCallSetting.js | 539 +++++ .../RollCall/js/ModalSettingWorkTime.js | 60 + .../RollCall/js/ModalTakeImages.js | 434 ++++ .../AssetsAdminNew/RollCall/js/Plans.js | 73 + .../RollCall/js/modalcreategroup.js | 574 ++++++ ServiceHost/wwwroot/AssetsClient/css/card.css | 16 + .../wwwroot/AssetsClient/css/select2.css | 7 +- .../wwwroot/AssetsClient/css/style.css | 2 +- .../css/CheckoutTemporary.css | 69 +- .../css/CheckoutUnofficial.css | 10 +- .../css/ModalCheckoutTemporaryCreate.css | 134 ++ .../css/ModalCheckoutUnofficialCreate.css | 100 +- .../CustomizeCheckout/js/CheckoutTemporary.js | 1719 +++++++++++++++- .../js/CheckoutUnofficial.js | 446 +++-- .../js/ModalCheckoutTemporaryCreate.js | 199 ++ .../js/ModalCheckoutUnofficialCreate.js | 239 ++- .../pages/WorkFlow/js/LeaveCreate.js | 14 +- .../pages/WorkFlow/js/RollCall.js | 56 +- 114 files changed, 20815 insertions(+), 1238 deletions(-) create mode 100644 Query.Bootstrapper/Query.Bootstrapper.csproj create mode 100644 Query.Bootstrapper/QueryBootstrapper.cs create mode 100644 Query/AdminReports/Handlers/GetWorkshopWithRollCallHandler.cs create mode 100644 Query/AdminReports/Models/WorkshopWithRollCallServiceQueryParameters.cs create mode 100644 Query/AdminReports/Models/WorkshopWithRollCallViewModel.cs create mode 100644 Query/ClientReports/Handler/NotSignedContractEmployeesQueryHandler.cs create mode 100644 Query/ClientReports/Models/NotSignedContractEmployeesQueryModel.cs create mode 100644 Query/Query.csproj create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/Partial/_EmptySection.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/CameraAccounts.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/CameraAccounts.cshtml.cs create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/CaseHistory.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/CaseHistory.cshtml.cs create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/CurrentDay.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/CurrentDay.cshtml.cs create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/EmployeeUploadPicture.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/EmployeeUploadPicture.cshtml.cs create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Grouping.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Grouping.cshtml.cs create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/ModalAddEmployeeToGroup.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/ModalAddRollCall.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/ModalCameraAccountChangePassword.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/ModalChangeName.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/ModalCreateAccountSetting.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/ModalCreateGroup.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/ModalEditEmployeeFromGroup.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/ModalEditGroup.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/ModalEditRollCall.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/ModalSettingWorkTime.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/ModalTakeImages.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Options.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Options.cshtml.cs create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/_ModalWorkTimePartials/ConfirmReplaceGroupAndEmployee.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/_ModalWorkTimePartials/WorkTimeSetting.cshtml create mode 100644 ServiceHost/Areas/AdminNew/Pages/Company/RollCall/_Partials/ConfirmEmployeeChangeModal.cshtml create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/css/CaseHistory.css create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/css/ConfirmEmployeeChange.css create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/css/CurrentDay.css create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/css/Group.css create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/css/ModalCreateGroup.css create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/css/ModalEditEmployeeFromGroup.css create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/css/ModalEditGroup.css create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/css/ModalRollCallSetting.css create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/css/ModalTakeImages.css create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/css/cameraAccounts.css create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/CameraAccounts.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/CaseHistory.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ConfirmEmployeeChange.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/CurrentDay.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/EditSettingWorkTime.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/EmployeeUploadPicture.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/Grouping.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/Index.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalAddEmployeeToGroup.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalAddRollCall.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalCameraAccount.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalCameraAccountChangePassword.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalChangeName.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalEditEmployeeGroup.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalEditGroup.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalEditRollCall.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalOTPAction.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalOTPActionFree.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalRollCallSetting.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalSettingWorkTime.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/ModalTakeImages.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/Plans.js create mode 100644 ServiceHost/wwwroot/AssetsAdminNew/RollCall/js/modalcreategroup.js create mode 100644 ServiceHost/wwwroot/AssetsClient/pages/CustomizeCheckout/css/ModalCheckoutTemporaryCreate.css create mode 100644 ServiceHost/wwwroot/AssetsClient/pages/CustomizeCheckout/js/ModalCheckoutTemporaryCreate.js diff --git a/AccountManagement.Application.Contracts/CameraAccount/ICameraAccountApplication.cs b/AccountManagement.Application.Contracts/CameraAccount/ICameraAccountApplication.cs index 18c8448c..164064ab 100644 --- a/AccountManagement.Application.Contracts/CameraAccount/ICameraAccountApplication.cs +++ b/AccountManagement.Application.Contracts/CameraAccount/ICameraAccountApplication.cs @@ -18,7 +18,7 @@ public interface ICameraAccountApplication OperationResult DeActive(long id); OperationResult ChangePass(ChangePassword command); bool HasCameraAccount(long workshopId, long accountId); - List GetAllByWorkshopIdAndAccountId(long accountId, List<(long Id, string Name)> workshops); + OperationResult CheckUsername(string username); #region Safa @@ -26,4 +26,13 @@ public interface ICameraAccountApplication EditCameraAccount GetDetailsByWorkshop(long workshopId); #endregion + + + #region Pooya + + List GetAllByWorkshopIdAndAccountId(long accountId, List<(long Id, string Name)> workshops); + + List GetAllByWorkshopId(long workshopId); + + #endregion } \ No newline at end of file diff --git a/AccountManagement.Application/CameraAccountApplication.cs b/AccountManagement.Application/CameraAccountApplication.cs index a1885e7e..bf0c02c2 100644 --- a/AccountManagement.Application/CameraAccountApplication.cs +++ b/AccountManagement.Application/CameraAccountApplication.cs @@ -59,21 +59,8 @@ public class CameraAccountApplication : ICameraAccountApplication return _cameraAccountRepository.Exists(x => x.WorkshopId == workshopId && x.AccountId == accountId); } - public List GetAllByWorkshopIdAndAccountId(long accountId, List<(long Id, string Name)> workshops) - { - var cameraAccounts = _cameraAccountRepository.GetAllByAccountId(accountId); - return cameraAccounts.Select(x => new CameraAccountViewModel() - { - AccountId = x.AccountId, - Id = x.Id, - IsActiveString = x.IsActiveString, - Username = x.Username, - Mobile = x.Mobile, - WorkshopId = x.WorkshopId, - WorkshopName = workshops.FirstOrDefault(y => x.WorkshopId == y.Id).Name - }).ToList(); - } + public OperationResult CheckUsername(string username) { @@ -135,4 +122,27 @@ public class CameraAccountApplication : ICameraAccountApplication } #endregion + + #region Pooya + + public List GetAllByWorkshopIdAndAccountId(long accountId, List<(long Id, string Name)> workshops) + { + var cameraAccounts = _cameraAccountRepository.GetAllByAccountId(accountId); + + return cameraAccounts.Select(x => new CameraAccountViewModel() + { + AccountId = x.AccountId, + Id = x.Id, + IsActiveString = x.IsActiveString, + Username = x.Username, + Mobile = x.Mobile, + WorkshopId = x.WorkshopId, + WorkshopName = workshops.FirstOrDefault(y => x.WorkshopId == y.Id).Name + }).ToList(); + } + public List GetAllByWorkshopId(long workshopId) + { + return _cameraAccountRepository.GetAllByWorkshopId(workshopId); + } + #endregion } \ No newline at end of file diff --git a/AccountManagement.Domain/CameraAccountAgg/ICameraAccountRepository.cs b/AccountManagement.Domain/CameraAccountAgg/ICameraAccountRepository.cs index 15ebbbdc..57ccd0a2 100644 --- a/AccountManagement.Domain/CameraAccountAgg/ICameraAccountRepository.cs +++ b/AccountManagement.Domain/CameraAccountAgg/ICameraAccountRepository.cs @@ -15,9 +15,9 @@ namespace AccountManagement.Domain.CameraAccountAgg CameraAccount GetBy(string username); CameraAccount GetById(long id); EditCameraAccount GetDetails(long id); - #region Pooya List GetAllByAccountId(long accountId); + List GetAllByWorkshopId(long workshopId); #endregion #region Safa diff --git a/AccountMangement.Infrastructure.EFCore/Repository/CameraAccountRepository.cs b/AccountMangement.Infrastructure.EFCore/Repository/CameraAccountRepository.cs index b9e30be9..e1c1334b 100644 --- a/AccountMangement.Infrastructure.EFCore/Repository/CameraAccountRepository.cs +++ b/AccountMangement.Infrastructure.EFCore/Repository/CameraAccountRepository.cs @@ -46,6 +46,7 @@ public class CameraAccountRepository : RepositoryBase, ICam }).FirstOrDefault(x => x.Id == id); } + #region Pooya public List GetAllByAccountId(long accountId) { return _context.CameraAccounts.Where(x => x.AccountId == accountId) @@ -61,6 +62,23 @@ public class CameraAccountRepository : RepositoryBase, ICam }).ToList(); } + public List GetAllByWorkshopId(long workshopId) + { + return _context.CameraAccounts.Where(x => x.WorkshopId == workshopId) + .Select(x => new CameraAccountViewModel() + { + AccountId = x.AccountId, + Id = x.id, + IsActiveString = x.IsActiveSting, + Username = x.Username, + Mobile = x.Mobile, + WorkshopId = x.WorkshopId, + WorkshopName = x.WorkshopName + }).ToList(); + } + + #endregion + #region Safa diff --git a/CompanyManagment.App.Contracts/RollCall/CheckoutDailyRollCallViewModel.cs b/CompanyManagment.App.Contracts/RollCall/CheckoutDailyRollCallViewModel.cs index 5f0e18e9..5a3a09ca 100644 --- a/CompanyManagment.App.Contracts/RollCall/CheckoutDailyRollCallViewModel.cs +++ b/CompanyManagment.App.Contracts/RollCall/CheckoutDailyRollCallViewModel.cs @@ -8,9 +8,11 @@ namespace CompanyManagment.App.Contracts.RollCall public class CheckoutDailyRollCallViewModel { public string RollCallDateFa { get; set; } - public string StartDate { get; set; } - public string EndDate { get; set; } - public DateTime DateTimeGr { get; set; } + public string StartDate1 { get; set; } + public string EndDate1 { get; set; } + public string StartDate2 { get; set; } + public string EndDate2 { get; set; } + public DateTime DateTimeGr { get; set; } //منقطع بودن شیفت کاری public bool IsSliced { get; set; } public TimeSpan TotalhourseSpan { get; set; } diff --git a/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs b/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs index 061c8cc8..be9df872 100644 --- a/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs +++ b/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Runtime.InteropServices; using _0_Framework.Application; +using AccountManagement.Application.Contracts.Account; namespace CompanyManagment.App.Contracts.Workshop; @@ -57,4 +58,6 @@ public interface IWorkshopApplication List PrintWorkshopList(WorkshopSearchModel searchModel); #endregion + + AccountViewModel GetClientAccountByWorkshopId(long workshopId); } \ No newline at end of file diff --git a/CompanyManagment.Application/WorkshopAppliction.cs b/CompanyManagment.Application/WorkshopAppliction.cs index 726f7320..b6ad9bdf 100644 --- a/CompanyManagment.Application/WorkshopAppliction.cs +++ b/CompanyManagment.Application/WorkshopAppliction.cs @@ -721,6 +721,12 @@ public class WorkshopAppliction : IWorkshopApplication return _workshopRepository.PrintWorkshopList(searchModel); } + public AccountViewModel GetClientAccountByWorkshopId(long workshopId) + { + var contractingParty = _workshopRepository.GetPersonalContractingPartyByWorkshopId(workshopId); + return _personalContractingPartyRepository.GetAccountByPersonalContractingParty(contractingParty.id); + } + //public List GetConnectedPersonnelsForMain(long workshopId) //{ // return _workshopRepository.GetConnectedPersonnelsForMain(workshopId); diff --git a/CompanyManagment.EFCore/Repository/RollCallRepository.cs b/CompanyManagment.EFCore/Repository/RollCallRepository.cs index a35e2583..61b047c6 100644 --- a/CompanyManagment.EFCore/Repository/RollCallRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallRepository.cs @@ -108,7 +108,7 @@ public class RollCallRepository : RepositoryBase, IRollCallRepos var rollCalls = _context.RollCalls.Where(x => - x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate != null && x.EndDate != null && + x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate != null && x.EndDate != null && x.RollCallModifyType != RollCallModifyType.Undefined && x.StartDate.Value.Date >= startMonthDay && x.StartDate.Value.Date <= endMonthDay).ToList(); @@ -138,29 +138,41 @@ public class RollCallRepository : RepositoryBase, IRollCallRepos .ExceptBy(rollCalls.Select(x => x.StartDate!.Value.Date), y => y.Date.Date) .Select(x => new CheckoutDailyRollCallViewModel() { - StartDate = null, - EndDate = null, + StartDate1 = null, + EndDate1 = null, DateTimeGr = x.Date.Date, DayOfWeek = x.Date.DayOfWeek.ToString(), RollCallDateFa = x.Date.ToFarsi() }); - var presentDays = rollCalls.GroupBy(x => x.StartDate!.Value.Date).Select(x => new CheckoutDailyRollCallViewModel() + var presentDays = rollCalls.GroupBy(x => x.StartDate!.Value.Date).Select(x => { - StartDate = x.Min(y => y.StartDate)!.Value.ToString("HH:mm"), - EndDate = x.Max(y => y.EndDate)!.Value.ToString("HH:mm"), - TotalhourseSpan = new TimeSpan(x.Where(y => y.EndDate != null).Sum(y => (y.EndDate - y.StartDate)!.Value.Ticks)), - DayOfWeek = x.Key.DayOfWeek.DayOfWeeKToPersian(), - RollCallDateFa = x.Key.Date.ToFarsi(), - DateTimeGr = x.Key.Date, - IsSliced = x.Count() > 1 + var orderedRollcalls = x.OrderBy(y => y.StartDate!.Value); + return new CheckoutDailyRollCallViewModel() + { + StartDate1 = orderedRollcalls.FirstOrDefault().StartDate.Value.ToString("HH:mm"), + EndDate1 = orderedRollcalls.FirstOrDefault().EndDate.Value.ToString("HH:mm"), + + StartDate2 = orderedRollcalls.Skip(1).FirstOrDefault()?.StartDate?.ToString("HH:mm") ?? "", + EndDate2 = orderedRollcalls.Skip(1).FirstOrDefault()?.EndDate?.ToString("HH:mm") ?? "", + + TotalhourseSpan = + new TimeSpan(x.Where(y => y.EndDate != null).Sum(y => (y.EndDate - y.StartDate)!.Value.Ticks)), + DayOfWeek = x.Key.DayOfWeek.DayOfWeeKToPersian(), + RollCallDateFa = x.Key.Date.ToFarsi(), + DateTimeGr = x.Key.Date, + IsSliced = x.Count() > 1 + }; }); + presentDays = presentDays.Select(x => new CheckoutDailyRollCallViewModel { - StartDate = x.StartDate, - EndDate = x.EndDate, - TotalWorkingHours = $"{(int)x.TotalhourseSpan.TotalHours}:{(x.TotalhourseSpan.Minutes):00}", + StartDate1 = x.StartDate1, + EndDate1 = x.EndDate1, + EndDate2 = x.EndDate2, + StartDate2 = x.StartDate2, + TotalWorkingHours = $"{(int)(x.TotalhourseSpan.TotalHours)}:{x.TotalhourseSpan.Minutes.ToString("00")}", DayOfWeek = x.DayOfWeek, RollCallDateFa = x.RollCallDateFa, DateTimeGr = x.DateTimeGr, @@ -172,6 +184,7 @@ public class RollCallRepository : RepositoryBase, IRollCallRepos } + //جستجوی سوابق حضور غیاب بر اساس کارمند public EmployeeRollCallsByMonthViewModel GetEmployeeRollCallsHistory(long employeeId, long workshopId, DateTime? startDateTime, DateTime? endDateTime, DateTime? exactDateTime, DateTime? dateIndex) @@ -252,11 +265,19 @@ public class RollCallRepository : RepositoryBase, IRollCallRepos x.IsAccepted && x.EndLeave >= selectedMonthFirstDay && x.StartLeave < nextMonthFirstDay && x.WorkshopId == workshopId && x.EmployeeId == employeeId); - var rollCalls = _context.RollCalls.Where(x => - x.EmployeeId == employeeId && !leavesQuery.Any(y => - y.StartLeave.Date <= x.StartDate.Value.Date && y.EndLeave.Date >= x.StartDate.Value.Date) && - x.WorkshopId == workshopId && x.StartDate != null && - x.StartDate >= selectedMonthFirstDay && x.StartDate < nextMonthFirstDay && x.RollCallModifyType != RollCallModifyType.Undefined); + //var rollCalls = _context.RollCalls.Where(x => + // x.EmployeeId == employeeId && !leavesQuery.Any(y => + // y.StartLeave.Date <= x.StartDate.Value.Date && y.EndLeave.Date >= x.StartDate.Value.Date) && + // x.WorkshopId == workshopId && x.StartDate != null && + // x.StartDate >= selectedMonthFirstDay && x.StartDate < nextMonthFirstDay && x.RollCallModifyType != RollCallModifyType.Undefined); + + //changeByfarrokhi + #region changeByfarrokhi + var rollCalls = _context.RollCalls.Where(x => + x.EmployeeId == employeeId && + x.WorkshopId == workshopId && x.StartDate != null && + x.StartDate >= selectedMonthFirstDay && x.StartDate < nextMonthFirstDay && x.RollCallModifyType != RollCallModifyType.Undefined); + #endregion var personnelCode = _context.PersonnelCodeSet.FirstOrDefault(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId)?.PersonnelCode; diff --git a/DadmehrGostar.sln b/DadmehrGostar.sln index 6ac6c282..892dfb90 100644 --- a/DadmehrGostar.sln +++ b/DadmehrGostar.sln @@ -56,21 +56,27 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WorkFlow", "WorkFlow", "{FE EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Application", "Application", "{D1803DC6-4FA6-4500-9C3C-5F7AC1AEE187}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkFlow.Application", "WorkFlow\Application\WorkFlow.Application\WorkFlow.Application.csproj", "{BA69B1F4-2D53-4FAC-A658-FD59EB552269}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkFlow.Application", "WorkFlow\Application\WorkFlow.Application\WorkFlow.Application.csproj", "{BA69B1F4-2D53-4FAC-A658-FD59EB552269}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkFlow.Application.Contracts", "WorkFlow\Application\WorkFlow.Application.Contracts\WorkFlow.Application.Contracts.csproj", "{BA6933AF-C104-4271-ADEA-999E1BFC5A6C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkFlow.Application.Contracts", "WorkFlow\Application\WorkFlow.Application.Contracts\WorkFlow.Application.Contracts.csproj", "{BA6933AF-C104-4271-ADEA-999E1BFC5A6C}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Domain", "Domain", "{486CBA92-3B91-4761-A853-2A856B1D1159}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkFlow.Domain", "WorkFlow\Domain\WorkFlow.Domain\WorkFlow.Domain.csproj", "{AFE354B3-CCDF-4810-9FFF-6F10B49757B8}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkFlow.Domain", "WorkFlow\Domain\WorkFlow.Domain\WorkFlow.Domain.csproj", "{AFE354B3-CCDF-4810-9FFF-6F10B49757B8}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Infrastructure", "Infrastructure", "{09517B4E-C699-4D57-8590-0B773228820A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkFlow.Infrastructure.EfCore", "WorkFlow\Infrastructure\WorkFlow.Infrastructure.EfCore\WorkFlow.Infrastructure.EfCore.csproj", "{9643E1D4-A2FE-4CA1-A303-1A499CDB6D87}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkFlow.Infrastructure.EfCore", "WorkFlow\Infrastructure\WorkFlow.Infrastructure.EfCore\WorkFlow.Infrastructure.EfCore.csproj", "{9643E1D4-A2FE-4CA1-A303-1A499CDB6D87}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkFlow.Infrastructure.ACL", "WorkFlow\Infrastructure\WorkFlow.Infrastructure.ACL\WorkFlow.Infrastructure.ACL.csproj", "{3CDCCA2F-79F1-43FD-B9C4-211279624148}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkFlow.Infrastructure.ACL", "WorkFlow\Infrastructure\WorkFlow.Infrastructure.ACL\WorkFlow.Infrastructure.ACL.csproj", "{3CDCCA2F-79F1-43FD-B9C4-211279624148}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkFlow.Infrastructure.Config", "WorkFlow\Infrastructure\WorkFlow.Infrastructure.Config\WorkFlow.Infrastructure.Config.csproj", "{0E6A32F1-1BCB-45A1-BB1A-A5B8AFA8F551}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkFlow.Infrastructure.Config", "WorkFlow\Infrastructure\WorkFlow.Infrastructure.Config\WorkFlow.Infrastructure.Config.csproj", "{0E6A32F1-1BCB-45A1-BB1A-A5B8AFA8F551}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Query", "Query", "{708E8D7E-F190-47C5-B78E-F43131FB7D6D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Query", "Query\Query.csproj", "{339E05B6-E99F-4403-AFDF-CD0540E96C8D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Query.Bootstrapper", "Query.Bootstrapper\Query.Bootstrapper.csproj", "{02892882-2A02-484B-BAF9-7E63F6BDCFA0}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -158,6 +164,14 @@ Global {0E6A32F1-1BCB-45A1-BB1A-A5B8AFA8F551}.Debug|Any CPU.Build.0 = Debug|Any CPU {0E6A32F1-1BCB-45A1-BB1A-A5B8AFA8F551}.Release|Any CPU.ActiveCfg = Release|Any CPU {0E6A32F1-1BCB-45A1-BB1A-A5B8AFA8F551}.Release|Any CPU.Build.0 = Release|Any CPU + {339E05B6-E99F-4403-AFDF-CD0540E96C8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {339E05B6-E99F-4403-AFDF-CD0540E96C8D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {339E05B6-E99F-4403-AFDF-CD0540E96C8D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {339E05B6-E99F-4403-AFDF-CD0540E96C8D}.Release|Any CPU.Build.0 = Release|Any CPU + {02892882-2A02-484B-BAF9-7E63F6BDCFA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {02892882-2A02-484B-BAF9-7E63F6BDCFA0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {02892882-2A02-484B-BAF9-7E63F6BDCFA0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {02892882-2A02-484B-BAF9-7E63F6BDCFA0}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -189,6 +203,8 @@ Global {9643E1D4-A2FE-4CA1-A303-1A499CDB6D87} = {09517B4E-C699-4D57-8590-0B773228820A} {3CDCCA2F-79F1-43FD-B9C4-211279624148} = {09517B4E-C699-4D57-8590-0B773228820A} {0E6A32F1-1BCB-45A1-BB1A-A5B8AFA8F551} = {09517B4E-C699-4D57-8590-0B773228820A} + {339E05B6-E99F-4403-AFDF-CD0540E96C8D} = {708E8D7E-F190-47C5-B78E-F43131FB7D6D} + {02892882-2A02-484B-BAF9-7E63F6BDCFA0} = {708E8D7E-F190-47C5-B78E-F43131FB7D6D} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E6CFB3A7-A7C8-4E82-8F06-F750408F0BA9} diff --git a/Query.Bootstrapper/Query.Bootstrapper.csproj b/Query.Bootstrapper/Query.Bootstrapper.csproj new file mode 100644 index 00000000..2a4ad0a3 --- /dev/null +++ b/Query.Bootstrapper/Query.Bootstrapper.csproj @@ -0,0 +1,18 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + diff --git a/Query.Bootstrapper/QueryBootstrapper.cs b/Query.Bootstrapper/QueryBootstrapper.cs new file mode 100644 index 00000000..a4f55718 --- /dev/null +++ b/Query.Bootstrapper/QueryBootstrapper.cs @@ -0,0 +1,17 @@ +using Microsoft.Extensions.DependencyInjection; +using Query.AdminReports.Handlers; +using Query.ClientReports.Handler; + +namespace Query.Bootstrapper +{ + public class QueryBootstrapper + { + public static void Configure(IServiceCollection services) + { + services.AddTransient(); + services.AddTransient(); + } + + + } +} diff --git a/Query/AdminReports/Handlers/GetWorkshopWithRollCallHandler.cs b/Query/AdminReports/Handlers/GetWorkshopWithRollCallHandler.cs new file mode 100644 index 00000000..2aa9e80e --- /dev/null +++ b/Query/AdminReports/Handlers/GetWorkshopWithRollCallHandler.cs @@ -0,0 +1,91 @@ +using Company.Domain.RollCallAgg; +using CompanyManagment.EFCore; +using Microsoft.EntityFrameworkCore; +using Query.AdminReports.Models; +using System.Data; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database; + +namespace Query.AdminReports.Handlers +{ + public interface IGetWorkshopWithRollCallHandler + { + List Handle(WorkshopWithRollCallServiceQueryParameters parameters); + } + + public class GetWorkshopWithRollCallHandler: IGetWorkshopWithRollCallHandler + { + private readonly CompanyContext _companyContext; + + public GetWorkshopWithRollCallHandler(CompanyContext companyContext) + { + _companyContext = companyContext; + } + + public List Handle(WorkshopWithRollCallServiceQueryParameters parameters) + { + var now = DateTime.Now.Date; + var lastWeek = now.AddDays(-7); + + + //workshop filter by parameters + var rollCallServiceQuery = _companyContext.RollCallServices + .Where(x => x.StartService.Date <= DateTime.Now.Date && x.EndService.Date >= DateTime.Now.Date); + var allWorkshops = _companyContext.Workshops.Select(x => new { x.id, x.WorkshopFullName }); + + if (!string.IsNullOrWhiteSpace(parameters.WorkshopName)) + allWorkshops = allWorkshops.Where(x => x.WorkshopFullName.Contains(parameters.WorkshopName)); + if (!string.IsNullOrWhiteSpace(parameters.RollCallServiceType)) + rollCallServiceQuery = rollCallServiceQuery.Where(x => x.ServiceType == parameters.RollCallServiceType); + + var workshopsWithService = rollCallServiceQuery.Join(allWorkshops, x => x.WorkshopId, y => y.id, (rcs, workshop) => + new WorkshopWithRollCallServiceQueryModel() + { + WorkshopId = workshop.id, + RollCallServiceType = rcs.ServiceType, + WorkshopName = workshop.WorkshopFullName + }); + + + //workshop population + var workshopLeftWorks = _companyContext.Workshops.Where(x => workshopsWithService.Any(y => y.WorkshopId == x.id)).Include(x => x.LeftWorks).Include(x => x.LeftWorkInsurances) + .Select(x => new + { + WorkshopId = x.id, + LeftWorks = x.LeftWorks.Where(y => y.StartWorkDate <= lastWeek && y.LeftWorkDate > now).Select(y => y.EmployeeId), + LeftWorkInsurances = x.LeftWorkInsurances.Where(y => y.StartWorkDate <= lastWeek && (y.LeftWorkDate > now || y.LeftWorkDate == null)).Select(y => y.EmployeeId) + }).ToList(); + + var workshopsWorkingEmployeesList = workshopLeftWorks + .Select(x => new { x.WorkshopId, TotalWorkingEmployeesCount = x.LeftWorks.Concat(x.LeftWorkInsurances).Distinct().Count() }).ToList(); + + + + var activeEmployees = _companyContext.RollCallEmployees.Include(x => x.EmployeesStatus).Where(x => x.EmployeesStatus.Any(y => + y.EndDate.Date >= now) && workshopsWithService.Any(y => y.WorkshopId == x.WorkshopId)).Select(x => new { x.WorkshopId, x.EmployeeId }); + + var lastWeekRollCalls = _companyContext.RollCalls.Where(x => x.StartDate.HasValue && x.StartDate.Value >= lastWeek + && workshopsWithService.Any(y => y.WorkshopId == x.WorkshopId)).GroupBy(x => x.EmployeeId).Select(x => x.Key); + + + var leaves = _companyContext.LeaveList.Where(x => x.StartLeave <= lastWeek && x.EndLeave >= now && (x.LeaveType == "استعلاجی" || x.PaidLeaveType == "روزانه") + && workshopsWithService.Any(y => y.WorkshopId == x.WorkshopId)).Select(x => x.EmployeeId); + + + var activeEmployeesList = activeEmployees.ToList(); + var lastWeekRollCallsList = lastWeekRollCalls.ToList(); + var leavesList = leaves.ToList(); + var workshopsWithServiceList = workshopsWithService.ToList(); + return workshopsWithServiceList.Select(x => new WorkshopWithRollCallServiceQueryModel() + { + WorkshopId = x.WorkshopId, + RollCallServiceType = x.RollCallServiceType, + WorkshopName = x.WorkshopName, + ActiveEmployeesCount = activeEmployeesList.Count(y => y.WorkshopId == x.WorkshopId), + ActiveEmployeesWithRollCallInLastWeekCount = activeEmployeesList.Count(y => y.WorkshopId == x.WorkshopId && + lastWeekRollCalls.Contains(y.EmployeeId) && !leavesList.Contains(y.EmployeeId)), + TotalEmployeesCount = workshopsWorkingEmployeesList.FirstOrDefault(y => y.WorkshopId == x.WorkshopId).TotalWorkingEmployeesCount + }).ToList(); + + } + } +} diff --git a/Query/AdminReports/Models/WorkshopWithRollCallServiceQueryParameters.cs b/Query/AdminReports/Models/WorkshopWithRollCallServiceQueryParameters.cs new file mode 100644 index 00000000..420e9c60 --- /dev/null +++ b/Query/AdminReports/Models/WorkshopWithRollCallServiceQueryParameters.cs @@ -0,0 +1,7 @@ +namespace Query.AdminReports.Models; + +public class WorkshopWithRollCallServiceQueryParameters +{ + public string WorkshopName { get; set; } + public string RollCallServiceType { get; set; } +} \ No newline at end of file diff --git a/Query/AdminReports/Models/WorkshopWithRollCallViewModel.cs b/Query/AdminReports/Models/WorkshopWithRollCallViewModel.cs new file mode 100644 index 00000000..83a68189 --- /dev/null +++ b/Query/AdminReports/Models/WorkshopWithRollCallViewModel.cs @@ -0,0 +1,24 @@ +namespace Query.AdminReports.Models +{ + public class WorkshopWithRollCallServiceQueryModel + { + public string WorkshopName { get; set; } + public long WorkshopId { get; set; } + public string RollCallServiceType { get; set; } + + public int TotalEmployeesCount { get; set; } + + public int ActiveEmployeesCount { get; set; } + + public int ActiveEmployeesWithRollCallInLastWeekCount { get; set; } + + + public float ActiveEmployeesWithRollCallPercentage + { + get + { + return ((float)ActiveEmployeesWithRollCallInLastWeekCount / ActiveEmployeesCount) * 100; + } + } + } +} diff --git a/Query/ClientReports/Handler/NotSignedContractEmployeesQueryHandler.cs b/Query/ClientReports/Handler/NotSignedContractEmployeesQueryHandler.cs new file mode 100644 index 00000000..05d4ff48 --- /dev/null +++ b/Query/ClientReports/Handler/NotSignedContractEmployeesQueryHandler.cs @@ -0,0 +1,47 @@ +using System.Globalization; +using CompanyManagment.EFCore; +using Microsoft.EntityFrameworkCore; +using Query.ClientReports.Models; + +namespace Query.ClientReports.Handler +{ + public class NotSignedContractEmployeesQueryHandler + { + private readonly CompanyContext _companyContext; + + public NotSignedContractEmployeesQueryHandler(CompanyContext companyContext) + { + _companyContext = companyContext; + } + + public List Handle(long workshopId, int yearFa, int monthFa) + { + var date = new DateTime(yearFa, monthFa, 1, new PersianCalendar()); + + int nextMonth; + int nextMonthYear; + if (monthFa == 12) + { + nextMonthYear = yearFa + 1; + nextMonth = 1; + } + else + { + nextMonth = monthFa + 1; + nextMonthYear = yearFa; + } + + var nextMonthDate = new DateTime(nextMonthYear, nextMonth, 1, new PersianCalendar()); + var query = _companyContext.Employees.Include(x => x.Contracts).Where(x => + !x.Contracts.Any(y => y.ContarctStart < nextMonthDate && y.ContractEnd >= date && y.Signature == "0")); + + return query.Select(x => new NotSignedContractEmployeesQueryModel() + { + MonthFa = monthFa, + YearFa = yearFa, + EmployeeFullName = x.FName + " " + x.LName, + EmployeeId = x.id + }).ToList(); + } + } +} diff --git a/Query/ClientReports/Models/NotSignedContractEmployeesQueryModel.cs b/Query/ClientReports/Models/NotSignedContractEmployeesQueryModel.cs new file mode 100644 index 00000000..fe140a6e --- /dev/null +++ b/Query/ClientReports/Models/NotSignedContractEmployeesQueryModel.cs @@ -0,0 +1,12 @@ + + +namespace Query.ClientReports.Models +{ + public class NotSignedContractEmployeesQueryModel + { + public long EmployeeId { get; set; } + public string EmployeeFullName { get; set; } + public int YearFa { get; set; } + public int MonthFa { get; set; } + } +} diff --git a/Query/Query.csproj b/Query/Query.csproj new file mode 100644 index 00000000..18a1ea10 --- /dev/null +++ b/Query/Query.csproj @@ -0,0 +1,13 @@ + + + + net8.0 + enable + enable + + + + + + + diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/PrintDetailsRollCall.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/PrintDetailsRollCall.cshtml index 3d53ef57..92ae4dfe 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/PrintDetailsRollCall.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/PrintDetailsRollCall.cshtml @@ -308,21 +308,25 @@ - - - - - + + + + + + + @for (int i = 0; i < 15; i++) { - - - - + + + + +
تاریخساعت ورودساعت خروجمنقطعساعت کارکردتاریخورودخروجورودخروجمنقطعساعت کارکرد
@Model.MonthlyRollCall[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()@Model.MonthlyRollCall[i].StartDate@Model.MonthlyRollCall[i].EndDate + @Model.MonthlyRollCall[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()@Model.MonthlyRollCall[i].StartDate1@Model.MonthlyRollCall[i].EndDate1@Model.MonthlyRollCall[i].StartDate2@Model.MonthlyRollCall[i].EndDate2 @if (@Model.MonthlyRollCall[i].IsSliced) { @@ -345,11 +349,13 @@ - - - - - + + + + + + + @@ -359,10 +365,12 @@ @foreach (var day in Model.MonthlyRollCall) { - - - - + + + + +
تاریخساعت ورودساعت خروجمنقطعساعت کارکردتاریخورودخروجورودخروجمنقطعساعت کارکرد
@day.DateTimeGr.ToFarsi() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()@day.StartDate@day.EndDate + @day.DateTimeGr.ToFarsi() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()@day.StartDate1@day.EndDate1@day.StartDate2@day.EndDate2 @if (day.IsSliced) { diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/_Partials/PrintDetailsRollCallRaw.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/_Partials/PrintDetailsRollCallRaw.cshtml index cfda435e..72569d15 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/_Partials/PrintDetailsRollCallRaw.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/_Partials/PrintDetailsRollCallRaw.cshtml @@ -305,21 +305,25 @@ - - - - - + + + + + + + @for (int i = 0; i < 15; i++) { - - - - + + + + +
تاریخساعت ورودساعت خروجمنقطعساعت کارکردتاریخورودخروجورودخروجمنقطعساعت کارکرد
@Model.MonthlyRollCall[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()@Model.MonthlyRollCall[i].StartDate@Model.MonthlyRollCall[i].EndDate + @Model.MonthlyRollCall[i].DateTimeGr.ToFarsi() - @Model.MonthlyRollCall[i].DateTimeGr.DayOfWeek.DayOfWeeKToPersian()@Model.MonthlyRollCall[i].StartDate1@Model.MonthlyRollCall[i].EndDate1@Model.MonthlyRollCall[i].StartDate2@Model.MonthlyRollCall[i].EndDate2 @if (@Model.MonthlyRollCall[i].IsSliced) { @@ -342,11 +346,13 @@ - - - - - + + + + + + + @@ -356,10 +362,12 @@ @foreach (var day in Model.MonthlyRollCall) { - - - - + + + + +
تاریخساعت ورودساعت خروجمنقطعساعت کارکردتاریخورودخروجورودخروجمنقطعساعت کارکرد
@day.DateTimeGr.ToFarsi() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()@day.StartDate@day.EndDate + @day.DateTimeGr.ToFarsi() - @day.DateTimeGr.DayOfWeek.DayOfWeeKToPersian()@day.StartDate1@day.EndDate1@day.StartDate2@day.EndDate2 @if (day.IsSliced) { diff --git a/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml b/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml index 9d05c779..469fd3dc 100644 --- a/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml @@ -173,10 +173,17 @@