diff --git a/CompanyManagement.Infrastructure.Excel/CWS/CustomizeWorkshopGroupSettingExcelGenerator.cs b/CompanyManagement.Infrastructure.Excel/CWS/CustomizeWorkshopGroupSettingExcelGenerator.cs new file mode 100644 index 00000000..4d27f8bc --- /dev/null +++ b/CompanyManagement.Infrastructure.Excel/CWS/CustomizeWorkshopGroupSettingExcelGenerator.cs @@ -0,0 +1,179 @@ +using CompanyManagement.Infrastructure.Excel.EmployeeBankInfo; +using OfficeOpenXml.Style; +using OfficeOpenXml; +using System.Drawing; +using _0_Framework.Application; + +namespace CompanyManagement.Infrastructure.Excel.CWS; +public class CustomizeWorkshopGroupExcelViewModel +{ + public string Name { get; set; } + public string ShiftType { get; set; } + public string Shifts { get; set; } + public string Salary { get; set; } + public List EmployeeSettings { get; set; } +} + +public class CustomizeWorkshopEmployeeExcelViewModel +{ + public string Name { get; set; } + public string ShiftType { get; set; } + public string Shifts { get; set; } + public int LeavePermitted { get; set; } + public string Salary { get; set; } +} +public class CustomizeWorkshopGroupSettingExcelGenerator +{ + public static byte[] Generate(List groups) + { + ExcelPackage.LicenseContext = LicenseContext.NonCommercial; + using (var package = new ExcelPackage()) + { + var worksheet = package.Workbook.Worksheets.Add("GroupsAndEmployees"); + + // Headers + worksheet.Cells[1, 1].Value = "نام گروه"; + worksheet.Cells[1, 2].Value = "نوع شیفت گروه"; + worksheet.Cells[1, 3].Value = "شیفت گروه"; + worksheet.Cells[1, 4].Value = "حقوق گروه"; + + worksheet.Cells[1, 5].Value = "نام پرسنل"; + worksheet.Cells[1, 6].Value = "مجاز مرخصی پرسنل"; + worksheet.Cells[1, 7].Value = "نوع شیفت پرسنل"; + worksheet.Cells[1, 8].Value = "شیفت پرسنل"; + worksheet.Cells[1, 9].Value = "حقوق پرسنل"; + + using (var range = worksheet.Cells[1, 1, 1, 9]) + { + range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; + range.Style.VerticalAlignment = ExcelVerticalAlignment.Center; + range.Style.Font.Bold = true; + range.Style.Fill.PatternType = ExcelFillStyle.Solid; + range.Style.Fill.BackgroundColor.SetColor(Color.LightGray); // رنگ پس زمینه خاکستری + + range.Style.Border.BorderAround(ExcelBorderStyle.Thin); + } + + int row = 2; + + foreach (var group in groups) + { + var employees = group.EmployeeSettings ?? new List(); + int groupStartRow = row; + int groupEndRow = employees.Count > 0 ? (row + employees.Count - 1) : row; + + if (employees.Count == 0) + { + // گروه بدون پرسنل + worksheet.Cells[row, 1].Value = group.Name; + worksheet.Cells[row, 2].Value = group.ShiftType; + worksheet.Cells[row, 3].Value = group.Shifts; + worksheet.Cells[row, 4].Value = Convert.ToInt32(group.Salary); + + ApplyGroupStyle(worksheet, row, row); + worksheet.Cells[row, 4].Style.Numberformat.Format = "#,##0"; + using (var thickBorderRange = worksheet.Cells[groupEndRow, 1, groupEndRow, 9]) + { + thickBorderRange.Style.Border.Bottom.Style = ExcelBorderStyle.Thick; + } + row++; + } + else + { + foreach (var employee in employees) + { + worksheet.Cells[row, 5].Value = employee.Name; + worksheet.Cells[row, 6].Value = employee.LeavePermitted; + worksheet.Cells[row, 7].Value = employee.ShiftType; + worksheet.Cells[row, 8].Value = employee.Shifts; + worksheet.Cells[row, 9].Value = Convert.ToInt32(employee.Salary); + + ApplyEmployeeStyle(worksheet, row); + worksheet.Cells[row, 9].Style.Numberformat.Format = "#,##0"; + row++; + } + + // Merge اطلاعات گروه برای تمام پرسنل + worksheet.Cells[groupStartRow, 1, groupEndRow, 1].Merge = true; + worksheet.Cells[groupStartRow, 1].Value = group.Name; + + worksheet.Cells[groupStartRow, 2, groupEndRow, 2].Merge = true; + worksheet.Cells[groupStartRow, 2].Value = group.ShiftType; + + worksheet.Cells[groupStartRow, 3, groupEndRow, 3].Merge = true; + worksheet.Cells[groupStartRow, 3].Value = group.Shifts; + + worksheet.Cells[groupStartRow, 4, groupEndRow, 4].Merge = true; + worksheet.Cells[groupStartRow, 4].Value = Convert.ToInt32(group.Salary); + + ApplyGroupStyle(worksheet, groupStartRow, groupEndRow); + + worksheet.Cells[groupStartRow, 4, groupEndRow, 4].Style.Numberformat.Format = "#,##0"; + + + worksheet.Cells[groupEndRow, 1, groupEndRow, 9].Style.Border.Bottom.Style = ExcelBorderStyle.Thick; + + } + } + worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); + + for (int i = 2; i <= worksheet.Dimension.Rows; i++) + { + worksheet.Row(i).Height = 50; + } + + int groupShiftCol = 3; + int employeeShiftCol = 8; + int groupSalary = 4; + int employeeSalary = 9; + int employeeName =5; + worksheet.Columns[groupShiftCol].Width = 15; + worksheet.Columns[employeeShiftCol].Width = 15; + worksheet.Columns[groupSalary].Width = 16; + worksheet.Columns[employeeSalary].Width = 16; + worksheet.Columns[employeeName].Width = 24; + worksheet.View.RightToLeft = true; // فارسی + return package.GetAsByteArray(); + } + } + + private static void ApplyEmployeeStyle(ExcelWorksheet worksheet, int row) + { + using (var range = worksheet.Cells[row, 5, row, 9]) + { + //range.Style.Fill.PatternType = ExcelFillStyle.Solid; + //range.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(198, 239, 206)); // سبز خیلی روشن + range.Style.Border.BorderAround(ExcelBorderStyle.Thin); + range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; + range.Style.VerticalAlignment = ExcelVerticalAlignment.Center; + + // اضافه کردن بوردر به همه‌ی سلول‌های ردیف پرسنل + range.Style.Border.Top.Style = ExcelBorderStyle.Thin; + range.Style.Border.Bottom.Style = ExcelBorderStyle.Thin; + range.Style.Border.Left.Style = ExcelBorderStyle.Thin; + range.Style.Border.Right.Style = ExcelBorderStyle.Thin; + + range.Style.WrapText = true; + } + } + + private static void ApplyGroupStyle(ExcelWorksheet worksheet, int startRow, int endRow) + { + using (var range = worksheet.Cells[startRow, 1, endRow, 4]) + { + //range.Style.Fill.PatternType = ExcelFillStyle.Solid; + //range.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(255, 255, 204)); // زرد خیلی روشن + range.Style.Border.BorderAround(ExcelBorderStyle.Thin); + range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; + range.Style.VerticalAlignment = ExcelVerticalAlignment.Center; + + // اضافه کردن بوردر به همه‌ی سلول‌های گروه + range.Style.Border.Top.Style = ExcelBorderStyle.Thin; + range.Style.Border.Bottom.Style = ExcelBorderStyle.Thin; + range.Style.Border.Left.Style = ExcelBorderStyle.Thin; + range.Style.Border.Right.Style = ExcelBorderStyle.Thin; + + range.Style.WrapText = true; + } + } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CustomizeWorkshopSettingsViewModel.cs b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CustomizeWorkshopSettingsViewModel.cs index 7079d21c..ba6e6dc7 100644 --- a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CustomizeWorkshopSettingsViewModel.cs +++ b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CustomizeWorkshopSettingsViewModel.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; namespace CompanyManagment.App.Contracts.CustomizeWorkshopSettings; @@ -9,4 +10,6 @@ public class CustomizeWorkshopSettingsViewModel public string Name { get; set; } public WorkshopShiftStatus WorkshopShiftStatus { get; set; } public List GroupSettings { get; set; } + public TimeOnly Offset { get; set; } + } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/CustomizeWorkshopSettingsRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeWorkshopSettingsRepository.cs index 352b6e4b..5652d774 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeWorkshopSettingsRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeWorkshopSettingsRepository.cs @@ -92,6 +92,7 @@ public class CustomizeWorkshopSettingsRepository(CompanyContext companyContext, return new CustomizeWorkshopSettingsViewModel() { Id = entity.id, + Offset = entity.EndTimeOffSet, GroupSettings = entity.CustomizeWorkshopGroupSettingsCollection.Where(x => !x.MainGroup).Select(x => new CustomizeWorkshopGroupSettingsViewModel() { @@ -106,7 +107,7 @@ public class CustomizeWorkshopSettingsRepository(CompanyContext companyContext, EmployeeId = y.EmployeeId, IsSettingChanged = y.IsSettingChanged, IsShiftChanged = y.IsShiftChanged, - Name = $"{employee.FName} {employee.LName}", + Name = $"{employee?.FName} {employee?.LName}", RollCallWorkshopShifts = y.CustomizeWorkshopEmployeeSettingsShifts.Select(s => new CustomizeWorkshopShiftViewModel() { @@ -115,7 +116,14 @@ public class CustomizeWorkshopSettingsRepository(CompanyContext companyContext, StartTime = s.StartTime.ToString("HH:mm") }).ToList(), Salary = y.Salary, - + CustomizeRotatingShiftsViewModels = y.CustomizeRotatingShifts.Select(r => new CustomizeRotatingShiftsViewModel + { + StartTime = r.StartTime.ToString("HH:mm"), + EndTime = r.EndTime.ToString("HH:mm") + }).ToList(), + LeavePermittedDays = y.LeavePermittedDays, + IrregularShift = y.IrregularShift, + WorkshopShiftStatus = y.WorkshopShiftStatus }; }).ToList(), Salary = x.Salary, @@ -127,7 +135,16 @@ public class CustomizeWorkshopSettingsRepository(CompanyContext companyContext, StartTime = s.StartTime.ToString("HH:mm") }).ToList(), - MainGroup = x.MainGroup + MainGroup = x.MainGroup, + WorkshopShiftStatus = x.WorkshopShiftStatus, + CustomizeRotatingShiftsViewModels = x.CustomizeRotatingShifts.Select(r => new CustomizeRotatingShiftsViewModel + { + StartTime = r.StartTime.ToString("HH:mm"), + EndTime = r.EndTime.ToString("HH:mm") + }).ToList(), + IrregularShift = x.IrregularShift + + }).ToList(), }; diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml index 63f33901..86752faf 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml @@ -36,9 +36,28 @@
- +
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs index 004626e2..1d6eadc1 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs @@ -14,6 +14,8 @@ using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Infrastructure; using CompanyManagment.App.Contracts.RollCallEmployee; using Company.Domain.EmployeeAgg; +using CompanyManagement.Infrastructure.Excel.CWS; +using CompanyManagement.Infrastructure.Excel.EmployeeBankInfo; namespace ServiceHost.Areas.Client.Pages.Company.RollCall { @@ -29,12 +31,12 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall private readonly IHttpContextAccessor _contextAccessor; private readonly IAuthHelper _authHelper; public bool GroupedAllEmployees; - private readonly long _workshopId; - public string WorkshopFullName; + private readonly long _workshopId; + public string WorkshopFullName; public CustomizeWorkshopSettingsViewModel RollCallWorkshopSettings; public List RollCallEmployeeList; - public GroupingModel(IPasswordHasher passwordHasher, IWorkshopApplication workshopApplication, ICustomizeWorkshopSettingsApplication rollCallWorkshopSettingsApplication, IEmployeeApplication employeeApplication, IHttpContextAccessor contextAccessor, IAuthHelper authHelper, IRollCallEmployeeApplication rollCallEmployeeApplication) + public GroupingModel(IPasswordHasher passwordHasher, IWorkshopApplication workshopApplication, ICustomizeWorkshopSettingsApplication rollCallWorkshopSettingsApplication, IEmployeeApplication employeeApplication, IHttpContextAccessor contextAccessor, IAuthHelper authHelper, IRollCallEmployeeApplication rollCallEmployeeApplication) { _passwordHasher = passwordHasher; _workshopApplication = workshopApplication; @@ -47,29 +49,29 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall _workshopId = _passwordHasher.SlugDecrypt(workshopHash); if (_workshopId < 1) - throw new InvalidDataException("اختلال در کارگاه"); - } + throw new InvalidDataException("اختلال در کارگاه"); + } 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.HasAnyEmployeeWithoutGroup(workshopId); - if (employeesWithoutGroup) - return false; - return true; - } + //if (isWorkshopIrregular == false) + // return true; + var employeesWithoutGroup = _customizeWorkshopSettingsApplication.HasAnyEmployeeWithoutGroup(workshopId); + if (employeesWithoutGroup) + return false; + return true; + } public IActionResult OnGet() { - //if (_workshopId != 11) - // return Redirect("/Client/Company/RollCall"); + //if (_workshopId != 11) + // return Redirect("/Client/Company/RollCall"); - RollCallEmployeeList = _rollCallEmployeeApplication.GetEmployeeRollCalls(_workshopId); + RollCallEmployeeList = _rollCallEmployeeApplication.GetEmployeeRollCalls(_workshopId); - var account = _authHelper.CurrentAccountInfo(); + var account = _authHelper.CurrentAccountInfo(); GroupedAllEmployees = IrregularWorkshopHaveGroupedAllPersonnelValidation(_workshopId); var workshop = _workshopApplication.GetWorkshopInfo(_workshopId); @@ -77,18 +79,18 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall RollCallWorkshopSettings = _customizeWorkshopSettingsApplication.GetWorkshopSettingsByWorkshopId(_workshopId, account); if (RollCallWorkshopSettings.Id == 0) - { - return Redirect("/Client/Company/RollCall"); - } + { + return Redirect("/Client/Company/RollCall"); + } return Page(); } public IActionResult OnGetWorkshopSettingsDataAjax() { - var account = _authHelper.CurrentAccountInfo(); + var account = _authHelper.CurrentAccountInfo(); - var result = _customizeWorkshopSettingsApplication.GetWorkshopSettingsByWorkshopId(_workshopId, account); + var result = _customizeWorkshopSettingsApplication.GetWorkshopSettingsByWorkshopId(_workshopId, account); return new JsonResult(new { isSuccedded = true, @@ -107,16 +109,16 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall } public IActionResult OnGetEmployeesGroupSettingsByEmployeeId(long employeeId) - { - var result = _customizeWorkshopSettingsApplication.GetEmployeesGroupSettingsByEmployeeId(employeeId, _workshopId); - return new JsonResult(new - { - success = true, - data = result - }); + { + var result = _customizeWorkshopSettingsApplication.GetEmployeesGroupSettingsByEmployeeId(employeeId, _workshopId); + return new JsonResult(new + { + success = true, + data = result + }); } - public IActionResult OnGetCreateGroup(long workshopSettingId) + public IActionResult OnGetCreateGroup(long workshopSettingId) { var command = new CreateCustomizeWorkshopGroupSettings { @@ -127,7 +129,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall public IActionResult OnPostCreateGroup(CreateCustomizeWorkshopGroupSettings command) { - command.Salary = "0"; + command.Salary = "0"; OperationResult result = _customizeWorkshopSettingsApplication.CreateGroupSettingsByRollCallWorkshopSettingId(command); return new JsonResult(new @@ -139,35 +141,35 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall public IActionResult OnGetEditGroup(long groupId) { - var command = _customizeWorkshopSettingsApplication.GetCustomizeWorkshopGroupSettingsDetails(groupId); - - command.IsShiftChanged = _customizeWorkshopSettingsApplication - .GetEmployeeSettingsByGroupSettingsId(groupId) - .Any(x => x.IsSettingChanged == true); - return Partial("ModalEditGroup", command); - } + var command = _customizeWorkshopSettingsApplication.GetCustomizeWorkshopGroupSettingsDetails(groupId); + + command.IsShiftChanged = _customizeWorkshopSettingsApplication + .GetEmployeeSettingsByGroupSettingsId(groupId) + .Any(x => x.IsSettingChanged == true); + return Partial("ModalEditGroup", command); + } public IActionResult OnPostEditGroup(EditCustomizeWorkshopGroupSettings command) { - var result = _customizeWorkshopSettingsApplication.EditSimpleRollCallGroupSetting(command); + var result = _customizeWorkshopSettingsApplication.EditSimpleRollCallGroupSetting(command); - return new JsonResult(new - { + return new JsonResult(new + { success = result.IsSuccedded, message = result.Message - }); + }); } public IActionResult OnGetEmployeeIsChangeList(long groupId) { - var result = _customizeWorkshopSettingsApplication.GetEmployeeSettingsByGroupSettingsId(groupId) - .Where(x => x.IsSettingChanged).ToList(); - return new JsonResult(new - { - success = true, - data = result - }); - } + var result = _customizeWorkshopSettingsApplication.GetEmployeeSettingsByGroupSettingsId(groupId) + .Where(x => x.IsSettingChanged).ToList(); + return new JsonResult(new + { + success = true, + data = result + }); + } public IActionResult OnPostDeleteGroup(long groupId) { @@ -179,7 +181,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall }); } - public IActionResult OnGetEmployeeGroupAjax(long rollCallWorkshopSettingId) + public IActionResult OnGetEmployeeGroupAjax(long rollCallWorkshopSettingId) { var result = _customizeWorkshopSettingsApplication.GetEmployeesWithoutGroup(rollCallWorkshopSettingId); return new JsonResult(new @@ -202,8 +204,8 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall public IActionResult OnPostCreateEmployee(CreateCustomizeEmployeeSettings command) { - command.WorkshopId = _workshopId; - OperationResult result = _customizeWorkshopSettingsApplication.CreateEmployeeSettings(command); + command.WorkshopId = _workshopId; + OperationResult result = _customizeWorkshopSettingsApplication.CreateEmployeeSettings(command); return new JsonResult(new { success = result.IsSuccedded, @@ -223,29 +225,29 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall public IActionResult OnGetEditEmployee(long groupId, List employeeId) { - var employee = _customizeWorkshopSettingsApplication.GetByEmployeeIdAndWorkshopIdIncludeGroupSettings(_workshopId, employeeId.First()); + var employee = _customizeWorkshopSettingsApplication.GetByEmployeeIdAndWorkshopIdIncludeGroupSettings(_workshopId, employeeId.First()); var command = new EditCustomizeEmployeeSettings() { - Id = employee.Id, + Id = employee.Id, EmployeeIds = employeeId, EmployeeFullName = employee.EmployeeFullName, Salary = employee.Salary.ToMoney(), NameGroup = employee.Name, - ShiftViewModel = employee.RollCallWorkshopShifts, + ShiftViewModel = employee.RollCallWorkshopShifts, BreakTime = employee.BreakTime, WorkshopShiftStatus = employee.WorkshopShiftStatus, IrregularShift = employee.IrregularShift, FridayWork = employee.FridayWork, HolidayWork = employee.HolidayWork, CustomizeRotatingShifts = employee.CustomizeRotatingShiftsViewModels - }; + }; return Partial("ModalEditEmployeeFromGroup", command); } public IActionResult OnPostChangeEditEmployee(EditCustomizeEmployeeSettings command) { - command.WorkshopId = _workshopId; - OperationResult result = _customizeWorkshopSettingsApplication.EditSimpleRollCallEmployeeSetting(command); + command.WorkshopId = _workshopId; + OperationResult result = _customizeWorkshopSettingsApplication.EditSimpleRollCallEmployeeSetting(command); return new JsonResult(new { success = result.IsSuccedded, @@ -253,43 +255,113 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall }); } - // public IActionResult OnGetGroupingSetting(long groupId) - // { - // var command = _customizeWorkshopSettingsApplication.GetCustomizeWorkshopGroupSettingsDetails(groupId); + public IActionResult OnGetDownloadExcel() + { + var groupData = _customizeWorkshopSettingsApplication.GetWorkshopSettingsByWorkshopIdForAdmin(_workshopId); - // return Partial("ModalSettingGroup", command); - //} + var data = groupData.GroupSettings.Select(x => new CustomizeWorkshopGroupExcelViewModel() + { + Name = x.GroupName, + Salary = ((int)x.Salary).ToString(), + ShiftType = x.WorkshopShiftStatus switch + { + WorkshopShiftStatus.Irregular => "مختلط", + WorkshopShiftStatus.Regular => "منظم", + WorkshopShiftStatus.Rotating => "گردشی", + _ => throw new ArgumentOutOfRangeException() + }, + Shifts = x.WorkshopShiftStatus switch + { + WorkshopShiftStatus.Irregular => x.IrregularShift.WorkshopIrregularShifts switch + { + WorkshopIrregularShifts.None => "نامشخص", + WorkshopIrregularShifts.TwelveThirtySix => "12/36", + WorkshopIrregularShifts.TwelveTwentyFour => "12/24", + WorkshopIrregularShifts.TwentyFourTwentyFour => "24/24", + _ => throw new ArgumentOutOfRangeException() + }, + WorkshopShiftStatus.Regular => string.Join(Environment.NewLine, + x.RollCallWorkshopShifts.Select(s => s.StartTime.ToString() + " - " + s.EndTime).ToList()), + WorkshopShiftStatus.Rotating => string.Join(Environment.NewLine, + x.CustomizeRotatingShiftsViewModels.Select(s => s.StartTime.ToString() + " - " + s.EndTime) + .ToList()), + _ => throw new ArgumentOutOfRangeException() + }, + EmployeeSettings = x.RollCallWorkshopEmployeesSettings.Select(e => new CustomizeWorkshopEmployeeExcelViewModel + { + Shifts = e.WorkshopShiftStatus switch + { + WorkshopShiftStatus.Irregular => e.IrregularShift.WorkshopIrregularShifts switch + { + WorkshopIrregularShifts.None => "نامشخص", + WorkshopIrregularShifts.TwelveThirtySix => "12/36", + WorkshopIrregularShifts.TwelveTwentyFour => "12/24", + WorkshopIrregularShifts.TwentyFourTwentyFour => "24/24", + _ => throw new ArgumentOutOfRangeException() + }, + WorkshopShiftStatus.Regular => string.Join(Environment.NewLine, + e.RollCallWorkshopShifts.Select(s => s.StartTime.ToString() + " - " + s.EndTime).ToList()), + WorkshopShiftStatus.Rotating => string.Join(Environment.NewLine, + e.CustomizeRotatingShiftsViewModels.Select(s => s.StartTime.ToString() + " - " + s.EndTime) + .ToList()), + _ => throw new ArgumentOutOfRangeException() + }, + Salary = ((int)e.Salary).ToString(), + ShiftType = e.WorkshopShiftStatus switch + { + WorkshopShiftStatus.Irregular => "مختلط", + WorkshopShiftStatus.Regular => "منظم", + WorkshopShiftStatus.Rotating => "گردشی", + _ => throw new ArgumentOutOfRangeException() + }, + LeavePermitted = e.LeavePermittedDays, + Name = e.Name + }).ToList(), + }).ToList(); - // public IActionResult OnPostGroupingSetting(EditCustomizeWorkshopGroupSettings command) - // { - // command.EmployeeIds = _customizeWorkshopSettingsApplication.GetEmployeeSettingsByGroupSettingsId(command.Id).Select(x => x.EmployeeId).ToList(); - // OperationResult result = _customizeWorkshopSettingsApplication.EditRollCallGroupSetting(command); + var bytes = CustomizeWorkshopGroupSettingExcelGenerator.Generate(data); + return File(bytes, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + $"اطلاعات گروهبندی.xlsx"); + } - // return new JsonResult(new - // { - // isSuccess = result.IsSuccedded, - // message = result.Message - // }); - //} + // public IActionResult OnGetGroupingSetting(long groupId) + // { + // var command = _customizeWorkshopSettingsApplication.GetCustomizeWorkshopGroupSettingsDetails(groupId); - //public IActionResult OnGetGroupingEmployeeSetting(long customizeEmployeeId, List employeeId) - // { - // var command = _customizeWorkshopSettingsApplication.GetCustomizeEmployeeSettingsDetails(customizeEmployeeId); - // command.EmployeeIds = employeeId; + // return Partial("ModalSettingGroup", command); + //} - // return Partial("ModalSettingGroupEmployee", command); - // } + // public IActionResult OnPostGroupingSetting(EditCustomizeWorkshopGroupSettings command) + // { + // command.EmployeeIds = _customizeWorkshopSettingsApplication.GetEmployeeSettingsByGroupSettingsId(command.Id).Select(x => x.EmployeeId).ToList(); + // OperationResult result = _customizeWorkshopSettingsApplication.EditRollCallGroupSetting(command); - // public IActionResult OnPostGroupingEmployeeSetting(EditCustomizeEmployeeSettings command) - // { - // command.WorkshopId = _workshopId; - // OperationResult result = _customizeWorkshopSettingsApplication.EditRollCallEmployeeSettings(command); + // return new JsonResult(new + // { + // isSuccess = result.IsSuccedded, + // message = result.Message + // }); + //} - // return new JsonResult(new - // { - // isSuccess = result.IsSuccedded, - // message = result.Message - // }); - //} - } + //public IActionResult OnGetGroupingEmployeeSetting(long customizeEmployeeId, List employeeId) + // { + // var command = _customizeWorkshopSettingsApplication.GetCustomizeEmployeeSettingsDetails(customizeEmployeeId); + // command.EmployeeIds = employeeId; + + // return Partial("ModalSettingGroupEmployee", command); + // } + + // public IActionResult OnPostGroupingEmployeeSetting(EditCustomizeEmployeeSettings command) + // { + // command.WorkshopId = _workshopId; + // OperationResult result = _customizeWorkshopSettingsApplication.EditRollCallEmployeeSettings(command); + + // return new JsonResult(new + // { + // isSuccess = result.IsSuccedded, + // message = result.Message + // }); + //} + } }