using _0_Framework.Application; using CompanyManagment.App.Contracts.CustomizeCheckout; using CompanyManagment.App.Contracts.Employee; using CompanyManagment.App.Contracts.Workshop; using CompanyManagment.App.Contracts.YearlySalary; using CompanyManagment.Application; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using System.Security.Claims; using System.Text.RegularExpressions; using _0_Framework.Infrastructure; using CompanyManagment.App.Contracts.Bank; using Microsoft.Extensions.Configuration.UserSecrets; namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout { [NeedsPermission(SubAccountPermissionHelper.CustomizeCheckoutTempListPermissionCode)] public class CheckoutTemporaryModel : PageModel { private readonly IWorkshopApplication _workshopApplication; private readonly IEmployeeApplication _employeeApplication; private readonly IYearlySalaryApplication _yearlySalaryApplication; private readonly ICustomizeCheckoutTempApplication _customizeCheckoutTempApplication; private readonly IBankApplication _bankApplication; private readonly IPasswordHasher _passwordHasher; private readonly IHttpContextAccessor _httpContextAccessor; private readonly IAuthHelper _authHelper; private readonly long _workshopId; public string WorkshopFullName; public SearchCustomizeCheckout SearchModel; public List CustomizeCheckouts; public List YearlyList; public CheckoutTemporaryModel(IWorkshopApplication workshopApplication, IHttpContextAccessor httpContextAccessor, IYearlySalaryApplication yearlySalaryApplication, IPasswordHasher passwordHasher, ICustomizeCheckoutTempApplication customizeCheckoutTempApplication, IEmployeeApplication employeeApplication, IBankApplication bankApplication, IAuthHelper authHelper) { _workshopApplication = workshopApplication; _httpContextAccessor = httpContextAccessor; _yearlySalaryApplication = yearlySalaryApplication; _passwordHasher = passwordHasher; _customizeCheckoutTempApplication = customizeCheckoutTempApplication; _employeeApplication = employeeApplication; _bankApplication = bankApplication; _authHelper = authHelper; var workshopHash = _httpContextAccessor.HttpContext?.User.FindFirstValue("WorkshopSlug"); _workshopId = _passwordHasher.SlugDecrypt(workshopHash); if (_workshopId < 1) throw new InvalidDataException("اختلال در کارگاه"); } public void OnGet(SearchCustomizeCheckout searchModel) { WorkshopFullName = _workshopApplication.GetWorkshopInfo(_workshopId).WorkshopFullName; searchModel.WorkshopId = _workshopId; CustomizeCheckouts = _customizeCheckoutTempApplication.Search(searchModel).ToList(); SearchModel = new SearchCustomizeCheckout() { Year = searchModel.Year, Month = searchModel.Month, EmployeeId = searchModel.EmployeeId, OrderBy = searchModel.OrderBy, SearchStartFa = searchModel.SearchStartFa, SearchEndFa = searchModel.SearchEndFa, BankId = searchModel.BankId, PageIndex = CustomizeCheckouts.Count() }; YearlyList = _yearlySalaryApplication.GetYears(); } public IActionResult OnGetPrintAll(CustomizeCheckoutBatchPrintViewModel sendIds) { var res = _customizeCheckoutTempApplication.PrintAll(_workshopId, sendIds.CustomizeCheckoutIdList); var result = new CustomizeCheckoutBatchPrintViewModel() { CustomizeCheckoutViewModels = res, }; return Partial("PrintAll", result); } public IActionResult OnGetCheckoutList(SearchCustomizeCheckout searchModel) { var permission = _authHelper.GetPermissions(); string printPermission = permission.Any(x => x == SubAccountPermissionHelper.PrintCustomizeCheckoutTempPermissionCode) ? "true" : "false"; string deletePermission = permission.Any(x => x == SubAccountPermissionHelper.DeleteCustomizeCheckoutTempPermissionCode) ? "true" : "false"; searchModel.WorkshopId = _workshopId; var resultData = _customizeCheckoutTempApplication.Search(searchModel).ToList(); return new JsonResult(new { success = true, data = resultData, pageIndex = resultData.Count(), printPermission = printPermission, deletePermission = deletePermission, }); } public async Task OnGetEmployeeList() { var result = await _employeeApplication.WorkedEmployeesInWorkshopSelectList(_workshopId); return new JsonResult(new { success = true, data = result }); } public IActionResult OnGetEmployeesByDay(int day) { var result = _customizeCheckoutTempApplication.GetWorkshopEmployeesEligibleForCheckoutInDates(_workshopId); if (result.IsSuccedded) { return new JsonResult(new { success = result.IsSuccedded, data = result.Data }); } else { return new JsonResult(new { success = result.IsSuccedded, message = result.Message }); } } public IActionResult OnGetCreate() { var command = new CreateCustomizeCheckoutTempGroup(); return Partial("ModalCheckoutTemporaryCreate", command); } public IActionResult OnPostCreate(CreateCustomizeCheckoutTempGroup command) { command.WorkshopId = _workshopId; var result = _customizeCheckoutTempApplication.GroupCreate(command); return new JsonResult(new { success = result.IsSuccedded, message = result.Message }); } public IActionResult OnGetPrintOne(long checkoutId, int yearFa, int monthFa) { List id = new() { checkoutId }; Console.WriteLine(id); var result = _customizeCheckoutTempApplication.PrintAll(_workshopId, id).FirstOrDefault(); return Partial("PrintOneCheckoutTemporary", result); } public IActionResult OnGetLoadAllToPrint(List checkoutId) { var result = _customizeCheckoutTempApplication.PrintAll(_workshopId, checkoutId); return new JsonResult(new { data = result, pageIndex = result.Count }); } public IActionResult OnPostDeleteOne(long checkoutId) { List id = [checkoutId]; var result = _customizeCheckoutTempApplication.GroupRemove(_workshopId,id); return new JsonResult(new { success = result.IsSuccedded, message = result.Message }); } public IActionResult OnPostDeleteAll(List checkoutIds) { // var ids = ExtractNumbers(checkoutIds); var result = _customizeCheckoutTempApplication.GroupRemove(_workshopId,checkoutIds); return new JsonResult(new { success = result.IsSuccedded, message = result.Message }); } public IActionResult OnGetExcelModal() { return Partial("ModalExcelSetting"); } public IActionResult OnGetBankListAjax() { var resultData = _bankApplication.Search(""); return new JsonResult(new { success = true, data = resultData, }); } } }