Files
Backend-Api/CompanyManagment.EFCore/Repository/ReportClientRepository.cs
2024-07-09 19:31:25 +03:30

570 lines
25 KiB
C#

using _0_Framework.Application;
using AccountMangement.Infrastructure.EFCore;
using Company.Domain.ReportClientAgg;
using CompanyManagment.App.Contracts.ReportClient;
using System;
using System.Collections.Generic;
using System.Linq;
namespace CompanyManagment.EFCore.Repository;
public class ReportClientRepository : IReportClientRepository
{
private readonly CompanyContext _context;
private readonly AccountContext _accountContext;
private readonly IAuthHelper _authHelper;
public ReportClientRepository(CompanyContext context, AccountContext accountContext, IAuthHelper authHelper)
{
_context = context;
_accountContext = accountContext;
_authHelper = authHelper;
}
public List<CheckoutReportViewModel> GetAllCheckoutReport(long workshopId, CheckoutReportSearchModel searchModel)
{
#region CheckValidtWorkshop
var accountId = _authHelper.CurrentAccountId();
var contracingPartyAcc = _context.ContractingPartyAccounts.FirstOrDefault(x => x.AccountId == accountId);
if (contracingPartyAcc == null)
{
return new List<CheckoutReportViewModel>();
}
var employers = _context.Employers.Where(x => x.ContractingPartyId == contracingPartyAcc.PersonalContractingPartyId).Select(x => x.id).ToList();
if (!employers.Any())
{
return new List<CheckoutReportViewModel>();
}
var workshopIds = _context.WorkshopEmployers.Where(x => employers.Contains(x.EmployerId)).Select(x => x.WorkshopId).ToList();
if (!workshopIds.Contains(workshopId))
{
return new List<CheckoutReportViewModel>();
}
#endregion
var query = _context.CheckoutSet.Select(x => new CheckoutReportViewModel()
{
Id = x.id,
EmployeeId = x.EmployeeId,
WorkshopId = x.WorkshopId,
Year = x.Year,
Month = x.Month,
EmployeeFullName = x.EmployeeFullName,
NationalCode = x.NationalCode,
SumOfWorkingDays = x.SumOfWorkingDays,
ContractStartGr = x.ContractStart,
ContractEndGr = x.ContractEnd,
MonthlySalary = x.MonthlySalary.ToMoney(),
BaseYearsPay = x.BaseYearsPay.ToMoney(),
ConsumableItems = x.ConsumableItems.ToMoney(),
HousingAllowance = x.HousingAllowance.ToMoney(),
OvertimePay = x.OvertimePay.ToMoney(),
NightworkPay = x.NightworkPay.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
MissionPay = x.MissionPay.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
BonusesPay = x.BonusesPay.ToMoney(),
YearsPay = x.YearsPay.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
TaxDeducation = x.TaxDeducation.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
AbsenceDeduction = x.AbsenceDeduction.ToMoney(),
TotalClaims = x.TotalClaims,
TotalDeductions = x.TotalDeductions,
TotalPayment = x.TotalPayment.ToMoney(),
RewardPay = x.RewardPay.ToMoneyNullable(),
MarriedAllowance = x.MarriedAllowance.ToMoney(),
}).Where(x => x.WorkshopId == workshopId);
if (searchModel.EmployeeId > 0)
query = query.Where(x => x.EmployeeId == searchModel.EmployeeId);
if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month))
{
var y = searchModel.Year + "/" + searchModel.Month + "/01";
string y2 = string.Empty;
int month = Convert.ToInt32(searchModel.Month);
int year = Convert.ToInt32(searchModel.Year);
if (month <= 6)
{
y2 = $"{searchModel.Year}/{searchModel.Month}/31";
}
else if (month > 6 && month < 12)
{
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
}
else if (month == 12)
{
switch (year)
{
case 1346:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1350:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1354:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1358:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1362:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1366:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1370:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1375:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1379:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1383:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1387:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1391:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1395:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1399:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1403:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1408:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1412:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1416:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1420:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1424:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1428:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1432:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1436:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1441:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1445:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
default:
y2 = $"{searchModel.Year}/{searchModel.Month}/29";
break;
}
}
var start = y.ToGeorgianDateTime();
var end = y2.ToGeorgianDateTime();
query = query.Where(x => x.ContractStartGr >= start && x.ContractStartGr < end && x.ContractEndGr > start && x.ContractEndGr <= end ||
x.ContractStartGr <= start && x.ContractEndGr >= end || start <= x.ContractStartGr && end > x.ContractStartGr || end >= x.ContractEndGr && start < x.ContractEndGr);
}
return query.OrderByDescending(x => x.ContractStartGr).Skip(searchModel.PageIndex).Take(30).ToList();
}
public CheckoutReportTotalsViewModel GetAllSumCheckoutReport(long workshopId, CheckoutReportSearchModel searchModel)
{
string result = "0";
#region CheckValidtWorkshop
var accountId = _authHelper.CurrentAccountId();
var contracingPartyAcc = _context.ContractingPartyAccounts.FirstOrDefault(x => x.AccountId == accountId);
if (contracingPartyAcc == null)
{
return new CheckoutReportTotalsViewModel();
}
var employers = _context.Employers.Where(x => x.ContractingPartyId == contracingPartyAcc.PersonalContractingPartyId).Select(x => x.id).ToList();
if (!employers.Any())
{
return new CheckoutReportTotalsViewModel();
}
var workshopIds = _context.WorkshopEmployers.Where(x => employers.Contains(x.EmployerId)).Select(x => x.WorkshopId).ToList();
if (!workshopIds.Contains(workshopId))
{
return new CheckoutReportTotalsViewModel();
}
#endregion
var query = _context.CheckoutSet.Select(x => new CheckoutReportViewModel()
{
Id = x.id,
EmployeeId = x.EmployeeId,
WorkshopId = x.WorkshopId,
Year = x.Year,
Month = x.Month,
EmployeeFullName = x.EmployeeFullName,
NationalCode = x.NationalCode,
SumOfWorkingDays = x.SumOfWorkingDays,
ContractStartGr = x.ContractStart,
ContractEndGr = x.ContractEnd,
MonthlySalaryDouble = x.MonthlySalary,
BaseYearsPayDouble = x.BaseYearsPay,
ConsumableItemsDouble = x.ConsumableItems,
HousingAllowanceDouble = x.HousingAllowance,
OvertimePayDouble = x.OvertimePay,
NightworkPayDouble = x.NightworkPay,
FridayPayDouble = x.FridayPay,
MissionPayDouble = x.MissionPay,
ShiftPayDouble = x.ShiftPay,
FamilyAllowanceDouble = x.FamilyAllowance,
BonusesPayDouble = x.BonusesPay,
YearsPayDouble = x.YearsPay,
LeavePayDouble = x.LeavePay,
InsuranceDeductionDouble = x.InsuranceDeduction,
TaxDeducationDouble = x.TaxDeducation,
InstallmentDeductionDouble = x.InstallmentDeduction,
SalaryAidDeductionDouble = x.SalaryAidDeduction,
AbsenceDeductionDouble = x.AbsenceDeduction,
TotalClaims = x.TotalClaims,
TotalDeductions = x.TotalDeductions,
TotalPaymentDouble = x.TotalPayment,
RewardPayDouble = x.RewardPay,
MarriedAllowanceDouble = x.MarriedAllowance,
}).Where(x => x.WorkshopId == workshopId);
if (searchModel.EmployeeId > 0)
query = query.Where(x => x.EmployeeId == searchModel.EmployeeId);
if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month))
{
var y = searchModel.Year + "/" + searchModel.Month + "/01";
string y2 = string.Empty;
int month = Convert.ToInt32(searchModel.Month);
int year = Convert.ToInt32(searchModel.Year);
if (month <= 6)
{
y2 = $"{searchModel.Year}/{searchModel.Month}/31";
}
else if (month > 6 && month < 12)
{
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
}
else if (month == 12)
{
switch (year)
{
case 1346:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1350:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1354:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1358:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1362:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1366:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1370:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1375:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1379:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1383:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1387:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1391:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1395:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1399:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1403:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1408:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1412:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1416:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1420:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1424:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1428:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1432:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1436:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1441:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1445:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
default:
y2 = $"{searchModel.Year}/{searchModel.Month}/29";
break;
}
}
var start = y.ToGeorgianDateTime();
var end = y2.ToGeorgianDateTime();
query = query.Where(x => x.ContractStartGr >= start && x.ContractStartGr < end && x.ContractEndGr > start && x.ContractEndGr <= end ||
x.ContractStartGr <= start && x.ContractEndGr >= end || start <= x.ContractStartGr && end > x.ContractStartGr || end >= x.ContractEndGr && start < x.ContractEndGr);
}
var list = query.ToList();
return new CheckoutReportTotalsViewModel()
{
MonthlySalarySum = (list.Sum(x => x.MonthlySalaryDouble)).ToMoney(),
BaseYearsPaySum = (list.Sum(x => x.BaseYearsPayDouble)).ToMoney(),
ConsumableItemsSum = (list.Sum(x => x.ConsumableItemsDouble)).ToMoney(),
HousingAllowanceSum = (list.Sum(x => x.HousingAllowanceDouble)).ToMoney(),
OvertimePaySum = (list.Sum(x => x.OvertimePayDouble)).ToMoney(),
NightworkPaySum = (list.Sum(x => x.NightworkPayDouble)).ToMoney(),
FridayPaySum = (list.Sum(x => x.FridayPayDouble)).ToMoney(),
MissionPaySum = (list.Sum(x => x.MissionPayDouble)).ToMoney(),
ShiftPaySum = (list.Sum(x => x.ShiftPayDouble)).ToMoney(),
FamilyAllowanceSum = (list.Sum(x => x.FamilyAllowanceDouble)).ToMoney(),
BonusesPaySum = (list.Sum(x => x.BonusesPayDouble)).ToMoney(),
YearsPaySum = (list.Sum(x => x.YearsPayDouble)).ToMoney(),
LeavePaySum = (list.Sum(x => x.LeavePayDouble)).ToMoney(),
InsuranceDeductionSum = (list.Sum(x => x.InsuranceDeductionDouble)).ToMoney(),
TaxDeducationSum = (list.Sum(x => x.TaxDeducationDouble)).ToMoney(),
InstallmentDeductionSum = (list.Sum(x => x.InstallmentDeductionDouble)).ToMoney(),
SalaryAidDeductionSum = (list.Sum(x => x.SalaryAidDeductionDouble)).ToMoney(),
AbsenceDeductionSum = (list.Sum(x => x.AbsenceDeductionDouble)).ToMoney(),
//TotalClaims = (list.Sum(x => x.AbsenceDeductionDouble)).ToMoney(),
//TotalDeductions = (list.Sum(x => x.AbsenceDeductionDouble)).ToMoney(),
TotalPaymentSum = (list.Sum(x => x.TotalPaymentDouble)).ToMoney(),
RewardPaySum = (list.Sum(x => x.RewardPayDouble)).ToMoneyNullable(),
MarriedAllowanceSum = (list.Sum(x => x.MarriedAllowanceDouble)).ToMoney(),
};
}
public List<CheckoutReportViewModel> GetAllCheckoutReportPrintAll(long workshopId, CheckoutReportSearchModel searchModel)
{
#region CheckValidtWorkshop
var accountId = _authHelper.CurrentAccountId();
var contracingPartyAcc = _context.ContractingPartyAccounts.FirstOrDefault(x => x.AccountId == accountId);
if (contracingPartyAcc == null)
{
return new List<CheckoutReportViewModel>();
}
var employers = _context.Employers.Where(x => x.ContractingPartyId == contracingPartyAcc.PersonalContractingPartyId).Select(x => x.id).ToList();
if (!employers.Any())
{
return new List<CheckoutReportViewModel>();
}
var workshopIds = _context.WorkshopEmployers.Where(x => employers.Contains(x.EmployerId)).Select(x => x.WorkshopId).ToList();
if (!workshopIds.Contains(workshopId))
{
return new List<CheckoutReportViewModel>();
}
#endregion
var query = _context.CheckoutSet.Select(x => new CheckoutReportViewModel()
{
Id = x.id,
EmployeeId = x.EmployeeId,
WorkshopId = x.WorkshopId,
Year = x.Year,
Month = x.Month,
EmployeeFullName = x.EmployeeFullName,
NationalCode = x.NationalCode,
SumOfWorkingDays = x.SumOfWorkingDays,
ContractStartGr = x.ContractStart,
ContractEndGr = x.ContractEnd,
MonthlySalary = x.MonthlySalary.ToMoney(),
BaseYearsPay = x.BaseYearsPay.ToMoney(),
ConsumableItems = x.ConsumableItems.ToMoney(),
HousingAllowance = x.HousingAllowance.ToMoney(),
OvertimePay = x.OvertimePay.ToMoney(),
NightworkPay = x.NightworkPay.ToMoney(),
FridayPay = x.FridayPay.ToMoney(),
MissionPay = x.MissionPay.ToMoney(),
ShiftPay = x.ShiftPay.ToMoney(),
FamilyAllowance = x.FamilyAllowance.ToMoney(),
BonusesPay = x.BonusesPay.ToMoney(),
YearsPay = x.YearsPay.ToMoney(),
LeavePay = x.LeavePay.ToMoney(),
InsuranceDeduction = x.InsuranceDeduction.ToMoney(),
TaxDeducation = x.TaxDeducation.ToMoney(),
InstallmentDeduction = x.InstallmentDeduction.ToMoney(),
SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(),
AbsenceDeduction = x.AbsenceDeduction.ToMoney(),
TotalClaims = x.TotalClaims,
TotalDeductions = x.TotalDeductions,
TotalPayment = x.TotalPayment.ToMoney(),
RewardPay = x.RewardPay.ToMoneyNullable(),
MarriedAllowance = x.MarriedAllowance.ToMoney(),
}).Where(x => x.WorkshopId == workshopId);
if (searchModel.EmployeeId > 0)
query = query.Where(x => x.EmployeeId == searchModel.EmployeeId);
if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month))
{
var y = searchModel.Year + "/" + searchModel.Month + "/01";
string y2 = string.Empty;
int month = Convert.ToInt32(searchModel.Month);
int year = Convert.ToInt32(searchModel.Year);
if (month <= 6)
{
y2 = $"{searchModel.Year}/{searchModel.Month}/31";
}
else if (month > 6 && month < 12)
{
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
}
else if (month == 12)
{
switch (year)
{
case 1346:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1350:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1354:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1358:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1362:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1366:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1370:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1375:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1379:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1383:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1387:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1391:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1395:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1399:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1403:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1408:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1412:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1416:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1420:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1424:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1428:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1432:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1436:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1441:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
case 1445:
y2 = $"{searchModel.Year}/{searchModel.Month}/30";
break;
default:
y2 = $"{searchModel.Year}/{searchModel.Month}/29";
break;
}
}
var start = y.ToGeorgianDateTime();
var end = y2.ToGeorgianDateTime();
query = query.Where(x => x.ContractStartGr >= start && x.ContractStartGr < end && x.ContractEndGr > start && x.ContractEndGr <= end ||
x.ContractStartGr <= start && x.ContractEndGr >= end || start <= x.ContractStartGr && end > x.ContractStartGr || end >= x.ContractEndGr && start < x.ContractEndGr);
}
return query.OrderByDescending(x => x.ContractStartGr).ToList();
}
}