Files
Backend-Api/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml.cs

209 lines
7.8 KiB
C#

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<CustomizeCheckoutViewModel> CustomizeCheckouts;
public List<string> 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 IActionResult OnGetEmployeeList()
{
var result = _employeeApplication.GetWorkingEmployeesByWorkshopId(_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<long> id = new() { checkoutId };
Console.WriteLine(id);
var result = _customizeCheckoutTempApplication.PrintAll(_workshopId, id).FirstOrDefault();
return Partial("PrintOneCheckoutTemporary", result);
}
public IActionResult OnGetLoadAllToPrint(List<long> checkoutId)
{
var result = _customizeCheckoutTempApplication.PrintAll(_workshopId, checkoutId);
return new JsonResult(new
{
data = result,
pageIndex = result.Count
});
}
public IActionResult OnPostDeleteOne(long checkoutId)
{
List<long> id = [checkoutId];
var result = _customizeCheckoutTempApplication.GroupRemove(_workshopId,id);
return new JsonResult(new
{
success = result.IsSuccedded,
message = result.Message
});
}
public IActionResult OnPostDeleteAll(List<long> 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,
});
}
}
}