291 lines
12 KiB
C#
291 lines
12 KiB
C#
using _0_Framework.Application;
|
|
using _0_Framework.Excel.Checkout;
|
|
using CompanyManagment.App.Contracts.CustomizeCheckout;
|
|
using CompanyManagment.App.Contracts.Workshop;
|
|
using CompanyManagment.App.Contracts.YearlySalary;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
using System.Security.Claims;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout
|
|
{
|
|
public class PrintAllCheckoutUnofficialModel : PageModel
|
|
{
|
|
|
|
private readonly IWorkshopApplication _workshopApplication;
|
|
private readonly IYearlySalaryApplication _yearlySalaryApplication;
|
|
private readonly IPasswordHasher _passwordHasher;
|
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
private readonly ICustomizeCheckoutApplication _customizeCheckoutApplication;
|
|
|
|
public long WorkshopId;
|
|
private readonly long _workshopId;
|
|
public int YearFa;
|
|
public int MonthFa;
|
|
|
|
//by pooya
|
|
public List<CustomizeCheckoutViewModel> GroupPrintList;
|
|
public CustomizeChekoutDividedPrintViewModel DividList;
|
|
public int StartPrint;
|
|
public int EndPrint;
|
|
public List<long> printIdList;
|
|
|
|
public CustomizeCheckoutBatchPrintViewModel sendIds;
|
|
|
|
public PrintAllCheckoutUnofficialModel(IPasswordHasher passwordHasher, IHttpContextAccessor httpContextAccessor, IWorkshopApplication workshopApplication, IYearlySalaryApplication yearlySalaryApplication, ICustomizeCheckoutApplication customizeCheckoutApplication)
|
|
{
|
|
_passwordHasher = passwordHasher;
|
|
_httpContextAccessor = httpContextAccessor;
|
|
_workshopApplication = workshopApplication;
|
|
_yearlySalaryApplication = yearlySalaryApplication;
|
|
_customizeCheckoutApplication = customizeCheckoutApplication;
|
|
|
|
var workshopHash = _httpContextAccessor.HttpContext?.User.FindFirstValue("WorkshopSlug");
|
|
_workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
}
|
|
|
|
public void OnGet(string idlist)
|
|
{
|
|
var ids = idlist.ExtractNumbers();
|
|
var resultList = new List<CustomizeCheckoutBatchPrintViewModel>();
|
|
|
|
var res = _customizeCheckoutApplication.PrintAll(_workshopId, ids);
|
|
var printCounter = ids.Count();
|
|
if (printCounter <= 25)
|
|
{
|
|
GroupPrintList = res;
|
|
var addToList = new CustomizeCheckoutBatchPrintViewModel()
|
|
{
|
|
CustomizeCheckoutIdList = res.Select(x => x.Id).ToList(),
|
|
StartPrint = 1,
|
|
EndPrint = printCounter,
|
|
};
|
|
|
|
resultList.Add(addToList);
|
|
var finalResult = new CustomizeChekoutDividedPrintViewModel()
|
|
{
|
|
CustomizeCheckoutGroupPrintViewModels = resultList,
|
|
ButtonCounter = resultList.Count,
|
|
};
|
|
DividList = finalResult;
|
|
}
|
|
else
|
|
{
|
|
var divide20 = printCounter / 20;
|
|
var multiple = printCounter - (divide20 * 20);
|
|
if (multiple == 0)
|
|
{
|
|
for (int i = 1; i <= printCounter; i += 20)
|
|
{
|
|
var start = i;
|
|
var end = i + 19;
|
|
if (i == 1)
|
|
{
|
|
GroupPrintList = res.Where(x => x.PrintCounter >= start && x.PrintCounter <= end).ToList();
|
|
|
|
var addToList = new CustomizeCheckoutBatchPrintViewModel()
|
|
{
|
|
CustomizeCheckoutIdList = res.Where(x => x.PrintCounter >= start && x.PrintCounter <= end).Select(x => x.Id).ToList(),
|
|
StartPrint = start,
|
|
EndPrint = end,
|
|
};
|
|
|
|
resultList.Add(addToList);
|
|
}
|
|
else
|
|
{
|
|
var addToList = new CustomizeCheckoutBatchPrintViewModel()
|
|
{
|
|
CustomizeCheckoutIdList = res.Where(x => x.PrintCounter >= start && x.PrintCounter <= end).Select(x => x.Id).ToList(),
|
|
StartPrint = start,
|
|
EndPrint = end,
|
|
};
|
|
resultList.Add(addToList);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
var finalResult = new CustomizeChekoutDividedPrintViewModel()
|
|
{
|
|
CustomizeCheckoutGroupPrintViewModels = resultList,
|
|
ButtonCounter = resultList.Count,
|
|
};
|
|
DividList = finalResult;
|
|
|
|
|
|
}
|
|
else if (multiple <= 5)
|
|
{
|
|
int endOfround = 0;
|
|
|
|
for (int i = 1; i <= printCounter - 26; i += 20)
|
|
{
|
|
var start = i;
|
|
var end = i + 19;
|
|
|
|
if (i == 1)
|
|
{
|
|
GroupPrintList = res.Where(x => x.PrintCounter >= start && x.PrintCounter <= end).ToList();
|
|
|
|
endOfround = end;
|
|
var addToList = new CustomizeCheckoutBatchPrintViewModel()
|
|
{
|
|
CustomizeCheckoutIdList = res.Where(x => x.PrintCounter >= start && x.PrintCounter <= end).Select(x => x.Id).ToList(),
|
|
StartPrint = start,
|
|
EndPrint = end,
|
|
};
|
|
|
|
resultList.Add(addToList);
|
|
}
|
|
else
|
|
{
|
|
var addToList = new CustomizeCheckoutBatchPrintViewModel()
|
|
{
|
|
CustomizeCheckoutIdList = res.Where(x => x.PrintCounter >= start && x.PrintCounter <= end).Select(x => x.Id).ToList(),
|
|
StartPrint = start,
|
|
EndPrint = end,
|
|
};
|
|
endOfround = end;
|
|
resultList.Add(addToList);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
var count = res.Where(x => x.PrintCounter > endOfround).ToList();
|
|
var addLastPart = new CustomizeCheckoutBatchPrintViewModel()
|
|
{
|
|
CustomizeCheckoutIdList = res.Where(x => x.PrintCounter > endOfround).Select(x => x.Id).ToList(),
|
|
StartPrint = count.Select(x => x.PrintCounter).FirstOrDefault(),
|
|
EndPrint = count.Select(x => x.PrintCounter).LastOrDefault(),
|
|
};
|
|
resultList.Add(addLastPart);
|
|
var finalResult = new CustomizeChekoutDividedPrintViewModel()
|
|
{
|
|
CustomizeCheckoutGroupPrintViewModels = resultList,
|
|
ButtonCounter = resultList.Count,
|
|
};
|
|
DividList = finalResult;
|
|
}
|
|
else if (multiple > 5)
|
|
{
|
|
int endOfround = 0;
|
|
var pcounter = multiple + 1;
|
|
for (int i = 1; i <= printCounter - pcounter; i += 20)
|
|
{
|
|
var start = i;
|
|
var end = i + 19;
|
|
|
|
if (i == 1)
|
|
{
|
|
GroupPrintList = res.Where(x => x.PrintCounter >= start && x.PrintCounter <= end).ToList();
|
|
|
|
endOfround = end;
|
|
var addToList = new CustomizeCheckoutBatchPrintViewModel()
|
|
{
|
|
CustomizeCheckoutIdList = res.Where(x => x.PrintCounter >= start && x.PrintCounter <= end).Select(x => x.Id).ToList(),
|
|
StartPrint = start,
|
|
EndPrint = end,
|
|
};
|
|
|
|
resultList.Add(addToList);
|
|
}
|
|
else
|
|
{
|
|
var addToList = new CustomizeCheckoutBatchPrintViewModel()
|
|
{
|
|
CustomizeCheckoutIdList = res.Where(x => x.PrintCounter >= start && x.PrintCounter <= end).Select(x => x.Id).ToList(),
|
|
StartPrint = start,
|
|
EndPrint = end,
|
|
};
|
|
endOfround = end;
|
|
resultList.Add(addToList);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
var count = res.Where(x => x.PrintCounter > endOfround).ToList();
|
|
var addLastPart = new CustomizeCheckoutBatchPrintViewModel()
|
|
{
|
|
CustomizeCheckoutIdList = res.Where(x => x.PrintCounter > endOfround).Select(x => x.Id).ToList(),
|
|
StartPrint = count.Select(x => x.PrintCounter).FirstOrDefault(),
|
|
EndPrint = count.Select(x => x.PrintCounter).LastOrDefault(),
|
|
};
|
|
resultList.Add(addLastPart);
|
|
var finalResult = new CustomizeChekoutDividedPrintViewModel()
|
|
{
|
|
CustomizeCheckoutGroupPrintViewModels = resultList,
|
|
ButtonCounter = resultList.Count,
|
|
};
|
|
DividList = finalResult;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public IActionResult OnGetPrintAll(CustomizeCheckoutBatchPrintViewModel sendIds)
|
|
{
|
|
var res = _customizeCheckoutApplication.PrintAll(_workshopId, sendIds.CustomizeCheckoutIdList);
|
|
var result = new CustomizeCheckoutBatchPrintViewModel()
|
|
{
|
|
CustomizeCheckoutViewModels = res,
|
|
};
|
|
return Partial("PrintAllUnofficial", result);
|
|
}
|
|
|
|
public IActionResult OnGetDownloadExcelAll(string idList)
|
|
{
|
|
var ids = idList.ExtractNumbers();
|
|
var res = _customizeCheckoutApplication.PrintAll(_workshopId, ids);
|
|
|
|
|
|
var customizeCheckoutTempExcelViewModels = res.Select(x=> new CustomizeCheckoutTempExcelViewModel()
|
|
{
|
|
|
|
EmployeeId = x.EmployeeId,
|
|
Month = x.Month,
|
|
Year = x.Year,
|
|
PersonnelCode = x.PersonnelCode,
|
|
MonthlySalary = x.MonthlySalary,
|
|
BaseYearsPay = x.BaseYearsPay,
|
|
OvertimePay = x.OvertimePay,
|
|
NightworkPay = x.NightworkPay,
|
|
FridayPay = x.FridayPay,
|
|
ShiftPay = x.ShiftPay,
|
|
FamilyAllowance = x.FamilyAllowance,
|
|
BonusesPay = x.BonusesPay,
|
|
LeavePay = x.LeavePay,
|
|
InsuranceDeduction = x.InsuranceDeduction,
|
|
TaxDeducation = x.TaxDeducation,
|
|
InstallmentDeduction = x.InstallmentDeduction,
|
|
SalaryAidDeduction = x.SalaryAidDeduction,
|
|
AbsenceDeduction = x.AbsenceDeduction,
|
|
TotalClaims = x.TotalClaims,
|
|
TotalDeductions = x.TotalDeductions,
|
|
TotalPayment = x.TotalPayment,
|
|
RewardPay = x.RewardPay,
|
|
MarriedAllowance = x.MarriedAllowance,
|
|
SumOfWorkingDays = x.SumOfWorkingDays,
|
|
NationalCode = x.NationalCode,
|
|
EmployeeFName = x.EmployeeFName,
|
|
EmployeeLName = x.EmployeeLName,
|
|
EarlyExitDeduction = x.EarlyExitDeduction,
|
|
LateToWorkDeduction = x.LateToWorkDeduction,
|
|
FineDeduction = x.FineDeduction,
|
|
}).ToList();
|
|
|
|
var excelBytes = CustomizeCheckoutExcelGenerator.GenerateCheckoutTempExcelInfo(customizeCheckoutTempExcelViewModels);
|
|
|
|
return File(excelBytes,
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
$"گزارش تجمیعی فیش حقوقی غیر رسمی نهایی.xlsx");
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|