Files
Backend-Api/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs
2025-04-08 16:32:10 +03:30

304 lines
9.2 KiB
C#

using System;
using System.Collections.Generic;
using _0_Framework.Application;
using _0_Framework.Domain;
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
using Company.Domain.CustomizeCheckoutAgg.ValueObjects;
using Company.Domain.EmployeeAgg;
using Company.Domain.WorkshopAgg;
namespace Company.Domain.CustomizeCheckoutAgg;
/// <summary>
/// تصفیه حساب دلخواه
/// </summary>
public class CustomizeCheckout : EntityBase
{
private CustomizeCheckout()
{ }
public CustomizeCheckout(DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName,
string employeeLName, DateTime employeeDateOfBirth,
string employeeNationalCode, string workshopFullName, long workshopId, long? contractId,
double monthlySalary, double fridayPay, double overTimePay, double baseYearsPay, double bonusesPay,
double nightWorkPay,
double marriedAllowance, double shiftPay, double familyAllowance, double leavePay, double insuranceDeduction,
double fineAbsenceDeduction,
double lateToWorkDeduction, double earlyExitDeduction, double rewardPay, double salaryAidDeduction,
double installmentDeduction,
double fineDeduction, double taxDeduction, string sumOfWorkingDays, string totalClaims, string totalDeductions,
double totalPayment, string contractNo, ICollection<CustomizeCheckoutFine> checkoutFines,
ICollection<CustomizeCheckoutLoanInstallments> customizeCheckoutLoanInstallments,
ICollection<CustomizeCheckoutSalaryAid> customizeCheckoutSalaryAids,
ICollection<CustomizeCheckoutReward> customizeCheckoutRewards, TimeSpan lateToWorkValue, double settingSalary,
double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift,
ICollection<CustomizeRotatingShift> customizeRotatingShifts, ICollection<CustomizeCheckoutRegularShift> employeeSettingsShifts)
{
YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4));
MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2));
ContractStart = contractStart;
ContractEnd = contractEnd;
EmployeeId = employeeId;
WorkshopId = workshopId;
MonthlySalary = monthlySalary;
FridayPay = fridayPay;
OverTimePay = overTimePay;
BaseYearsPay = baseYearsPay;
BonusesPay = bonusesPay;
NightWorkPay = nightWorkPay;
MarriedAllowance = marriedAllowance;
ShiftPay = shiftPay;
FamilyAllowance = familyAllowance;
LeavePay = leavePay;
InsuranceDeduction = insuranceDeduction;
FineAbsenceDeduction = fineAbsenceDeduction;
LateToWorkDeduction = lateToWorkDeduction;
EarlyExitDeduction = earlyExitDeduction;
RewardPay = rewardPay;
SalaryAidDeduction = salaryAidDeduction;
InstallmentDeduction = installmentDeduction;
FineDeduction = fineDeduction;
TaxDeduction = taxDeduction;
SumOfWorkingDays = sumOfWorkingDays;
TotalClaims = totalClaims;
TotalDeductions = totalDeductions;
TotalPayment = totalPayment;
ContractId = contractId;
ContractNo = contractNo;
CheckoutFines = checkoutFines;
CustomizeCheckoutLoanInstallments = customizeCheckoutLoanInstallments;
CustomizeCheckoutSalaryAids = customizeCheckoutSalaryAids;
CustomizeCheckoutRewards = customizeCheckoutRewards;
EmployeeFName = employeeFName;
EmployeeLName = employeeLName;
DateOfBirth = employeeDateOfBirth;
NationalCode = employeeNationalCode;
WorkshopFullName = workshopFullName;
LateToWorkValue = lateToWorkValue;
SettingSalary = settingSalary;
DailyWage = dailyWage;
ShiftStatus = shiftStatus;
IrregularShift = irregularShift;
CustomizeRotatingShifts = customizeRotatingShifts;
RegularShifts = employeeSettingsShifts;
}
#region Getters
/// <summary>
/// سال به صورت استرینگ
/// </summary>
public string Year => $"{YearInt}";
/// <summary>
/// نام ماه شمسی
/// </summary>
public string Month => MonthInt.ToFarsiMonthByIntNumber();
public string EmployeeFullName => $"{EmployeeFName} {EmployeeLName}";
#endregion
#region Employee Info
public string EmployeeFName { get; private set; }
public string EmployeeLName { get; private set; }
public DateTime DateOfBirth { get; private set; }
public string NationalCode { get; private set; }
#endregion
public string WorkshopFullName { get; private set; }
#region DatabaseEntities
#region RelationProperties
public long EmployeeId { get; private set; }
public long WorkshopId { get; private set; }
public long? ContractId { get; private set; }
#endregion
/// <summary>
/// شماره قرارداد
/// </summary>
public string ContractNo { get; private set; }
/// <summary>
/// سال
/// </summary>
public int YearInt { get; private set; }
/// <summary>
/// ماه
/// </summary>
public int MonthInt { get; private set; }
/// <summary>
/// حقوق ماهانه
/// </summary>
public double MonthlySalary { get; private set; }
/// <summary>
/// شروع تصفیه حساب
/// </summary>
public DateTime ContractStart { get; private set; }
/// <summary>
/// پایان تصفیه حساب
/// </summary>
public DateTime ContractEnd { get; private set; }
/// <summary>
/// جمعه کاری
/// </summary>
public double FridayPay { get; private set; }
/// <summary>
/// اضافه کاری
/// </summary>
public double OverTimePay { get; private set; }
/// <summary>
/// سنوات
/// </summary>
public double BaseYearsPay { get; private set; }
/// <summary>
/// عیدی
/// </summary>
public double BonusesPay { get; private set; }
/// <summary>
/// شب کاری
/// </summary>
public double NightWorkPay { get; private set; }
/// <summary>
/// حق تاهل
/// </summary>
public double MarriedAllowance { get; private set; }
/// <summary>
/// نوبت کاری
/// </summary>
public double ShiftPay { get; private set; }
/// <summary>
/// حق اولاد(حق فرزند)ء
/// </summary>
public double FamilyAllowance { get; private set; }
/// <summary>
/// مزد مرخصی
/// </summary>
public double LeavePay { get; private set; }
/// <summary>
/// حق بیمه
/// </summary>
public double InsuranceDeduction { get; private set; }
/// <summary>
/// جریمه غیبت
/// </summary>
public double FineAbsenceDeduction { get; private set; }
/// <summary>
/// تاخیر در ورود
/// </summary>
public double LateToWorkDeduction { get; private set; }
/// <summary>
/// تعجیل در خروج
/// </summary>
public double EarlyExitDeduction { get; private set; }
/// <summary>
/// پاداش
/// </summary>
public double RewardPay { get; private set; }
/// <summary>
/// مساعده
/// </summary>
public double SalaryAidDeduction { get; private set; }
/// <summary>
/// قسط وام
/// </summary>
public double InstallmentDeduction { get; private set; }
/// <summary>
/// جریمه
/// </summary>
public double FineDeduction { get; private set; }
/// <summary>
/// مالیات
/// </summary>
public double TaxDeduction { get; private set; }
/// <summary>
/// تعداد روزهای کارکرد
/// </summary>
public string SumOfWorkingDays { get; private set; }
/// <summary>
/// مجموع مطالبات
/// </summary>
public string TotalClaims { get; private set; }
/// <summary>
/// مجموع کسورات
/// </summary>
public string TotalDeductions { get; private set; }
/// <summary>
/// مجموع پرداختی
/// </summary>
public double TotalPayment { get; private set; }
/// <summary>
/// مزد روزانه
/// </summary>
public double DailyWage { get; private set; }
/// <summary>
/// حقوق تعیین شده
/// </summary>
public double SettingSalary { get; private set; }
public WorkshopShiftStatus ShiftStatus { get; set; }
#region Values
public TimeSpan LateToWorkValue { get; private set; }
#endregion
#endregion
#region valueObjects
public ICollection<CustomizeCheckoutFine> CheckoutFines { get; private set; }
public ICollection<CustomizeCheckoutLoanInstallments> CustomizeCheckoutLoanInstallments { get; set; }
public ICollection<CustomizeCheckoutSalaryAid> CustomizeCheckoutSalaryAids { get; set; }
public ICollection<CustomizeCheckoutReward> CustomizeCheckoutRewards { get; set; }
public IrregularShift IrregularShift { get; set; }
public ICollection<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; }
public ICollection<CustomizeCheckoutRegularShift> RegularShifts { get; set; }
#endregion
#region Relations
public Workshop Workshop { get; set; }
public Employee Employee { get; set; }
#endregion
}