From d1e5adf96f27bf43616d20487f33951022db4c5a Mon Sep 17 00:00:00 2001 From: MahanCh Date: Thu, 8 May 2025 14:08:28 +0330 Subject: [PATCH] add salaryAid calculation Date and edit checkout on cahnge salary & ... --- 0_Framework/Application/Tools.cs | 13 +- .../CustomizeCheckoutAgg/CustomizeCheckout.cs | 125 +- .../ICustomizeCheckoutRepository.cs | 9 +- .../ValueObjects/CustomizeCheckoutFine.cs | 4 +- .../CustomizeCheckoutLoanInstallments.cs | 5 +- .../ValueObjects/CustomizeCheckoutReward.cs | 5 +- .../CustomizeCheckoutSalaryAid.cs | 11 +- .../CustomizeCheckoutTemp.cs | 74 +- .../ICustomizeCheckoutTempRepository.cs | 3 + .../CustomizeCheckoutSalaryAid.cs | 11 +- .../ValueObjects/CustomizeCheckoutTempFine.cs | 6 +- .../CustomizeCheckoutTempLoanInstallments.cs | 5 +- .../CustomizeCheckoutTempReward.cs | 5 +- Company.Domain/SalaryAidAgg/SalaryAid.cs | 25 +- .../SalaryAid/SalaryAidImportExcel.cs | 102 +- .../ICustomizeCheckoutApplication.cs | 7 +- .../Loan/LoanInstallmentViewModel.cs | 3 +- .../Reward/IRewardApplication.cs | 3 +- .../SalaryAid/CreateSalaryAidViewModel.cs | 4 +- .../SalaryAid/ISalaryAidApplication.cs | 2 +- .../SalaryAid/SalaryAidViewModel.cs | 22 +- .../CustomizeCheckoutApplication.cs | 71 +- .../CustomizeCheckoutTempApplication.cs | 22 +- .../FineApplication.cs | 174 +- .../LoanApplication.cs | 103 +- .../RewardApplication.cs | 181 +- .../SalaryAidApplication.cs | 255 +- .../Mapping/CustomizeCheckoutMapping.cs | 2 + .../Mapping/CustomizeCheckoutTempMapping.cs | 2 + ...stomize checkout value objects.Designer.cs | 9521 +++++++++++++++++ ... id to customize checkout value objects.cs | 184 + .../Migrations/CompanyContextModelSnapshot.cs | 47 + .../Repository/CustomizeCheckoutRepository.cs | 580 +- .../CustomizeCheckoutTempRepository.cs | 656 +- .../Repository/RollCallMandatoryRepository.cs | 226 +- .../Repository/SalaryAidRepository.cs | 4 +- .../Pages/Company/AndroidApk/Index.cshtml.cs | 138 + .../Client/Pages/Company/Fine/Index.cshtml.cs | 25 +- .../Company/Fine/ModalCreateNewFine.cshtml | 7 +- .../Pages/Company/Fine/ModalEditFine.cshtml | 7 +- .../Pages/Company/Reward/Index.cshtml.cs | 20 +- .../Reward/ModalCreateNewReward.cshtml | 5 +- .../Company/Reward/ModalEditReward.cshtml | 6 +- .../Pages/Company/SalaryAid/Index.cshtml.cs | 93 +- .../SalaryAid/ModalCreateNewSalaryAid.cshtml | 56 +- .../SalaryAid/ModalEditSalaryAid.cshtml | 37 +- .../Company/SalaryAid/ModalImportExcel.cshtml | 3 +- .../pages/Fine/js/ModalCreateNewFine.js | 103 +- .../pages/Fine/js/ModalEditFine.js | 94 +- .../AssetsClient/pages/Reward/js/Index.js | 103 +- .../pages/Reward/js/ModalCreateNewReward.js | 92 +- .../pages/Reward/js/ModalEditReward.js | 109 +- .../SalaryAid/css/ModalCreateNewSalaryAid.css | 185 +- .../pages/SalaryAid/css/ModalImportExcel.css | 4 + .../AssetsClient/pages/SalaryAid/js/Index.js | 18 +- .../SalaryAid/js/ModalCreateNewSalaryAid.js | 251 +- .../pages/SalaryAid/js/ModalEditSalaryAid.js | 246 +- .../pages/SalaryAid/js/ModalImportExcel.js | 97 +- .../Templates/SalaryAid/SA-Template.xlsx | Bin 10937 -> 11054 bytes 59 files changed, 13114 insertions(+), 1057 deletions(-) create mode 100644 CompanyManagment.EFCore/Migrations/20250508101244_add calculation date to salary aid and add entity id to customize checkout value objects.Designer.cs create mode 100644 CompanyManagment.EFCore/Migrations/20250508101244_add calculation date to salary aid and add entity id to customize checkout value objects.cs diff --git a/0_Framework/Application/Tools.cs b/0_Framework/Application/Tools.cs index 9347da24..6937303e 100644 --- a/0_Framework/Application/Tools.cs +++ b/0_Framework/Application/Tools.cs @@ -458,25 +458,30 @@ public static class Tools public static double MoneyToDouble(this string myMoney) { string bb = string.Empty; + bool isNegative = false; for (int x = 0; x < myMoney.Length; x++) { if (char.IsDigit(myMoney[x])) + { bb += myMoney[x]; + } + else if (myMoney[x] == '-' && bb.Length == 0) + { + // اگر علامت منفی قبل از اولین عدد آمد، در نظر بگیر + isNegative = true; + } } if (bb.Length > 0) { double res = double.Parse(bb); - return res; + return isNegative ? -res : res; } else { return 0; } - - - } public static string ToFileName(this DateTime date) { diff --git a/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs b/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs index 9c6efe6f..a5a5b953 100644 --- a/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs +++ b/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using _0_Framework.Application; using _0_Framework.Domain; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; @@ -18,20 +19,20 @@ 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 checkoutFines, - ICollection customizeCheckoutLoanInstallments, - ICollection customizeCheckoutSalaryAids, - ICollection customizeCheckoutRewards, TimeSpan lateToWorkValue, double settingSalary, - double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift, + 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 checkoutFines, + ICollection customizeCheckoutLoanInstallments, + ICollection customizeCheckoutSalaryAids, + ICollection customizeCheckoutRewards, TimeSpan lateToWorkValue, double settingSalary, + double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift, ICollection customizeRotatingShifts, ICollection employeeSettingsShifts) { YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4)); @@ -77,8 +78,8 @@ public class CustomizeCheckout : EntityBase LateToWorkValue = lateToWorkValue; SettingSalary = settingSalary; - DailyWage = dailyWage; - ShiftStatus = shiftStatus; + DailyWage = dailyWage; + ShiftStatus = shiftStatus; IrregularShift = irregularShift; CustomizeRotatingShifts = customizeRotatingShifts; RegularShifts = employeeSettingsShifts; @@ -257,17 +258,17 @@ public class CustomizeCheckout : EntityBase /// public double TotalPayment { get; private set; } - /// - /// مزد روزانه - /// - public double DailyWage { get; private set; } + /// + /// مزد روزانه + /// + public double DailyWage { get; private set; } - /// - /// حقوق تعیین شده - /// - public double SettingSalary { get; private set; } + /// + /// حقوق تعیین شده + /// + public double SettingSalary { get; private set; } - public WorkshopShiftStatus ShiftStatus { get; set; } + public WorkshopShiftStatus ShiftStatus { get; set; } #region Values @@ -301,4 +302,78 @@ public class CustomizeCheckout : EntityBase #endregion + public void SetValueObjects(ICollection checkoutFines, + ICollection customizeCheckoutLoanInstallments, + ICollection customizeCheckoutSalaryAids, + ICollection customizeCheckoutRewards) + { + CheckoutFines = checkoutFines; + CustomizeCheckoutLoanInstallments = customizeCheckoutLoanInstallments; + CustomizeCheckoutSalaryAids = customizeCheckoutSalaryAids; + CustomizeCheckoutRewards = customizeCheckoutRewards; + } + + public void SetRewards(ICollection rewards) + { + var previousTotalAmount = CustomizeCheckoutRewards.Sum(x => x.Amount.MoneyToDouble()); + var newTotalAmount = rewards.Sum(x => x.Amount.MoneyToDouble()); + RewardPay = newTotalAmount; + IncreaseTotalPayment(previousTotalAmount, newTotalAmount); + RecalculateTotalClaims(previousTotalAmount, newTotalAmount); + CustomizeCheckoutRewards = rewards; + } + + public void SetSalaryAids(ICollection salaryAids) + { + var previousTotalAmount = CustomizeCheckoutSalaryAids.Sum(x => x.Amount.MoneyToDouble()); + var newTotalAmount = salaryAids.Sum(x => x.Amount.MoneyToDouble()); + SalaryAidDeduction = newTotalAmount; + ReduceTotalPayment(previousTotalAmount, newTotalAmount); + RecalculateTotalDeduction(previousTotalAmount, newTotalAmount); + CustomizeCheckoutSalaryAids = salaryAids; + } + + public void SetFines(ICollection fines) + { + var previousTotalAmount = CheckoutFines.Sum(x => x.Amount.MoneyToDouble()); + var newTotalAmount = fines.Sum(x => x.Amount.MoneyToDouble()); + FineDeduction = newTotalAmount; + ReduceTotalPayment(previousTotalAmount, newTotalAmount); + RecalculateTotalDeduction(previousTotalAmount, newTotalAmount); + CheckoutFines = fines; + } + + public void SetLoanInstallment(ICollection installments) + { + var previousTotalAmount = CustomizeCheckoutLoanInstallments.Sum(x => x.AmountForMonth.MoneyToDouble()); + var newTotalAmount = installments.Sum(x => x.AmountForMonth.MoneyToDouble()); + InstallmentDeduction = newTotalAmount; + ReduceTotalPayment(previousTotalAmount, newTotalAmount); + RecalculateTotalDeduction(previousTotalAmount, newTotalAmount); + CustomizeCheckoutLoanInstallments = installments; + } + + + private void RecalculateTotalClaims(double previousTotalAmount, double newTotalAmount) + { + TotalClaims = (TotalClaims.MoneyToDouble() - previousTotalAmount + newTotalAmount).ToMoney(); + } + + + private void RecalculateTotalDeduction(double previousTotalAmount, double newTotalAmount) + { + TotalDeductions = (TotalDeductions.MoneyToDouble() - previousTotalAmount + newTotalAmount).ToMoney(); + } + + private void ReduceTotalPayment(double previousAmount, double newAmount) + { + TotalPayment = TotalPayment + previousAmount - newAmount; + } + private void IncreaseTotalPayment(double previousAmount, double newAmount) + { + TotalPayment = TotalPayment - previousAmount + newAmount; + } + + + } \ No newline at end of file diff --git a/Company.Domain/CustomizeCheckoutAgg/ICustomizeCheckoutRepository.cs b/Company.Domain/CustomizeCheckoutAgg/ICustomizeCheckoutRepository.cs index a0bb28ed..21b12310 100644 --- a/Company.Domain/CustomizeCheckoutAgg/ICustomizeCheckoutRepository.cs +++ b/Company.Domain/CustomizeCheckoutAgg/ICustomizeCheckoutRepository.cs @@ -3,7 +3,7 @@ using _0_Framework.Domain; using CompanyManagment.App.Contracts.CustomizeCheckout; using System; using System.Collections.Generic; -using _0_Framework.Application; +using System.Threading.Tasks; namespace Company.Domain.CustomizeCheckoutAgg { @@ -15,5 +15,12 @@ namespace Company.Domain.CustomizeCheckoutAgg void RemoveEmployeeCustomizeCheckoutInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth); IEnumerable GetRange(long workshopId, List ids); void RemoveRange(IEnumerable entities); + List GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime startDate, DateTime endDate); + + Task GetByWorkshopIdEmployeeIdMonthYear(long workshopId, long employeeId, int year, + int month); + + (bool Checkout, bool CustomizeCheckout, bool CustomizeCheckoutTemp) ValidateExistsCheckouts( + DateTime startDate, DateTime endDate, long workshopId, List employeeId); } } diff --git a/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutFine.cs b/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutFine.cs index 7bf8ee17..2b4f1bab 100644 --- a/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutFine.cs +++ b/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutFine.cs @@ -5,7 +5,7 @@ namespace Company.Domain.CustomizeCheckoutAgg.ValueObjects; public record CustomizeCheckoutFine { - public CustomizeCheckoutFine(string title, string amount, string fineDateFa, DateTime fineDateGr, IsActive isActive, DateTime creationDate) + public CustomizeCheckoutFine(string title, string amount, string fineDateFa, DateTime fineDateGr, IsActive isActive, DateTime creationDate, long entityId) { Title = title; Amount = amount; @@ -13,6 +13,7 @@ public record CustomizeCheckoutFine FineDateGr = fineDateGr; IsActive = isActive; CreationDate = creationDate; + EntityId = entityId; } public string Title { get; private set; } @@ -21,4 +22,5 @@ public record CustomizeCheckoutFine public DateTime FineDateGr { get; private set; } public IsActive IsActive { get; private set; } public DateTime CreationDate { get; private set; } + public long EntityId { get; set; } } \ No newline at end of file diff --git a/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutLoanInstallments.cs b/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutLoanInstallments.cs index a82348a8..d65d63ca 100644 --- a/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutLoanInstallments.cs +++ b/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutLoanInstallments.cs @@ -5,7 +5,7 @@ namespace Company.Domain.CustomizeCheckoutAgg.ValueObjects; public class CustomizeCheckoutLoanInstallments { - public CustomizeCheckoutLoanInstallments(string amountForMonth, string month, string year, IsActive isActive, string loanRemaining, string loanAmount) + public CustomizeCheckoutLoanInstallments(string amountForMonth, string month, string year, IsActive isActive, string loanRemaining, string loanAmount, long entityId) { AmountForMonth = amountForMonth; Month = month; @@ -13,6 +13,7 @@ public class CustomizeCheckoutLoanInstallments IsActive = isActive; LoanRemaining = loanRemaining; LoanAmount = loanAmount; + EntityId = entityId; } public string AmountForMonth { get; private set; } @@ -21,5 +22,7 @@ public class CustomizeCheckoutLoanInstallments public string LoanRemaining { get; set; } public IsActive IsActive { get; private set; } public string LoanAmount { get; set; } + public long EntityId { get; set; } + } \ No newline at end of file diff --git a/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutReward.cs b/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutReward.cs index 76addead..2abc68d1 100644 --- a/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutReward.cs +++ b/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutReward.cs @@ -5,7 +5,7 @@ namespace Company.Domain.CustomizeCheckoutAgg.ValueObjects; public class CustomizeCheckoutReward { - public CustomizeCheckoutReward(string amount, string description, DateTime grantDate, string grantDateFa, IsActive isActive, string title) + public CustomizeCheckoutReward(string amount, string description, DateTime grantDate, string grantDateFa, IsActive isActive, string title, long entityId) { Amount = amount; Description = description; @@ -13,6 +13,7 @@ public class CustomizeCheckoutReward GrantDateFa = grantDateFa; IsActive = isActive; Title = title; + EntityId = entityId; } /// @@ -39,5 +40,7 @@ public class CustomizeCheckoutReward public IsActive IsActive { get; private set; } + public long EntityId { get; set; } + } \ No newline at end of file diff --git a/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutSalaryAid.cs b/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutSalaryAid.cs index ea2f473f..1b804bf7 100644 --- a/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutSalaryAid.cs +++ b/Company.Domain/CustomizeCheckoutAgg/ValueObjects/CustomizeCheckoutSalaryAid.cs @@ -4,14 +4,23 @@ namespace Company.Domain.CustomizeCheckoutAgg.ValueObjects; public class CustomizeCheckoutSalaryAid { - public CustomizeCheckoutSalaryAid(string amount, DateTime salaryAidDateTime, string salaryAidDateTimeFa) + public CustomizeCheckoutSalaryAid(string amount, DateTime salaryAidDateTime, string salaryAidDateTimeFa,DateTime calculationDateTime,string calculationDateTimeFa, long entityId) { Amount = amount; SalaryAidDateTime = salaryAidDateTime; SalaryAidDateTimeFa = salaryAidDateTimeFa; + CalculationDateTime = calculationDateTime; + CalculationDateTimeFa = calculationDateTimeFa; + EntityId = entityId; } public string Amount { get; private set; } public DateTime SalaryAidDateTime { get; private set; } public string SalaryAidDateTimeFa { get; private set; } + + public DateTime CalculationDateTime { get; private set; } + public string CalculationDateTimeFa { get; private set; } + + public long EntityId { get; set; } + } \ No newline at end of file diff --git a/Company.Domain/CustomizeCheckoutTempAgg/CustomizeCheckoutTemp.cs b/Company.Domain/CustomizeCheckoutTempAgg/CustomizeCheckoutTemp.cs index 7aa7384b..8a3cb9f2 100644 --- a/Company.Domain/CustomizeCheckoutTempAgg/CustomizeCheckoutTemp.cs +++ b/Company.Domain/CustomizeCheckoutTempAgg/CustomizeCheckoutTemp.cs @@ -8,6 +8,7 @@ using System.Collections.Generic; using Company.Domain.CustomizeCheckoutTempAgg.ValueObjects; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; +using System.Linq; namespace Company.Domain.CustomizeCheckoutTempAgg; @@ -303,6 +304,77 @@ public class CustomizeCheckoutTemp : EntityBase public Workshop Workshop { get; set; } public Employee Employee { get; set; } - #endregion + #endregion + public void SetValueObjects(ICollection checkoutFines, + ICollection customizeCheckoutLoanInstallments, + ICollection customizeCheckoutSalaryAids, + ICollection customizeCheckoutRewards) + { + CheckoutFines = checkoutFines; + CustomizeCheckoutLoanInstallments = customizeCheckoutLoanInstallments; + CustomizeCheckoutSalaryAids = customizeCheckoutSalaryAids; + CustomizeCheckoutRewards = customizeCheckoutRewards; + } + + public void SetRewards(ICollection rewards) + { + var previousTotalAmount = CustomizeCheckoutRewards.Sum(x => x.Amount.MoneyToDouble()); + var newTotalAmount = rewards.Sum(x => x.Amount.MoneyToDouble()); + RewardPay = newTotalAmount; + IncreaseTotalPayment(previousTotalAmount,newTotalAmount); + RecalculateTotalClaims(previousTotalAmount, newTotalAmount); + CustomizeCheckoutRewards = rewards; + } + + public void SetSalaryAids(ICollection salaryAids) + { + var previousTotalAmount = CustomizeCheckoutSalaryAids.Sum(x => x.Amount.MoneyToDouble()); + var newTotalAmount = salaryAids.Sum(x => x.Amount.MoneyToDouble()); + SalaryAidDeduction = newTotalAmount; + ReduceTotalPayment(previousTotalAmount,newTotalAmount); + RecalculateTotalDeduction(previousTotalAmount, newTotalAmount); + CustomizeCheckoutSalaryAids = salaryAids; + } + + public void SetFines(ICollection fines) + { + var previousTotalAmount = CheckoutFines.Sum(x => x.Amount.MoneyToDouble()); + var newTotalAmount = fines.Sum(x => x.Amount.MoneyToDouble()); + FineDeduction = newTotalAmount; + ReduceTotalPayment(previousTotalAmount,newTotalAmount); + RecalculateTotalDeduction(previousTotalAmount, newTotalAmount); + CheckoutFines = fines; + } + + public void SetLoanInstallment(ICollection installments) + { + var previousTotalAmount = CustomizeCheckoutLoanInstallments.Sum(x => x.AmountForMonth.MoneyToDouble()); + var newTotalAmount = installments.Sum(x => x.AmountForMonth.MoneyToDouble()); + InstallmentDeduction = newTotalAmount; + ReduceTotalPayment(previousTotalAmount,newTotalAmount); + RecalculateTotalDeduction(previousTotalAmount, newTotalAmount); + CustomizeCheckoutLoanInstallments = installments; + } + + + private void RecalculateTotalClaims(double previousTotalAmount, double newTotalAmount) + { + TotalClaims = (TotalClaims.MoneyToDouble() - previousTotalAmount + newTotalAmount).ToMoney(); + } + + + private void RecalculateTotalDeduction(double previousTotalAmount, double newTotalAmount) + { + TotalDeductions = (TotalDeductions.MoneyToDouble() - previousTotalAmount + newTotalAmount).ToMoney(); + } + + private void ReduceTotalPayment(double previousAmount, double newAmount) + { + TotalPayment = TotalPayment + previousAmount - newAmount; + } + private void IncreaseTotalPayment(double previousAmount, double newAmount) + { + TotalPayment = TotalPayment - previousAmount + newAmount; + } } \ No newline at end of file diff --git a/Company.Domain/CustomizeCheckoutTempAgg/ICustomizeCheckoutTempRepository.cs b/Company.Domain/CustomizeCheckoutTempAgg/ICustomizeCheckoutTempRepository.cs index bff89769..f293d54f 100644 --- a/Company.Domain/CustomizeCheckoutTempAgg/ICustomizeCheckoutTempRepository.cs +++ b/Company.Domain/CustomizeCheckoutTempAgg/ICustomizeCheckoutTempRepository.cs @@ -4,6 +4,7 @@ using Company.Domain.CustomizeCheckoutAgg; using CompanyManagment.App.Contracts.CustomizeCheckout; using System; using System.Collections.Generic; +using System.Threading.Tasks; namespace Company.Domain.CustomizeCheckoutTempAgg { @@ -19,5 +20,7 @@ namespace Company.Domain.CustomizeCheckoutTempAgg IEnumerable GetRange(long workshopId, List ids); void RemoveRange(IEnumerable entities); + List GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime startDate, DateTime endDate); + Task GetByWorkshopIdEmployeeIdInDate(long workshopId, long employeeId, DateTime inDate); } } diff --git a/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutSalaryAid.cs b/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutSalaryAid.cs index ef4eeb49..1a4a9e40 100644 --- a/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutSalaryAid.cs +++ b/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutSalaryAid.cs @@ -4,14 +4,23 @@ namespace Company.Domain.CustomizeCheckoutTempAgg.ValueObjects; public class CustomizeCheckoutTempSalaryAid { - public CustomizeCheckoutTempSalaryAid(string amount, DateTime salaryAidDateTime, string salaryAidDateTimeFa) + public CustomizeCheckoutTempSalaryAid(string amount, DateTime salaryAidDateTime, string salaryAidDateTimeFa, + DateTime calculationDateTime, string calculationDateTimeFa, long entityId) { Amount = amount; SalaryAidDateTime = salaryAidDateTime; SalaryAidDateTimeFa = salaryAidDateTimeFa; + CalculationDateTime = calculationDateTime; + CalculationDateTimeFa = calculationDateTimeFa; + EntityId = entityId; } public string Amount { get; private set; } public DateTime SalaryAidDateTime { get; private set; } public string SalaryAidDateTimeFa { get; private set; } + + public DateTime CalculationDateTime { get; private set; } + public string CalculationDateTimeFa { get; private set; } + public long EntityId { get; set; } + } \ No newline at end of file diff --git a/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutTempFine.cs b/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutTempFine.cs index 293e3ac7..f8c96f1c 100644 --- a/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutTempFine.cs +++ b/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutTempFine.cs @@ -6,7 +6,7 @@ namespace Company.Domain.CustomizeCheckoutTempAgg.ValueObjects; public record CustomizeCheckoutTempFine { - public CustomizeCheckoutTempFine(string title, string amount, string fineDateFa, DateTime fineDateGr, IsActive isActive, DateTime creationDate) + public CustomizeCheckoutTempFine(string title, string amount, string fineDateFa, DateTime fineDateGr, IsActive isActive, DateTime creationDate, long entityId) { Title = title; Amount = amount; @@ -14,7 +14,7 @@ public record CustomizeCheckoutTempFine FineDateGr = fineDateGr; IsActive = isActive; CreationDate = creationDate; - + EntityId = entityId; } public string Title { get; private set; } public string Amount { get; private set; } @@ -22,4 +22,6 @@ public record CustomizeCheckoutTempFine public DateTime FineDateGr { get; private set; } public IsActive IsActive { get; private set; } public DateTime CreationDate { get; private set; } + public long EntityId { get; set; } + } \ No newline at end of file diff --git a/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutTempLoanInstallments.cs b/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutTempLoanInstallments.cs index 00d1113d..12fe90a6 100644 --- a/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutTempLoanInstallments.cs +++ b/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutTempLoanInstallments.cs @@ -4,7 +4,7 @@ namespace Company.Domain.CustomizeCheckoutTempAgg.ValueObjects; public class CustomizeCheckoutTempLoanInstallments { - public CustomizeCheckoutTempLoanInstallments(string amountForMonth, string month, string year, IsActive isActive, string loanRemaining, string loanAmount) + public CustomizeCheckoutTempLoanInstallments(string amountForMonth, string month, string year, IsActive isActive, string loanRemaining, string loanAmount, long entityId) { AmountForMonth = amountForMonth; Month = month; @@ -12,6 +12,7 @@ public class CustomizeCheckoutTempLoanInstallments IsActive = isActive; LoanRemaining = loanRemaining; LoanAmount = loanAmount; + EntityId = entityId; } public string AmountForMonth { get; private set; } @@ -20,5 +21,7 @@ public class CustomizeCheckoutTempLoanInstallments public IsActive IsActive { get; private set; } public string LoanRemaining { get; set; } public string LoanAmount { get; set; } + public long EntityId { get; set; } + } \ No newline at end of file diff --git a/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutTempReward.cs b/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutTempReward.cs index 9164406f..9b3740f5 100644 --- a/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutTempReward.cs +++ b/Company.Domain/CustomizeCheckoutTempAgg/ValueObjects/CustomizeCheckoutTempReward.cs @@ -5,7 +5,7 @@ namespace Company.Domain.CustomizeCheckoutTempAgg.ValueObjects; public class CustomizeCheckoutTempReward { - public CustomizeCheckoutTempReward(string amount, string description, DateTime grantDate, string grantDateFa, IsActive isActive, string title) + public CustomizeCheckoutTempReward(string amount, string description, DateTime grantDate, string grantDateFa, IsActive isActive, string title, long entityId) { Amount = amount; Description = description; @@ -13,6 +13,7 @@ public class CustomizeCheckoutTempReward GrantDateFa = grantDateFa; IsActive = isActive; Title = title; + EntityId = entityId; } /// @@ -37,4 +38,6 @@ public class CustomizeCheckoutTempReward public IsActive IsActive { get; private set; } public string Title { get; set; } + public long EntityId { get; set; } + } \ No newline at end of file diff --git a/Company.Domain/SalaryAidAgg/SalaryAid.cs b/Company.Domain/SalaryAidAgg/SalaryAid.cs index 5fc7fea1..f84a3836 100644 --- a/Company.Domain/SalaryAidAgg/SalaryAid.cs +++ b/Company.Domain/SalaryAidAgg/SalaryAid.cs @@ -5,13 +5,13 @@ using Hangfire.Annotations; namespace Company.Domain.SalaryAidAgg; -public class SalaryAid:EntityBase +public class SalaryAid : EntityBase { private SalaryAid() { - + } - public SalaryAid(long employeeId, long workshopId, double amount, DateTime salaryAidDateTime, long createdByAccountId, UserType createdByUserType) + public SalaryAid(long employeeId, long workshopId, double amount, DateTime salaryAidDateTime, long createdByAccountId, UserType createdByUserType, int calculationMonth, int calculationYear) { EmployeeId = employeeId; WorkshopId = workshopId; @@ -19,12 +19,26 @@ public class SalaryAid:EntityBase SalaryAidDateTime = salaryAidDateTime; CreatedByUserType = createdByUserType; CreatedByAccountId = createdByAccountId; + CalculationDate = $"{calculationYear:0000}/{calculationMonth:00}/01".ToGeorgianDateTime(); + CalculationMonth = calculationMonth; + CalculationYear = calculationYear; } public long EmployeeId { get; private set; } public long WorkshopId { get; private set; } public double Amount { get; private set; } + /// + /// تاریخ پرداخت + /// public DateTime SalaryAidDateTime { get; private set; } + /// + /// تاریخ محاسبه + /// + public DateTime CalculationDate { get; private set; } + + public int CalculationMonth { get; set; } + public int CalculationYear { get; set; } + public long CreatedByAccountId { get; private set; } @@ -36,11 +50,14 @@ public class SalaryAid:EntityBase public UserType LastModifiedByUserType { get; private set; } - public void Edit(double amount, DateTime salaryAidTime, long modifiedByAccountId, UserType modifiedByUserType) + public void Edit(double amount, DateTime salaryAidTime, long modifiedByAccountId, UserType modifiedByUserType, int calculationMonth, int calculationYear) { Amount = amount; SalaryAidDateTime = salaryAidTime; LastModifiedByAccountId = modifiedByAccountId; LastModifiedByUserType = modifiedByUserType; + CalculationDate = $"{calculationYear:0000}/{calculationMonth:00}/01".ToGeorgianDateTime(); + CalculationMonth = calculationMonth; + CalculationYear = calculationYear; } } \ No newline at end of file diff --git a/CompanyManagement.Infrastructure.Excel/SalaryAid/SalaryAidImportExcel.cs b/CompanyManagement.Infrastructure.Excel/SalaryAid/SalaryAidImportExcel.cs index 7963cadf..2504e958 100644 --- a/CompanyManagement.Infrastructure.Excel/SalaryAid/SalaryAidImportExcel.cs +++ b/CompanyManagement.Infrastructure.Excel/SalaryAid/SalaryAidImportExcel.cs @@ -6,7 +6,7 @@ using LicenseContext = OfficeOpenXml.LicenseContext; namespace CompanyManagement.Infrastructure.Excel.SalaryAid; -public record SalaryAidImportData(long EmployeeId, long WorkshopId, string FullName, double Amount, string AccountNumber, string NationalCode, string SalaryAidDateTime, int Row, bool Duplicated); +public record SalaryAidImportData(long EmployeeId, long WorkshopId, string FullName, double Amount, string AccountNumber, string NationalCode, string SalaryAidDateTime, int calculationMonth, int calculationYear, int Row, bool Duplicated); public class ExcelValidation { @@ -80,35 +80,59 @@ public class SalaryAidImportExcel // بررسی اینکه هدرها همان چیزی هستند که ما انتظار داریم - if (worksheet.Cells[2, 1].Text != "نام و نام خانوادگی" || - worksheet.Cells[2, 2].Text != "کد ملی" || - worksheet.Cells[2, 3].Text != "شماره حساب" || - worksheet.Cells[2, 4].Text != "مبلغ قابل پرداخت" || - worksheet.Cells[1, 1].Text != "تاریخ پرداخت") + if (worksheet.Cells[3, 1].Text != "نام و نام خانوادگی" || + worksheet.Cells[3, 2].Text != "کد ملی" || + worksheet.Cells[3, 3].Text != "شماره حساب" || + worksheet.Cells[3, 4].Text != "مبلغ قابل پرداخت" || + worksheet.Cells[1, 3].Text != "تاریخ پرداخت" || + worksheet.Cells[1, 1].Text != "سال محاسبه" || + worksheet.Cells[1, 2].Text != "ماه محسابه") { result.Errors.Add(new SalaryAidImportExcelError("ساختار فایل اکسل اشتباه است.", 0, SalaryAidExcelColumns.None.ToString())); return result; } - var salaryDateFa = worksheet.Cells[1, 4].Text; + var salaryDateFa = worksheet.Cells[2, 3].Text; + + var calculationMonth = Convert.ToInt32(string.IsNullOrWhiteSpace(worksheet.Cells[2, 2].Text) ? "0" : worksheet.Cells[2, 2].Text); + var calculationYear = Convert.ToInt32(string.IsNullOrWhiteSpace(worksheet.Cells[2, 1].Text) ? "0" : worksheet.Cells[2, 1].Text); + if (string.IsNullOrWhiteSpace(salaryDateFa)) { result.Errors.Add(new SalaryAidImportExcelError("لطفا در سلول زرد رنگ تاریخ پرداخت را وارد کنید", 0, SalaryAidExcelColumns.None.ToString())); return result; } + if (calculationMonth == 0) + { + result.Errors.Add(new SalaryAidImportExcelError("لطفا در سلول آبی رنگ ماه محاسبه را وارد کنید", 0, SalaryAidExcelColumns.None.ToString())); + return result; + } + if (calculationYear == 0) + { + result.Errors.Add(new SalaryAidImportExcelError("لطفا در سلول آبی رنگ سال محاسبه را وارد کنید", 0, SalaryAidExcelColumns.None.ToString())); + return result; + } + + var calculationDate = $"{calculationYear:0000}/{calculationMonth:00}/01"; if (salaryDateFa.TryToGeorgianDateTime(out var salaryDateTime) == false) { result.Errors.Add(new SalaryAidImportExcelError("تاریخ وارد شده نامعتبر است", 0, SalaryAidExcelColumns.None.ToString())); } + + if (calculationDate.TryToGeorgianDateTime(out var calculationDateTime) == false) + { + result.Errors.Add(new SalaryAidImportExcelError("تاریخ محاسبه وارد شده نامعتبر است", 0, SalaryAidExcelColumns.None.ToString())); + } + if (salaryDateTime > DateTime.Now) { result.Errors.Add(new SalaryAidImportExcelError("تاریخ پرداخت مساعده می بایست تاریخ امروز یا قبل تر باشد", 0, SalaryAidExcelColumns.None.ToString())); } int rowCount = worksheet.Dimension.Rows; - int rowStart = 3; + int rowStart = 4; if (rowCount < rowStart) { @@ -127,11 +151,11 @@ public class SalaryAidImportExcel if (!double.TryParse(amountText, out double amount) || amount <= 0) { result.Errors.Add(new SalaryAidImportExcelError("مبلغ خالی یا نامعتبر است", row, SalaryAidExcelColumns.Amount.ToString())); - - } - result.RawData.Add(new SalaryAidImportData(0, workshopId, fullName, amount, accountNumber, nationalCode, salaryDateFa, row, false)); - if (string.IsNullOrWhiteSpace(fullName)) + } + result.RawData.Add(new SalaryAidImportData(0, workshopId, fullName, amount, accountNumber, nationalCode, salaryDateFa, calculationMonth, calculationYear, row, false)); + + if (string.IsNullOrWhiteSpace(fullName)) { result.Errors.Add(new SalaryAidImportExcelError(" نام و نام خانوادگی خالی است", row, SalaryAidExcelColumns.FullName.ToString())); @@ -204,25 +228,61 @@ public class SalaryAidImportExcel var year = Convert.ToInt32(salaryDateFa.Substring(0, 4)); - if (_companyContext.CustomizeCheckouts.Any(x => x.WorkshopId == workshopId && x.EmployeeId == employee.id && x.YearInt == year && x.MonthInt == month)) + //if (_companyContext.CustomizeCheckouts.Any(x => x.WorkshopId == workshopId && x.EmployeeId == employee.id && x.YearInt == year && x.MonthInt == month)) + //{ + // result.Errors.Add(new SalaryAidImportExcelError($" پرسنل {fullName} در تاریخ {salaryDateFa} دارای فیش حقوقی غیررسمی است.", row, SalaryAidExcelColumns.None.ToString())); + //} + + + _ = DateTime.Now.Date.AddMonthsFa(-1, out var oneMonthAgoGr); + + if (oneMonthAgoGr > calculationDateTime) { - result.Errors.Add(new SalaryAidImportExcelError($" پرسنل {fullName} در تاریخ {salaryDateFa} دارای فیش حقوقی غیررسمی است.", row, SalaryAidExcelColumns.None.ToString())); + bool customizeCheckout = false; + bool customizeCheckoutTemp = false; + bool checkout = false; + if (_companyContext.CustomizeCheckouts.Any(x => x.WorkshopId == workshopId && employee.id == x.EmployeeId && + x.ContractStart <= oneMonthAgoGr && x.ContractEnd >= calculationDateTime)) + { + customizeCheckout = true; + } + + if (_companyContext.CustomizeCheckoutTemps.Any(x => x.WorkshopId == workshopId && employee.id == x.EmployeeId && + x.ContractStart <= calculationDateTime && x.ContractEnd >= oneMonthAgoGr)) + { + customizeCheckoutTemp = true; + } + + if (_companyContext.CheckoutSet.Any(x => x.WorkshopId == workshopId && employee.id == x.EmployeeId && + x.ContractStart <= calculationDateTime && x.ContractEnd >= oneMonthAgoGr)) + { + checkout = true; + } + if (customizeCheckout || customizeCheckoutTemp) + { + result.Errors.Add(new SalaryAidImportExcelError($"شما نمیتوانید به پرسنل {fullName} در تاریخ قبل از یک ماه گذشته که فیش صادر شده باشد مساعده دهید", row, SalaryAidExcelColumns.None.ToString())); + } } + //if(_companyContext.CheckoutSet.Any(x => x.WorkshopId == workshopId && employee.id == x.EmployeeId && + // x.ContractStart <= calculationDateTime && x.ContractEnd >= calculationDateTime)) + // result.Errors.Add(new SalaryAidImportExcelError($"پرسنل {fullName} در تاریخ {calculationDate} دارای فیش رسمی میباشد", row, SalaryAidExcelColumns.None.ToString())); + + if (_companyContext.SalaryAids.Any(x => x.Amount == amount && x.EmployeeId == employee.id && x.WorkshopId == workshopId && x.SalaryAidDateTime == salaryDateTime)) { // TODO MAHAN: Vafa Add this Code! Please Check it! - result.RawData.Add(new SalaryAidImportData(employee.id, workshopId, fullName, amount, accountNumber, nationalCode, salaryDateFa, row, true)); - continue; + result.RawData.Add(new SalaryAidImportData(employee.id, workshopId, fullName, amount, accountNumber, nationalCode, salaryDateFa, calculationMonth, calculationYear, row, true)); + continue; } - result.ValidData.Add(new SalaryAidImportData(employee.id, workshopId, fullName, amount, accountNumber, nationalCode, salaryDateFa, row, false)); + result.ValidData.Add(new SalaryAidImportData(employee.id, workshopId, fullName, amount, accountNumber, nationalCode, salaryDateFa, calculationMonth, calculationYear, row, false)); } - result.RawData = result.RawData.GroupBy(x => x.Row).Select(x => new SalaryAidImportData(x.First().EmployeeId, - x.First().WorkshopId, x.First().FullName, - x.First().Amount, x.First().AccountNumber, x.First().NationalCode, x.First().SalaryAidDateTime, x.Key, - x.Any(s => s.Duplicated))).ToList(); + result.RawData = result.RawData.GroupBy(x => x.Row).Select(x => new SalaryAidImportData(x.Last().EmployeeId, + x.First().WorkshopId, x.First().FullName, + x.First().Amount, x.First().AccountNumber, x.First().NationalCode, x.First().SalaryAidDateTime, x.First().calculationMonth, x.First().calculationYear, x.Key, + x.Any(s => s.Duplicated))).ToList(); //result.Errors.GroupBy(x => x.Row).Select(x => new diff --git a/CompanyManagment.App.Contracts/CustomizeCheckout/ICustomizeCheckoutApplication.cs b/CompanyManagment.App.Contracts/CustomizeCheckout/ICustomizeCheckoutApplication.cs index 33645584..cfc1fa04 100644 --- a/CompanyManagment.App.Contracts/CustomizeCheckout/ICustomizeCheckoutApplication.cs +++ b/CompanyManagment.App.Contracts/CustomizeCheckout/ICustomizeCheckoutApplication.cs @@ -1,5 +1,6 @@  +using System; using _0_Framework.Application; using System.Collections.Generic; @@ -17,5 +18,9 @@ namespace CompanyManagment.App.Contracts.CustomizeCheckout OperationResult GroupRemove(long workshopId,List idList); OperationResult Create(CreateCustomizeCheckout command); - } + (bool Checkout, bool CustomizeCheckout, bool CustomizeCheckoutTemp) ValidateExistsCheckouts( + DateTime startDate, DateTime endDate, long workshopId, List employeeId); + + + } } diff --git a/CompanyManagment.App.Contracts/Loan/LoanInstallmentViewModel.cs b/CompanyManagment.App.Contracts/Loan/LoanInstallmentViewModel.cs index d60c1067..0ca39284 100644 --- a/CompanyManagment.App.Contracts/Loan/LoanInstallmentViewModel.cs +++ b/CompanyManagment.App.Contracts/Loan/LoanInstallmentViewModel.cs @@ -6,7 +6,8 @@ namespace CompanyManagment.App.Contracts.Loan; public class LoanInstallmentViewModel { - public string Year { get; set; } + public long Id { get; set; } + public string Year { get; set; } public string Month { get; set; } public string Amount { get; set; } public double AmountDouble { get; set; } diff --git a/CompanyManagment.App.Contracts/Reward/IRewardApplication.cs b/CompanyManagment.App.Contracts/Reward/IRewardApplication.cs index 657f8935..4269c557 100644 --- a/CompanyManagment.App.Contracts/Reward/IRewardApplication.cs +++ b/CompanyManagment.App.Contracts/Reward/IRewardApplication.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Threading.Tasks; using _0_Framework.Application; namespace CompanyManagment.App.Contracts.Reward; @@ -6,7 +7,7 @@ namespace CompanyManagment.App.Contracts.Reward; public interface IRewardApplication { OperationResult Create(CreateRewardViewModel command); - OperationResult Edit(EditRewardViewModel command); + OperationResult Edit(EditRewardViewModel command); List GetSearchList(RewardSearchModel searchViewModel); EditRewardViewModel GetDetails(long id); OperationResult Remove(long id); diff --git a/CompanyManagment.App.Contracts/SalaryAid/CreateSalaryAidViewModel.cs b/CompanyManagment.App.Contracts/SalaryAid/CreateSalaryAidViewModel.cs index 9c3ff4c3..32112ff5 100644 --- a/CompanyManagment.App.Contracts/SalaryAid/CreateSalaryAidViewModel.cs +++ b/CompanyManagment.App.Contracts/SalaryAid/CreateSalaryAidViewModel.cs @@ -9,4 +9,6 @@ public class CreateSalaryAidViewModel public string Amount { get; set; } public string SalaryDateTime { get; set; } public string NationalCode { get; set; } -} \ No newline at end of file + public int CalculationMonth { get; set; } + public int CalculationYear { get; set; } +} diff --git a/CompanyManagment.App.Contracts/SalaryAid/ISalaryAidApplication.cs b/CompanyManagment.App.Contracts/SalaryAid/ISalaryAidApplication.cs index 9e8fd182..ebaccead 100644 --- a/CompanyManagment.App.Contracts/SalaryAid/ISalaryAidApplication.cs +++ b/CompanyManagment.App.Contracts/SalaryAid/ISalaryAidApplication.cs @@ -22,5 +22,5 @@ public interface ISalaryAidApplication SalaryAidsGroupedViewModel GetSearchListAsGrouped(SalaryAidSearchViewModel searchModel); #endregion - Task CreateRange(List commands); + OperationResult CreateRange(List commands); } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/SalaryAid/SalaryAidViewModel.cs b/CompanyManagment.App.Contracts/SalaryAid/SalaryAidViewModel.cs index e415954c..d8ca7715 100644 --- a/CompanyManagment.App.Contracts/SalaryAid/SalaryAidViewModel.cs +++ b/CompanyManagment.App.Contracts/SalaryAid/SalaryAidViewModel.cs @@ -4,17 +4,21 @@ namespace CompanyManagment.App.Contracts.SalaryAid; public class SalaryAidViewModel { - public long Id { get; set; } - public long EmployeeId { get; set; } - public string Amount { get; set; } + public long Id { get; set; } + public long EmployeeId { get; set; } + public string Amount { get; set; } public double AmountDouble { get; set; } - public long WorkshopId { get; set; } - public string CreationDate { get; set; } - public string SalaryAidDateTimeFa { get; set; } - public DateTime SalaryAidDateTimeGe { get; set; } + public long WorkshopId { get; set; } + public string CreationDate { get; set; } + public string SalaryAidDateTimeFa { get; set; } + public DateTime SalaryAidDateTimeGe { get; set; } + public string CalculationDateTimeFa { get; set; } + public DateTime CalculationDateTimeGe { get; set; } - public string EmployeeFullName { get; set; } - public string PersonnelCode { get; set; } + + + public string EmployeeFullName { get; set; } + public string PersonnelCode { get; set; } public string MonthFa { get; set; } public string YearFa { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.Application/CustomizeCheckoutApplication.cs b/CompanyManagment.Application/CustomizeCheckoutApplication.cs index d617a01e..7e325e2c 100644 --- a/CompanyManagment.Application/CustomizeCheckoutApplication.cs +++ b/CompanyManagment.Application/CustomizeCheckoutApplication.cs @@ -16,10 +16,12 @@ using System; using System.Collections.Generic; using System.Globalization; using System.Linq; +using Company.Domain.CheckoutAgg; using Company.Domain.CustomizeCheckoutAgg.ValueObjects; -using Company.Domain.CustomizeWorkshopGroupSettingsAgg; +using Company.Domain.CustomizeCheckoutTempAgg; using Company.Domain.PersonnelCodeAgg; using CompanyManagment.App.Contracts.PersonnleCode; +using Company.Domain.CustomizeWorkshopGroupSettingsAgg; namespace CompanyManagment.Application { @@ -34,10 +36,14 @@ namespace CompanyManagment.Application private readonly IContractRepository _contractRepository; private readonly IWorkshopRepository _workshopRepository; private readonly ICustomizeWorkshopSettingsRepository _customizeWorkshopSettingsRepository; + private readonly ICustomizeCheckoutTempRepository _customizeCheckoutTempRepository; + private readonly ICheckoutRepository _checkoutRepository; + private readonly ICustomizeWorkshopGroupSettingsRepository _customizeWorkshopGroupSettingsRepository; + public CustomizeCheckoutApplication(ICustomizeCheckoutRepository customizeCheckoutRepository, IRollCallEmployeeStatusRepository rollCallEmployeeStatusRepository, ILeftWorkRepository leftWorkRepository, IEmployeeRepository employeeRepository, - IRollCallMandatoryRepository rollCallMandatoryRepository, IContractRepository contractRepository, IWorkshopRepository workshopRepository, ICustomizeWorkshopSettingsRepository customizeWorkshopSettingsRepository, IPersonnelCodeRepository personnelCodeRepository, ICustomizeWorkshopGroupSettingsRepository customizeWorkshopGroupSettingsRepository) + IRollCallMandatoryRepository rollCallMandatoryRepository, IContractRepository contractRepository, IWorkshopRepository workshopRepository, ICustomizeWorkshopSettingsRepository customizeWorkshopSettingsRepository, IPersonnelCodeRepository personnelCodeRepository, ICustomizeCheckoutTempRepository customizeCheckoutTempRepository, ICheckoutRepository checkoutRepository, ICustomizeWorkshopGroupSettingsRepository customizeWorkshopGroupSettingsRepository) { _customizeCheckoutRepository = customizeCheckoutRepository; _rollCallEmployeeStatusRepository = rollCallEmployeeStatusRepository; @@ -48,6 +54,8 @@ namespace CompanyManagment.Application _workshopRepository = workshopRepository; _customizeWorkshopSettingsRepository = customizeWorkshopSettingsRepository; _personnelCodeRepository = personnelCodeRepository; + _customizeCheckoutTempRepository = customizeCheckoutTempRepository; + _checkoutRepository = checkoutRepository; _customizeWorkshopGroupSettingsRepository = customizeWorkshopGroupSettingsRepository; } @@ -89,18 +97,19 @@ namespace CompanyManagment.Application x.Amount, x.FineDate, x.FineDate.ToGeorgianDateTime(), - x.IsActive, x.CreationDate.ToGeorgianDateTime()) + x.IsActive, x.CreationDate.ToGeorgianDateTime(), + x.Id) ).ToList(); var rewards = result.RewardViewModels.Select(x => new CustomizeCheckoutReward(x.Amount, x.Description, x.GrantDateGr, x.GrantDateFa, - x.IsActive,x.Title)).ToList(); + x.IsActive, x.Title,x.Id)).ToList(); var loanInstallments = result.InstallmentViewModels.Select(x => - new CustomizeCheckoutLoanInstallments(x.Amount, x.Month, x.Year, x.IsActive,x.RemainingAmount,x.LoanAmount)).ToList(); + new CustomizeCheckoutLoanInstallments(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount, x.LoanAmount,x.Id)).ToList(); var salaryAids = result.SalaryAidViewModels.Select(x => - new CustomizeCheckoutSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa)).ToList(); + new CustomizeCheckoutSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa, x.CalculationDateTimeGe, x.CalculationDateTimeFa,x.Id)).ToList(); var regularShift = result.EmployeeSettingsShifts.Select(x => @@ -113,15 +122,23 @@ namespace CompanyManagment.Application result.FamilyAllowance, result.LeavePay, result.InsuranceDeduction, result.FineAbsenceDeduction, result.LateToWorkDeduction, result.EarlyExitDeduction, result.RewardPay, result.SalaryAidDeduction, result.InstallmentDeduction, result.FineDeduction, result.TaxDeduction, result.SumOfWorkingDays, result.TotalClaimsStr, result.TotalDeductionsStr, result.TotalPayment, contract?.ContractNo ?? "-", - fines,loanInstallments,salaryAids,rewards, result.LateToWorkValue, result.SettingSalary, result.DailyWage, result.ShiftStatus,result.IrregularShift,result.CustomizeRotatingShifts, + fines, loanInstallments, salaryAids, rewards, result.LateToWorkValue, result.SettingSalary, result.DailyWage, result.ShiftStatus, result.IrregularShift, result.CustomizeRotatingShifts, regularShift); - _customizeCheckoutRepository.Create(entity); + _customizeCheckoutRepository.Create(entity); _customizeCheckoutRepository.RemoveEmployeeCustomizeCheckoutInDates(command.WorkshopId, employee.id, command.ContractStart, command.ContractEnd); _customizeCheckoutRepository.SaveChanges(); return op.Succcedded(); } + + public (bool Checkout, bool CustomizeCheckout, bool CustomizeCheckoutTemp) ValidateExistsCheckouts(DateTime startDate, + DateTime endDate, long workshopId, List employeeId) + { + return _customizeCheckoutRepository.ValidateExistsCheckouts(startDate, endDate, workshopId, employeeId); + } + + public OperationResult GroupCreate(CreateCustomizeCheckoutGroup command) { OperationResult op = new(); @@ -146,18 +163,18 @@ namespace CompanyManagment.Application x.Amount, x.FineDate, x.FineDate.ToGeorgianDateTime(), - x.IsActive, x.CreationDate.ToGeorgianDateTime()) + x.IsActive, x.CreationDate.ToGeorgianDateTime(), x.Id) ).ToList(); var rewards = computations.RewardViewModels.Select(x => new CustomizeCheckoutReward(x.Amount, x.Description, x.GrantDateGr, x.GrantDateFa, - x.IsActive,x.Title)).ToList(); + x.IsActive, x.Title,x.Id)).ToList(); var loanInstallments = computations.InstallmentViewModels.Select(x => - new CustomizeCheckoutLoanInstallments(x.Amount, x.Month, x.Year, x.IsActive,x.RemainingAmount, x.LoanAmount)).ToList(); + new CustomizeCheckoutLoanInstallments(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount, x.LoanAmount, x.Id)).ToList(); var salaryAids = computations.SalaryAidViewModels.Select(x => - new CustomizeCheckoutSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa)).ToList(); + new CustomizeCheckoutSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa, x.CalculationDateTimeGe, x.CalculationDateTimeFa,x.Id)).ToList(); var regularShift = computations.EmployeeSettingsShifts.Select(x => new CustomizeCheckoutRegularShift(x.StartTime, x.EndTime, x.Placement)).ToList(); @@ -169,20 +186,20 @@ namespace CompanyManagment.Application computations.FamilyAllowance, computations.LeavePay, computations.InsuranceDeduction, computations.FineAbsenceDeduction, computations.LateToWorkDeduction, computations.EarlyExitDeduction, computations.RewardPay, computations.SalaryAidDeduction, computations.InstallmentDeduction, computations.FineDeduction, computations.TaxDeduction, computations.SumOfWorkingDays, computations.TotalClaimsStr, computations.TotalDeductionsStr, computations.TotalPayment, contract?.ContractNo ?? "-", - fines,loanInstallments,salaryAids,rewards, computations.LateToWorkValue, computations.SettingSalary, computations.DailyWage, computations.ShiftStatus,computations.IrregularShift, + fines, loanInstallments, salaryAids, rewards, computations.LateToWorkValue, computations.SettingSalary, computations.DailyWage, computations.ShiftStatus, computations.IrregularShift, computations.CustomizeRotatingShifts, regularShift); - _customizeCheckoutRepository.Create(entity); + _customizeCheckoutRepository.Create(entity); _customizeCheckoutRepository.RemoveEmployeeCustomizeCheckoutInDates(command.WorkshopId, employeeId, command.ContractStart, command.ContractEnd); } _customizeCheckoutRepository.SaveChanges(); return op.Succcedded(); } - public OperationResult GroupRemove(long workshopId,List idList) + public OperationResult GroupRemove(long workshopId, List idList) { OperationResult op = new(); - var entities = _customizeCheckoutRepository.GetRange(workshopId,idList); + var entities = _customizeCheckoutRepository.GetRange(workshopId, idList); if (entities == null) return op.Succcedded(); _customizeCheckoutRepository.RemoveRange(entities); @@ -218,12 +235,12 @@ namespace CompanyManagment.Application return op.Failed("خطای سیستمی"); var pc = new PersianCalendar(); - var checkoutDate = new DateTime(yearFa, monthFa, 1,pc); + var checkoutDate = new DateTime(yearFa, monthFa, 1, pc); var nextMonth = checkoutDate.AddMonthsFa(1, out _).ToGeorgianDateTime().Date; var today = DateTime.Today; if (nextMonth > today) - return op.Failed("امکان ایجاد فیش برای ماه جاری یا آینده وجود ندارد"); + return op.Failed("امکان ایجاد فیش برای ماه جاری یا آینده وجود ندارد"); //validate parsed datetime var startOfMonth = new DateTime(yearFa, monthFa, 1, new PersianCalendar()).Date; @@ -261,7 +278,7 @@ namespace CompanyManagment.Application WorkshopId = workshopId }); var workshopGroups = _customizeWorkshopSettingsRepository - .GetWorkshopIncludeGroupsByWorkshopId(workshopId)? + .GetWorkshopIncludeGroupsByWorkshopId(workshopId)? .GroupSettings.Where(x => x.MainGroup == false); var employeeSettings = _customizeWorkshopSettingsRepository.GetEmployeeSettingsByWorkshopId(workshopId); @@ -302,7 +319,7 @@ namespace CompanyManagment.Application if (workshopId == 170) { - var exceptionEmployeeIds =_customizeWorkshopGroupSettingsRepository.GetEmployeeSettingsByGroupSettingsId(117).Select(x=>x.EmployeeId).ToList(); + var exceptionEmployeeIds = _customizeWorkshopGroupSettingsRepository.GetEmployeeSettingsByGroupSettingsId(117).Select(x => x.EmployeeId).ToList(); foreach (var employeesId in exceptionEmployeeIds) { @@ -334,16 +351,16 @@ namespace CompanyManagment.Application } color = reason switch { - "فاقد تعیین حقوق" => "orange", + "فاقد تعیین حقوق" => "orange", - "فاقد گروهبندی" => "red", + "فاقد گروهبندی" => "red", - "خطای سیستمی" => "black", + "خطای سیستمی" => "black", - "دارای فیش غیر رسمی" =>"green", + "دارای فیش غیر رسمی" => "green", - _ => "white" - }; + _ => "white" + }; return new EligibleEmployeesForCustomizeCheckoutViewModel() { Id = x.Id, @@ -353,7 +370,7 @@ namespace CompanyManagment.Application Color = color, PersonnelCode = personnelCodes.FirstOrDefault(y => x.Id == y.EmployeeId)?.PersonnelCode.ToString() ?? "-" }; - }).OrderByDescending(x=>x.IsEligible).ThenByDescending(x=>x.Reason).ToList(); + }).OrderByDescending(x => x.IsEligible).ThenByDescending(x => x.Reason).ToList(); return op.Succcedded(employees); } } diff --git a/CompanyManagment.Application/CustomizeCheckoutTempApplication.cs b/CompanyManagment.Application/CustomizeCheckoutTempApplication.cs index 161d542e..a6fb6511 100644 --- a/CompanyManagment.Application/CustomizeCheckoutTempApplication.cs +++ b/CompanyManagment.Application/CustomizeCheckoutTempApplication.cs @@ -74,18 +74,18 @@ namespace CompanyManagment.Application x.Amount, x.FineDate, x.FineDate.ToGeorgianDateTime(), - x.IsActive, x.CreationDate.ToGeorgianDateTime()) + x.IsActive, x.CreationDate.ToGeorgianDateTime(), x.Id) ).ToList(); var rewards = result.RewardViewModels.Select(x => new CustomizeCheckoutTempReward(x.Amount, x.Description, x.GrantDateGr, x.GrantDateFa, - x.IsActive,x.Title)).ToList(); + x.IsActive, x.Title, x.Id)).ToList(); var loanInstallments = result.InstallmentViewModels.Select(x => - new CustomizeCheckoutTempLoanInstallments(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount,x.LoanAmount)).ToList(); + new CustomizeCheckoutTempLoanInstallments(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount, x.LoanAmount, x.Id)).ToList(); var salaryAids = result.SalaryAidViewModels.Select(x => - new CustomizeCheckoutTempSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa)).ToList(); + new CustomizeCheckoutTempSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa, x.CalculationDateTimeGe, x.CalculationDateTimeFa, x.Id)).ToList(); var regularShift = result.EmployeeSettingsShifts.Select(x => new CustomizeCheckoutRegularShift(x.StartTime, x.EndTime, x.Placement)).ToList(); @@ -97,11 +97,11 @@ namespace CompanyManagment.Application result.FamilyAllowance, result.LeavePay, result.InsuranceDeduction, result.FineAbsenceDeduction, result.LateToWorkDeduction, result.EarlyExitDeduction, result.RewardPay, result.SalaryAidDeduction, result.InstallmentDeduction, result.FineDeduction, result.TaxDeduction, result.SumOfWorkingDays, result.TotalClaimsStr, result.TotalDeductionsStr, result.TotalPayment, contract?.ContractNo ?? "-", - fines, loanInstallments, salaryAids, rewards,result.LateToWorkValue, result.SettingSalary,result.DailyWage, result.ShiftStatus, result.IrregularShift, result.CustomizeRotatingShifts, + fines, loanInstallments, salaryAids, rewards, result.LateToWorkValue, result.SettingSalary, result.DailyWage, result.ShiftStatus, result.IrregularShift, result.CustomizeRotatingShifts, regularShift); - _customizeCheckoutTempRepository.Create(entity); + _customizeCheckoutTempRepository.Create(entity); _customizeCheckoutTempRepository.RemoveEmployeeTemporaryCheckoutInDates(command.WorkshopId, employee.id, command.ContractStart, command.ContractEnd); _customizeCheckoutTempRepository.SaveChanges(); return op.Succcedded(); @@ -127,18 +127,18 @@ namespace CompanyManagment.Application x.Amount, x.FineDate, x.FineDate.ToGeorgianDateTime(), - x.IsActive, x.CreationDate.ToGeorgianDateTime()) + x.IsActive, x.CreationDate.ToGeorgianDateTime(), x.Id) ).ToList(); var rewards = computations.RewardViewModels.Select(x => new CustomizeCheckoutTempReward(x.Amount, x.Description, x.GrantDateGr, x.GrantDateFa, - x.IsActive,x.Title)).ToList(); + x.IsActive, x.Title, x.Id)).ToList(); var loanInstallments = computations.InstallmentViewModels.Select(x => - new CustomizeCheckoutTempLoanInstallments(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount,x.LoanAmount)).ToList(); + new CustomizeCheckoutTempLoanInstallments(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount, x.LoanAmount, x.Id)).ToList(); var salaryAids = computations.SalaryAidViewModels.Select(x => - new CustomizeCheckoutTempSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa)).ToList(); + new CustomizeCheckoutTempSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa, x.CalculationDateTimeGe, x.CalculationDateTimeFa, x.Id)).ToList(); var contract = contracts.Where(x => x.IsActiveString == "true").FirstOrDefault(x => x.EmployeeId == employeeId); @@ -154,7 +154,7 @@ namespace CompanyManagment.Application computations.FamilyAllowance, computations.LeavePay, computations.InsuranceDeduction, computations.FineAbsenceDeduction, computations.LateToWorkDeduction, computations.EarlyExitDeduction, computations.RewardPay, computations.SalaryAidDeduction, computations.InstallmentDeduction, computations.FineDeduction, computations.TaxDeduction, computations.SumOfWorkingDays, computations.TotalClaimsStr, computations.TotalDeductionsStr, computations.TotalPayment, contract?.ContractNo ?? "-", - fines, loanInstallments, salaryAids, rewards,computations.LateToWorkValue, computations.SettingSalary, computations.DailyWage, computations.ShiftStatus, computations.IrregularShift, + fines, loanInstallments, salaryAids, rewards, computations.LateToWorkValue, computations.SettingSalary, computations.DailyWage, computations.ShiftStatus, computations.IrregularShift, computations.CustomizeRotatingShifts, regularShift); _customizeCheckoutTempRepository.Create(entity); _customizeCheckoutTempRepository.RemoveEmployeeTemporaryCheckoutInDates(command.WorkshopId, employeeId, command.ContractStart, command.ContractEnd); diff --git a/CompanyManagment.Application/FineApplication.cs b/CompanyManagment.Application/FineApplication.cs index ffb5908d..7bbbaf9e 100644 --- a/CompanyManagment.Application/FineApplication.cs +++ b/CompanyManagment.Application/FineApplication.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Transactions; using _0_Framework.Application; using Company.Domain.CheckoutAgg; using Company.Domain.CustomizeCheckoutAgg; @@ -9,7 +10,10 @@ using Company.Domain.EmployeeAgg; using Company.Domain.File1; using Company.Domain.FineAgg; using Company.Domain.WorkshopAgg; +using CompanyManagment.App.Contracts.CustomizeCheckout; using CompanyManagment.App.Contracts.Fine; +using CompanyManagment.EFCore.Repository; +using Microsoft.EntityFrameworkCore.Scaffolding.Metadata; using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database; namespace CompanyManagment.Application; @@ -22,18 +26,26 @@ public class FineApplication : IFineApplication private readonly ICustomizeCheckoutRepository _customizeCheckoutRepository; public readonly ICustomizeCheckoutTempRepository CustomizeCheckoutTempRepository; private readonly IAuthHelper _authHelper; + private readonly ICustomizeCheckoutApplication _customizeCheckoutApplication; + private readonly ICustomizeCheckoutTempRepository _customizeCheckoutTempRepository; + private readonly ICustomizeCheckoutTempApplication _customizeCheckoutTempApplication; + + public FineApplication(IFineRepository fineRepository, IEmployeeRepository employeeRepository, IWorkshopRepository workshopRepository, ICustomizeCheckoutRepository customizeCheckoutRepository, - IAuthHelper authHelper,ICustomizeCheckoutTempRepository customizeCheckoutTempRepository) + IAuthHelper authHelper, ICustomizeCheckoutTempRepository customizeCheckoutTempRepository, ICustomizeCheckoutApplication customizeCheckoutApplication, ICustomizeCheckoutTempApplication customizeCheckoutTempApplication) { _fineRepository = fineRepository; _employeeRepository = employeeRepository; _workshopRepository = workshopRepository; _customizeCheckoutRepository = customizeCheckoutRepository; _authHelper = authHelper; + _customizeCheckoutTempRepository = customizeCheckoutTempRepository; CustomizeCheckoutTempRepository = customizeCheckoutTempRepository; + _customizeCheckoutApplication = customizeCheckoutApplication; + _customizeCheckoutTempApplication = customizeCheckoutTempApplication; } public List GetSearchList(FineSearchViewModel searchModel) @@ -127,36 +139,94 @@ public class FineApplication : IFineApplication - if (_customizeCheckoutRepository.Exists(x => - x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId) && x.YearInt == year && - x.MonthInt == month)) - { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی صادر شده است جریمه ای دهید"); + //if (_customizeCheckoutRepository.Exists(x => + // x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId) && x.YearInt == year && + // x.MonthInt == month)) + //{ + // return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی صادر شده است جریمه ای دهید"); + //} + + //if (CustomizeCheckoutTempRepository.Exists(x => + // x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId) && x.YearInt == year && + // x.MonthInt == month && + // x.ContractStart <= fineDate && x.ContractEnd >= fineDate)) + //{ + // return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی موقت صادر شده است جریمه ای دهید"); + + //} + + _ = DateTime.Now.Date.AddMonthsFa(-1, out var oneMonthAgoGr); + + if (oneMonthAgoGr > fineDate) + { + var prevCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(fineDate, + oneMonthAgoGr, command.WorkshopId, command.EmployeeIds); + + if (prevCheckouts.CustomizeCheckout || prevCheckouts.CustomizeCheckoutTemp) + { + return op.Failed("شما نمیتوانید در تاریخ قبل از یک ماه گذشته که فیش صادر شده باشد جریمه ای دهید"); + } } - if (CustomizeCheckoutTempRepository.Exists(x => - x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId) && x.YearInt == year && - x.MonthInt == month && - x.ContractStart <= fineDate && x.ContractEnd >= fineDate)) - { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی موقت صادر شده است جریمه ای دهید"); - } + var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(fineDate, + fineDate, command.WorkshopId, command.EmployeeIds); + + //if (existsCheckouts.Checkout) + // return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است جریمه ای دهید"); #endregion DateTime date = command.FineDate.ToGeorgianDateTime(); var (userId, userType,_) = _authHelper.GetUserTypeWithId(); + + using var transaction = new TransactionScope(); + foreach (var employeeId in command.EmployeeIds) { Fine entity = new Fine(employeeId, command.WorkshopId, command.Title, command.Amount.MoneyToDouble(), date, userId, userType); _fineRepository.Create(entity); + _fineRepository.SaveChanges(); + + if (existsCheckouts.CustomizeCheckout) + { + var customizeCheckouts = _customizeCheckoutRepository.GetByWorkshopIdEmployeeIdMonthYear( + command.WorkshopId, employeeId, + year, month).GetAwaiter().GetResult(); + + if (customizeCheckouts != null) + { + + var fines = customizeCheckouts.CheckoutFines.ToList(); + + fines.Add(new(entity.Title,entity.Amount.ToMoney(), + entity.FineDate.ToFarsi(),entity.FineDate,entity.IsActive,entity.CreationDate,entity.id)); + customizeCheckouts.SetFines(fines); + } + } + + if (existsCheckouts.CustomizeCheckoutTemp) + { + var customizeCheckoutTemp = _customizeCheckoutTempRepository.GetByWorkshopIdEmployeeIdInDate( + command.WorkshopId, employeeId, fineDate).GetAwaiter().GetResult(); + + if (customizeCheckoutTemp != null) + { + var fines = customizeCheckoutTemp.CheckoutFines.ToList(); + + + fines.Add(new(entity.Title, entity.Amount.ToMoney(), + entity.FineDate.ToFarsi(), entity.FineDate, entity.IsActive, entity.CreationDate, entity.id)); + customizeCheckoutTemp.SetFines(fines); + } + } + } - - _fineRepository.SaveChanges(); + _customizeCheckoutRepository.SaveChanges(); + transaction.Complete(); return op.Succcedded(); } @@ -196,20 +266,17 @@ public class FineApplication : IFineApplication } - if (_customizeCheckoutRepository.Exists(x => - x.WorkshopId == command.WorkshopId && command.EmployeeId == x.EmployeeId && x.YearInt == year && - x.MonthInt == month)) - { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی صادر شده است جریمه ای دهید"); + _ = DateTime.Now.Date.AddMonthsFa(-1, out var oneMonthAgoGr); - } - - if (CustomizeCheckoutTempRepository.Exists(x => - x.WorkshopId == command.WorkshopId && command.EmployeeId == x.EmployeeId && x.YearInt == year && - x.MonthInt == month && - x.ContractStart <= fineDate && x.ContractEnd >= fineDate)) + if (oneMonthAgoGr > fineDate) { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی موقت صادر شده است جریمه ای دهید"); + var prevCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(fineDate, + oneMonthAgoGr, entity.WorkshopId, [entity.EmployeeId]); + + if (prevCheckouts.CustomizeCheckout || prevCheckouts.CustomizeCheckoutTemp) + { + return op.Failed("شما نمیتوانید در تاریخ قبل از یک ماه گذشته که فیش صادر شده باشد جریمه ای دهید"); + } } if (!_employeeRepository.Exists(x => x.id == command.EmployeeId)) @@ -217,14 +284,63 @@ public class FineApplication : IFineApplication return op.Failed("شخص وارد شده معتبر نمیباشد"); } + + var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(fineDate, + fineDate, entity.WorkshopId, [entity.EmployeeId]); + DateTime date = command.FineDate.ToGeorgianDateTime(); - var (userId, userType,_) = _authHelper.GetUserTypeWithId(); + var (userId, userType, _) = _authHelper.GetUserTypeWithId(); + + using var transaction = new TransactionScope(); + entity.Edit(command.EmployeeId, command.WorkshopId, command.Title, command.Amount.MoneyToDouble(), date, userId, userType); - _fineRepository.SaveChanges(); + + if (existsCheckouts.CustomizeCheckout) + { + var customizeCheckouts = _customizeCheckoutRepository.GetByWorkshopIdEmployeeIdMonthYear( + entity.WorkshopId, entity.EmployeeId, + year, month).GetAwaiter().GetResult(); + + var fines = customizeCheckouts.CheckoutFines.ToList(); + + var existsSalaryAid = fines.FirstOrDefault(x => x.EntityId == entity.id); + if (existsSalaryAid != null) + { + fines.Remove(existsSalaryAid); + } + + fines.Add(new(entity.Title, entity.Amount.ToMoney(), entity.FineDate.ToFarsi(), entity.FineDate, + entity.IsActive, entity.CreationDate, entity.id)); + + customizeCheckouts.SetFines(fines); + + } + if (existsCheckouts.CustomizeCheckoutTemp) + { + var customizeCheckoutTemp = _customizeCheckoutTempRepository.GetByWorkshopIdEmployeeIdInDate( + entity.WorkshopId, entity.EmployeeId, fineDate).GetAwaiter().GetResult(); + + var fines = customizeCheckoutTemp.CheckoutFines.ToList(); + + var existsFines = fines.FirstOrDefault(x => x.EntityId == entity.id); + if (existsFines!= null) + { + fines.Remove(existsFines); + } + + + fines.Add(new(entity.Title, entity.Amount.ToMoney(), entity.FineDate.ToFarsi(), entity.FineDate, + entity.IsActive, entity.CreationDate, entity.id)); + + customizeCheckoutTemp.SetFines(fines); + + } + _customizeCheckoutRepository.SaveChanges(); + transaction.Complete(); return op.Succcedded(entity.id); } diff --git a/CompanyManagment.Application/LoanApplication.cs b/CompanyManagment.Application/LoanApplication.cs index 10c1cfdc..62e131ed 100644 --- a/CompanyManagment.Application/LoanApplication.cs +++ b/CompanyManagment.Application/LoanApplication.cs @@ -4,12 +4,14 @@ using System.Globalization; using System.Linq; using System.Reflection.Metadata.Ecma335; using System.Threading.Tasks; +using System.Transactions; using _0_Framework.Application; using Company.Domain.CheckoutAgg; using Company.Domain.CustomizeCheckoutAgg; using Company.Domain.CustomizeCheckoutTempAgg; using Company.Domain.LoanAgg; using Company.Domain.LoanAgg.Entities; +using CompanyManagment.App.Contracts.CustomizeCheckout; using CompanyManagment.App.Contracts.Loan; using Hangfire.States; using Microsoft.AspNetCore.Mvc.Infrastructure; @@ -23,12 +25,16 @@ public class LoanApplication : ILoanApplication private readonly ICustomizeCheckoutRepository _customizeCheckoutRepository; private readonly IAuthHelper _authHelper; private readonly ICustomizeCheckoutTempRepository _customizeCheckoutTempRepository; + private readonly ICustomizeCheckoutApplication _customizeCheckoutApplication; + private readonly ICustomizeCheckoutTempApplication _customizeCheckoutTempApplication; - public LoanApplication(ILoanRepository loanRepository, ICustomizeCheckoutRepository customizeCheckoutRepository, ICustomizeCheckoutTempRepository customizeCheckoutTempRepository, IAuthHelper authHelper) + public LoanApplication(ILoanRepository loanRepository, ICustomizeCheckoutRepository customizeCheckoutRepository, ICustomizeCheckoutTempRepository customizeCheckoutTempRepository, IAuthHelper authHelper, ICustomizeCheckoutApplication customizeCheckoutApplication, ICustomizeCheckoutTempApplication customizeCheckoutTempApplication) { _loanRepository = loanRepository; _customizeCheckoutRepository = customizeCheckoutRepository; _authHelper = authHelper; + _customizeCheckoutApplication = customizeCheckoutApplication; + _customizeCheckoutTempApplication = customizeCheckoutTempApplication; _customizeCheckoutTempRepository = customizeCheckoutTempRepository; } @@ -63,11 +69,11 @@ public class LoanApplication : ILoanApplication return op.Failed("تاریخ شروع وام نمیتواند در گذشته باشد"); } - if (loanGrantDate>now) + if (loanGrantDate > now) { return op.Failed("تاریخ پرداخت وام می بایست تاریخ امروز یا قبل تر باشد"); } - + if (!command.LoanGrantDate.TryToGeorgianDateTime(out var grantDate)) { return op.Failed("تاریخ وارد شده نامعتبر است"); @@ -75,34 +81,87 @@ public class LoanApplication : ILoanApplication if (amountD < 1000000) return op.Failed("حداقل مبلغ وام 1.000.000 ریال میباشد"); - if (_customizeCheckoutRepository.Exists(x => - command.EmployeeIds.Contains(x.EmployeeId) && x.WorkshopId == command.WorkshopId && - (x.ContractStart > startInstallmentDate && x.ContractStart < lastInstallment))) - { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی صادر شده است وام دهید"); - } + var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(startInstallmentDate, lastInstallment, + command.WorkshopId, command.EmployeeIds); - if (_customizeCheckoutTempRepository.Exists(x => - command.EmployeeIds.Contains(x.EmployeeId) && x.WorkshopId == command.WorkshopId && - (x.ContractStart >= startInstallmentDate && x.ContractStart <= lastInstallment))) + if (existsCheckouts.Checkout) { - return op.Failed("پرسنل در بازه اقساط خود دارای فیش غیررسمی است"); + return op.Failed("پرسنل در این تاریخ دارای فیش حقوقی رسمی است"); } - #endregion - var (userId, userType, _) = _authHelper.GetUserTypeWithId(); - - foreach (var employeeId in command.EmployeeIds) + var (userId, userType,_) = _authHelper.GetUserTypeWithId(); + using var transaction = new TransactionScope(); + foreach (var employeeId in command.EmployeeIds) { + var entity = new Loan(employeeId, command.WorkshopId, startInstallmentDate, command.Count.ToString(), command.Amount.MoneyToDouble(), installment.First().Amount.MoneyToDouble(), installment.Select(x => new LoanInstallment(x.Amount.MoneyToDouble(), x.Month, x.Year, x.DateGr)).ToList() - , command.GetRounded, grantDate,userId,userType); + , command.GetRounded, grantDate, userId, userType); _loanRepository.Create(entity); + //var existInCheckout = _customizeCheckoutApplication.ValidateExistsCheckouts(startInstallmentDate, lastInstallment, + // command.WorkshopId, [employeeId]); + //if (existInCheckout.CustomizeCheckout) + //{ + // var customizeCheckouts = _customizeCheckoutRepository.GetByWorkshopIdEmployeeIdInDates(command.WorkshopId, employeeId, + // startInstallmentDate, lastInstallment); + + // var ccRemoveResult = _customizeCheckoutApplication.GroupRemove(command.WorkshopId, + // customizeCheckouts.Select(x => x.id).ToList()); + + // if (!ccRemoveResult.IsSuccedded) + // return op.Failed("خطا در حذف فیش غیررسمی نهایی:"+ccRemoveResult.Message); + + // var groupedCustomizeCheckouts= customizeCheckouts.GroupBy(x => new { x.Month, x.Year }).ToList(); + + // foreach (var groupedCustomizeCheckout in groupedCustomizeCheckouts) + // { + // var ccCreateResult = _customizeCheckoutApplication.GroupCreate(new CreateCustomizeCheckoutGroup() + // { + // WorkshopId = command.WorkshopId, + // EmployeeIds = groupedCustomizeCheckout.Select(x => x.EmployeeId).ToList(), + // MonthFa = groupedCustomizeCheckout.First().MonthInt, + // YearFa = groupedCustomizeCheckout.First().YearInt, + // }); + + // if (!ccCreateResult.IsSuccedded) + // return op.Failed("خطا در ایجاد فیش غیررسمی نهایی:" + ccCreateResult.Message); + // } + + //} + + //if (existInCheckout.CustomizeCheckoutTemp) + //{ + // var customizeCheckoutsTemp = _customizeCheckoutTempRepository.GetByWorkshopIdEmployeeIdInDates(command.WorkshopId, employeeId, + // startInstallmentDate, lastInstallment); + + // var groupedCustomizeCheckoutsTemp = customizeCheckoutsTemp.GroupBy(x => new { x.Month, x.Year}).ToList(); + + // foreach (var groupedCustomizeCheckout in groupedCustomizeCheckoutsTemp) + // { + // var ccCreateResult = _customizeCheckoutTempApplication.GroupCreate(new CreateCustomizeCheckoutTempGroup() + // { + // WorkshopId = command.WorkshopId, + // EmployeeIds = groupedCustomizeCheckout.Select(x=>x.EmployeeId).ToList(), + // MonthFa = groupedCustomizeCheckout.First().MonthInt, + // YearFa = + // }); + + // if (!ccCreateResult.IsSuccedded) + // return op.Failed("خطا در ایجاد فیش غیررسمی نهایی:" + ccCreateResult.Message); + // } + + // if (!ccRemoveResult.IsSuccedded) + // return op.Failed("خطا در حذف فیش غیررسمی نهایی:" + ccRemoveResult.Message); + + + + //} + } _loanRepository.SaveChanges(); @@ -117,7 +176,7 @@ public class LoanApplication : ILoanApplication var installments = new List(); - + bool endOfMonth = day == 31; double amountD = amount.MoneyToDouble(); @@ -171,7 +230,7 @@ public class LoanApplication : ILoanApplication Year = loanStartDate.Substring(0, 4), Day = loanStartDate.Substring(8, 2) - }; + }; installments.Add(lastInstallment); return installments; } @@ -224,7 +283,7 @@ public class LoanApplication : ILoanApplication Year = loanStartDate.Substring(0, 4), Day = loanStartDate.Substring(8, 2) - }; + }; installments.Add(lastInstallment); return installments; } @@ -273,6 +332,6 @@ public class LoanApplication : ILoanApplication public LoanGroupedViewModel GetSearchListAsGrouped(LoanSearchViewModel searchModel) { - return _loanRepository.GetSearchListAsGrouped(searchModel); + return _loanRepository.GetSearchListAsGrouped(searchModel); } } \ No newline at end of file diff --git a/CompanyManagment.Application/RewardApplication.cs b/CompanyManagment.Application/RewardApplication.cs index 97dec4e8..c081f0cf 100644 --- a/CompanyManagment.Application/RewardApplication.cs +++ b/CompanyManagment.Application/RewardApplication.cs @@ -1,15 +1,13 @@ using System; using System.Collections.Generic; -using System.IO; using System.Linq; +using System.Transactions; using _0_Framework.Application; -using Company.Domain.CheckoutAgg; using Company.Domain.CustomizeCheckoutAgg; using Company.Domain.CustomizeCheckoutTempAgg; using Company.Domain.RewardAgg; +using CompanyManagment.App.Contracts.CustomizeCheckout; using CompanyManagment.App.Contracts.Reward; -using Microsoft.AspNetCore.Components.Forms; -using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database; namespace CompanyManagment.Application; @@ -19,13 +17,17 @@ public class RewardApplication : IRewardApplication private readonly IAuthHelper _authHelper; private readonly ICustomizeCheckoutRepository _customizeCheckoutRepository; private readonly ICustomizeCheckoutTempRepository _customizeCheckoutTempRepository; + private readonly ICustomizeCheckoutApplication _customizeCheckoutApplication; + private readonly ICustomizeCheckoutTempApplication _customizeCheckoutTempApplication; - public RewardApplication(IRewardRepository rewardRepository, IAuthHelper authHelper, ICustomizeCheckoutRepository customizeCheckoutRepository, ICustomizeCheckoutTempRepository customizeCheckoutTempRepository) + public RewardApplication(IRewardRepository rewardRepository, IAuthHelper authHelper, ICustomizeCheckoutRepository customizeCheckoutRepository, ICustomizeCheckoutTempRepository customizeCheckoutTempRepository, ICustomizeCheckoutTempApplication customizeCheckoutTempApplication, ICustomizeCheckoutApplication customizeCheckoutApplication) { _rewardRepository = rewardRepository; _authHelper = authHelper; _customizeCheckoutRepository = customizeCheckoutRepository; _customizeCheckoutTempRepository = customizeCheckoutTempRepository; + _customizeCheckoutTempApplication = customizeCheckoutTempApplication; + _customizeCheckoutApplication = customizeCheckoutApplication; } public List GetSearchList(RewardSearchModel searchModel) @@ -34,10 +36,6 @@ public class RewardApplication : IRewardApplication } - - - - public EditRewardViewModel GetDetails(long id) { return _rewardRepository.GetDetails(id); @@ -65,6 +63,9 @@ public class RewardApplication : IRewardApplication } + + + _rewardRepository.Remove(entity); _rewardRepository.SaveChanges(); return op.Succcedded(); @@ -105,16 +106,37 @@ public class RewardApplication : IRewardApplication var month = Convert.ToInt32(command.GrantDate.Substring(5, 2)); var year = Convert.ToInt32(command.GrantDate.Substring(0, 4)); - if (_customizeCheckoutRepository.Exists(x => x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId) && x.YearInt == year && x.MonthInt == month)) + //if (_customizeCheckoutRepository.Exists(x => x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId) && x.YearInt == year && x.MonthInt == month)) + //{ + // return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی صادر شده است پاداشی دهید"); + //} + + //if (_customizeCheckoutTempRepository.Exists(x => x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId) && + // x.YearInt == year && x.MonthInt == month && x.ContractStart <= grantDate && x.ContractEnd >= grantDate)) + //{ + // return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی موقت صادر شده است پاداشی دهید"); + //} + + + _ = DateTime.Now.Date.AddMonthsFa(-1, out var oneMonthAgoGr); + + if (oneMonthAgoGr > grantDate) { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی صادر شده است پاداشی دهید"); + var prevCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(grantDate, + oneMonthAgoGr, command.WorkshopId, command.EmployeeIds); + + if (prevCheckouts.CustomizeCheckout || prevCheckouts.CustomizeCheckoutTemp) + { + return op.Failed("شما نمیتوانید در تاریخ قبل از یک ماه گذشته که فیش صادر شده باشد پاداشی دهید"); + } } - if (_customizeCheckoutTempRepository.Exists(x => x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId) && - x.YearInt == year && x.MonthInt == month && x.ContractStart <= grantDate && x.ContractEnd >= grantDate)) - { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی موقت صادر شده است پاداشی دهید"); - } + + var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(grantDate, + grantDate, command.WorkshopId, command.EmployeeIds); + + //if (existsCheckouts.Checkout) + // return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است پاداشی دهید"); @@ -122,16 +144,50 @@ public class RewardApplication : IRewardApplication #endregion var (userId, userType, _) = _authHelper.GetUserTypeWithId(); + using var transaction = new TransactionScope(); + + foreach (var employeeId in command.EmployeeIds) { - var entity = new Reward(employeeId, command.WorkshopId, command.Amount.MoneyToDouble(), command.Description, - userId, userType,grantDate,command.Title); + var entity = new Reward(employeeId, command.WorkshopId, command.Amount.MoneyToDouble(), command.Description, + userId, userType, grantDate, command.Title); _rewardRepository.Create(entity); - } + _rewardRepository.SaveChanges(); + if (existsCheckouts.CustomizeCheckout) + { + var customizeCheckouts = _customizeCheckoutRepository.GetByWorkshopIdEmployeeIdMonthYear( + command.WorkshopId, employeeId, + year, month).GetAwaiter().GetResult(); + if (customizeCheckouts != null) + { - _rewardRepository.SaveChanges(); + var rewards = customizeCheckouts.CustomizeCheckoutRewards.ToList(); + + rewards.Add(new(entity.Amount.ToMoney(), entity.Description, entity.GrantDate, entity.GrantDate.ToFarsi(), entity.IsActive, entity.Title, entity.id)); + customizeCheckouts.SetRewards(rewards); + } + } + + if (existsCheckouts.CustomizeCheckoutTemp) + { + var customizeCheckoutTemp = _customizeCheckoutTempRepository.GetByWorkshopIdEmployeeIdInDate( + command.WorkshopId, employeeId, grantDate).GetAwaiter().GetResult(); + if (customizeCheckoutTemp != null) + { + var rewards = customizeCheckoutTemp.CustomizeCheckoutRewards.ToList(); + + rewards.Add(new(entity.Amount.ToMoney(), entity.Description, entity.GrantDate, entity.GrantDate.ToFarsi(), entity.IsActive, entity.Title, entity.id)); + customizeCheckoutTemp.SetRewards(rewards); + } + } + + } + _customizeCheckoutRepository.SaveChanges(); + + transaction.Complete(); return op.Succcedded(); + } public OperationResult Edit(EditRewardViewModel command) @@ -160,34 +216,85 @@ public class RewardApplication : IRewardApplication var month = Convert.ToInt32(command.GrantDate.Substring(5, 2)); var year = Convert.ToInt32(command.GrantDate.Substring(0, 4)); - if (_customizeCheckoutRepository.Exists(x => x.WorkshopId == command.WorkshopId && command.EmployeeId == x.EmployeeId && x.YearInt == year && x.MonthInt == month)) + + _ = DateTime.Now.Date.AddMonthsFa(-1, out var oneMonthAgoGr); + + if (oneMonthAgoGr > grantDate) { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی صادر شده است پاداشی دهید"); + var prevCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(grantDate, + oneMonthAgoGr, entity.WorkshopId, [entity.EmployeeId]); + + if (prevCheckouts.CustomizeCheckout || prevCheckouts.CustomizeCheckoutTemp) + { + return op.Failed("شما نمیتوانید در تاریخ قبل از یک ماه گذشته که فیش صادر شده باشد پاداشی دهید"); + } } - var (userId, userType, _) = _authHelper.GetUserTypeWithId(); + var (userId, userType,_) = _authHelper.GetUserTypeWithId(); - if (_customizeCheckoutTempRepository.Exists(x => x.WorkshopId == command.WorkshopId && entity.EmployeeId == x.EmployeeId && - x.YearInt == year && x.MonthInt == month && x.ContractStart <= grantDate && x.ContractEnd >= grantDate)) - { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی موقت صادر شده است پاداشی دهید"); - } + var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(grantDate, + grantDate, entity.WorkshopId, [entity.EmployeeId]); - entity.Edit(command.Amount.MoneyToDouble(),command.Description,userId,userType, grantDate,command.Title); + using var transaction = new TransactionScope(); + + entity.Edit(command.Amount.MoneyToDouble(), command.Description, userId, userType, grantDate, command.Title); _rewardRepository.SaveChanges(); + + if (existsCheckouts.CustomizeCheckout) + { + var customizeCheckouts = _customizeCheckoutRepository.GetByWorkshopIdEmployeeIdMonthYear( + entity.WorkshopId, entity.EmployeeId, + year, month).GetAwaiter().GetResult(); + if (customizeCheckouts != null) + { + + var rewards = customizeCheckouts.CustomizeCheckoutRewards.ToList(); + + var existsReward = rewards.FirstOrDefault(x => x.EntityId == entity.id); + if (existsReward != null) + { + rewards.Remove(existsReward); + } + + rewards.Add(new(entity.Amount.ToMoney(), entity.Description, entity.GrantDate, entity.GrantDate.ToFarsi(), entity.IsActive, entity.Title, entity.id)); + customizeCheckouts.SetRewards(rewards); + } + } + + if (existsCheckouts.CustomizeCheckoutTemp) + { + var customizeCheckoutTemp = _customizeCheckoutTempRepository.GetByWorkshopIdEmployeeIdInDate( + command.WorkshopId, entity.EmployeeId, grantDate).GetAwaiter().GetResult(); + if (customizeCheckoutTemp != null) + { + + var rewards = customizeCheckoutTemp.CustomizeCheckoutRewards.ToList(); + + var existsReward = rewards.FirstOrDefault(x => x.EntityId == entity.id); + if (existsReward != null) + { + rewards.Remove(existsReward); + } + + rewards.Add(new(entity.Amount.ToMoney(), entity.Description, entity.GrantDate, entity.GrantDate.ToFarsi(), entity.IsActive, entity.Title, entity.id)); + customizeCheckoutTemp.SetRewards(rewards); + } + } + _customizeCheckoutRepository.SaveChanges(); + transaction.Complete(); return op.Succcedded(entity.id); } #region Pooya - /// - /// گروهبندی بر اساس ماه هنگام جستجو با انتخاب کارمند - /// - public RewardsGroupedViewModel GetSearchListAsGrouped(RewardSearchModel searchModel) - { - return _rewardRepository.GetSearchListAsGrouped(searchModel); - } - #endregion + /// + /// گروهبندی بر اساس ماه هنگام جستجو با انتخاب کارمند + /// + public RewardsGroupedViewModel GetSearchListAsGrouped(RewardSearchModel searchModel) + { + return _rewardRepository.GetSearchListAsGrouped(searchModel); + } + #endregion } \ No newline at end of file diff --git a/CompanyManagment.Application/SalaryAidApplication.cs b/CompanyManagment.Application/SalaryAidApplication.cs index 367f04eb..2aca9055 100644 --- a/CompanyManagment.Application/SalaryAidApplication.cs +++ b/CompanyManagment.Application/SalaryAidApplication.cs @@ -7,11 +7,14 @@ using Company.Domain.CheckoutAgg; using CompanyManagment.App.Contracts.Checkout; using System; using System.Threading.Tasks; +using System.Transactions; using Company.Domain.CustomizeCheckoutAgg; using Company.Domain.CustomizeCheckoutTempAgg; using Company.Domain.EmployeeAgg; +using CompanyManagment.App.Contracts.CustomizeCheckout; using CompanyManagment.App.Contracts.Reward; using OfficeOpenXml.Drawing.Chart; +using CompanyManagment.EFCore.Migrations; namespace CompanyManagment.Application; @@ -22,14 +25,18 @@ public class SalaryAidApplication : ISalaryAidApplication private readonly IEmployeeRepository _employeeRepository; private readonly ICustomizeCheckoutTempRepository _customizeCheckoutTempRepository; private readonly IAuthHelper _authHelper; - + private readonly ICustomizeCheckoutApplication _customizeCheckoutApplication; + private readonly ICustomizeCheckoutTempApplication _customizeCheckoutTempApplication; + public SalaryAidApplication(ISalaryAidRepository salaryAidRepository, ICustomizeCheckoutRepository customizeCheckoutRepository, - IEmployeeRepository employeeRepository, ICustomizeCheckoutTempRepository customizeCheckoutTempRepository, IAuthHelper authHelper) + IEmployeeRepository employeeRepository, ICustomizeCheckoutTempRepository customizeCheckoutTempRepository, IAuthHelper authHelper, ICustomizeCheckoutApplication customizeCheckoutApplication, ICustomizeCheckoutTempApplication customizeCheckoutTempApplication) { _salaryAidRepository = salaryAidRepository; _customizeCheckoutRepository = customizeCheckoutRepository; _authHelper = authHelper; + _customizeCheckoutApplication = customizeCheckoutApplication; + _customizeCheckoutTempApplication = customizeCheckoutTempApplication; _employeeRepository = employeeRepository; _customizeCheckoutTempRepository = customizeCheckoutTempRepository; } @@ -48,44 +55,95 @@ public class SalaryAidApplication : ISalaryAidApplication public OperationResult Create(CreateSalaryAidViewModel command) { var op = new OperationResult(); + if (!command.SalaryDateTime.TryToGeorgianDateTime(out var startDate)) { return op.Failed("تاریخ وارد شده نامعتبر است"); } + var calculationDate = $"{command.CalculationYear:0000}/{command.CalculationMonth:00}/01"; + if (!calculationDate.TryToGeorgianDateTime(out var calculationDateGr)) + { + return op.Failed("تاریخ محاسبه وارد شده نامعتبر است"); + } if (startDate > DateTime.Now) { return op.Failed("تاریخ پرداخت مساعده می بایست تاریخ امروز یا قبل تر باشد"); } + if (command.Amount.Length > 15) { return op.Failed("مبلغ وارد شده معتبر نیست"); } - var month = Convert.ToInt32(command.SalaryDateTime.Substring(5, 2)); - var year = Convert.ToInt32(command.SalaryDateTime.Substring(0, 4)); + var month = Convert.ToInt32(command.CalculationMonth); + var year = Convert.ToInt32(command.CalculationYear); - if (_customizeCheckoutRepository.Exists(x => x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId) && x.YearInt == year && x.MonthInt == month)) + _ = DateTime.Now.Date.AddMonthsFa(-1, out var oneMonthAgoGr); + + if (oneMonthAgoGr > calculationDateGr) { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی صادر شده است مساعده ای دهید"); + var prevCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(calculationDateGr, + oneMonthAgoGr, command.WorkshopId, command.EmployeeIds); + + if (prevCheckouts.CustomizeCheckout || prevCheckouts.CustomizeCheckoutTemp) + { + return op.Failed("شما نمیتوانید در تاریخ قبل از یک ماه گذشته که فیش صادر شده باشد مساعده دهید"); + } } - if (_customizeCheckoutTempRepository.Exists(x => x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId) && - x.YearInt == year && x.MonthInt == month && x.ContractStart <= startDate && x.ContractEnd >= startDate)) - { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی موقت صادر شده است مساعده ای دهید"); - } - var (userId, userType, _) = _authHelper.GetUserTypeWithId(); - foreach (var employeeId in command.EmployeeIds) + var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(calculationDateGr, + calculationDateGr, command.WorkshopId, command.EmployeeIds); + + //if (existsCheckouts.Checkout) + // return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید"); + + + var (userId, userType,_) = _authHelper.GetUserTypeWithId(); + using var transaction = new TransactionScope(); + foreach (var employeeId in command.EmployeeIds) { - var entity = new SalaryAid(employeeId, command.WorkshopId, command.Amount.MoneyToDouble(), startDate,userId,userType); + var entity = new SalaryAid(employeeId, command.WorkshopId, command.Amount.MoneyToDouble(), startDate,userId,userType,command.CalculationMonth,command.CalculationYear); _salaryAidRepository.Create(entity); + _salaryAidRepository.SaveChanges(); + if (existsCheckouts.CustomizeCheckout) + { + var customizeCheckouts = _customizeCheckoutRepository.GetByWorkshopIdEmployeeIdMonthYear( + command.WorkshopId, employeeId, + year, month).GetAwaiter().GetResult(); + + if (customizeCheckouts != null) + { + + var salaryAids = customizeCheckouts.CustomizeCheckoutSalaryAids.ToList(); + + salaryAids.Add(new(entity.Amount.ToMoney(), entity.SalaryAidDateTime, entity.SalaryAidDateTime.ToFarsi(), entity.CalculationDate, entity.CalculationDate.ToFarsi(), entity.id)); + customizeCheckouts.SetSalaryAids(salaryAids); + } + + } + + if (existsCheckouts.CustomizeCheckoutTemp) + { + var customizeCheckoutTemp = _customizeCheckoutTempRepository.GetByWorkshopIdEmployeeIdInDate( + command.WorkshopId, employeeId, calculationDateGr).GetAwaiter().GetResult(); + + if (customizeCheckoutTemp != null) + { + var salaryAids = customizeCheckoutTemp.CustomizeCheckoutSalaryAids.ToList(); + + salaryAids.Add(new(entity.Amount.ToMoney(), entity.SalaryAidDateTime, entity.SalaryAidDateTime.ToFarsi(), entity.CalculationDate, entity.CalculationDate.ToFarsi(), entity.id)); + customizeCheckoutTemp.SetSalaryAids(salaryAids); + } + } } - _salaryAidRepository.SaveChanges(); + + _customizeCheckoutRepository.SaveChanges(); + transaction.Complete(); return op.Succcedded(); } @@ -98,6 +156,12 @@ public class SalaryAidApplication : ISalaryAidApplication return op.Failed("تاریخ وارد شده نامعتبر است"); } + var calculationDate = $"{command.CalculationYear:0000}/{command.CalculationMonth:00}/01"; + if (!calculationDate.TryToGeorgianDateTime(out var calculationDateGr)) + { + return op.Failed("تاریخ محاسبه وارد شده نامعتبر است"); + } + if (startDate > DateTime.Now) { return op.Failed("تاریخ پرداخت مساعده می بایست تاریخ امروز یا قبل تر باشد"); @@ -111,21 +175,78 @@ public class SalaryAidApplication : ISalaryAidApplication if (entity == null) return op.Failed("چنین مساعده ای وجود ندارد"); - var month = Convert.ToInt32(command.SalaryDateTime.Substring(5, 2)); - var year = Convert.ToInt32(command.SalaryDateTime.Substring(0, 4)); - if (_customizeCheckoutRepository.Exists(x => x.WorkshopId == entity.WorkshopId && entity.EmployeeId == x.EmployeeId && x.YearInt == year && x.MonthInt == month)) - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی صادر شده است مساعده ای دهید"); + var month = Convert.ToInt32(command.CalculationMonth); + var year = Convert.ToInt32(command.CalculationYear); - if (_customizeCheckoutTempRepository.Exists(x => x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId) && - x.YearInt == year && x.MonthInt == month && x.ContractStart <= startDate && x.ContractEnd >= startDate)) + _ = DateTime.Now.Date.AddMonthsFa(-1, out var oneMonthAgoGr); + + if (oneMonthAgoGr > calculationDateGr) { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی موقت صادر شده است مساعده ای دهید"); - } - var (userId, userType, _) = _authHelper.GetUserTypeWithId(); + var prevCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(calculationDateGr, + oneMonthAgoGr, entity.WorkshopId, [entity.EmployeeId]); - entity.Edit(Tools.MoneyToDouble(command.Amount),startDate,userId,userType); + if (prevCheckouts.CustomizeCheckout || prevCheckouts.CustomizeCheckoutTemp) + { + return op.Failed("شما نمیتوانید در تاریخ قبل از یک ماه گذشته که فیش صادر شده باشد مساعده ای دهید"); + } + } + + + var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(calculationDateGr, + calculationDateGr, entity.WorkshopId, [entity.EmployeeId]); + + //if (existsCheckouts.Checkout) + // return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده ای دهید"); + + + using var transaction = new TransactionScope(); + var (userId, userType,_) = _authHelper.GetUserTypeWithId(); + + entity.Edit(Tools.MoneyToDouble(command.Amount),startDate,userId,userType,command.CalculationMonth,command.CalculationYear); _salaryAidRepository.SaveChanges(); + + if (existsCheckouts.CustomizeCheckout) + { + var customizeCheckouts = _customizeCheckoutRepository.GetByWorkshopIdEmployeeIdMonthYear( + entity.WorkshopId, entity.EmployeeId, + year, month).GetAwaiter().GetResult(); + + var salaryAids = customizeCheckouts.CustomizeCheckoutSalaryAids.ToList(); + + var existsSalaryAid = salaryAids.FirstOrDefault(x => x.EntityId == entity.id); + if (existsSalaryAid != null) + { + salaryAids.Remove(existsSalaryAid); + } + + salaryAids.Add(new(entity.Amount.ToMoney(), entity.SalaryAidDateTime, entity.SalaryAidDateTime.ToFarsi(), + entity.CalculationDate, entity.CalculationDate.ToFarsi(), entity.id)); + + customizeCheckouts.SetSalaryAids(salaryAids); + + } + if (existsCheckouts.CustomizeCheckoutTemp) + { + var customizeCheckoutTemp = _customizeCheckoutTempRepository.GetByWorkshopIdEmployeeIdInDate( + entity.WorkshopId, entity.EmployeeId, calculationDateGr).GetAwaiter().GetResult(); + + var salaryAids = customizeCheckoutTemp.CustomizeCheckoutSalaryAids.ToList(); + + var existsSalaryAid = salaryAids.FirstOrDefault(x => x.EntityId == entity.id); + if (existsSalaryAid != null) + { + salaryAids.Remove(existsSalaryAid); + } + + salaryAids.Add(new(entity.Amount.ToMoney(), entity.SalaryAidDateTime, entity.SalaryAidDateTime.ToFarsi(), + entity.CalculationDate, entity.CalculationDate.ToFarsi(), entity.id)); + + customizeCheckoutTemp.SetSalaryAids(salaryAids); + + } + _customizeCheckoutRepository.SaveChanges(); + transaction.Complete(); return op.Succcedded(); } @@ -136,15 +257,15 @@ public class SalaryAidApplication : ISalaryAidApplication if (entity == null) return op.Failed("این آیتم وجود ندارد"); - var month = Convert.ToInt32(entity.SalaryAidDateTime.ToFarsi().Substring(5, 2)); - var year = Convert.ToInt32(entity.SalaryAidDateTime.ToFarsi().Substring(0, 4)); + var month = Convert.ToInt32(entity.CalculationDate.ToFarsi().Substring(5, 2)); + var year = Convert.ToInt32(entity.CalculationDate.ToFarsi().Substring(0, 4)); if (_customizeCheckoutRepository.Exists(x => x.WorkshopId == entity.WorkshopId && entity.EmployeeId == x.EmployeeId && x.YearInt == year && x.MonthInt == month)) return op.Failed("این پرسنل در این تاریخ دارای فیش حقوقی است"); if (_customizeCheckoutTempRepository.Exists(x => x.WorkshopId == entity.WorkshopId && entity.EmployeeId == x.EmployeeId && - x.YearInt == year && x.MonthInt == month && x.ContractStart <= entity.SalaryAidDateTime && x.ContractEnd >= entity.SalaryAidDateTime)) + x.YearInt == year && x.MonthInt == month && x.ContractStart <= entity.CalculationDate && x.ContractEnd >= entity.CalculationDate)) { return op.Failed("این پرسنل در این تاریخ دارای فیش حقوقی موقت است"); } @@ -164,9 +285,10 @@ public class SalaryAidApplication : ISalaryAidApplication } - public async Task CreateRange(List commands) + public OperationResult CreateRange(List commands) { var op = new OperationResult(); + using var transaction = new TransactionScope(); foreach (var command in commands) { @@ -174,6 +296,11 @@ public class SalaryAidApplication : ISalaryAidApplication { return op.Failed("تاریخ وارد شده نامعتبر است"); } + var calculationDate = $"{command.CalculationYear:0000}/{command.CalculationMonth:00}/01"; + if (!calculationDate.TryToGeorgianDateTime(out var calculationDateGr)) + { + return op.Failed("تاریخ محاسبه وارد شده نامعتبر است"); + } if (startDate > DateTime.Now) { @@ -184,17 +311,30 @@ public class SalaryAidApplication : ISalaryAidApplication { return op.Failed("مبلغ وارد شده معتبر نیست"); } + _ = DateTime.Now.Date.AddMonthsFa(-1, out var oneMonthAgoGr); - var month = Convert.ToInt32(command.SalaryDateTime.Substring(5, 2)); - var year = Convert.ToInt32(command.SalaryDateTime.Substring(0, 4)); - - - if (_customizeCheckoutRepository.Exists(x => x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId) && x.YearInt == year && x.MonthInt == month)) + if (oneMonthAgoGr > calculationDateGr) { - return op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی صادر شده است مساعده ای دهید"); + var prevCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(calculationDateGr, + oneMonthAgoGr, command.WorkshopId, command.EmployeeIds); + + if (prevCheckouts.CustomizeCheckout || prevCheckouts.Checkout || prevCheckouts.CustomizeCheckoutTemp) + { + return op.Failed("شما نمیتوانید در تاریخ قبل از یک ماه گذشته که فیش صادر شده باشد مساعده دهید"); + } } - var (userId, userType, _) = _authHelper.GetUserTypeWithId(); - foreach (var employeeId in command.EmployeeIds) + + var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(calculationDateGr, + calculationDateGr, command.WorkshopId, command.EmployeeIds); + + var month = Convert.ToInt32(command.CalculationMonth); + var year = Convert.ToInt32(command.CalculationYear); + + + + var (userId, userType,_) = _authHelper.GetUserTypeWithId(); + + foreach (var employeeId in command.EmployeeIds) { var id = employeeId; if (employeeId == 0) @@ -203,11 +343,44 @@ public class SalaryAidApplication : ISalaryAidApplication id = employee.id; } - var entity = new SalaryAid(id, command.WorkshopId, command.Amount.MoneyToDouble(), startDate, userId, userType); - await _salaryAidRepository.CreateAsync(entity); + var entity = new SalaryAid(id, command.WorkshopId, command.Amount.MoneyToDouble(), startDate, userId, userType, command.CalculationMonth, command.CalculationYear); + _salaryAidRepository.Create(entity); + _salaryAidRepository.SaveChanges(); + + if (existsCheckouts.CustomizeCheckout) + { + var customizeCheckouts = _customizeCheckoutRepository.GetByWorkshopIdEmployeeIdMonthYear( + command.WorkshopId, employeeId, + year, month).GetAwaiter().GetResult(); + + if (customizeCheckouts != null) + { + + var salaryAids = customizeCheckouts.CustomizeCheckoutSalaryAids.ToList(); + + salaryAids.Add(new(entity.Amount.ToMoney(), entity.SalaryAidDateTime, entity.SalaryAidDateTime.ToFarsi(), entity.CalculationDate, entity.CalculationDate.ToFarsi(), entity.id)); + customizeCheckouts.SetSalaryAids(salaryAids); + } + + } + + if (existsCheckouts.CustomizeCheckoutTemp) + { + var customizeCheckoutTemp = _customizeCheckoutTempRepository.GetByWorkshopIdEmployeeIdInDate( + command.WorkshopId, employeeId, calculationDateGr).GetAwaiter().GetResult(); + + if (customizeCheckoutTemp != null) + { + var salaryAids = customizeCheckoutTemp.CustomizeCheckoutSalaryAids.ToList(); + + salaryAids.Add(new(entity.Amount.ToMoney(), entity.SalaryAidDateTime, entity.SalaryAidDateTime.ToFarsi(), entity.CalculationDate, entity.CalculationDate.ToFarsi(), entity.id)); + customizeCheckoutTemp.SetSalaryAids(salaryAids); + } + } } + _customizeCheckoutRepository.SaveChanges(); } - await _salaryAidRepository.SaveChangesAsync(); + transaction.Complete(); return op.Succcedded(); } #region Pooya @@ -219,6 +392,6 @@ public class SalaryAidApplication : ISalaryAidApplication return _salaryAidRepository.GetSearchListAsGrouped(searchModel); } - + #endregion } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Mapping/CustomizeCheckoutMapping.cs b/CompanyManagment.EFCore/Mapping/CustomizeCheckoutMapping.cs index b189e2bb..7932daa3 100644 --- a/CompanyManagment.EFCore/Mapping/CustomizeCheckoutMapping.cs +++ b/CompanyManagment.EFCore/Mapping/CustomizeCheckoutMapping.cs @@ -85,6 +85,8 @@ public class CustomizeCheckoutMapping : IEntityTypeConfiguration x.SalaryAidDateTimeFa).HasMaxLength(15); salaryAid.Property(x => x.Amount).HasMaxLength(25); + salaryAid.Property(x => x.CalculationDateTimeFa).HasMaxLength(15); + }); builder.OwnsMany(x => x.CustomizeCheckoutRewards, rewards => diff --git a/CompanyManagment.EFCore/Mapping/CustomizeCheckoutTempMapping.cs b/CompanyManagment.EFCore/Mapping/CustomizeCheckoutTempMapping.cs index 1f2e7e37..354595a2 100644 --- a/CompanyManagment.EFCore/Mapping/CustomizeCheckoutTempMapping.cs +++ b/CompanyManagment.EFCore/Mapping/CustomizeCheckoutTempMapping.cs @@ -84,6 +84,8 @@ public class CustomizeCheckoutTempMapping : IEntityTypeConfiguration x.SalaryAidDateTimeFa).HasMaxLength(15); salaryAid.Property(x => x.Amount).HasMaxLength(25); + salaryAid.Property(x => x.CalculationDateTimeFa).HasMaxLength(15); + }); builder.OwnsMany(x => x.CustomizeCheckoutRewards, rewards => diff --git a/CompanyManagment.EFCore/Migrations/20250508101244_add calculation date to salary aid and add entity id to customize checkout value objects.Designer.cs b/CompanyManagment.EFCore/Migrations/20250508101244_add calculation date to salary aid and add entity id to customize checkout value objects.Designer.cs new file mode 100644 index 00000000..6e4ad3a1 --- /dev/null +++ b/CompanyManagment.EFCore/Migrations/20250508101244_add calculation date to salary aid and add entity id to customize checkout value objects.Designer.cs @@ -0,0 +1,9521 @@ +// +using System; +using CompanyManagment.EFCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace CompanyManagment.EFCore.Migrations +{ + [DbContext(typeof(CompanyContext))] + [Migration("20250508101244_add calculation date to salary aid and add entity id to customize checkout value objects")] + partial class addcalculationdatetosalaryaidandaddentityidtocustomizecheckoutvalueobjects + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Company.Domain.AndroidApkVersionAgg.AndroidApkVersion", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Path") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("VersionCode") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("VersionName") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)"); + + b.HasKey("id"); + + b.ToTable("AndroidApkVersions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.BankAgg.Bank", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BankLogoMediaId") + .HasColumnType("bigint"); + + b.Property("BankName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("Banks", (string)null); + }); + + modelBuilder.Entity("Company.Domain.BillAgg.EntityBill", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Appointed") + .HasColumnType("nvarchar(max)"); + + b.Property("Contact") + .HasColumnType("nvarchar(max)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("ProcessingStage") + .HasColumnType("nvarchar(max)"); + + b.Property("SubjectBill") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("id"); + + b.ToTable("TextManager_Bill", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Board.Board", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardChairman") + .HasColumnType("nvarchar(max)"); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("Branch") + .HasColumnType("nvarchar(max)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DisputeResolutionPetitionDate") + .HasColumnType("datetime2"); + + b.Property("ExpertReport") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Boards", (string)null); + }); + + modelBuilder.Entity("Company.Domain.BoardType.BoardType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("BoardTypes", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ChapterAgg.EntityChapter", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Chapter") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("Subtitle_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("Subtitle_Id"); + + b.ToTable("TextManager_Chapter", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CheckoutAgg.Checkout", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AbsenceDeduction") + .HasColumnType("float"); + + b.Property("AbsencePeriod") + .HasColumnType("float"); + + b.Property("AbsenceValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ArchiveCode") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("AverageHoursPerDay") + .HasColumnType("float"); + + b.Property("BaseYearsPay") + .HasColumnType("float"); + + b.Property("BonusesPay") + .HasColumnType("float"); + + b.Property("ConsumableItems") + .HasColumnType("float"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractStart") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreditLeaves") + .HasColumnType("float"); + + b.Property("DateOfBirth") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("EmployeeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FamilyAllowance") + .HasColumnType("float"); + + b.Property("FathersName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("FridayPay") + .HasColumnType("float"); + + b.Property("FridayWorkValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("HasRollCall") + .HasColumnType("bit"); + + b.Property("HousingAllowance") + .HasColumnType("float"); + + b.Property("InstallmentDeduction") + .HasColumnType("float"); + + b.Property("InsuranceDeduction") + .HasColumnType("float"); + + b.Property("IsActiveString") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LeaveCheckout") + .HasColumnType("bit"); + + b.Property("LeavePay") + .HasColumnType("float"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MissionPay") + .HasColumnType("float"); + + b.Property("Month") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NightworkPay") + .HasColumnType("float"); + + b.Property("OverNightWorkValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OverTimeWorkValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OvertimePay") + .HasColumnType("float"); + + b.Property("PersonnelCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("RewardPay") + .HasColumnType("float"); + + b.Property("RotatingShiftValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("SalaryAidDeduction") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("Signature") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("SumOfWorkingDays") + .HasMaxLength(6) + .HasColumnType("nvarchar(6)"); + + b.Property("TaxDeducation") + .HasColumnType("float"); + + b.Property("TotalClaims") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("TotalDayOfBunosesCompute") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TotalDayOfLeaveCompute") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TotalDayOfYearsCompute") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TotalDeductions") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("WorkingHoursId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(70) + .HasColumnType("nvarchar(70)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.Property("YearsPay") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId"); + + b.ToTable("Checkouts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ClassifiedSalaryAgg.ClassifiedSalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("Group1") + .HasColumnType("float"); + + b.Property("Group10") + .HasColumnType("float"); + + b.Property("Group11") + .HasColumnType("float"); + + b.Property("Group12") + .HasColumnType("float"); + + b.Property("Group13") + .HasColumnType("float"); + + b.Property("Group14") + .HasColumnType("float"); + + b.Property("Group15") + .HasColumnType("float"); + + b.Property("Group16") + .HasColumnType("float"); + + b.Property("Group17") + .HasColumnType("float"); + + b.Property("Group18") + .HasColumnType("float"); + + b.Property("Group19") + .HasColumnType("float"); + + b.Property("Group2") + .HasColumnType("float"); + + b.Property("Group20") + .HasColumnType("float"); + + b.Property("Group3") + .HasColumnType("float"); + + b.Property("Group4") + .HasColumnType("float"); + + b.Property("Group5") + .HasColumnType("float"); + + b.Property("Group6") + .HasColumnType("float"); + + b.Property("Group7") + .HasColumnType("float"); + + b.Property("Group8") + .HasColumnType("float"); + + b.Property("Group9") + .HasColumnType("float"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("ClassifiedSalaries", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ClientEmployeeWorkshopAgg.ClientEmployeeWorkshop", b => + { + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.HasKey("WorkshopId", "EmployeeId"); + + b.HasIndex("EmployeeId"); + + b.ToTable("ClientWorkshopEmployee", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Contact2Agg.EntityContact", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("NameContact") + .HasColumnType("nvarchar(max)"); + + b.Property("Signature") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("TextManager_Contact", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgentPhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ArchiveCode") + .HasColumnType("int"); + + b.Property("BlockTimes") + .HasColumnType("int"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("FName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FatherName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(6) + .HasColumnType("nvarchar(6)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IdNumberSeri") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IdNumberSerial") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsAuthenticated") + .HasColumnType("bit"); + + b.Property("IsBlock") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsLegal") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("NationalId") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("Nationalcode") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RegisterId") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("RepresentativeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("State") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SureName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Zone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.HasIndex("RepresentativeId"); + + b.ToTable("PersonalContractingParties", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AgreementSalary") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ArchiveCode") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ConsumableItems") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContarctStart") + .HasColumnType("datetime2"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractNo") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ContractPeriod") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("ContractType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DayliWage") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployerId") + .HasColumnType("bigint"); + + b.Property("FamilyAllowance") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("GetWorkDate") + .HasColumnType("datetime2"); + + b.Property("HousingAllowance") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsActiveString") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("JobType") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("JobTypeId") + .HasColumnType("bigint"); + + b.Property("MandatoryHoursid") + .HasColumnType("bigint"); + + b.Property("PersonnelCode") + .HasColumnType("bigint"); + + b.Property("SetContractDate") + .HasColumnType("datetime2"); + + b.Property("Signature") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("WorkingHoursWeekly") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkshopAddress1") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("WorkshopAddress2") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("WorkshopIds") + .HasColumnType("bigint"); + + b.Property("YearlySalaryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("EmployerId"); + + b.HasIndex("JobTypeId"); + + b.HasIndex("MandatoryHoursid"); + + b.HasIndex("WorkshopIds"); + + b.HasIndex("YearlySalaryId"); + + b.ToTable("Contracts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ContractingPartyAccountAgg.ContractingPartyAccount", b => + { + b.Property("PersonalContractingPartyId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.HasKey("PersonalContractingPartyId", "AccountId"); + + b.ToTable("ContractingPartyAccount", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CrossJobGuildId") + .HasColumnType("bigint"); + + b.Property("EquivalentRialOver") + .HasColumnType("bigint"); + + b.Property("EquivalentRialUnder") + .HasColumnType("bigint"); + + b.Property("SalaryRatioOver") + .HasColumnType("float"); + + b.Property("SalaryRatioUnder") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("CrossJobGuildId"); + + b.ToTable("CrossJobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CrossJobGuildAgg.CrossJobGuild", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EconomicCode") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("CrossJobGuilds", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CrossJobItemsAgg.CrossJobItems", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CrossJobId") + .HasColumnType("bigint"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("CrossJobId"); + + b.HasIndex("JobId"); + + b.ToTable("CrossJobItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYearsPay") + .HasColumnType("float"); + + b.Property("BonusesPay") + .HasColumnType("float"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ContractStart") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyWage") + .HasColumnType("float"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EarlyExitDeduction") + .HasColumnType("float"); + + b.Property("EmployeeFName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployeeLName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FamilyAllowance") + .HasColumnType("float"); + + b.Property("FineAbsenceDeduction") + .HasColumnType("float"); + + b.Property("FineDeduction") + .HasColumnType("float"); + + b.Property("FridayPay") + .HasColumnType("float"); + + b.Property("InstallmentDeduction") + .HasColumnType("float"); + + b.Property("InsuranceDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkValue") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("LeavePay") + .HasColumnType("float"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MonthInt") + .HasColumnType("int"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NightWorkPay") + .HasColumnType("float"); + + b.Property("OverTimePay") + .HasColumnType("float"); + + b.Property("RewardPay") + .HasColumnType("float"); + + b.Property("SalaryAidDeduction") + .HasColumnType("float"); + + b.Property("SettingSalary") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("ShiftStatus") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("SumOfWorkingDays") + .HasColumnType("nvarchar(max)"); + + b.Property("TaxDeduction") + .HasColumnType("float"); + + b.Property("TotalClaims") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalDeductions") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("WorkshopFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("YearInt") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("CustomizeCheckouts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYearsPay") + .HasColumnType("float"); + + b.Property("BonusesPay") + .HasColumnType("float"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ContractStart") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyWage") + .HasColumnType("float"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EarlyExitDeduction") + .HasColumnType("float"); + + b.Property("EmployeeFName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployeeLName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FamilyAllowance") + .HasColumnType("float"); + + b.Property("FineAbsenceDeduction") + .HasColumnType("float"); + + b.Property("FineDeduction") + .HasColumnType("float"); + + b.Property("FridayPay") + .HasColumnType("float"); + + b.Property("InstallmentDeduction") + .HasColumnType("float"); + + b.Property("InsuranceDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkValue") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("LeavePay") + .HasColumnType("float"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MonthInt") + .HasColumnType("int"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NightWorkPay") + .HasColumnType("float"); + + b.Property("OverTimePay") + .HasColumnType("float"); + + b.Property("RewardPay") + .HasColumnType("float"); + + b.Property("SalaryAidDeduction") + .HasColumnType("float"); + + b.Property("SettingSalary") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("ShiftStatus") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("SumOfWorkingDays") + .HasColumnType("nvarchar(max)"); + + b.Property("TaxDeduction") + .HasColumnType("float"); + + b.Property("TotalClaims") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalDeductions") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("WorkshopFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("YearInt") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("CustomizeCheckoutTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CustomizeWorkshopGroupSettingId") + .HasColumnType("bigint"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FridayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("HolidayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("IsSettingChanged") + .HasColumnType("bit"); + + b.Property("IsShiftChanged") + .HasColumnType("bit"); + + b.Property("LeavePermittedDays") + .HasColumnType("int"); + + b.Property("Salary") + .HasColumnType("float"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopShiftStatus") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.HasKey("id"); + + b.HasIndex("CustomizeWorkshopGroupSettingId"); + + b.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CustomizeWorkshopSettingId") + .HasColumnType("bigint"); + + b.Property("FridayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("GroupName") + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.Property("HolidayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("IsSettingChange") + .HasColumnType("bit"); + + b.Property("IsShiftChange") + .HasColumnType("bit"); + + b.Property("LeavePermittedDays") + .HasColumnType("int"); + + b.Property("MainGroup") + .HasColumnType("bit"); + + b.Property("Salary") + .HasColumnType("float"); + + b.Property("WorkshopShiftStatus") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.HasKey("id"); + + b.HasIndex("CustomizeWorkshopSettingId"); + + b.ToTable("CustomizeWorkshopGroupSettings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYearsPayInEndOfYear") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("BonusesPaysInEndOfMonth") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Currency") + .HasColumnType("int"); + + b.Property("EndTimeOffSet") + .HasColumnType("time"); + + b.Property("FridayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("HolidayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("LeavePermittedDays") + .HasColumnType("int"); + + b.Property("MaxMonthDays") + .HasColumnType("int"); + + b.Property("OverTimeThresholdMinute") + .HasColumnType("int"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopShiftStatus") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId") + .IsUnique(); + + b.ToTable("CustomizeWorkshopSettings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryAgg.DateSalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("EndDateGr") + .HasColumnType("datetime2"); + + b.Property("StartDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("StartDateGr") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("DateSalaries", (string)null); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryItemAgg.DateSalaryItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateSalaryId") + .HasColumnType("bigint"); + + b.Property("Percent") + .HasColumnType("float"); + + b.Property("PercentageId") + .HasColumnType("bigint"); + + b.Property("Salary") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("DateSalaryId"); + + b.HasIndex("PercentageId"); + + b.ToTable("DateSalaryItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAccountAgg.EmployeeAccount", b => + { + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.HasKey("EmployeeId", "AccountId"); + + b.ToTable("EmployeeAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAgg.Employee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("BankBranch") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("BankCardNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("City") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("DateOfIssue") + .HasColumnType("datetime2"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FatherName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FieldOfStudy") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IdNumberSeri") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("IdNumberSerial") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("InsuranceCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("InsuranceHistoryByMonth") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("InsuranceHistoryByYear") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsActiveString") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IsAuthorized") + .HasColumnType("bit"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("LevelOfEducation") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MaritalStatus") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MilitaryService") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Nationality") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("NumberOfChildren") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OfficePhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PlaceOfIssue") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("State") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.ToTable("Employees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAuthorizeTempAgg.EmployeeAuthorizeTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BirthDate") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FatherName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("IdNumberSeri") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("IdNumberSerial") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("LName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.HasKey("id"); + + b.HasIndex("NationalCode") + .IsUnique() + .HasFilter("[NationalCode] IS NOT NULL"); + + b.ToTable("EmployeeAuthorizeTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeBankInformationAgg.EmployeeBankInformation", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BankAccountNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("BankId") + .HasColumnType("bigint"); + + b.Property("CardNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IsDefault") + .HasColumnType("bit"); + + b.Property("ShebaNumber") + .HasMaxLength(26) + .HasColumnType("nvarchar(26)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("BankId"); + + b.HasIndex("EmployeeId"); + + b.ToTable("EmployeeBankInformationSet", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeChildrenAgg.EmployeeChildren", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ParentNationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.ToTable("EmployeeChildren", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeClientTempAgg.EmployeeClientTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasColumnType("nvarchar(max)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("MaritalStatus") + .HasColumnType("nvarchar(max)"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("EmployeeClientTemps"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeComputeOptionsAgg.EmployeeComputeOptions", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BonusesOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ComputeOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("YearsOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("EmployeeComputeOptions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ConfirmationDateTime") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DocumentLabel") + .IsRequired() + .HasMaxLength(31) + .HasColumnType("nvarchar(31)"); + + b.Property("DocumentStatus") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("EmployeeDocumentId") + .HasColumnType("bigint"); + + b.Property("EmployeeDocumentsAdminViewId") + .HasColumnType("bigint"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("MediaId") + .HasColumnType("bigint"); + + b.Property("RejectionReason") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("ReviewedById") + .HasMaxLength(120) + .HasColumnType("bigint"); + + b.Property("UploaderId") + .HasColumnType("bigint"); + + b.Property("UploaderRoleId") + .HasColumnType("bigint"); + + b.Property("UploaderType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeDocumentId"); + + b.HasIndex("EmployeeDocumentsAdminViewId"); + + b.ToTable("EmployeeDocumentItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId") + .IsUnique(); + + b.ToTable("EmployeeDocumentsAdminSelection", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("HasRejectedItems") + .HasColumnType("bit"); + + b.Property("IsConfirmed") + .HasColumnType("bit"); + + b.Property("IsSentToChecker") + .HasColumnType("bit"); + + b.Property("RequiredItemsSubmittedByClient") + .HasColumnType("bit"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("EmployeeDocuments", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeInsurancListDataAgg.EmployeeInsurancListData", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYears") + .HasColumnType("float"); + + b.Property("BenefitsIncludedContinuous") + .HasColumnType("float"); + + b.Property("BenefitsIncludedNonContinuous") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyWage") + .HasColumnType("float"); + + b.Property("DailyWagePlusBaseYears") + .HasColumnType("float"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IncludeStatus") + .HasColumnType("bit"); + + b.Property("InsuranceListId") + .HasColumnType("bigint"); + + b.Property("InsuranceShare") + .HasColumnType("float"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LeftWorkDate") + .HasColumnType("datetime2(7)"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MonthlyBenefits") + .HasColumnType("float"); + + b.Property("MonthlyBenefitsIncluded") + .HasColumnType("float"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkingDays") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("EmployeeInsurancListData", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeInsuranceRecordAgg.EmployeeInsuranceRecord", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfEnd") + .HasColumnType("datetime2"); + + b.Property("DateOfStart") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("WorkShopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkShopId"); + + b.ToTable("EmployeeInsuranceRecord", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployerAccountAgg.EmployerAccount", b => + { + b.Property("EmployerId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.HasKey("EmployerId", "AccountId"); + + b.ToTable("EmployerAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Evidence.Evidence", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Evidences", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EvidenceDetail.EvidenceDetail", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Day") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Evidence_Id") + .HasColumnType("bigint"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("Evidence_Id"); + + b.ToTable("EvidenceDetails", (string)null); + }); + + modelBuilder.Entity("Company.Domain.File1.File1", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ArchiveNo") + .HasColumnType("bigint"); + + b.Property("Client") + .HasColumnType("int"); + + b.Property("ClientVisitDate") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("FileClass") + .HasColumnType("nvarchar(max)"); + + b.Property("HasMandate") + .HasColumnType("int"); + + b.Property("ProceederReference") + .HasColumnType("nvarchar(max)"); + + b.Property("Reqester") + .HasColumnType("bigint"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Summoned") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Files", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileAlert.FileAlert", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AdditionalDeadline") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FileState_Id") + .HasColumnType("bigint"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("FileState_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("File_Alerts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileAndFileEmployerAgg.FileAndFileEmployer", b => + { + b.Property("FileId") + .HasColumnType("bigint"); + + b.Property("FileEmployerId") + .HasColumnType("bigint"); + + b.HasKey("FileId", "FileEmployerId"); + + b.HasIndex("FileEmployerId"); + + b.ToTable("FileAndFileEmployers", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileEmployeeAgg.FileEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("FatherName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("FieldOfStudy") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("InsuranceCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("LevelOfEducation") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("MaritalStatus") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OfficePhone") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("Phone") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("RepresentativeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("RepresentativeId"); + + b.ToTable("FileEmployee", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileEmployerAgg.FileEmployer", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("FieldOfStudy") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("InsuranceWorkshopCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsLegal") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("LegalName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LevelOfEducation") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("MaritalStatus") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NationalId") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OfficePhone") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("Phone") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("RegisterId") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("RepresentativeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("RepresentativeId"); + + b.ToTable("FileEmployer", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileState.FileState", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FileTiming_Id") + .HasColumnType("bigint"); + + b.Property("State") + .HasColumnType("int"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("FileTiming_Id"); + + b.ToTable("File_States", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileTiming.FileTiming", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Deadline") + .HasColumnType("int"); + + b.Property("Tips") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("File_Timings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileTitle.FileTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("File_Titles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FinancialStatmentAgg.FinancialStatment", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("ContractingPartyName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.ToTable("FinancialStatments", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FinancialTransactionAgg.FinancialTransaction", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Balance") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Creditor") + .HasColumnType("float"); + + b.Property("Deptor") + .HasColumnType("float"); + + b.Property("Description") + .HasMaxLength(600) + .HasColumnType("nvarchar(600)"); + + b.Property("DescriptionOption") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FinancialStatementId") + .HasColumnType("bigint"); + + b.Property("MessageText") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("SentSms") + .HasColumnType("bit"); + + b.Property("SentSmsDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TdateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TdateGr") + .HasColumnType("datetime2"); + + b.Property("TypeOfTransaction") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.HasIndex("FinancialStatementId"); + + b.ToTable("FinancialTransactions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FineAgg.Fine", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreatedByAccountId") + .HasColumnType("bigint"); + + b.Property("CreatedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FineDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LastModifiedByAccountId") + .HasColumnType("bigint"); + + b.Property("LastModifiedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Fines", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FineSubjectAgg.FineSubject", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("FineSubjects", (string)null); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanAgg.GroupPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AnnualSalary") + .HasColumnType("float"); + + b.Property("BaseSalary") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("GroupNo") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("JobSalary") + .HasColumnType("float"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopPlanId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopPlanId"); + + b.ToTable("GroupPlans", (string)null); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanJobItemAgg.GroupPlanJobItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("GroupNo") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("GroupPlanId") + .HasColumnType("bigint"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("JobName") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopPlanId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("GroupPlanId"); + + b.ToTable("GroupPlanJobItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.HolidayAgg.Holiday", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("Holidays", (string)null); + }); + + modelBuilder.Entity("Company.Domain.HolidayItemAgg.HolidayItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("HolidayId") + .HasColumnType("bigint"); + + b.Property("HolidayYear") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.Property("Holidaydate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("HolidayId"); + + b.ToTable("Holidayitems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContract", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("City") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("ContractAmount") + .HasColumnType("float"); + + b.Property("ContractDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ContractDateGr") + .HasColumnType("datetime2"); + + b.Property("ContractEndFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ContractEndGr") + .HasColumnType("datetime2"); + + b.Property("ContractNo") + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("ContractStartFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ContractStartGr") + .HasColumnType("datetime2"); + + b.Property("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("ContractingPartyName") + .HasMaxLength(80) + .HasColumnType("nvarchar(80)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyCompenseation") + .HasColumnType("float"); + + b.Property("Description") + .HasMaxLength(10000) + .HasColumnType("nvarchar(max)"); + + b.Property("EmployeeManualCount") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ExtensionNo") + .HasColumnType("int"); + + b.Property("HasValueAddedTax") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Obligation") + .HasColumnType("float"); + + b.Property("OfficialCompany") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("RepresentativeName") + .HasMaxLength(80) + .HasColumnType("nvarchar(80)"); + + b.Property("Signature") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("State") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("TotalAmount") + .HasColumnType("float"); + + b.Property("TypeOfContract") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("ValueAddedTax") + .HasColumnType("float"); + + b.Property("WorkshopManualCount") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.HasKey("id"); + + b.ToTable("InstitutionContracts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractContactInfoAgg.InstitutionContractContactInfo", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FnameLname") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.Property("PhoneNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("PhoneType") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Position") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SendSms") + .HasColumnType("bit"); + + b.HasKey("id"); + + b.HasIndex("InstitutionContractId"); + + b.ToTable("InstitutinContractContactInfo", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionPlanAgg.InstitutionPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseContractAmont") + .HasColumnType("float"); + + b.Property("CountPerson") + .HasColumnType("int"); + + b.Property("FinalContractAmont") + .HasColumnType("float"); + + b.Property("IncreasePercentage") + .HasColumnType("float"); + + b.HasKey("id"); + + b.ToTable("InstitutionPlan", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionPlanAgg.PlanPercentage", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractAndCheckoutInPersonPercent") + .HasColumnType("int"); + + b.Property("ContractAndCheckoutPercent") + .HasColumnType("int"); + + b.Property("CustomizeCheckoutPercent") + .HasColumnType("int"); + + b.Property("InsuranceInPersonPercent") + .HasColumnType("int"); + + b.Property("InsurancePercent") + .HasColumnType("int"); + + b.Property("RollCallPercent") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("PlanPercentage", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsurancJobAgg.InsuranceJob", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EconomicCode") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("InsuranceJobTitle") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.Property("YearlySalaryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("InsuranceJobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsurancWorkshopInfoAgg.InsuranceWorkshopInfo", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgreementNumber") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployerName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InsuranceCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ListNumber") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId") + .IsUnique(); + + b.ToTable("InsuranceWorkshopInformation", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceAgg.Insurance", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployerStr") + .HasColumnType("nvarchar(max)"); + + b.Property("ListNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("Month") + .HasMaxLength(2) + .HasColumnType("int"); + + b.Property("WorkShopId") + .HasColumnType("bigint"); + + b.Property("WorkShopStr") + .HasColumnType("nvarchar(max)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("WorkShopId"); + + b.ToTable("Insurances", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceEmployeeInfoAgg.InsuranceEmployeeInfo", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("DateOfIssue") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FatherName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Gender") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("InsuranceCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("PlaceOfIssue") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId") + .IsUnique(); + + b.ToTable("InsuranceEmployeeInformation", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobAndJobsAgg.InsuranceJobAndJobs", b => + { + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("InsuranceJobItemId") + .HasColumnType("bigint"); + + b.HasKey("JobId", "InsuranceJobItemId"); + + b.HasIndex("InsuranceJobItemId"); + + b.ToTable("InsuranceJobAndJobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("InsuranceJobId") + .HasColumnType("bigint"); + + b.Property("PercentageLessThan") + .HasColumnType("float"); + + b.Property("PercentageMoreThan") + .HasColumnType("float"); + + b.Property("SalaeyLessThan") + .HasColumnType("float"); + + b.Property("SalaryMoreThan") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("InsuranceJobId"); + + b.ToTable("InsuranceJobItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceListAgg.InsuranceList", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ConfirmSentlist") + .HasColumnType("bit"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DifficultJobsInsuranc") + .HasColumnType("float"); + + b.Property("EmployerShare") + .HasColumnType("float"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("Included") + .HasColumnType("float"); + + b.Property("IncludedAndNotIncluded") + .HasColumnType("float"); + + b.Property("InsuredShare") + .HasColumnType("float"); + + b.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("SumOfBaseYears") + .HasColumnType("float"); + + b.Property("SumOfBenefitsIncluded") + .HasColumnType("float"); + + b.Property("SumOfDailyWage") + .HasColumnType("float"); + + b.Property("SumOfDailyWagePlusBaseYears") + .HasColumnType("float"); + + b.Property("SumOfEmployees") + .HasColumnType("int"); + + b.Property("SumOfMarriedAllowance") + .HasColumnType("float"); + + b.Property("SumOfSalaries") + .HasColumnType("float"); + + b.Property("SumOfWorkingDays") + .HasColumnType("int"); + + b.Property("UnEmploymentInsurance") + .HasColumnType("float"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("InsuranceLists", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceWorkshopAgg.InsuranceListWorkshop", b => + { + b.Property("InsurancListId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("InsurancListId", "WorkshopId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("InsuranceListWorkshops", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceYearlySalaryAgg.InsuranceYearlySalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("Group1") + .HasColumnType("float"); + + b.Property("Group10") + .HasColumnType("float"); + + b.Property("Group11") + .HasColumnType("float"); + + b.Property("Group12") + .HasColumnType("float"); + + b.Property("Group13") + .HasColumnType("float"); + + b.Property("Group14") + .HasColumnType("float"); + + b.Property("Group15") + .HasColumnType("float"); + + b.Property("Group16") + .HasColumnType("float"); + + b.Property("Group17") + .HasColumnType("float"); + + b.Property("Group18") + .HasColumnType("float"); + + b.Property("Group19") + .HasColumnType("float"); + + b.Property("Group2") + .HasColumnType("float"); + + b.Property("Group20") + .HasColumnType("float"); + + b.Property("Group21") + .HasColumnType("float"); + + b.Property("Group22") + .HasColumnType("float"); + + b.Property("Group23") + .HasColumnType("float"); + + b.Property("Group24") + .HasColumnType("float"); + + b.Property("Group25") + .HasColumnType("float"); + + b.Property("Group26") + .HasColumnType("float"); + + b.Property("Group27") + .HasColumnType("float"); + + b.Property("Group28") + .HasColumnType("float"); + + b.Property("Group29") + .HasColumnType("float"); + + b.Property("Group3") + .HasColumnType("float"); + + b.Property("Group30") + .HasColumnType("float"); + + b.Property("Group4") + .HasColumnType("float"); + + b.Property("Group5") + .HasColumnType("float"); + + b.Property("Group6") + .HasColumnType("float"); + + b.Property("Group7") + .HasColumnType("float"); + + b.Property("Group8") + .HasColumnType("float"); + + b.Property("Group9") + .HasColumnType("float"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("InsuranceYearlySalaries", (string)null); + }); + + modelBuilder.Entity("Company.Domain.JobAgg.Job", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("JobCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("JobName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.ToTable("Jobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeaveAgg.Leave", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Decription") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EndLeave") + .HasColumnType("datetime2"); + + b.Property("HasShiftDuration") + .HasColumnType("bit"); + + b.Property("IsAccepted") + .HasColumnType("bit"); + + b.Property("LeaveHourses") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LeaveType") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("Month") + .HasColumnType("int"); + + b.Property("PaidLeaveType") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("ShiftDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("StartLeave") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("Leave", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkAgg.LeftWork", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AddBonusesPay") + .HasColumnType("bit"); + + b.Property("AddLeavePay") + .HasColumnType("bit"); + + b.Property("AddYearsPay") + .HasColumnType("bit"); + + b.Property("BonusesOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ComputeOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IncludeStatus") + .HasColumnType("bit"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LeftWorkDate") + .HasColumnType("datetime2"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("LeftWork", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkInsuranceAgg.LeftWorkInsurance", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IncludeStatus") + .HasColumnType("bit"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LeftWorkDate") + .HasColumnType("datetime2(7)"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("LeftWorkInsurances", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkTempAgg.LeftWorkTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LastDayStanding") + .HasColumnType("datetime2"); + + b.Property("LeftWork") + .HasColumnType("datetime2"); + + b.Property("LeftWorkId") + .HasColumnType("bigint"); + + b.Property("LeftWorkType") + .HasColumnType("int"); + + b.Property("StartWork") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("LeftWorkTemps"); + }); + + modelBuilder.Entity("Company.Domain.LoanAgg.Entities.Loan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("AmountPerMonth") + .HasColumnType("float"); + + b.Property("Count") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("CreatedByAccountId") + .HasColumnType("bigint"); + + b.Property("CreatedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("GetRounded") + .HasColumnType("bit"); + + b.Property("LoanGrantDate") + .HasColumnType("datetime2"); + + b.Property("StartInstallmentPayment") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Loan", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MandatoryHoursAgg.MandatoryHours", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Aban") + .HasColumnType("float"); + + b.Property("AbanFridays") + .HasColumnType("int"); + + b.Property("AbanHolidays") + .HasColumnType("int"); + + b.Property("AbanMonadatoryDays") + .HasColumnType("int"); + + b.Property("Azar") + .HasColumnType("float"); + + b.Property("AzarFridays") + .HasColumnType("int"); + + b.Property("AzarHolidays") + .HasColumnType("int"); + + b.Property("AzarMonadatoryDays") + .HasColumnType("int"); + + b.Property("Bahman") + .HasColumnType("float"); + + b.Property("BahmanFridays") + .HasColumnType("int"); + + b.Property("BahmanHolidays") + .HasColumnType("int"); + + b.Property("BahmanMonadatoryDays") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Dey") + .HasColumnType("float"); + + b.Property("DeyFridays") + .HasColumnType("int"); + + b.Property("DeyHolidays") + .HasColumnType("int"); + + b.Property("DeyMonadatoryDays") + .HasColumnType("int"); + + b.Property("Esfand") + .HasColumnType("float"); + + b.Property("EsfandFridays") + .HasColumnType("int"); + + b.Property("EsfandHolidays") + .HasColumnType("int"); + + b.Property("EsfandMonadatoryDays") + .HasColumnType("int"); + + b.Property("Farvardin") + .HasColumnType("float"); + + b.Property("FarvardinFridays") + .HasColumnType("int"); + + b.Property("FarvardinHolidays") + .HasColumnType("int"); + + b.Property("FarvardinMonadatoryDays") + .HasColumnType("int"); + + b.Property("Khordad") + .HasColumnType("float"); + + b.Property("KhordadFridays") + .HasColumnType("int"); + + b.Property("KhordadHolidays") + .HasColumnType("int"); + + b.Property("KhordadMonadatoryDays") + .HasColumnType("int"); + + b.Property("Mehr") + .HasColumnType("float"); + + b.Property("MehrFridays") + .HasColumnType("int"); + + b.Property("MehrHolidays") + .HasColumnType("int"); + + b.Property("MehrMonadatoryDays") + .HasColumnType("int"); + + b.Property("Mordad") + .HasColumnType("float"); + + b.Property("MordadFridays") + .HasColumnType("int"); + + b.Property("MordadHolidays") + .HasColumnType("int"); + + b.Property("MordadMonadatoryDays") + .HasColumnType("int"); + + b.Property("Ordibehesht") + .HasColumnType("float"); + + b.Property("OrdibeheshtFridays") + .HasColumnType("int"); + + b.Property("OrdibeheshtHolidays") + .HasColumnType("int"); + + b.Property("OrdibeheshtMonadatoryDays") + .HasColumnType("int"); + + b.Property("Shahrivar") + .HasColumnType("float"); + + b.Property("ShahrivarFridays") + .HasColumnType("int"); + + b.Property("ShahrivarHolidays") + .HasColumnType("int"); + + b.Property("ShahrivarMonadatoryDays") + .HasColumnType("int"); + + b.Property("Tir") + .HasColumnType("float"); + + b.Property("TirFridays") + .HasColumnType("int"); + + b.Property("TirHolidays") + .HasColumnType("int"); + + b.Property("TirMonadatoryDays") + .HasColumnType("int"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("MandatoryHours", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MasterPenaltyTitle.MasterPenaltyTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Day") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("MasterPetition_Id") + .HasColumnType("bigint"); + + b.Property("PaidAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("RemainingAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("MasterPetition_Id"); + + b.ToTable("Master_PenaltyTitles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MasterPetition.MasterPetition", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.Property("MasterName") + .HasColumnType("nvarchar(max)"); + + b.Property("WorkHistoryDescreption") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Master_Petitions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MasterWorkHistory.MasterWorkHistory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("MasterPetition_Id") + .HasColumnType("bigint"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.Property("WorkingHoursPerDay") + .HasColumnType("int"); + + b.Property("WorkingHoursPerWeek") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("MasterPetition_Id"); + + b.ToTable("Master_WorkHistories", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ModuleAgg.EntityModule", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("NameSubModule") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("TextManager_Module", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ModuleTextManagerAgg.EntityModuleTextManager", b => + { + b.Property("TextManagerId") + .HasColumnType("bigint"); + + b.Property("ModuleId") + .HasColumnType("bigint"); + + b.HasKey("TextManagerId", "ModuleId"); + + b.HasIndex("ModuleId"); + + b.ToTable("TextManager_ModuleTextManager", (string)null); + }); + + modelBuilder.Entity("Company.Domain.OriginalTitleAgg.EntityOriginalTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("id"); + + b.ToTable("TextManager_OriginalTitle", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeAgg.PaymentToEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("Month") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("PaymentToEmployees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeItemAgg.PaymentToEmployeeItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BankCheckNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CashDescription") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DestinationBankAccountNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("DestinationBankName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("PayDate") + .HasColumnType("datetime2"); + + b.Property("Payment") + .HasColumnType("float"); + + b.Property("PaymentMetod") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("PaymentTitle") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("PaymentToEmployeeId") + .HasColumnType("bigint"); + + b.Property("SourceBankAccountNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SourceBankName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TypeDestinationBankNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TypeSourceBankNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("PaymentToEmployeeId"); + + b.ToTable("PaymentToEmployeeItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PenaltyTitle.PenaltyTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Day") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2(7)"); + + b.Property("PaidAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("Petition_Id") + .HasColumnType("bigint"); + + b.Property("RemainingAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("ToDate") + .HasColumnType("datetime2(7)"); + + b.HasKey("id"); + + b.HasIndex("Petition_Id"); + + b.ToTable("PenaltyTitles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PercentageAgg.Percentage", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Percent") + .HasColumnType("float"); + + b.HasKey("id"); + + b.ToTable("Percentages", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PersonnelCodeAgg.PersonnelCodeDomain", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("PersonnelCode") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("PersonnelCodes", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Petition.Petition", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.Property("NotificationPetitionDate") + .HasColumnType("datetime2"); + + b.Property("PetitionIssuanceDate") + .HasColumnType("datetime2"); + + b.Property("PetitionNo") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPenalty") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPenaltyTitles") + .HasColumnType("nvarchar(max)"); + + b.Property("WorkHistoryDescreption") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Petitions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ProceedingSession.ProceedingSession", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Board_Id") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Date") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Time") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("Board_Id"); + + b.ToTable("ProceedingSessions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RepresentativeAgg.Representative", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("AgentPhone") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("FullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsLegal") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("LegalName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("NationalId") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Nationalcode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Phone") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("RegisterId") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.HasKey("id"); + + b.ToTable("Representative", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RewardAgg.Reward", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreatedByAccountId") + .HasColumnType("bigint"); + + b.Property("CreatedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("ntext"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("GrantDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LastModifiedByAccountId") + .HasColumnType("bigint"); + + b.Property("LastModifiedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RewardType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Rewards", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallAgg.RollCall", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BreakTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EarlyEntryDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("EarlyExitDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("EmployeeFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("FridayWorkTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("LateEntryDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("LateExitDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("Month") + .HasColumnType("int"); + + b.Property("NightWorkTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("RollCallModifyType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ShiftDate") + .HasColumnType("datetime2"); + + b.Property("ShiftDurationTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("ShiftType") + .IsRequired() + .HasMaxLength(22) + .HasColumnType("nvarchar(22)"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("RollCall", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeAgg.RollCallEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("EmployeeFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("HasChangedName") + .HasColumnType("bit"); + + b.Property("HasUploadedImage") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("RollCallEmployees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeStatusAgg.RollCallEmployeeStatus", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("RollCallEmployeeId") + .HasColumnType("bigint"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("RollCallEmployeeId"); + + b.ToTable("RollCallEmployeesStatus"); + }); + + modelBuilder.Entity("Company.Domain.RollCallPlanAgg.RollCallPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseAmont") + .HasColumnType("float"); + + b.Property("FinalAmont") + .HasColumnType("float"); + + b.Property("IncreasePercentage") + .HasColumnType("float"); + + b.Property("MaxPersonValid") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("RollCallPlans", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallServiceAgg.RollCallService", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CustomizeCheckoutAmount") + .HasColumnType("float"); + + b.Property("CustomizeCheckoutServiceEnd") + .HasColumnType("datetime2"); + + b.Property("CustomizeCheckoutServiceStart") + .HasColumnType("datetime2"); + + b.Property("Duration") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("EndService") + .HasColumnType("datetime2"); + + b.Property("HasCustomizeCheckoutService") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("MaxPersonValid") + .HasColumnType("int"); + + b.Property("ServiceType") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("StartService") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId"); + + b.ToTable("RollCallServices", (string)null); + }); + + modelBuilder.Entity("Company.Domain.SalaryAidAgg.SalaryAid", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CalculationDate") + .HasColumnType("datetime2"); + + b.Property("CalculationMonth") + .HasColumnType("int"); + + b.Property("CalculationYear") + .HasColumnType("int"); + + b.Property("CreatedByAccountId") + .HasColumnType("bigint"); + + b.Property("CreatedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("LastModifiedByAccountId") + .HasColumnType("bigint"); + + b.Property("LastModifiedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SalaryAidDateTime") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("SalaryAids", (string)null); + }); + + modelBuilder.Entity("Company.Domain.SmsResultAgg.SmsResult", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractingPartyName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractingPatyId") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.Property("MessageId") + .HasColumnType("int"); + + b.Property("Mobile") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("Status") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("TypeOfSms") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("SmsResults", (string)null); + }); + + modelBuilder.Entity("Company.Domain.SubtitleAgg.EntitySubtitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EntitySubtitleid") + .HasColumnType("bigint"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("OriginalTitle_Id") + .HasColumnType("bigint"); + + b.Property("Subtitle") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("id"); + + b.HasIndex("EntitySubtitleid"); + + b.HasIndex("OriginalTitle_Id"); + + b.ToTable("TextManager_Subtitle", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TaxJobCategoryAgg.TaxJobCategory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("JobCategoryCode") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("JobCategoryName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.ToTable("TaxJobCategory", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BudgetLawExceptions") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("Country") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CurrencyType") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployeeName") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("EmploymentLocationStatus") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("ExchangeRate") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("InsuranceBranch") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InsuranceName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("JobCategoryCode") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("JobCategoryId") + .HasColumnType("bigint"); + + b.Property("JobTitle") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("PaymentType") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("RetirementDate") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TaxExempt") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("TypeOfEmployment") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("TypeOfInsurance") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId"); + + b.ToTable("TaxLeftWorkCategory", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkItemAgg.TaxLeftWorkItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("LeftWork") + .HasColumnType("datetime2"); + + b.Property("StartWork") + .HasColumnType("datetime2"); + + b.Property("TaxLeftWorkCategoryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("TaxLeftWorkCategoryId"); + + b.ToTable("TaxLeftWorkItem", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.ContractingPartyTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("City") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("FName") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("FatherName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(6) + .HasColumnType("nvarchar(6)"); + + b.Property("IdNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumberSeri") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IdNumberSerial") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("NationalCode") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Phone") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("State") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)"); + + b.HasKey("id"); + + b.ToTable("ContractingPartyTemp", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.InstitutionContractTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractEndGr") + .HasColumnType("datetime2"); + + b.Property("ContractStartGr") + .HasColumnType("datetime2"); + + b.Property("ContractingPartyTempId") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("MessageId") + .HasColumnType("int"); + + b.Property("OfficialCompany") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("PaymentModel") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("PeriodModel") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("RegistrationStatus") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("SendVerifyCodeTime") + .HasColumnType("datetime2"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("ValueAddedTax") + .HasColumnType("float"); + + b.Property("VerifyCode") + .HasMaxLength(6) + .HasColumnType("nvarchar(6)"); + + b.Property("VerifyCodeEndTime") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.ToTable("InstitutionContractTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.WorkshopServicesTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CountPerson") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ServiceName") + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("WorkshopTempId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopTempId"); + + b.ToTable("WorkshopServicesTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.WorkshopTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractingPartyTempId") + .HasColumnType("bigint"); + + b.Property("CountPerson") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopServicesAmount") + .HasColumnType("float"); + + b.HasKey("id"); + + b.ToTable("WorkshopTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TextManagerAgg.EntityTextManager", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Chapter_Id") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateTextManager") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("NoteNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("NumberTextManager") + .HasColumnType("nvarchar(max)"); + + b.Property("OriginalTitle_Id") + .HasColumnType("bigint"); + + b.Property("Paragraph") + .HasColumnType("nvarchar(max)"); + + b.Property("SubjectTextManager") + .HasColumnType("nvarchar(max)"); + + b.Property("Subtitle_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("TextManager_TextManager", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkHistory.WorkHistory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("Petition_Id") + .HasColumnType("bigint"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.Property("WorkingHoursPerDay") + .HasColumnType("int"); + + b.Property("WorkingHoursPerWeek") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("Petition_Id"); + + b.ToTable("WorkHistories", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursAgg.WorkingHours", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("NumberOfFriday") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("NumberOfWorkingDays") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("OverNightWorkH") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OverNightWorkM") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("OverTimeWorkH") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("OverTimeWorkM") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("ShiftWork") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("TotalHoursesH") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("TotalHoursesM") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("WeeklyWorkingTime") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.HasIndex("ContractId"); + + b.ToTable("WorkingHours", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursItemsAgg.WorkingHoursItems", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ComplexEnd") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("ComplexStart") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DayOfWork") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("End1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("End2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("End3") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("RestTime") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start3") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("WeekNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkingHoursId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkingHoursId"); + + b.ToTable("WorkingHoursItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempAgg.WorkingHoursTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("ShiftWork") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("WorkShopAddress2") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("WorkingHoursTemp", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempItemAgg.WorkingHoursTempItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ComplexEnd") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("ComplexStart") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DayOfWork") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("End1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("End2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("RestTime") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("WeekNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkingHoursTempId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkingHoursTempId"); + + b.ToTable("WorkingHoursTempItem", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAccountAgg.WorkshopAccount", b => + { + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.Property("ContractAndCheckout") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Insurance") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsActiveSting") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Tax") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.HasKey("WorkshopId", "AccountId"); + + b.ToTable("WorkshopeAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAgg.Workshop", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AddBonusesPay") + .HasColumnType("bit"); + + b.Property("AddLeavePay") + .HasColumnType("bit"); + + b.Property("AddYearsPay") + .HasColumnType("bit"); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgentName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("AgentPhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("AgreementNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ArchiveCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("BonusesOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("City") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ComputeOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractTerm") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FixedSalary") + .HasColumnType("bit"); + + b.Property("HasRollCallFreeVip") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("InsuranceCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InsuranceJobId") + .HasColumnType("bigint"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsActiveString") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IsClassified") + .HasColumnType("bit"); + + b.Property("IsOldContract") + .HasColumnType("bit"); + + b.Property("Population") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("State") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TotalPaymentHide") + .HasColumnType("bit"); + + b.Property("TypeOfContract") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeOfInsuranceSend") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeOfOwnership") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("WorkshopFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopHolidayWorking") + .HasColumnType("bit"); + + b.Property("WorkshopName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopSureName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("YearsOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ZoneName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("Workshops", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopEmployerAgg.WorkshopEmployer", b => + { + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("EmployerId") + .HasColumnType("bigint"); + + b.HasKey("WorkshopId", "EmployerId"); + + b.HasIndex("EmployerId"); + + b.ToTable("WorkshopeEmployers", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanAgg.WorkshopPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Designer") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DesignerPhone") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ExecutionDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ExecutionDateGr") + .HasColumnType("datetime2"); + + b.Property("IncludingDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IncludingDateGr") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("WorkshopPlan", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanEmployeeAgg.WorkshopPlanEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopPlanId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopPlanId"); + + b.ToTable("WorkshopPlanEmployees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopSubAccountAgg.WorkshopSubAccount", b => + { + b.Property("SubAccountId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("int"); + + b.HasKey("SubAccountId", "WorkshopId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("WorkshopSubAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryAgg.YearlySalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ConnectionId") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.ToTable("YearlySalariess", (string)null); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryItemsAgg.YearlySalaryItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ItemName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ItemValue") + .HasColumnType("float"); + + b.Property("ParentConnectionId") + .HasColumnType("int"); + + b.Property("ValueType") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("YearlySalaryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("YearlySalaryId"); + + b.ToTable("YearlyItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.YearlysSalaryTitleAgg.YearlySalaryTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Title1") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title10") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title2") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title3") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title4") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title5") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title6") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title7") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title8") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title9") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.ToTable("YearlySalaryTitles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ZoneAgg.Zone", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CityId") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ZoneName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("Zones", (string)null); + }); + + modelBuilder.Entity("Company.Domain.empolyerAgg.Employer", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgentPhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("DateOfIssue") + .HasColumnType("datetime2"); + + b.Property("EmployerLName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployerNo") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FatherName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsLegal") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalId") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("Nationalcode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Nationality") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PlaceOfIssue") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RegisterId") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("ContractingPartyId"); + + b.ToTable("Employers", (string)null); + }); + + modelBuilder.Entity("EmployerWorkshop", b => + { + b.Property("EmployersListid") + .HasColumnType("bigint"); + + b.Property("WorkshopsListid") + .HasColumnType("bigint"); + + b.HasKey("EmployersListid", "WorkshopsListid"); + + b.HasIndex("WorkshopsListid"); + + b.ToTable("EmployerWorkshop"); + }); + + modelBuilder.Entity("Company.Domain.Board.Board", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("BoardsList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("BoardsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.ChapterAgg.EntityChapter", b => + { + b.HasOne("Company.Domain.SubtitleAgg.EntitySubtitle", "EntitySubtitle") + .WithMany("Chapters") + .HasForeignKey("Subtitle_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EntitySubtitle"); + }); + + modelBuilder.Entity("Company.Domain.CheckoutAgg.Checkout", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("Checkouts") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.ClientEmployeeWorkshopAgg.ClientEmployeeWorkshop", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("ClientEmployeeWorkshopList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("ClientEmployeeWorkshopList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b => + { + b.HasOne("Company.Domain.RepresentativeAgg.Representative", "Representative") + .WithMany("ContractingParties") + .HasForeignKey("RepresentativeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Representative"); + }); + + modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("Contracts") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.empolyerAgg.Employer", "Employer") + .WithMany("Contracts") + .HasForeignKey("EmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.JobAgg.Job", "Job") + .WithMany("ContractsList") + .HasForeignKey("JobTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.MandatoryHoursAgg.MandatoryHours", null) + .WithMany("Contracts") + .HasForeignKey("MandatoryHoursid"); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("Contracts2") + .HasForeignKey("WorkshopIds") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Company.Domain.YearlySalaryAgg.YearlySalary", "YearlySalary") + .WithMany("Contracts") + .HasForeignKey("YearlySalaryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Employer"); + + b.Navigation("Job"); + + b.Navigation("Workshop"); + + b.Navigation("YearlySalary"); + }); + + modelBuilder.Entity("Company.Domain.ContractingPartyAccountAgg.ContractingPartyAccount", b => + { + b.HasOne("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", "PersonalContractingParty") + .WithMany() + .HasForeignKey("PersonalContractingPartyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PersonalContractingParty"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b => + { + b.HasOne("Company.Domain.CrossJobGuildAgg.CrossJobGuild", "CrossJobGuild") + .WithMany("CrossJobList") + .HasForeignKey("CrossJobGuildId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CrossJobGuild"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobItemsAgg.CrossJobItems", b => + { + b.HasOne("Company.Domain.CrossJobAgg.CrossJob", "CrossJob") + .WithMany("CrossJobItemsList") + .HasForeignKey("CrossJobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.JobAgg.Job", "Job") + .WithMany("CrossJobItemsList") + .HasForeignKey("JobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CrossJob"); + + b.Navigation("Job"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("CustomizeCheckouts") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("CustomizeCheckouts") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckouts_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.HasKey("CustomizeCheckoutid"); + + b1.ToTable("CustomizeCheckouts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutRegularShift", "RegularShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeCheckoutid"); + + b1.ToTable("CustomizeCheckouts_RegularShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutFine", "CheckoutFines", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("FineDateFa") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b1.Property("FineDateGr") + .HasColumnType("datetime2"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutFine"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutLoanInstallments", "CustomizeCheckoutLoanInstallments", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AmountForMonth") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("LoanAmount") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("LoanRemaining") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b1.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutLoanInstallments"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutReward", "CustomizeCheckoutRewards", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Description") + .HasColumnType("ntext"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("GrantDate") + .HasColumnType("datetime2"); + + b1.Property("GrantDateFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutReward"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutSalaryAid", "CustomizeCheckoutSalaryAids", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("CalculationDateTime") + .HasColumnType("datetime2"); + + b1.Property("CalculationDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("SalaryAidDateTime") + .HasColumnType("datetime2"); + + b1.Property("SalaryAidDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutSalaryAid"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.Navigation("CheckoutFines"); + + b.Navigation("CustomizeCheckoutLoanInstallments"); + + b.Navigation("CustomizeCheckoutRewards"); + + b.Navigation("CustomizeCheckoutSalaryAids"); + + b.Navigation("CustomizeRotatingShifts"); + + b.Navigation("Employee"); + + b.Navigation("IrregularShift"); + + b.Navigation("RegularShifts"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany() + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTemps_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.HasKey("CustomizeCheckoutTempid"); + + b1.ToTable("CustomizeCheckoutTemps"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutRegularShift", "RegularShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeCheckoutTempid"); + + b1.ToTable("CustomizeCheckoutTemps_RegularShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempFine", "CheckoutFines", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("FineDateFa") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b1.Property("FineDateGr") + .HasColumnType("datetime2"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempFine"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempLoanInstallments", "CustomizeCheckoutLoanInstallments", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AmountForMonth") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("LoanAmount") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("LoanRemaining") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b1.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempLoanInstallments"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempReward", "CustomizeCheckoutRewards", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Description") + .HasColumnType("ntext"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("GrantDate") + .HasColumnType("datetime2"); + + b1.Property("GrantDateFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempReward"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempSalaryAid", "CustomizeCheckoutSalaryAids", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("CalculationDateTime") + .HasColumnType("datetime2"); + + b1.Property("CalculationDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("SalaryAidDateTime") + .HasColumnType("datetime2"); + + b1.Property("SalaryAidDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempSalaryAid"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.Navigation("CheckoutFines"); + + b.Navigation("CustomizeCheckoutLoanInstallments"); + + b.Navigation("CustomizeCheckoutRewards"); + + b.Navigation("CustomizeCheckoutSalaryAids"); + + b.Navigation("CustomizeRotatingShifts"); + + b.Navigation("Employee"); + + b.Navigation("IrregularShift"); + + b.Navigation("RegularShifts"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings", b => + { + b.HasOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", "CustomizeWorkshopGroupSettings") + .WithMany("CustomizeWorkshopEmployeeSettingsCollection") + .HasForeignKey("CustomizeWorkshopGroupSettingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettingsShift", "CustomizeWorkshopEmployeeSettingsShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("PreviousShiftThreshold") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeWorkshopEmployeeSettingsId"); + + b1.ToTable("CustomizeWorkshopEmployeeSettingsShifts", (string)null); + + b1.WithOwner("CustomizeWorkshopEmployeeSettings") + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + + b1.Navigation("CustomizeWorkshopEmployeeSettings"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("BaseYearsPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_BaseYearsPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BaseYearsPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("BonusesPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_BonusesPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BonusesPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BreakTime", "BreakTime", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("BreakTimeType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("BreakTimeValue") + .HasColumnType("time"); + + b1.Property("HasBreakTimeValue") + .HasColumnType("bit"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid", "Id"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("EarlyExitType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("EarlyExit_EarlyExitType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + { + b2.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("EarlyExitTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopEmployeeSettings_EarlyExitTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + }); + + b1.Navigation("EarlyExitTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("FamilyAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FamilyAllowance_FamilyAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FamilyAllowance_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("FineAbsenceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDeduction_FineAbsenceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FineAbsenceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + { + b2.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDayOfWeekCollection_DayOfWeek"); + + b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopEmployeeSettings_FineAbsenceDayOfWeekCollection"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + }); + + b1.Navigation("FineAbsenceDayOfWeekCollection"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("FridayPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FridayPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("InsuranceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("InsuranceDeduction_InsuranceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("InsuranceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("LateToWorkType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LateToWork_LateToWorkType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LateToWork_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + { + b2.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("LateToWorkTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("LateToWorkTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopEmployeeSettings_LateToWorkTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + }); + + b1.Navigation("LateToWorkTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("LeavePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LeavePay_LeavePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LeavePay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("MarriedAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("MarriedAllowance_MarriedAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("MarriedAllowance_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("NightWorkingType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("NightWorkPay_NightWorkingType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("NightWorkPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("OverTimePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("OverTimePay_OverTimePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("OverTimePay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("ShiftPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftPayType"); + + b1.Property("ShiftType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("ShiftPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.Navigation("BaseYearsPay"); + + b.Navigation("BonusesPay"); + + b.Navigation("BreakTime"); + + b.Navigation("CustomizeRotatingShifts"); + + b.Navigation("CustomizeWorkshopEmployeeSettingsShifts"); + + b.Navigation("CustomizeWorkshopGroupSettings"); + + b.Navigation("EarlyExit"); + + b.Navigation("FamilyAllowance"); + + b.Navigation("FineAbsenceDeduction"); + + b.Navigation("FridayPay"); + + b.Navigation("InsuranceDeduction"); + + b.Navigation("IrregularShift"); + + b.Navigation("LateToWork"); + + b.Navigation("LeavePay"); + + b.Navigation("MarriedAllowance"); + + b.Navigation("NightWorkPay"); + + b.Navigation("OverTimePay"); + + b.Navigation("ShiftPay"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", b => + { + b.HasOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", "CustomizeWorkshopSettings") + .WithMany("CustomizeWorkshopGroupSettingsCollection") + .HasForeignKey("CustomizeWorkshopSettingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettingsShift", "CustomizeWorkshopGroupSettingsShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeWorkshopGroupSettingsId") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeWorkshopGroupSettingsId"); + + b1.ToTable("CustomizeWorkshopGroupSettingsShifts", (string)null); + + b1.WithOwner("CustomizeWorkshopGroupSettings") + .HasForeignKey("CustomizeWorkshopGroupSettingsId"); + + b1.Navigation("CustomizeWorkshopGroupSettings"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("BaseYearsPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_BaseYearsPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BaseYearsPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("BonusesPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_BonusesPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BonusesPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BreakTime", "BreakTime", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("BreakTimeType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("BreakTimeValue") + .HasColumnType("time"); + + b1.Property("HasBreakTimeValue") + .HasColumnType("bit"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid", "Id"); + + b1.ToTable("CustomizeWorkshopGroupSettings_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("EarlyExitType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("EarlyExit_EarlyExitType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + { + b2.Property("CustomizeWorkshopGroupSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("EarlyExitTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopGroupSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopGroupSettings_EarlyExitTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsId"); + }); + + b1.Navigation("EarlyExitTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("FamilyAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FamilyAllowance_FamilyAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FamilyAllowance_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("FineAbsenceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDeduction_FineAbsenceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FineAbsenceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + { + b2.Property("CustomizeWorkshopGroupSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDayOfWeekCollection_DayOfWeek"); + + b2.HasKey("CustomizeWorkshopGroupSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopGroupSettings_FineAbsenceDayOfWeekCollection"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsId"); + }); + + b1.Navigation("FineAbsenceDayOfWeekCollection"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("FridayPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FridayPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("InsuranceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("InsuranceDeduction_InsuranceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("InsuranceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("LateToWorkType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LateToWork_LateToWorkType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LateToWork_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + { + b2.Property("CustomizeWorkshopGroupSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("LateToWorkTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("LateToWorkTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopGroupSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopGroupSettings_LateToWorkTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsId"); + }); + + b1.Navigation("LateToWorkTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("LeavePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LeavePay_LeavePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LeavePay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("MarriedAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("MarriedAllowance_MarriedAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("MarriedAllowance_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("NightWorkingType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("NightWorkPay_NightWorkingType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("NightWorkPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("OverTimePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("OverTimePay_OverTimePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("OverTimePay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("ShiftPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftPayType"); + + b1.Property("ShiftType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("ShiftPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.Navigation("BaseYearsPay"); + + b.Navigation("BonusesPay"); + + b.Navigation("BreakTime"); + + b.Navigation("CustomizeRotatingShifts"); + + b.Navigation("CustomizeWorkshopGroupSettingsShifts"); + + b.Navigation("CustomizeWorkshopSettings"); + + b.Navigation("EarlyExit"); + + b.Navigation("FamilyAllowance"); + + b.Navigation("FineAbsenceDeduction"); + + b.Navigation("FridayPay"); + + b.Navigation("InsuranceDeduction"); + + b.Navigation("IrregularShift"); + + b.Navigation("LateToWork"); + + b.Navigation("LeavePay"); + + b.Navigation("MarriedAllowance"); + + b.Navigation("NightWorkPay"); + + b.Navigation("OverTimePay"); + + b.Navigation("ShiftPay"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithOne("CustomizeWorkshopSettings") + .HasForeignKey("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", "WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettingsShift", "CustomizeWorkshopSettingsShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeWorkshopSettingsId") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeWorkshopSettingsId"); + + b1.ToTable("CustomizeWorkshopSettingsShifts", (string)null); + + b1.WithOwner("CustomizeWorkshopSettings") + .HasForeignKey("CustomizeWorkshopSettingsId"); + + b1.Navigation("CustomizeWorkshopSettings"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("BaseYearsPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_BaseYearsPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BaseYearsPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("BonusesPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_BonusesPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BonusesPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("EarlyExitType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("EarlyExit_EarlyExitType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + { + b2.Property("CustomizeWorkshopSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("EarlyExitTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopSettings_EarlyExitTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsId"); + }); + + b1.Navigation("EarlyExitTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("FamilyAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FamilyAllowance_FamilyAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FamilyAllowance_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("FineAbsenceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDeduction_FineAbsenceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FineAbsenceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + { + b2.Property("CustomizeWorkshopSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDayOfWeekCollection_DayOfWeek"); + + b2.HasKey("CustomizeWorkshopSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopSettings_FineAbsenceDayOfWeekCollection"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsId"); + }); + + b1.Navigation("FineAbsenceDayOfWeekCollection"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("FridayPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FridayPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("InsuranceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("InsuranceDeduction_InsuranceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("InsuranceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("LateToWorkType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LateToWork_LateToWorkType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LateToWork_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + { + b2.Property("CustomizeWorkshopSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("LateToWorkTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("LateToWorkTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopSettings_LateToWorkTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsId"); + }); + + b1.Navigation("LateToWorkTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("LeavePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LeavePay_LeavePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LeavePay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("MarriedAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("MarriedAllowance_MarriedAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("MarriedAllowance_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("NightWorkingType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("NightWorkPay_NightWorkingType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("NightWorkPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("OverTimePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("OverTimePay_OverTimePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("OverTimePay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("ShiftPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftPayType"); + + b1.Property("ShiftType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("ShiftPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.Navigation("BaseYearsPay"); + + b.Navigation("BonusesPay"); + + b.Navigation("CustomizeWorkshopSettingsShifts"); + + b.Navigation("EarlyExit"); + + b.Navigation("FamilyAllowance"); + + b.Navigation("FineAbsenceDeduction"); + + b.Navigation("FridayPay"); + + b.Navigation("InsuranceDeduction"); + + b.Navigation("LateToWork"); + + b.Navigation("LeavePay"); + + b.Navigation("MarriedAllowance"); + + b.Navigation("NightWorkPay"); + + b.Navigation("OverTimePay"); + + b.Navigation("ShiftPay"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryItemAgg.DateSalaryItem", b => + { + b.HasOne("Company.Domain.DateSalaryAgg.DateSalary", "DateSalary") + .WithMany("DateSalaryItemList") + .HasForeignKey("DateSalaryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.PercentageAgg.Percentage", "Percentage") + .WithMany("DateSalaryItemList") + .HasForeignKey("PercentageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DateSalary"); + + b.Navigation("Percentage"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAccountAgg.EmployeeAccount", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeBankInformationAgg.EmployeeBankInformation", b => + { + b.HasOne("Company.Domain.BankAgg.Bank", "Bank") + .WithMany() + .HasForeignKey("BankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeBankInformationList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Bank"); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeChildrenAgg.EmployeeChildren", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeChildrenList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItem", b => + { + b.HasOne("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", "EmployeeDocuments") + .WithMany("EmployeeDocumentItemCollection") + .HasForeignKey("EmployeeDocumentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", "EmployeeDocumentsAdminSelection") + .WithMany("SelectedEmployeeDocumentItems") + .HasForeignKey("EmployeeDocumentsAdminViewId"); + + b.OwnsMany("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItemLog", "ItemLogs", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("AdminMessage") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("EmployeeDocumentItemId") + .HasColumnType("bigint"); + + b1.Property("OperationType") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("OperatorId") + .HasColumnType("bigint"); + + b1.Property("OperatorType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.HasKey("id"); + + b1.HasIndex("EmployeeDocumentItemId"); + + b1.ToTable("EmployeeDocumentItemLogs", (string)null); + + b1.WithOwner("EmployeeDocumentItem") + .HasForeignKey("EmployeeDocumentItemId"); + + b1.Navigation("EmployeeDocumentItem"); + }); + + b.Navigation("EmployeeDocuments"); + + b.Navigation("EmployeeDocumentsAdminSelection"); + + b.Navigation("ItemLogs"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithOne("EmployeeDocumentsAdminSelection") + .HasForeignKey("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", "EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeDocuments") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany() + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeInsuranceRecordAgg.EmployeeInsuranceRecord", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeInsuranceRecords") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("EmployeeInsuranceRecords") + .HasForeignKey("WorkShopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.EmployerAccountAgg.EmployerAccount", b => + { + b.HasOne("Company.Domain.empolyerAgg.Employer", "Employer") + .WithMany() + .HasForeignKey("EmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employer"); + }); + + modelBuilder.Entity("Company.Domain.Evidence.Evidence", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("EvidencesList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("EvidencesList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.EvidenceDetail.EvidenceDetail", b => + { + b.HasOne("Company.Domain.Evidence.Evidence", "Evidence") + .WithMany("EvidenceDetailsList") + .HasForeignKey("Evidence_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Evidence"); + }); + + modelBuilder.Entity("Company.Domain.FileAlert.FileAlert", b => + { + b.HasOne("Company.Domain.FileState.FileState", "FileState") + .WithMany("FileAlertsList") + .HasForeignKey("FileState_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File") + .WithMany("FileAlertsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("FileState"); + }); + + modelBuilder.Entity("Company.Domain.FileAndFileEmployerAgg.FileAndFileEmployer", b => + { + b.HasOne("Company.Domain.FileEmployerAgg.FileEmployer", "FileEmployer") + .WithMany("FileAndFileEmployers") + .HasForeignKey("FileEmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("FileAndFileEmployers") + .HasForeignKey("FileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File1"); + + b.Navigation("FileEmployer"); + }); + + modelBuilder.Entity("Company.Domain.FileEmployeeAgg.FileEmployee", b => + { + b.HasOne("Company.Domain.RepresentativeAgg.Representative", "Representative") + .WithMany("FileEmployeeList") + .HasForeignKey("RepresentativeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Representative"); + }); + + modelBuilder.Entity("Company.Domain.FileEmployerAgg.FileEmployer", b => + { + b.HasOne("Company.Domain.RepresentativeAgg.Representative", "Representative") + .WithMany("FileEmployerList") + .HasForeignKey("RepresentativeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Representative"); + }); + + modelBuilder.Entity("Company.Domain.FileState.FileState", b => + { + b.HasOne("Company.Domain.FileTiming.FileTiming", "FileTiming") + .WithMany("FileStates") + .HasForeignKey("FileTiming_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileTiming"); + }); + + modelBuilder.Entity("Company.Domain.FinancialTransactionAgg.FinancialTransaction", b => + { + b.HasOne("Company.Domain.FinancialStatmentAgg.FinancialStatment", "FinancialStatment") + .WithMany("FinancialTransactionList") + .HasForeignKey("FinancialStatementId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FinancialStatment"); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanAgg.GroupPlan", b => + { + b.HasOne("Company.Domain.WorkshopPlanAgg.WorkshopPlan", "WorkshopPlan") + .WithMany("GroupPlans") + .HasForeignKey("WorkshopPlanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkshopPlan"); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanJobItemAgg.GroupPlanJobItem", b => + { + b.HasOne("Company.Domain.GroupPlanAgg.GroupPlan", "GroupPlan") + .WithMany("GroupPlanJobItems") + .HasForeignKey("GroupPlanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("GroupPlan"); + }); + + modelBuilder.Entity("Company.Domain.HolidayItemAgg.HolidayItem", b => + { + b.HasOne("Company.Domain.HolidayAgg.Holiday", "Holidayss") + .WithMany("HolidayItems") + .HasForeignKey("HolidayId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Holidayss"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractContactInfoAgg.InstitutionContractContactInfo", b => + { + b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContract", "InstitutionContracts") + .WithMany("ContactInfoList") + .HasForeignKey("InstitutionContractId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InstitutionContracts"); + }); + + modelBuilder.Entity("Company.Domain.InsurancWorkshopInfoAgg.InsuranceWorkshopInfo", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithOne("InsuranceWorkshopInfo") + .HasForeignKey("Company.Domain.InsurancWorkshopInfoAgg.InsuranceWorkshopInfo", "WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceAgg.Insurance", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("Insurances") + .HasForeignKey("WorkShopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceEmployeeInfoAgg.InsuranceEmployeeInfo", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithOne("InsuranceEmployeeInfo") + .HasForeignKey("Company.Domain.InsuranceEmployeeInfoAgg.InsuranceEmployeeInfo", "EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobAndJobsAgg.InsuranceJobAndJobs", b => + { + b.HasOne("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", "InsuranceJobItem") + .WithMany("InsuranceJobAndJobs") + .HasForeignKey("InsuranceJobItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.JobAgg.Job", "Jobs") + .WithMany("InsuranceJobAndJobs") + .HasForeignKey("JobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InsuranceJobItem"); + + b.Navigation("Jobs"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", b => + { + b.HasOne("Company.Domain.InsurancJobAgg.InsuranceJob", "InsuranceJob") + .WithMany("InsuranceJobItemList") + .HasForeignKey("InsuranceJobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InsuranceJob"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceWorkshopAgg.InsuranceListWorkshop", b => + { + b.HasOne("Company.Domain.InsuranceListAgg.InsuranceList", "InsuranceList") + .WithMany("InsuranceListWorkshops") + .HasForeignKey("InsurancListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("InsuranceListWorkshops") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InsuranceList"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkAgg.LeftWork", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("LeftWorks") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("LeftWorks") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkInsuranceAgg.LeftWorkInsurance", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("LeftWorkInsurances") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("LeftWorkInsurances") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.LoanAgg.Entities.Loan", b => + { + b.OwnsMany("Company.Domain.LoanAgg.Entities.LoanInstallment", "LoanInstallments", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AmountForMonth") + .HasColumnType("float"); + + b1.Property("InstallmentDate") + .HasColumnType("datetime2"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("LoanId") + .HasColumnType("bigint"); + + b1.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b1.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b1.HasKey("Id"); + + b1.HasIndex("LoanId"); + + b1.ToTable("LoanInstallment"); + + b1.WithOwner() + .HasForeignKey("LoanId"); + }); + + b.Navigation("LoanInstallments"); + }); + + modelBuilder.Entity("Company.Domain.MasterPenaltyTitle.MasterPenaltyTitle", b => + { + b.HasOne("Company.Domain.MasterPetition.MasterPetition", "MasterPetition") + .WithMany("MasterPenaltyTitlesList") + .HasForeignKey("MasterPetition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MasterPetition"); + }); + + modelBuilder.Entity("Company.Domain.MasterPetition.MasterPetition", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("MasterPetitionsList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("MasterPetitionsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.MasterWorkHistory.MasterWorkHistory", b => + { + b.HasOne("Company.Domain.MasterPetition.MasterPetition", "MasterPetition") + .WithMany("MasterWorkHistoriesList") + .HasForeignKey("MasterPetition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MasterPetition"); + }); + + modelBuilder.Entity("Company.Domain.ModuleTextManagerAgg.EntityModuleTextManager", b => + { + b.HasOne("Company.Domain.ModuleAgg.EntityModule", "Module") + .WithMany("EntityModuleTextManagers") + .HasForeignKey("ModuleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.TextManagerAgg.EntityTextManager", "TextManager") + .WithMany("EntityModuleTextManagers") + .HasForeignKey("TextManagerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Module"); + + b.Navigation("TextManager"); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeItemAgg.PaymentToEmployeeItem", b => + { + b.HasOne("Company.Domain.PaymentToEmployeeAgg.PaymentToEmployee", "PaymentToEmployee") + .WithMany("PaymentToEmployeeItemList") + .HasForeignKey("PaymentToEmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentToEmployee"); + }); + + modelBuilder.Entity("Company.Domain.PenaltyTitle.PenaltyTitle", b => + { + b.HasOne("Company.Domain.Petition.Petition", "Petition") + .WithMany("PenaltyTitlesList") + .HasForeignKey("Petition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Petition"); + }); + + modelBuilder.Entity("Company.Domain.PersonnelCodeAgg.PersonnelCodeDomain", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("PersonnelCodeList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("PersonnelCodeList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.Petition.Petition", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("PetitionsList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("PetitionsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.ProceedingSession.ProceedingSession", b => + { + b.HasOne("Company.Domain.Board.Board", "Board") + .WithMany("ProceedingSessionsList") + .HasForeignKey("Board_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Board"); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeStatusAgg.RollCallEmployeeStatus", b => + { + b.HasOne("Company.Domain.RollCallEmployeeAgg.RollCallEmployee", "RollCallEmployee") + .WithMany("EmployeesStatus") + .HasForeignKey("RollCallEmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("RollCallEmployee"); + }); + + modelBuilder.Entity("Company.Domain.RollCallServiceAgg.RollCallService", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("RollCallServicesList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.SubtitleAgg.EntitySubtitle", b => + { + b.HasOne("Company.Domain.SubtitleAgg.EntitySubtitle", null) + .WithMany("Subtitles") + .HasForeignKey("EntitySubtitleid"); + + b.HasOne("Company.Domain.OriginalTitleAgg.EntityOriginalTitle", "EntityOriginalTitle") + .WithMany("Subtitles") + .HasForeignKey("OriginalTitle_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EntityOriginalTitle"); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("TaxLeftWorkCategoryList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkItemAgg.TaxLeftWorkItem", b => + { + b.HasOne("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", "TaxLeftWorkCategory") + .WithMany("TaxLeftWorkItemList") + .HasForeignKey("TaxLeftWorkCategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("TaxLeftWorkCategory"); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.WorkshopServicesTemp", b => + { + b.HasOne("Company.Domain.TemporaryClientRegistrationAgg.WorkshopTemp", "WorkshopTemp") + .WithMany("WorkshopServicesTemps") + .HasForeignKey("WorkshopTempId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkshopTemp"); + }); + + modelBuilder.Entity("Company.Domain.WorkHistory.WorkHistory", b => + { + b.HasOne("Company.Domain.Petition.Petition", "Petition") + .WithMany("WorkHistoriesList") + .HasForeignKey("Petition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Petition"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursAgg.WorkingHours", b => + { + b.HasOne("Company.Domain.ContractAgg.Contract", "Contracts") + .WithMany("WorkingHoursList") + .HasForeignKey("ContractId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Contracts"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursItemsAgg.WorkingHoursItems", b => + { + b.HasOne("Company.Domain.WorkingHoursAgg.WorkingHours", "WorkingHourses") + .WithMany("WorkingHoursItemsList") + .HasForeignKey("WorkingHoursId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkingHourses"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempItemAgg.WorkingHoursTempItem", b => + { + b.HasOne("Company.Domain.WorkingHoursTempAgg.WorkingHoursTemp", "WorkingHoursTemp") + .WithMany("WorkingHoursTempItemList") + .HasForeignKey("WorkingHoursTempId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkingHoursTemp"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAccountAgg.WorkshopAccount", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany() + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopEmployerAgg.WorkshopEmployer", b => + { + b.HasOne("Company.Domain.empolyerAgg.Employer", "Employer") + .WithMany("WorkshopEmployers") + .HasForeignKey("EmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("WorkshopEmployers") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employer"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanEmployeeAgg.WorkshopPlanEmployee", b => + { + b.HasOne("Company.Domain.WorkshopPlanAgg.WorkshopPlan", "WorkshopPlan") + .WithMany("WorkshopPlanEmployees") + .HasForeignKey("WorkshopPlanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkshopPlan"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopSubAccountAgg.WorkshopSubAccount", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("WorkshopSubAccounts") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryItemsAgg.YearlySalaryItem", b => + { + b.HasOne("Company.Domain.YearlySalaryAgg.YearlySalary", "YearlySalary") + .WithMany("YearlySalaryItemsList") + .HasForeignKey("YearlySalaryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("YearlySalary"); + }); + + modelBuilder.Entity("Company.Domain.empolyerAgg.Employer", b => + { + b.HasOne("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", "ContractingParty") + .WithMany("Employers") + .HasForeignKey("ContractingPartyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ContractingParty"); + }); + + modelBuilder.Entity("EmployerWorkshop", b => + { + b.HasOne("Company.Domain.empolyerAgg.Employer", null) + .WithMany() + .HasForeignKey("EmployersListid") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", null) + .WithMany() + .HasForeignKey("WorkshopsListid") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Company.Domain.Board.Board", b => + { + b.Navigation("ProceedingSessionsList"); + }); + + modelBuilder.Entity("Company.Domain.BoardType.BoardType", b => + { + b.Navigation("BoardsList"); + + b.Navigation("EvidencesList"); + + b.Navigation("MasterPetitionsList"); + + b.Navigation("PetitionsList"); + }); + + modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b => + { + b.Navigation("Employers"); + }); + + modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b => + { + b.Navigation("WorkingHoursList"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b => + { + b.Navigation("CrossJobItemsList"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobGuildAgg.CrossJobGuild", b => + { + b.Navigation("CrossJobList"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", b => + { + b.Navigation("CustomizeWorkshopEmployeeSettingsCollection"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", b => + { + b.Navigation("CustomizeWorkshopGroupSettingsCollection"); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryAgg.DateSalary", b => + { + b.Navigation("DateSalaryItemList"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAgg.Employee", b => + { + b.Navigation("ClientEmployeeWorkshopList"); + + b.Navigation("Contracts"); + + b.Navigation("CustomizeCheckouts"); + + b.Navigation("EmployeeBankInformationList"); + + b.Navigation("EmployeeChildrenList"); + + b.Navigation("EmployeeDocuments"); + + b.Navigation("EmployeeDocumentsAdminSelection"); + + b.Navigation("EmployeeInsuranceRecords"); + + b.Navigation("InsuranceEmployeeInfo"); + + b.Navigation("LeftWorkInsurances"); + + b.Navigation("LeftWorks"); + + b.Navigation("PersonnelCodeList"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.Navigation("SelectedEmployeeDocumentItems"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.Navigation("EmployeeDocumentItemCollection"); + }); + + modelBuilder.Entity("Company.Domain.Evidence.Evidence", b => + { + b.Navigation("EvidenceDetailsList"); + }); + + modelBuilder.Entity("Company.Domain.File1.File1", b => + { + b.Navigation("BoardsList"); + + b.Navigation("EvidencesList"); + + b.Navigation("FileAlertsList"); + + b.Navigation("FileAndFileEmployers"); + + b.Navigation("MasterPetitionsList"); + + b.Navigation("PetitionsList"); + }); + + modelBuilder.Entity("Company.Domain.FileEmployerAgg.FileEmployer", b => + { + b.Navigation("FileAndFileEmployers"); + }); + + modelBuilder.Entity("Company.Domain.FileState.FileState", b => + { + b.Navigation("FileAlertsList"); + }); + + modelBuilder.Entity("Company.Domain.FileTiming.FileTiming", b => + { + b.Navigation("FileStates"); + }); + + modelBuilder.Entity("Company.Domain.FinancialStatmentAgg.FinancialStatment", b => + { + b.Navigation("FinancialTransactionList"); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanAgg.GroupPlan", b => + { + b.Navigation("GroupPlanJobItems"); + }); + + modelBuilder.Entity("Company.Domain.HolidayAgg.Holiday", b => + { + b.Navigation("HolidayItems"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContract", b => + { + b.Navigation("ContactInfoList"); + }); + + modelBuilder.Entity("Company.Domain.InsurancJobAgg.InsuranceJob", b => + { + b.Navigation("InsuranceJobItemList"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", b => + { + b.Navigation("InsuranceJobAndJobs"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceListAgg.InsuranceList", b => + { + b.Navigation("InsuranceListWorkshops"); + }); + + modelBuilder.Entity("Company.Domain.JobAgg.Job", b => + { + b.Navigation("ContractsList"); + + b.Navigation("CrossJobItemsList"); + + b.Navigation("InsuranceJobAndJobs"); + }); + + modelBuilder.Entity("Company.Domain.MandatoryHoursAgg.MandatoryHours", b => + { + b.Navigation("Contracts"); + }); + + modelBuilder.Entity("Company.Domain.MasterPetition.MasterPetition", b => + { + b.Navigation("MasterPenaltyTitlesList"); + + b.Navigation("MasterWorkHistoriesList"); + }); + + modelBuilder.Entity("Company.Domain.ModuleAgg.EntityModule", b => + { + b.Navigation("EntityModuleTextManagers"); + }); + + modelBuilder.Entity("Company.Domain.OriginalTitleAgg.EntityOriginalTitle", b => + { + b.Navigation("Subtitles"); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeAgg.PaymentToEmployee", b => + { + b.Navigation("PaymentToEmployeeItemList"); + }); + + modelBuilder.Entity("Company.Domain.PercentageAgg.Percentage", b => + { + b.Navigation("DateSalaryItemList"); + }); + + modelBuilder.Entity("Company.Domain.Petition.Petition", b => + { + b.Navigation("PenaltyTitlesList"); + + b.Navigation("WorkHistoriesList"); + }); + + modelBuilder.Entity("Company.Domain.RepresentativeAgg.Representative", b => + { + b.Navigation("ContractingParties"); + + b.Navigation("FileEmployeeList"); + + b.Navigation("FileEmployerList"); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeAgg.RollCallEmployee", b => + { + b.Navigation("EmployeesStatus"); + }); + + modelBuilder.Entity("Company.Domain.SubtitleAgg.EntitySubtitle", b => + { + b.Navigation("Chapters"); + + b.Navigation("Subtitles"); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", b => + { + b.Navigation("TaxLeftWorkItemList"); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.WorkshopTemp", b => + { + b.Navigation("WorkshopServicesTemps"); + }); + + modelBuilder.Entity("Company.Domain.TextManagerAgg.EntityTextManager", b => + { + b.Navigation("EntityModuleTextManagers"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursAgg.WorkingHours", b => + { + b.Navigation("WorkingHoursItemsList"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempAgg.WorkingHoursTemp", b => + { + b.Navigation("WorkingHoursTempItemList"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAgg.Workshop", b => + { + b.Navigation("Checkouts"); + + b.Navigation("ClientEmployeeWorkshopList"); + + b.Navigation("Contracts2"); + + b.Navigation("CustomizeCheckouts"); + + b.Navigation("CustomizeWorkshopSettings"); + + b.Navigation("EmployeeInsuranceRecords"); + + b.Navigation("InsuranceListWorkshops"); + + b.Navigation("InsuranceWorkshopInfo"); + + b.Navigation("Insurances"); + + b.Navigation("LeftWorkInsurances"); + + b.Navigation("LeftWorks"); + + b.Navigation("PersonnelCodeList"); + + b.Navigation("RollCallServicesList"); + + b.Navigation("TaxLeftWorkCategoryList"); + + b.Navigation("WorkshopEmployers"); + + b.Navigation("WorkshopSubAccounts"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanAgg.WorkshopPlan", b => + { + b.Navigation("GroupPlans"); + + b.Navigation("WorkshopPlanEmployees"); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryAgg.YearlySalary", b => + { + b.Navigation("Contracts"); + + b.Navigation("YearlySalaryItemsList"); + }); + + modelBuilder.Entity("Company.Domain.empolyerAgg.Employer", b => + { + b.Navigation("Contracts"); + + b.Navigation("WorkshopEmployers"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/CompanyManagment.EFCore/Migrations/20250508101244_add calculation date to salary aid and add entity id to customize checkout value objects.cs b/CompanyManagment.EFCore/Migrations/20250508101244_add calculation date to salary aid and add entity id to customize checkout value objects.cs new file mode 100644 index 00000000..9e29cfc8 --- /dev/null +++ b/CompanyManagment.EFCore/Migrations/20250508101244_add calculation date to salary aid and add entity id to customize checkout value objects.cs @@ -0,0 +1,184 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace CompanyManagment.EFCore.Migrations +{ + /// + public partial class addcalculationdatetosalaryaidandaddentityidtocustomizecheckoutvalueobjects : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "CalculationDate", + table: "SalaryAids", + type: "datetime2", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + + migrationBuilder.AddColumn( + name: "CalculationMonth", + table: "SalaryAids", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "CalculationYear", + table: "SalaryAids", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "CalculationDateTime", + table: "CustomizeCheckoutTempSalaryAid", + type: "datetime2", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + + migrationBuilder.AddColumn( + name: "CalculationDateTimeFa", + table: "CustomizeCheckoutTempSalaryAid", + type: "nvarchar(15)", + maxLength: 15, + nullable: true); + + migrationBuilder.AddColumn( + name: "EntityId", + table: "CustomizeCheckoutTempSalaryAid", + type: "bigint", + nullable: false, + defaultValue: 0L); + + migrationBuilder.AddColumn( + name: "EntityId", + table: "CustomizeCheckoutTempReward", + type: "bigint", + nullable: false, + defaultValue: 0L); + + migrationBuilder.AddColumn( + name: "EntityId", + table: "CustomizeCheckoutTempLoanInstallments", + type: "bigint", + nullable: false, + defaultValue: 0L); + + migrationBuilder.AddColumn( + name: "EntityId", + table: "CustomizeCheckoutTempFine", + type: "bigint", + nullable: false, + defaultValue: 0L); + + migrationBuilder.AddColumn( + name: "CalculationDateTime", + table: "CustomizeCheckoutSalaryAid", + type: "datetime2", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + + migrationBuilder.AddColumn( + name: "CalculationDateTimeFa", + table: "CustomizeCheckoutSalaryAid", + type: "nvarchar(15)", + maxLength: 15, + nullable: true); + + migrationBuilder.AddColumn( + name: "EntityId", + table: "CustomizeCheckoutSalaryAid", + type: "bigint", + nullable: false, + defaultValue: 0L); + + migrationBuilder.AddColumn( + name: "EntityId", + table: "CustomizeCheckoutReward", + type: "bigint", + nullable: false, + defaultValue: 0L); + + migrationBuilder.AddColumn( + name: "EntityId", + table: "CustomizeCheckoutLoanInstallments", + type: "bigint", + nullable: false, + defaultValue: 0L); + + migrationBuilder.AddColumn( + name: "EntityId", + table: "CustomizeCheckoutFine", + type: "bigint", + nullable: false, + defaultValue: 0L); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "CalculationDate", + table: "SalaryAids"); + + migrationBuilder.DropColumn( + name: "CalculationMonth", + table: "SalaryAids"); + + migrationBuilder.DropColumn( + name: "CalculationYear", + table: "SalaryAids"); + + migrationBuilder.DropColumn( + name: "CalculationDateTime", + table: "CustomizeCheckoutTempSalaryAid"); + + migrationBuilder.DropColumn( + name: "CalculationDateTimeFa", + table: "CustomizeCheckoutTempSalaryAid"); + + migrationBuilder.DropColumn( + name: "EntityId", + table: "CustomizeCheckoutTempSalaryAid"); + + migrationBuilder.DropColumn( + name: "EntityId", + table: "CustomizeCheckoutTempReward"); + + migrationBuilder.DropColumn( + name: "EntityId", + table: "CustomizeCheckoutTempLoanInstallments"); + + migrationBuilder.DropColumn( + name: "EntityId", + table: "CustomizeCheckoutTempFine"); + + migrationBuilder.DropColumn( + name: "CalculationDateTime", + table: "CustomizeCheckoutSalaryAid"); + + migrationBuilder.DropColumn( + name: "CalculationDateTimeFa", + table: "CustomizeCheckoutSalaryAid"); + + migrationBuilder.DropColumn( + name: "EntityId", + table: "CustomizeCheckoutSalaryAid"); + + migrationBuilder.DropColumn( + name: "EntityId", + table: "CustomizeCheckoutReward"); + + migrationBuilder.DropColumn( + name: "EntityId", + table: "CustomizeCheckoutLoanInstallments"); + + migrationBuilder.DropColumn( + name: "EntityId", + table: "CustomizeCheckoutFine"); + } + } +} diff --git a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs index 4197b0c1..9abe64d1 100644 --- a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs +++ b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs @@ -4720,6 +4720,15 @@ namespace CompanyManagment.EFCore.Migrations b.Property("Amount") .HasColumnType("float"); + b.Property("CalculationDate") + .HasColumnType("datetime2"); + + b.Property("CalculationMonth") + .HasColumnType("int"); + + b.Property("CalculationYear") + .HasColumnType("int"); + b.Property("CreatedByAccountId") .HasColumnType("bigint"); @@ -6289,6 +6298,9 @@ namespace CompanyManagment.EFCore.Migrations b1.Property("CreationDate") .HasColumnType("datetime2"); + b1.Property("EntityId") + .HasColumnType("bigint"); + b1.Property("FineDateFa") .HasMaxLength(12) .HasColumnType("nvarchar(12)"); @@ -6328,6 +6340,9 @@ namespace CompanyManagment.EFCore.Migrations .HasMaxLength(25) .HasColumnType("nvarchar(25)"); + b1.Property("EntityId") + .HasColumnType("bigint"); + b1.Property("IsActive") .IsRequired() .HasMaxLength(5) @@ -6375,6 +6390,9 @@ namespace CompanyManagment.EFCore.Migrations b1.Property("Description") .HasColumnType("ntext"); + b1.Property("EntityId") + .HasColumnType("bigint"); + b1.Property("GrantDate") .HasColumnType("datetime2"); @@ -6414,6 +6432,16 @@ namespace CompanyManagment.EFCore.Migrations .HasMaxLength(25) .HasColumnType("nvarchar(25)"); + b1.Property("CalculationDateTime") + .HasColumnType("datetime2"); + + b1.Property("CalculationDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + b1.Property("SalaryAidDateTime") .HasColumnType("datetime2"); @@ -6564,6 +6592,9 @@ namespace CompanyManagment.EFCore.Migrations b1.Property("CreationDate") .HasColumnType("datetime2"); + b1.Property("EntityId") + .HasColumnType("bigint"); + b1.Property("FineDateFa") .HasMaxLength(12) .HasColumnType("nvarchar(12)"); @@ -6603,6 +6634,9 @@ namespace CompanyManagment.EFCore.Migrations .HasMaxLength(25) .HasColumnType("nvarchar(25)"); + b1.Property("EntityId") + .HasColumnType("bigint"); + b1.Property("IsActive") .IsRequired() .HasMaxLength(5) @@ -6650,6 +6684,9 @@ namespace CompanyManagment.EFCore.Migrations b1.Property("Description") .HasColumnType("ntext"); + b1.Property("EntityId") + .HasColumnType("bigint"); + b1.Property("GrantDate") .HasColumnType("datetime2"); @@ -6689,6 +6726,16 @@ namespace CompanyManagment.EFCore.Migrations .HasMaxLength(25) .HasColumnType("nvarchar(25)"); + b1.Property("CalculationDateTime") + .HasColumnType("datetime2"); + + b1.Property("CalculationDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + b1.Property("SalaryAidDateTime") .HasColumnType("datetime2"); diff --git a/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs index 4f585986..d126c5b8 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs @@ -17,17 +17,15 @@ using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; +using System.Threading.Tasks; using _0_Framework.Domain.CustomizeCheckoutShared.Base; -using Company.Domain.CustomizeCheckoutAgg.ValueObjects; +using AccountMangement.Infrastructure.EFCore; using CompanyManagment.App.Contracts.EmployeeDocuments; using CompanyManagment.App.Contracts.Fine; using CompanyManagment.App.Contracts.Loan; using CompanyManagment.App.Contracts.Reward; using CompanyManagment.App.Contracts.SalaryAid; -using AccountMangement.Infrastructure.EFCore; -using CompanyManagment.App.Contracts.EmployeeDocuments; using Microsoft.AspNetCore.Hosting; -using System.IO; namespace CompanyManagment.EFCore.Repository { @@ -37,7 +35,8 @@ namespace CompanyManagment.EFCore.Repository private readonly IRollCallRepository _rollCallRepository; private readonly AccountContext _accountContext; private readonly IWebHostEnvironment _webHostEnvironment; - public CustomizeCheckoutRepository(CompanyContext context, IRollCallRepository rollCallRepository, AccountContext accountContext, IWebHostEnvironment webHostEnvironment) : base(context) + + public CustomizeCheckoutRepository(CompanyContext context, IRollCallRepository rollCallRepository, AccountContext accountContext, IWebHostEnvironment webHostEnvironment) : base(context) { _companyContext = context; _rollCallRepository = rollCallRepository; @@ -77,152 +76,152 @@ namespace CompanyManagment.EFCore.Repository }).ToList(); } - public List PrintAll(long workshopId, IEnumerable customizeCheckoutIds) - { + public List PrintAll(long workshopId, IEnumerable customizeCheckoutIds) + { - //var pc = new PersianCalendar(); - //var year = pc.GetYear(monthStart); - //var month = pc.GetMonth(monthStart); + //var pc = new PersianCalendar(); + //var year = pc.GetYear(monthStart); + //var month = pc.GetMonth(monthStart); - IQueryable customizeCheckoutsQuery = _companyContext.CustomizeCheckouts.AsSplitQuery() - .Where(x => customizeCheckoutIds.Contains(x.id)).Include(x => x.CheckoutFines); + IQueryable customizeCheckoutsQuery = _companyContext.CustomizeCheckouts.AsSplitQuery() + .Where(x => customizeCheckoutIds.Contains(x.id)).Include(x => x.CheckoutFines); - IQueryable workshopsQuery = _companyContext.Workshops.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.id)); + IQueryable workshopsQuery = _companyContext.Workshops.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.id)); - IQueryable workshopEmployersIdsQuery = _companyContext.WorkshopEmployers.Where(x => x.WorkshopId == workshopId).Select(x => x.EmployerId); - IQueryable employersQuery = _companyContext.Employers.Where(x => workshopEmployersIdsQuery.Contains(x.id)); + IQueryable workshopEmployersIdsQuery = _companyContext.WorkshopEmployers.Where(x => x.WorkshopId == workshopId).Select(x => x.EmployerId); + IQueryable employersQuery = _companyContext.Employers.Where(x => workshopEmployersIdsQuery.Contains(x.id)); - IQueryable personnelCodesQuery = _companyContext.PersonnelCodeSet - .Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId)); + IQueryable personnelCodesQuery = _companyContext.PersonnelCodeSet + .Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId)); - //IQueryable leftWorksQuery = _companyContext.LeftWorkList - // .Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) && - // x.LeftWorkDate.AddDays(-1) >= monthStart && x.StartWorkDate <= monthEnd); + //IQueryable leftWorksQuery = _companyContext.LeftWorkList + // .Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) && + // x.LeftWorkDate.AddDays(-1) >= monthStart && x.StartWorkDate <= monthEnd); - //IQueryable employeesQuery = _companyContext.Employees.Where(x => customizeCheckoutsQuery.Any(y => y.EmployeeId == x.id)); + //IQueryable employeesQuery = _companyContext.Employees.Where(x => customizeCheckoutsQuery.Any(y => y.EmployeeId == x.id)); - var loans = _companyContext.Loans.AsSplitQuery().Where(x => x.WorkshopId == workshopId).ToList(); + var loans = _companyContext.Loans.AsSplitQuery().Where(x => x.WorkshopId == workshopId).ToList(); - List<(string Picture, long Id)> employeePictures; + List<(string Picture, long Id)> employeePictures; - var employeePicMediaIdInEmployeeDoc = _companyContext.EmployeeDocumentItems.Where(x => customizeCheckoutsQuery - .Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) && - x.DocumentLabel == DocumentItemLabel.EmployeePicture && - x.DocumentStatus == DocumentStatus.Confirmed) - ?.Select(x => new { x.EmployeeId, x.MediaId }).ToList(); + var employeePicMediaIdInEmployeeDoc = _companyContext.EmployeeDocumentItems.Where(x => customizeCheckoutsQuery + .Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) && + x.DocumentLabel == DocumentItemLabel.EmployeePicture && + x.DocumentStatus == DocumentStatus.Confirmed) + ?.Select(x => new { x.EmployeeId, x.MediaId }).ToList(); - var mediasInEmployeeDoc = _accountContext.Medias.Where(x => employeePicMediaIdInEmployeeDoc.Select(y => y.MediaId).Contains(x.id)).ToList(); - employeePictures = employeePicMediaIdInEmployeeDoc.Select(x => - { - var media = mediasInEmployeeDoc.First(m => m.id == x.MediaId); - var filePath = media.Path; - if (!System.IO.File.Exists(filePath)) - throw new FileNotFoundException("فایل مورد نظر یافت نشد.", filePath); + var mediasInEmployeeDoc = _accountContext.Medias.Where(x => employeePicMediaIdInEmployeeDoc.Select(y => y.MediaId).Contains(x.id)).ToList(); + employeePictures = employeePicMediaIdInEmployeeDoc.Select(x => + { + var media = mediasInEmployeeDoc.First(m => m.id == x.MediaId); + var filePath = media.Path; + if (!System.IO.File.Exists(filePath)) + throw new FileNotFoundException("فایل مورد نظر یافت نشد.", filePath); - byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); - var base64 = Convert.ToBase64String(fileBytes); + byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); + var base64 = Convert.ToBase64String(fileBytes); - return (base64, x.EmployeeId); - }).ToList(); + return (base64, x.EmployeeId); + }).ToList(); - var employeeIds = customizeCheckoutsQuery.Select(x => x.EmployeeId).ToList() - .Where(x => !employeePictures.Select(e => e.Id).Contains(x)).ToList(); + var employeeIds = customizeCheckoutsQuery.Select(x => x.EmployeeId).ToList() + .Where(x => !employeePictures.Select(e => e.Id).Contains(x)).ToList(); - foreach (var employeeId in employeeIds) - { - var directoryPath = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}\\1.jpg"; + foreach (var employeeId in employeeIds) + { + var directoryPath = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}\\1.jpg"; - if (!System.IO.File.Exists(directoryPath)) - continue; + if (!System.IO.File.Exists(directoryPath)) + continue; - byte[] fileBytes = System.IO.File.ReadAllBytes(directoryPath); - var base64 = Convert.ToBase64String(fileBytes); + byte[] fileBytes = System.IO.File.ReadAllBytes(directoryPath); + var base64 = Convert.ToBase64String(fileBytes); - employeePictures.Add((base64, employeeId)); - } + employeePictures.Add((base64, employeeId)); + } - List customizeCheckoutsList = customizeCheckoutsQuery.Select(x => new CustomizeCheckoutViewModel - { - Id = x.id, - WorkshopId = x.WorkshopId, - ContractId = x.ContractId == null ? 0 : x.ContractId.Value, - EmployeeId = x.EmployeeId, - Month = x.Month, - Year = x.Year, - ContractNo = x.ContractNo, - MonthlySalary = x.MonthlySalary.ToMoney(), - BaseYearsPay = x.BaseYearsPay.ToMoney(), - OvertimePay = x.OverTimePay.ToMoney(), - NightworkPay = x.NightWorkPay.ToMoney(), - FridayPay = x.FridayPay.ToMoney(), - ShiftPay = x.ShiftPay.ToMoney(), - FamilyAllowance = x.FamilyAllowance.ToMoney(), - BonusesPay = x.BonusesPay.ToMoney(), - LeavePay = x.LeavePay.ToMoney(), - InsuranceDeduction = x.InsuranceDeduction.ToMoney(), - TaxDeducation = x.TaxDeduction.ToMoney(), - InstallmentDeduction = x.InstallmentDeduction.ToMoney(), - SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(), - AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(), - TotalClaims = x.TotalClaims, - TotalDeductions = x.TotalDeductions, - TotalPayment = x.TotalPayment.ToMoney(), - RewardPay = x.RewardPay.ToMoney(), - ContractStartGr = x.ContractStart, - ContractEndGr = x.ContractEnd, - MarriedAllowance = x.MarriedAllowance.ToMoney(), - ContractEndFa = x.ContractEnd.ToFarsi(), - ContractStartFa = x.ContractStart.ToFarsi(), - CreationDate = x.CreationDate, - SumOfWorkingDays = x.SumOfWorkingDays, - WorkshopName = x.WorkshopFullName, - DateOfBirth = x.DateOfBirth.ToFarsi(), - NationalCode = x.NationalCode, - EmployeeFName = x.EmployeeFName, - EmployeeLName = x.EmployeeLName, - EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(), - LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), - FineDeduction = x.FineDeduction.ToMoney(), - FineViewModelList = x.CheckoutFines.Select(y => new FineViewModel() - { - Amount = y.Amount, - FineDate = y.FineDateFa, - Title = y.Title - }).ToList(), - InstallmentViewModels = x.CustomizeCheckoutLoanInstallments.Select(i => new LoanInstallmentViewModel() - { - Amount = i.AmountForMonth, - AmountDouble = i.AmountForMonth.MoneyToDouble(), - Year = i.Year, - Month = i.Month, - IsActive = i.IsActive, - RemainingAmount = i.LoanRemaining, - LoanAmount = i.LoanAmount - }).ToList(), - RewardViewModels = x.CustomizeCheckoutRewards.Select(r => new RewardViewModel() - { - IsActive = r.IsActive, - Title = r.Title, - Amount = r.Amount, - AmountDouble = r.Amount.MoneyToDouble(), - Description = r.Description, - GrantDateFa = r.GrantDateFa, - GrantDateGr = r.GrantDate - }).ToList(), - SalaryAidViewModels = x.CustomizeCheckoutSalaryAids.Select(s => new SalaryAidViewModel() - { - Amount = s.Amount, - AmountDouble = s.Amount.MoneyToDouble(), - SalaryAidDateTimeFa = s.SalaryAidDateTimeFa, - SalaryAidDateTimeGe = s.SalaryAidDateTime - }).ToList(), + List customizeCheckoutsList = customizeCheckoutsQuery.Select(x => new CustomizeCheckoutViewModel + { + Id = x.id, + WorkshopId = x.WorkshopId, + ContractId = x.ContractId == null ? 0 : x.ContractId.Value, + EmployeeId = x.EmployeeId, + Month = x.Month, + Year = x.Year, + ContractNo = x.ContractNo, + MonthlySalary = x.MonthlySalary.ToMoney(), + BaseYearsPay = x.BaseYearsPay.ToMoney(), + OvertimePay = x.OverTimePay.ToMoney(), + NightworkPay = x.NightWorkPay.ToMoney(), + FridayPay = x.FridayPay.ToMoney(), + ShiftPay = x.ShiftPay.ToMoney(), + FamilyAllowance = x.FamilyAllowance.ToMoney(), + BonusesPay = x.BonusesPay.ToMoney(), + LeavePay = x.LeavePay.ToMoney(), + InsuranceDeduction = x.InsuranceDeduction.ToMoney(), + TaxDeducation = x.TaxDeduction.ToMoney(), + InstallmentDeduction = x.InstallmentDeduction.ToMoney(), + SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(), + AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(), + TotalClaims = x.TotalClaims, + TotalDeductions = x.TotalDeductions, + TotalPayment = x.TotalPayment.ToMoney(), + RewardPay = x.RewardPay.ToMoney(), + ContractStartGr = x.ContractStart, + ContractEndGr = x.ContractEnd, + MarriedAllowance = x.MarriedAllowance.ToMoney(), + ContractEndFa = x.ContractEnd.ToFarsi(), + ContractStartFa = x.ContractStart.ToFarsi(), + CreationDate = x.CreationDate, + SumOfWorkingDays = x.SumOfWorkingDays, + WorkshopName = x.WorkshopFullName, + DateOfBirth = x.DateOfBirth.ToFarsi(), + NationalCode = x.NationalCode, + EmployeeFName = x.EmployeeFName, + EmployeeLName = x.EmployeeLName, + EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(), + LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), + FineDeduction = x.FineDeduction.ToMoney(), + FineViewModelList = x.CheckoutFines.Select(y => new FineViewModel() + { + Amount = y.Amount, + FineDate = y.FineDateFa, + Title = y.Title + }).ToList(), + InstallmentViewModels = x.CustomizeCheckoutLoanInstallments.Select(i => new LoanInstallmentViewModel() + { + Amount = i.AmountForMonth, + AmountDouble = i.AmountForMonth.MoneyToDouble(), + Year = i.Year, + Month = i.Month, + IsActive = i.IsActive, + RemainingAmount = i.LoanRemaining, + LoanAmount = i.LoanAmount + }).ToList(), + RewardViewModels = x.CustomizeCheckoutRewards.Select(r => new RewardViewModel() + { + IsActive = r.IsActive, + Title = r.Title, + Amount = r.Amount, + AmountDouble = r.Amount.MoneyToDouble(), + Description = r.Description, + GrantDateFa = r.GrantDateFa, + GrantDateGr = r.GrantDate + }).ToList(), + SalaryAidViewModels = x.CustomizeCheckoutSalaryAids.Select(s => new SalaryAidViewModel() + { + Amount = s.Amount, + AmountDouble = s.Amount.MoneyToDouble(), + SalaryAidDateTimeFa = s.SalaryAidDateTimeFa, + SalaryAidDateTimeGe = s.SalaryAidDateTime + }).ToList(), LateToWorkValue = x.LateToWorkValue == TimeSpan.Zero ? "-" : $"{(int)x.LateToWorkValue.TotalHours}:{Convert.ToInt32(x.LateToWorkValue.TotalMinutes % 60):00}", @@ -231,7 +230,7 @@ namespace CompanyManagment.EFCore.Repository ShiftStatus = x.ShiftStatus, IrregularShift = x.IrregularShift, CustomizeRotatingShifts = x.CustomizeRotatingShifts.ToList(), - RegularShift = x.RegularShifts.Select(s=> (CustomizeSifts)s).ToList() + RegularShift = x.RegularShifts.Select(s => (CustomizeSifts)s).ToList() }).ToList(); List workshopsList = workshopsQuery.Select(x => new WorkshopViewModel @@ -268,45 +267,44 @@ namespace CompanyManagment.EFCore.Repository PersonnelCode = Convert.ToInt64(x.PersonnelCode) }).ToList(); - var date = customizeCheckoutsList.FirstOrDefault(); + var date = customizeCheckoutsList.FirstOrDefault(); - if (date == null) - return new(); + if (date == null) + return new(); - var startDate = date.ContractStartGr.AddMonthsFa(0, out _).ToGeorgianDateTime().Date; - var endDate = startDate.AddMonthsFa(1, out _).ToGeorgianDateTime().Date.AddTicks(-1); + var startDate = date.ContractStartGr.AddMonthsFa(0, out _).ToGeorgianDateTime().Date; + var endDate = startDate.AddMonthsFa(1, out _).ToGeorgianDateTime().Date.AddTicks(-1); - List personnelRollCalls = _rollCallRepository - .GetEmployeeRollCallsForMonth(customizeCheckoutsList.Select(x => x.EmployeeId), workshopId, startDate, endDate); + List personnelRollCalls = _rollCallRepository + .GetEmployeeRollCallsForMonth(customizeCheckoutsList.Select(x => x.EmployeeId), workshopId, startDate, endDate); - int counter = 1; + int counter = 1; - foreach (var checkout in customizeCheckoutsList) - { - checkout.EmployeePicture = - employeePictures.FirstOrDefault(p => p.Id == checkout.EmployeeId).Picture ?? ""; + foreach (var checkout in customizeCheckoutsList) + { + checkout.EmployeePicture = + employeePictures.FirstOrDefault(p => p.Id == checkout.EmployeeId).Picture ?? ""; - checkout.PrintCounter = counter++; + checkout.PrintCounter = counter++; - //var leftwork = leftWorksList.FirstOrDefault(x => checkout.WorkshopId == x.WorkshopId && x.EmployeeId == checkout.EmployeeId); - //checkout.LeftWorkDateGr = leftwork.LeftWorkDateGr; + //var leftwork = leftWorksList.FirstOrDefault(x => checkout.WorkshopId == x.WorkshopId && x.EmployeeId == checkout.EmployeeId); + //checkout.LeftWorkDateGr = leftwork.LeftWorkDateGr; - //var employee = employees.FirstOrDefault(x => x.Id == checkout.EmployeeId); + //var employee = employees.FirstOrDefault(x => x.Id == checkout.EmployeeId); - checkout.EmployerList = workshopEmployersList; - checkout.EmployerName = workshopEmployersList.FirstOrDefault()?.FullName ?? "-"; + checkout.EmployerList = workshopEmployersList; + checkout.EmployerName = workshopEmployersList.FirstOrDefault()?.FullName ?? "-"; - checkout.MonthlyRollCall = personnelRollCalls.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId); - checkout.PersonnelCode = personnelCodeList.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId)?.PersonnelCode ?? 0; + checkout.MonthlyRollCall = personnelRollCalls.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId); + checkout.PersonnelCode = personnelCodeList.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId)?.PersonnelCode ?? 0; - } - return customizeCheckoutsList.OrderBy(x => x.EmployeeFullName).ToList(); + } + return customizeCheckoutsList.OrderBy(x => x.EmployeeFullName).ToList(); - } + } - public void RemoveEmployeeCustomizeCheckoutInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth) { var checkout = _companyContext.CustomizeCheckouts.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId && @@ -315,143 +313,185 @@ namespace CompanyManagment.EFCore.Repository _companyContext.CustomizeCheckouts.Remove(checkout); } - public IEnumerable GetRange(long workshopId,List ids) + public IEnumerable GetRange(long workshopId, List ids) { - return _companyContext.CustomizeCheckouts.Where(x => x.WorkshopId==workshopId && ids.Contains(x.id)).AsEnumerable(); + return _companyContext.CustomizeCheckouts.Where(x => x.WorkshopId == workshopId && ids.Contains(x.id)).AsEnumerable(); } - #endregion + public List GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime startDate, + DateTime endDate) + { + var checkouts = _companyContext.CustomizeCheckouts.Where(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId && + x.ContractStart <= endDate && x.ContractEnd >= startDate).ToList(); + return checkouts; + } - public IEnumerable Search(SearchCustomizeCheckout searchModel) - { - OperationResult op = new(); - var query = _companyContext.CustomizeCheckouts.Include(x => x.Employee) - .ThenInclude(x => x.PersonnelCodeList). - Include(x => x.Employee).ThenInclude(x => x.EmployeeBankInformationList) - .AsSplitQuery().Where(x => x.WorkshopId == searchModel.WorkshopId); - #region parameters initialize + public async Task GetByWorkshopIdEmployeeIdMonthYear(long workshopId, long employeeId, + int year, int month) + { + return await _companyContext.CustomizeCheckouts.FirstOrDefaultAsync(x => + x.WorkshopId == workshopId && x.EmployeeId == employeeId && x.MonthInt == month && x.YearInt == year); + } - ////start of search is the first day of the current month by default and end of search is today - //var startSearchDate = DateTime.Now.FindFirstDayOfMonth().ToGeorgianDateTime().Date; - //var endSearchDate = DateTime.Today; - - var pc = new PersianCalendar(); - var currentYear = pc.GetYear(DateTime.Now); - var currentMonth = pc.GetMonth(DateTime.Now); - - if (!string.IsNullOrWhiteSpace(searchModel.SearchStartFa) && !string.IsNullOrWhiteSpace(searchModel.SearchEndFa) && - searchModel.Year == 0 && searchModel.Month == 0) - { - var queryStartDate = searchModel.SearchStartFa.ToGeorgianDateTime().Date; - var queryEndDate = searchModel.SearchEndFa.ToGeorgianDateTime().Date; - - //if (queryEndDate > queryStartDate && queryEndDate <= DateTime.Today) - //{ - // startSearchDate = queryStartDate; - // endSearchDate = queryEndDate; - //} - //query = query.Where(x => x.ContractEnd.Date >= startSearchDate && x.ContractStart.Date <= endSearchDate); - query = query.Where(x => x.ContractEnd.Date >= queryStartDate && x.ContractStart.Date <= queryEndDate); - } + public (bool Checkout, bool CustomizeCheckout, bool CustomizeCheckoutTemp) ValidateExistsCheckouts( + DateTime startDate, DateTime endDate, long workshopId, List employeeIds) + { + (bool Checkout, bool CustomizeCheckout, bool CustomizeCheckoutTemp) data = new(); - if (searchModel.Year > 0 && searchModel.Month > 0 && searchModel.Month < 13) - { - var queryStartDate = $"{searchModel.Year:0000}/{searchModel.Month:00}/01".ToGeorgianDateTime(); - queryStartDate.FindFirstDayOfNextMonth(out var queryEndDate); - queryEndDate = queryEndDate.Date.AddTicks(-1); + if (_companyContext.CustomizeCheckouts.Any(x => x.WorkshopId == workshopId && employeeIds.Contains(x.EmployeeId) && + x.ContractStart <= endDate && x.ContractEnd >= startDate)) + { + data.CustomizeCheckout = true; + } + + if (_companyContext.CustomizeCheckoutTemps.Any(x => x.WorkshopId == workshopId && employeeIds.Contains(x.EmployeeId) && + x.ContractStart <= endDate && x.ContractEnd >= startDate)) + { + data.CustomizeCheckoutTemp = true; + } + + if (_companyContext.CheckoutSet.Any(x => x.WorkshopId == workshopId && employeeIds.Contains(x.EmployeeId) && + x.ContractStart <= endDate && x.ContractEnd >= startDate)) + { + data.Checkout = true; + } + + return data; + } + + #endregion + + public IEnumerable Search(SearchCustomizeCheckout searchModel) + { + OperationResult op = new(); + var query = _companyContext.CustomizeCheckouts.Include(x => x.Employee) + .ThenInclude(x => x.PersonnelCodeList). + Include(x => x.Employee).ThenInclude(x => x.EmployeeBankInformationList) + .AsSplitQuery().Where(x => x.WorkshopId == searchModel.WorkshopId); + #region parameters initialize + + ////start of search is the first day of the current month by default and end of search is today + //var startSearchDate = DateTime.Now.FindFirstDayOfMonth().ToGeorgianDateTime().Date; + //var endSearchDate = DateTime.Today; + + var pc = new PersianCalendar(); + var currentYear = pc.GetYear(DateTime.Now); + var currentMonth = pc.GetMonth(DateTime.Now); + + if (!string.IsNullOrWhiteSpace(searchModel.SearchStartFa) && !string.IsNullOrWhiteSpace(searchModel.SearchEndFa) && + searchModel.Year == 0 && searchModel.Month == 0) + { + var queryStartDate = searchModel.SearchStartFa.ToGeorgianDateTime().Date; + var queryEndDate = searchModel.SearchEndFa.ToGeorgianDateTime().Date; + + //if (queryEndDate > queryStartDate && queryEndDate <= DateTime.Today) + //{ + // startSearchDate = queryStartDate; + // endSearchDate = queryEndDate; + //} + //query = query.Where(x => x.ContractEnd.Date >= startSearchDate && x.ContractStart.Date <= endSearchDate); + query = query.Where(x => x.ContractEnd.Date >= queryStartDate && x.ContractStart.Date <= queryEndDate); + } - //if (queryEndDate >= DateTime.Today) - //{ - // queryEndDate = DateTime.Now.AddDays(-1).Date; - //} - - if (searchModel.Year == currentYear && searchModel.Month == currentMonth) - { - queryEndDate = DateTime.Now.AddDays(-1).Date; - } - - query = query.Where(x => x.ContractEnd <= queryEndDate && x.ContractStart >= queryStartDate); - } + if (searchModel.Year > 0 && searchModel.Month > 0 && searchModel.Month < 12) + { + var queryStartDate = $"{searchModel.Year:0000}/{searchModel.Month:00}/01".ToGeorgianDateTime(); + queryStartDate.FindFirstDayOfNextMonth(out var queryEndDate); + queryEndDate = queryEndDate.Date.AddTicks(-1); - ////Month Index operations - //startSearchDate.AddMonthsFa(-1 * (searchModel.MonthIndex), out startSearchDate); - //startSearchDate.FindFirstDayOfNextMonth(out endSearchDate); - //endSearchDate = endSearchDate.AddDays(-1); + if (queryEndDate >= DateTime.Today) + { + queryEndDate = DateTime.Now.AddDays(-1).Date; + } + + else if (searchModel.Year == currentYear && searchModel.Month == currentMonth) + { + queryEndDate = DateTime.Now.AddDays(-1).Date; + } + + query = query.Where(x => x.ContractEnd <= queryEndDate && x.ContractStart >= queryStartDate); + } - #endregion + ////Month Index operations + //startSearchDate.AddMonthsFa(-1 * (searchModel.MonthIndex), out startSearchDate); + //startSearchDate.FindFirstDayOfNextMonth(out endSearchDate); + //endSearchDate = endSearchDate.AddDays(-1); - if (searchModel.EmployeeId > 0) - query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); + #endregion - if (searchModel.BankId > 0) - query = query.Where(x => x.Employee.EmployeeBankInformationList.Any(y => y.BankId == searchModel.BankId)); - - switch (searchModel.OrderBy) - { - case CustomizeCheckoutOrderByEnum.ContractStartDesc: - query = query.OrderByDescending(x => x.ContractStart.Date); - break; - case CustomizeCheckoutOrderByEnum.ContractStart: - query = query.OrderBy(x => x.ContractStart.Date); - break; - case CustomizeCheckoutOrderByEnum.ContractNoDesc: - query = query.OrderByDescending(x => x.ContractNo); - break; - case CustomizeCheckoutOrderByEnum.ContractNo: - query = query.OrderBy(x => x.ContractNo); - break; - default: - query = query.OrderByDescending(x => x.ContractStart.Date); - break; - - } - if (searchModel.Year == 0 || searchModel.Month == 0) - query = query.Skip(searchModel.PageIndex).Take(30); - - return query.Select(x => new CustomizeCheckoutViewModel() - { - Id = x.id, - ContractEndFa = x.ContractEnd.ToFarsi(), - ContractStartFa = x.ContractStart.ToFarsi(), - ContractNo = x.ContractNo, - EmployeeFName = x.Employee.FName, - EmployeeLName = x.Employee.LName, - PersonnelCode = x.Employee.PersonnelCodeList.FirstOrDefault(y => y.WorkshopId == searchModel.WorkshopId).PersonnelCode, - Month = pc.GetMonth(x.ContractStart).ToFarsiMonthByIntNumber(), - Year = pc.GetYear(x.ContractStart).ToString(), - BaseYearsPay = x.BaseYearsPay.ToMoney(), - BonusesPay = x.BonusesPay.ToMoney(), - EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(), - FamilyAllowance = x.FamilyAllowance.ToMoney(), - AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(), - FineDeduction = x.FineDeduction.ToMoney(), - FridayPay = x.FridayPay.ToMoney(), - InstallmentDeduction = x.InstallmentDeduction.ToMoney(), - InsuranceDeduction = x.InsuranceDeduction.ToMoney(), - LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), - LeavePay = x.LeavePay.ToMoney(), - MarriedAllowance = x.MarriedAllowance.ToMoney(), - MonthlySalary = x.MonthlySalary.ToMoney(), - NightworkPay = x.NightWorkPay.ToMoney(), - OvertimePay = x.OverTimePay.ToMoney(), - RewardPay = x.RewardPay.ToMoney(), - SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(), - ShiftPay = x.ShiftPay.ToMoney(), - SumOfWorkingDays = x.SumOfWorkingDays.ToString(), - TaxDeducation = x.TaxDeduction.ToMoney(), - TotalPayment = x.TotalPayment.ToMoney(), - TotalPaymentD = x.TotalPayment, - TotalLateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), - - }).ToList(); + if (searchModel.EmployeeId > 0) + query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); - } - } + if (searchModel.BankId > 0) + query = query.Where(x => x.Employee.EmployeeBankInformationList.Any(y => y.BankId == searchModel.BankId)); + + switch (searchModel.OrderBy) + { + case CustomizeCheckoutOrderByEnum.ContractStartDesc: + query = query.OrderByDescending(x => x.ContractStart.Date); + break; + case CustomizeCheckoutOrderByEnum.ContractStart: + query = query.OrderBy(x => x.ContractStart.Date); + break; + case CustomizeCheckoutOrderByEnum.ContractNoDesc: + query = query.OrderByDescending(x => x.ContractNo); + break; + case CustomizeCheckoutOrderByEnum.ContractNo: + query = query.OrderBy(x => x.ContractNo); + break; + default: + query = query.OrderByDescending(x => x.ContractStart.Date); + break; + + } + if (searchModel.Year == 0 || searchModel.Month == 0) + query = query.Skip(searchModel.PageIndex).Take(30); + + return query.Select(x => new CustomizeCheckoutViewModel() + { + Id = x.id, + ContractEndFa = x.ContractEnd.ToFarsi(), + ContractStartFa = x.ContractStart.ToFarsi(), + ContractNo = x.ContractNo, + EmployeeFName = x.Employee.FName, + EmployeeLName = x.Employee.LName, + PersonnelCode = x.Employee.PersonnelCodeList.FirstOrDefault(y => y.WorkshopId == searchModel.WorkshopId).PersonnelCode, + Month = pc.GetMonth(x.ContractStart).ToFarsiMonthByIntNumber(), + Year = pc.GetYear(x.ContractStart).ToString(), + BaseYearsPay = x.BaseYearsPay.ToMoney(), + BonusesPay = x.BonusesPay.ToMoney(), + EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(), + FamilyAllowance = x.FamilyAllowance.ToMoney(), + AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(), + FineDeduction = x.FineDeduction.ToMoney(), + FridayPay = x.FridayPay.ToMoney(), + InstallmentDeduction = x.InstallmentDeduction.ToMoney(), + InsuranceDeduction = x.InsuranceDeduction.ToMoney(), + LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), + LeavePay = x.LeavePay.ToMoney(), + MarriedAllowance = x.MarriedAllowance.ToMoney(), + MonthlySalary = x.MonthlySalary.ToMoney(), + NightworkPay = x.NightWorkPay.ToMoney(), + OvertimePay = x.OverTimePay.ToMoney(), + RewardPay = x.RewardPay.ToMoney(), + SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(), + ShiftPay = x.ShiftPay.ToMoney(), + SumOfWorkingDays = x.SumOfWorkingDays.ToString(), + TaxDeducation = x.TaxDeduction.ToMoney(), + TotalPayment = x.TotalPayment.ToMoney(), + TotalPaymentD = x.TotalPayment, + TotalLateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), + + }).ToList(); + + + } + } } diff --git a/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs index fbee660a..1ab9ba57 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs @@ -25,6 +25,8 @@ using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; +using System.Threading.Tasks; +using Company.Domain.CustomizeCheckoutAgg; namespace CompanyManagment.EFCore.Repository { @@ -33,14 +35,13 @@ namespace CompanyManagment.EFCore.Repository private readonly IRollCallRepository _rollCallRepository; private readonly CompanyContext _companyContext; private readonly AccountContext _accountContext; - private readonly IWebHostEnvironment _webHostEnvironment; - - public CustomizeCheckoutTempRepository(CompanyContext context, IRollCallRepository rollCallRepository, IWebHostEnvironment webHostEnvironment, AccountContext accountContext) : base(context) + private readonly IWebHostEnvironment _webHostEnvironment; + public CustomizeCheckoutTempRepository(CompanyContext context, IRollCallRepository rollCallRepository, AccountContext accountContext, IWebHostEnvironment webHostEnvironment) : base(context) { _companyContext = context; _rollCallRepository = rollCallRepository; - _webHostEnvironment = webHostEnvironment; _accountContext = accountContext; + _webHostEnvironment = webHostEnvironment; } #region Pooya public List GetByWorkshopIdInDates(long workshopId, DateTime startOfMonth, DateTime endOfMonth) @@ -75,294 +76,294 @@ namespace CompanyManagment.EFCore.Repository }).ToList(); } - #endregion + #endregion - public IEnumerable Search(SearchCustomizeCheckout searchModel) - { + public IEnumerable Search(SearchCustomizeCheckout searchModel) + { - var query = _companyContext.CustomizeCheckoutTemps.Include(x => x.Employee) - .ThenInclude(x => x.PersonnelCodeList) - .Include(x => x.Employee).ThenInclude(x => x.EmployeeBankInformationList) - .AsSplitQuery().Where(x => x.WorkshopId == searchModel.WorkshopId); - #region parameters initialize + var query = _companyContext.CustomizeCheckoutTemps.Include(x => x.Employee) + .ThenInclude(x => x.PersonnelCodeList) + .Include(x => x.Employee).ThenInclude(x => x.EmployeeBankInformationList) + .AsSplitQuery().Where(x => x.WorkshopId == searchModel.WorkshopId); + #region parameters initialize - //start of search is the first day of the current month by default and end of search is today - var startSearchDate = DateTime.Now.FindFirstDayOfMonth().ToGeorgianDateTime().Date; - var endSearchDate = DateTime.Today; + //start of search is the first day of the current month by default and end of search is today + var startSearchDate = DateTime.Now.FindFirstDayOfMonth().ToGeorgianDateTime().Date; + var endSearchDate = DateTime.Today; - var pc = new PersianCalendar(); - var currentYear = pc.GetYear(DateTime.Now); - var currentMonth = pc.GetMonth(DateTime.Now); + var pc = new PersianCalendar(); + var currentYear = pc.GetYear(DateTime.Now); + var currentMonth = pc.GetMonth(DateTime.Now); - if (!string.IsNullOrWhiteSpace(searchModel.SearchStartFa) && !string.IsNullOrWhiteSpace(searchModel.SearchEndFa) && - searchModel.Year == 0 && searchModel.Month == 0) - { - var queryStartDate = searchModel.SearchStartFa.ToGeorgianDateTime().Date; - var queryEndDate = searchModel.SearchEndFa.ToGeorgianDateTime().Date; + if (!string.IsNullOrWhiteSpace(searchModel.SearchStartFa) && !string.IsNullOrWhiteSpace(searchModel.SearchEndFa) && + searchModel.Year == 0 && searchModel.Month == 0) + { + var queryStartDate = searchModel.SearchStartFa.ToGeorgianDateTime().Date; + var queryEndDate = searchModel.SearchEndFa.ToGeorgianDateTime().Date; - if (queryEndDate > queryStartDate) - { - startSearchDate = queryStartDate; - endSearchDate = queryEndDate; - } - query = query.Where(x => x.ContractEnd.Date >= startSearchDate && x.ContractStart.Date <= endSearchDate); - } + if (queryEndDate > queryStartDate) + { + startSearchDate = queryStartDate; + endSearchDate = queryEndDate; + } + query = query.Where(x => x.ContractEnd.Date >= startSearchDate && x.ContractStart.Date <= endSearchDate); + } - if (searchModel.Year > 0 && searchModel.Month > 0 && searchModel.Month < 13) - { - var queryStartDate = $"{searchModel.Year:0000}/{searchModel.Month:00}/01".ToGeorgianDateTime(); - queryStartDate.FindFirstDayOfNextMonth(out var queryEndDate); - queryEndDate = queryEndDate.AddDays(-1); + if (searchModel.Year > 0 && searchModel.Month > 0 && searchModel.Month < 13) + { + var queryStartDate = $"{searchModel.Year:0000}/{searchModel.Month:00}/01".ToGeorgianDateTime(); + queryStartDate.FindFirstDayOfNextMonth(out var queryEndDate); + queryEndDate = queryEndDate.AddDays(-1); - //if (queryEndDate < DateTime.Today) - //{ - // startSearchDate = queryStartDate; - // endSearchDate = queryEndDate; - //} + //if (queryEndDate < DateTime.Today) + //{ + // startSearchDate = queryStartDate; + // endSearchDate = queryEndDate; + //} - if (searchModel.Year == currentYear && searchModel.Month == currentMonth) - { - queryEndDate = DateTime.Today.AddDays(-1); + if (searchModel.Year == currentYear && searchModel.Month == currentMonth) + { + queryEndDate = DateTime.Today.AddDays(-1); - startSearchDate = queryStartDate; - endSearchDate = queryEndDate; - } - else - { - startSearchDate = queryStartDate; - endSearchDate = queryEndDate; - } - query = query.Where(x => x.ContractEnd.Date <= endSearchDate && x.ContractEnd.Date >= startSearchDate); + startSearchDate = queryStartDate; + endSearchDate = queryEndDate; + } + else + { + startSearchDate = queryStartDate; + endSearchDate = queryEndDate; + } + query = query.Where(x => x.ContractEnd.Date <= endSearchDate && x.ContractEnd.Date >= startSearchDate); - } + } - ////Month Index operations - //startSearchDate.AddMonthsFa(-1 * (searchModel.MonthIndex), out startSearchDate); - //startSearchDate.FindFirstDayOfNextMonth(out endSearchDate); - //endSearchDate = endSearchDate.AddDays(-1); + ////Month Index operations + //startSearchDate.AddMonthsFa(-1 * (searchModel.MonthIndex), out startSearchDate); + //startSearchDate.FindFirstDayOfNextMonth(out endSearchDate); + //endSearchDate = endSearchDate.AddDays(-1); - #endregion + #endregion - if (searchModel.EmployeeId > 0) - query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); + if (searchModel.EmployeeId > 0) + query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); - if (searchModel.BankId > 0) - query = query.Where(x => x.Employee.EmployeeBankInformationList.Any(y => y.BankId == searchModel.BankId)); + if (searchModel.BankId > 0) + query = query.Where(x => x.Employee.EmployeeBankInformationList.Any(y => y.BankId == searchModel.BankId)); - switch (searchModel.OrderBy) - { - case CustomizeCheckoutOrderByEnum.ContractStartDesc: - query = query.OrderByDescending(x => x.ContractStart.Date); - break; - case CustomizeCheckoutOrderByEnum.ContractStart: - query = query.OrderBy(x => x.ContractStart.Date); - break; - case CustomizeCheckoutOrderByEnum.ContractNoDesc: - query = query.OrderByDescending(x => x.ContractNo); - break; - case CustomizeCheckoutOrderByEnum.ContractNo: - query = query.OrderBy(x => x.ContractNo); - break; - default: - query = query.OrderByDescending(x => x.ContractStart.Date); - break; + switch (searchModel.OrderBy) + { + case CustomizeCheckoutOrderByEnum.ContractStartDesc: + query = query.OrderByDescending(x => x.ContractStart.Date); + break; + case CustomizeCheckoutOrderByEnum.ContractStart: + query = query.OrderBy(x => x.ContractStart.Date); + break; + case CustomizeCheckoutOrderByEnum.ContractNoDesc: + query = query.OrderByDescending(x => x.ContractNo); + break; + case CustomizeCheckoutOrderByEnum.ContractNo: + query = query.OrderBy(x => x.ContractNo); + break; + default: + query = query.OrderByDescending(x => x.ContractStart.Date); + break; - } + } - if (searchModel.Month == 0 || searchModel.Year == 0) - query = query.Skip(searchModel.PageIndex).Take(30); + if (searchModel.Month == 0 || searchModel.Year == 0) + query = query.Skip(searchModel.PageIndex).Take(30); - return query.Select(x => new CustomizeCheckoutViewModel() - { - Id = x.id, - ContractEndFa = x.ContractEnd.ToFarsi(), - ContractStartFa = x.ContractStart.ToFarsi(), - ContractNo = x.ContractNo, - EmployeeFName = x.EmployeeFName, - EmployeeLName = x.EmployeeLName, + return query.Select(x => new CustomizeCheckoutViewModel() + { + Id = x.id, + ContractEndFa = x.ContractEnd.ToFarsi(), + ContractStartFa = x.ContractStart.ToFarsi(), + ContractNo = x.ContractNo, + EmployeeFName = x.EmployeeFName, + EmployeeLName = x.EmployeeLName, - PersonnelCode = x.Employee.PersonnelCodeList.FirstOrDefault(y => y.WorkshopId == searchModel.WorkshopId).PersonnelCode, - Month = pc.GetMonth(x.ContractStart).ToFarsiMonthByIntNumber(), - Year = pc.GetYear(x.ContractStart).ToString(), - BaseYearsPay = x.BaseYearsPay.ToMoney(), - BonusesPay = x.BonusesPay.ToMoney(), - EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(), - FamilyAllowance = x.FamilyAllowance.ToMoney(), - AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(), - FineDeduction = x.FineDeduction.ToMoney(), - FridayPay = x.FridayPay.ToMoney(), - InstallmentDeduction = x.InstallmentDeduction.ToMoney(), - InsuranceDeduction = x.InsuranceDeduction.ToMoney(), - LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), - LeavePay = x.LeavePay.ToMoney(), - MarriedAllowance = x.MarriedAllowance.ToMoney(), - MonthlySalary = x.MonthlySalary.ToMoney(), - NightworkPay = x.NightWorkPay.ToMoney(), - OvertimePay = x.OverTimePay.ToMoney(), - RewardPay = x.RewardPay.ToMoney(), - SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(), - ShiftPay = x.ShiftPay.ToMoney(), - SumOfWorkingDays = x.SumOfWorkingDays.ToString(), - TaxDeducation = x.TaxDeduction.ToMoney(), - TotalPayment = x.TotalPayment.ToMoney(), - TotalPaymentD = x.TotalPayment, - TotalLateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), - }).ToList(); + PersonnelCode = x.Employee.PersonnelCodeList.FirstOrDefault(y => y.WorkshopId == searchModel.WorkshopId).PersonnelCode, + Month = pc.GetMonth(x.ContractStart).ToFarsiMonthByIntNumber(), + Year = pc.GetYear(x.ContractStart).ToString(), + BaseYearsPay = x.BaseYearsPay.ToMoney(), + BonusesPay = x.BonusesPay.ToMoney(), + EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(), + FamilyAllowance = x.FamilyAllowance.ToMoney(), + AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(), + FineDeduction = x.FineDeduction.ToMoney(), + FridayPay = x.FridayPay.ToMoney(), + InstallmentDeduction = x.InstallmentDeduction.ToMoney(), + InsuranceDeduction = x.InsuranceDeduction.ToMoney(), + LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), + LeavePay = x.LeavePay.ToMoney(), + MarriedAllowance = x.MarriedAllowance.ToMoney(), + MonthlySalary = x.MonthlySalary.ToMoney(), + NightworkPay = x.NightWorkPay.ToMoney(), + OvertimePay = x.OverTimePay.ToMoney(), + RewardPay = x.RewardPay.ToMoney(), + SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(), + ShiftPay = x.ShiftPay.ToMoney(), + SumOfWorkingDays = x.SumOfWorkingDays.ToString(), + TaxDeducation = x.TaxDeduction.ToMoney(), + TotalPayment = x.TotalPayment.ToMoney(), + TotalPaymentD = x.TotalPayment, + TotalLateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), + }).ToList(); - } - public List PrintAll(long workshopId, IEnumerable customizeCheckoutIds) - { + } - //var pc = new PersianCalendar(); - //var year = pc.GetYear(monthStart); - //var month = pc.GetMonth(monthStart); + public List PrintAll(long workshopId, IEnumerable customizeCheckoutIds) + { - IQueryable customizeCheckoutsQuery = _companyContext.CustomizeCheckoutTemps.AsSplitQuery() + //var pc = new PersianCalendar(); + //var year = pc.GetYear(monthStart); + //var month = pc.GetMonth(monthStart); + + IQueryable customizeCheckoutsQuery = _companyContext.CustomizeCheckoutTemps.AsSplitQuery() .Where(x => customizeCheckoutIds.Contains(x.id)); - IQueryable workshopsQuery = _companyContext.Workshops.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.id)); + IQueryable workshopsQuery = _companyContext.Workshops.Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.id)); - IQueryable workshopEmployersIdsQuery = _companyContext.WorkshopEmployers.Where(x => x.WorkshopId == workshopId).Select(x => x.EmployerId); - IQueryable employersQuery = _companyContext.Employers.Where(x => workshopEmployersIdsQuery.Contains(x.id)); + IQueryable workshopEmployersIdsQuery = _companyContext.WorkshopEmployers.Where(x => x.WorkshopId == workshopId).Select(x => x.EmployerId); + IQueryable employersQuery = _companyContext.Employers.Where(x => workshopEmployersIdsQuery.Contains(x.id)); - IQueryable personnelCodesQuery = _companyContext.PersonnelCodeSet - .Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId)); + IQueryable personnelCodesQuery = _companyContext.PersonnelCodeSet + .Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId)); - //IQueryable leftWorksQuery = _companyContext.LeftWorkList - // .Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) && - // x.LeftWorkDate.AddDays(-1) >= monthStart && x.StartWorkDate <= monthEnd); + //IQueryable leftWorksQuery = _companyContext.LeftWorkList + // .Where(x => customizeCheckoutsQuery.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) && + // x.LeftWorkDate.AddDays(-1) >= monthStart && x.StartWorkDate <= monthEnd); - //IQueryable employeesQuery = _companyContext.Employees.Where(x => customizeCheckoutsQuery.Any(y => y.EmployeeId == x.id)); + //IQueryable employeesQuery = _companyContext.Employees.Where(x => customizeCheckoutsQuery.Any(y => y.EmployeeId == x.id)); - List<(string Picture, long Id)> employeePictures; + List<(string Picture, long Id)> employeePictures; - var employeePicMediaIdInEmployeeDoc = _companyContext.EmployeeDocumentItems.Where(x => customizeCheckoutsQuery - .Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) && - x.DocumentLabel == DocumentItemLabel.EmployeePicture && - x.DocumentStatus == DocumentStatus.Confirmed) - ?.Select(x => new { x.EmployeeId, x.MediaId }).ToList(); + var employeePicMediaIdInEmployeeDoc = _companyContext.EmployeeDocumentItems.Where(x => customizeCheckoutsQuery + .Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId) && + x.DocumentLabel == DocumentItemLabel.EmployeePicture && + x.DocumentStatus == DocumentStatus.Confirmed) + ?.Select(x => new { x.EmployeeId, x.MediaId }).ToList(); - var mediasInEmployeeDoc = _accountContext.Medias.Where(x => employeePicMediaIdInEmployeeDoc.Select(y => y.MediaId).Contains(x.id)).ToList(); - employeePictures = employeePicMediaIdInEmployeeDoc.Select(x => - { - var media = mediasInEmployeeDoc.First(m => m.id == x.MediaId); - var filePath = media.Path; - if (!System.IO.File.Exists(filePath)) - throw new FileNotFoundException("فایل مورد نظر یافت نشد.", filePath); + var mediasInEmployeeDoc = _accountContext.Medias.Where(x => employeePicMediaIdInEmployeeDoc.Select(y => y.MediaId).Contains(x.id)).ToList(); + employeePictures = employeePicMediaIdInEmployeeDoc.Select(x => + { + var media = mediasInEmployeeDoc.First(m => m.id == x.MediaId); + var filePath = media.Path; + if (!System.IO.File.Exists(filePath)) + throw new FileNotFoundException("فایل مورد نظر یافت نشد.", filePath); - byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); - var base64 = Convert.ToBase64String(fileBytes); + byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); + var base64 = Convert.ToBase64String(fileBytes); - return (base64, x.EmployeeId); - }).ToList(); + return (base64, x.EmployeeId); + }).ToList(); - var employeeIds = customizeCheckoutsQuery.Select(x => x.EmployeeId).ToList() - .Where(x => !employeePictures.Select(e => e.Id).Contains(x)).ToList(); + var employeeIds = customizeCheckoutsQuery.Select(x => x.EmployeeId).ToList() + .Where(x => !employeePictures.Select(e => e.Id).Contains(x)).ToList(); - foreach (var employeeId in employeeIds) - { - var directoryPath = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}\\1.jpg"; + foreach (var employeeId in employeeIds) + { + var directoryPath = $"{_webHostEnvironment.ContentRootPath}\\Faces\\{workshopId}\\{employeeId}\\1.jpg"; - if (!System.IO.File.Exists(directoryPath)) - continue; + if (!System.IO.File.Exists(directoryPath)) + continue; - byte[] fileBytes = System.IO.File.ReadAllBytes(directoryPath); - var base64 = Convert.ToBase64String(fileBytes); + byte[] fileBytes = System.IO.File.ReadAllBytes(directoryPath); + var base64 = Convert.ToBase64String(fileBytes); - employeePictures.Add((base64, employeeId)); - } + employeePictures.Add((base64, employeeId)); + } - List customizeCheckoutsList = customizeCheckoutsQuery.Select(x => new CustomizeCheckoutViewModel - { - Id = x.id, - WorkshopId = x.WorkshopId, - ContractId = x.ContractId == null ? 0 : x.ContractId.Value, - EmployeeId = x.EmployeeId, - Month = x.Month, - Year = x.Year, - ContractNo = x.ContractNo, - MonthlySalary = x.MonthlySalary.ToMoney(), - BaseYearsPay = x.BaseYearsPay.ToMoney(), - OvertimePay = x.OverTimePay.ToMoney(), - NightworkPay = x.NightWorkPay.ToMoney(), - FridayPay = x.FridayPay.ToMoney(), - ShiftPay = x.ShiftPay.ToMoney(), - FamilyAllowance = x.FamilyAllowance.ToMoney(), - BonusesPay = x.BonusesPay.ToMoney(), - LeavePay = x.LeavePay.ToMoney(), - InsuranceDeduction = x.InsuranceDeduction.ToMoney(), - TaxDeducation = x.TaxDeduction.ToMoney(), - InstallmentDeduction = x.InstallmentDeduction.ToMoney(), - SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(), - AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(), - TotalClaims = x.TotalClaims, - TotalDeductions = x.TotalDeductions, - TotalPayment = x.TotalPayment.ToMoney(), - RewardPay = x.RewardPay.ToMoney(), - ContractStartGr = x.ContractStart, - ContractEndGr = x.ContractEnd, - MarriedAllowance = x.MarriedAllowance.ToMoney(), - ContractEndFa = x.ContractEnd.ToFarsi(), - ContractStartFa = x.ContractStart.ToFarsi(), - CreationDate = x.CreationDate, - SumOfWorkingDays = x.SumOfWorkingDays, - WorkshopName = x.WorkshopFullName, - DateOfBirth = x.DateOfBirth.ToFarsi(), - NationalCode = x.NationalCode, - EmployeeFName = x.EmployeeFName, - EmployeeLName = x.EmployeeLName, - EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(), - LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), - FineDeduction = x.FineDeduction.ToMoney(), - FineViewModelList = x.CheckoutFines.Select(y => new FineViewModel() - { - Amount = y.Amount, - FineDate = y.FineDateFa, - Title = y.Title - }).ToList(), - InstallmentViewModels = x.CustomizeCheckoutLoanInstallments.Select(i => new LoanInstallmentViewModel() - { - Amount = i.AmountForMonth, - AmountDouble = i.AmountForMonth.MoneyToDouble(), - Year = i.Year, - Month = i.Month, - IsActive = i.IsActive, - RemainingAmount = i.LoanRemaining, - LoanAmount = i.LoanAmount - }).ToList(), - RewardViewModels = x.CustomizeCheckoutRewards.Select(r => new RewardViewModel() - { - IsActive = r.IsActive, - Title = r.Title, - Amount = r.Amount, - AmountDouble = r.Amount.MoneyToDouble(), - Description = r.Description, - GrantDateFa = r.GrantDateFa, - GrantDateGr = r.GrantDate - }).ToList(), - SalaryAidViewModels = x.CustomizeCheckoutSalaryAids.Select(s => new SalaryAidViewModel() - { - Amount = s.Amount, - AmountDouble = s.Amount.MoneyToDouble(), - SalaryAidDateTimeFa = s.SalaryAidDateTimeFa, - SalaryAidDateTimeGe = s.SalaryAidDateTime - }).ToList(), + List customizeCheckoutsList = customizeCheckoutsQuery.Select(x => new CustomizeCheckoutViewModel + { + Id = x.id, + WorkshopId = x.WorkshopId, + ContractId = x.ContractId == null ? 0 : x.ContractId.Value, + EmployeeId = x.EmployeeId, + Month = x.Month, + Year = x.Year, + ContractNo = x.ContractNo, + MonthlySalary = x.MonthlySalary.ToMoney(), + BaseYearsPay = x.BaseYearsPay.ToMoney(), + OvertimePay = x.OverTimePay.ToMoney(), + NightworkPay = x.NightWorkPay.ToMoney(), + FridayPay = x.FridayPay.ToMoney(), + ShiftPay = x.ShiftPay.ToMoney(), + FamilyAllowance = x.FamilyAllowance.ToMoney(), + BonusesPay = x.BonusesPay.ToMoney(), + LeavePay = x.LeavePay.ToMoney(), + InsuranceDeduction = x.InsuranceDeduction.ToMoney(), + TaxDeducation = x.TaxDeduction.ToMoney(), + InstallmentDeduction = x.InstallmentDeduction.ToMoney(), + SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(), + AbsenceDeduction = x.FineAbsenceDeduction.ToMoney(), + TotalClaims = x.TotalClaims, + TotalDeductions = x.TotalDeductions, + TotalPayment = x.TotalPayment.ToMoney(), + RewardPay = x.RewardPay.ToMoney(), + ContractStartGr = x.ContractStart, + ContractEndGr = x.ContractEnd, + MarriedAllowance = x.MarriedAllowance.ToMoney(), + ContractEndFa = x.ContractEnd.ToFarsi(), + ContractStartFa = x.ContractStart.ToFarsi(), + CreationDate = x.CreationDate, + SumOfWorkingDays = x.SumOfWorkingDays, + WorkshopName = x.WorkshopFullName, + DateOfBirth = x.DateOfBirth.ToFarsi(), + NationalCode = x.NationalCode, + EmployeeFName = x.EmployeeFName, + EmployeeLName = x.EmployeeLName, + EarlyExitDeduction = x.EarlyExitDeduction.ToMoney(), + LateToWorkDeduction = x.LateToWorkDeduction.ToMoney(), + FineDeduction = x.FineDeduction.ToMoney(), + FineViewModelList = x.CheckoutFines.Select(y => new FineViewModel() + { + Amount = y.Amount, + FineDate = y.FineDateFa, + Title = y.Title + }).ToList(), + InstallmentViewModels = x.CustomizeCheckoutLoanInstallments.Select(i => new LoanInstallmentViewModel() + { + Amount = i.AmountForMonth, + AmountDouble = i.AmountForMonth.MoneyToDouble(), + Year = i.Year, + Month = i.Month, + IsActive = i.IsActive, + RemainingAmount = i.LoanRemaining, + LoanAmount = i.LoanAmount + }).ToList(), + RewardViewModels = x.CustomizeCheckoutRewards.Select(r => new RewardViewModel() + { + IsActive = r.IsActive, + Title = r.Title, + Amount = r.Amount, + AmountDouble = r.Amount.MoneyToDouble(), + Description = r.Description, + GrantDateFa = r.GrantDateFa, + GrantDateGr = r.GrantDate + }).ToList(), + SalaryAidViewModels = x.CustomizeCheckoutSalaryAids.Select(s => new SalaryAidViewModel() + { + Amount = s.Amount, + AmountDouble = s.Amount.MoneyToDouble(), + SalaryAidDateTimeFa = s.SalaryAidDateTimeFa, + SalaryAidDateTimeGe = s.SalaryAidDateTime + }).ToList(), - //LateToWorkValue = x.LateToWorkValue == TimeSpan.Zero ? "-" : $"{(int)x.LateToWorkValue.TotalHours}:{x.LateToWorkValue.Minutes:D2}" LateToWorkValue = x.LateToWorkValue == TimeSpan.Zero ? "-" : $"{(int)x.LateToWorkValue.TotalHours}:{Convert.ToInt32(x.LateToWorkValue.TotalMinutes % 60):00}", SettingSalary = x.SettingSalary.ToMoney(), DailyWage = x.DailyWage.ToMoney(), @@ -371,103 +372,102 @@ namespace CompanyManagment.EFCore.Repository CustomizeRotatingShifts = x.CustomizeRotatingShifts.ToList(), RegularShift = x.RegularShifts.Select(x => (CustomizeSifts)x).ToList() + }).ToList(); + List workshopsList = workshopsQuery.Select(x => new WorkshopViewModel + { + WorkshopFullName = x.WorkshopFullName, + Id = x.id + }).ToList(); + List workshopEmployersList = employersQuery.Select(x => new EmployerViewModel + { + Id = x.id, + FullName = x.FullName + }).ToList(); + //List leftWorksList = leftWorksQuery.Select(x => new LeftWorkViewModel + //{ + // EmployeeId = x.EmployeeId, + // WorkshopId = x.WorkshopId, + // Id = x.id, + // StartWorkDateGr = x.StartWorkDate, + // LeftWorkDateGr = x.LeftWorkDate + //}).ToList(); + //List employees = employeesQuery.Select(x => new EmployeeViewModel() + //{ + // Id = x.id, + // FName = x.FName, + // LName = x.LName, + // FatherName = x.FatherName, + // NationalCode = x.NationalCode, + // DateOfBirth = x.DateOfBirth.ToFarsi() + //}).ToList(); + List personnelCodeList = personnelCodesQuery.Select(x => new PersonnelCodeViewModel + { + EmployeeId = x.EmployeeId, + WorkshopId = x.WorkshopId, + PersonnelCode = Convert.ToInt64(x.PersonnelCode) + }).ToList(); - }).ToList(); - List workshopsList = workshopsQuery.Select(x => new WorkshopViewModel - { - WorkshopFullName = x.WorkshopFullName, - Id = x.id - }).ToList(); - List workshopEmployersList = employersQuery.Select(x => new EmployerViewModel - { - Id = x.id, - FullName = x.FullName - }).ToList(); - //List leftWorksList = leftWorksQuery.Select(x => new LeftWorkViewModel - //{ - // EmployeeId = x.EmployeeId, - // WorkshopId = x.WorkshopId, - // Id = x.id, - // StartWorkDateGr = x.StartWorkDate, - // LeftWorkDateGr = x.LeftWorkDate - //}).ToList(); - //List employees = employeesQuery.Select(x => new EmployeeViewModel() - //{ - // Id = x.id, - // FName = x.FName, - // LName = x.LName, - // FatherName = x.FatherName, - // NationalCode = x.NationalCode, - // DateOfBirth = x.DateOfBirth.ToFarsi() - //}).ToList(); - List personnelCodeList = personnelCodesQuery.Select(x => new PersonnelCodeViewModel - { - EmployeeId = x.EmployeeId, - WorkshopId = x.WorkshopId, - PersonnelCode = Convert.ToInt64(x.PersonnelCode) - }).ToList(); + var date = customizeCheckoutsList.FirstOrDefault(); - var date = customizeCheckoutsList.FirstOrDefault(); + if (date == null) + return new(); - if (date == null) - return new(); - - var startDate = date.ContractStartGr.Date; - var endDate = date.ContractEndGr.AddDays(1).Date.AddTicks(-1); + var startDate = date.ContractStartGr.Date; + var endDate = date.ContractEndGr.AddDays(1).Date.AddTicks(-1); - List personnelRollCalls = _rollCallRepository - .GetEmployeeRollCallsForCustomizeCheckoutTemp(customizeCheckoutsList.Select(x => x.Id).ToList(), workshopId); + List personnelRollCalls = _rollCallRepository + .GetEmployeeRollCallsForCustomizeCheckoutTemp(customizeCheckoutsList.Select(x => x.Id).ToList(), workshopId); - int counter = 1; - foreach (var checkout in customizeCheckoutsList) - { - checkout.EmployeePicture = - employeePictures.FirstOrDefault(p => p.Id == checkout.EmployeeId).Picture ?? ""; - checkout.PrintCounter = counter++; - //var leftwork = leftWorksList.FirstOrDefault(x => checkout.WorkshopId == x.WorkshopId && x.EmployeeId == checkout.EmployeeId); - //checkout.LeftWorkDateGr = leftwork.LeftWorkDateGr; + int counter = 1; + foreach (var checkout in customizeCheckoutsList) + { + checkout.EmployeePicture = + employeePictures.FirstOrDefault(p => p.Id == checkout.EmployeeId).Picture ?? ""; + checkout.PrintCounter = counter++; + //var leftwork = leftWorksList.FirstOrDefault(x => checkout.WorkshopId == x.WorkshopId && x.EmployeeId == checkout.EmployeeId); + //checkout.LeftWorkDateGr = leftwork.LeftWorkDateGr; - //var employee = employees.FirstOrDefault(x => x.Id == checkout.EmployeeId); - var rollCalls = personnelRollCalls.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId); + //var employee = employees.FirstOrDefault(x => x.Id == checkout.EmployeeId); + var rollCalls = personnelRollCalls.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId); - checkout.EmployerList = workshopEmployersList; - checkout.EmployerName = workshopEmployersList.FirstOrDefault()?.FullName ?? "-"; + checkout.EmployerList = workshopEmployersList; + checkout.EmployerName = workshopEmployersList.FirstOrDefault()?.FullName ?? "-"; - checkout.MonthlyRollCall = rollCalls; - checkout.MonthlyRollCall.DailyRollCalls = rollCalls.DailyRollCalls.Select(x => - { - var isInRange = x.DateTimeGr >= checkout.ContractStartGr && x.DateTimeGr <= checkout.ContractEndGr; - return new CheckoutDailyRollCallViewModel() - { - StartDate1 = isInRange ? x.StartDate1 : "", - EndDate1 = isInRange ? x.EndDate1 : "", - EndDate2 = isInRange ? x.EndDate2 : "", - StartDate2 = isInRange ? x.StartDate2 : "", - TotalWorkingHours = isInRange ? x.TotalWorkingHours : "", - DayOfWeek = x.DayOfWeek, - RollCallDateFa = x.RollCallDateFa, - DateTimeGr = x.DateTimeGr, - IsSliced = isInRange && x.IsSliced, - LeaveType = x.LeaveType, - IsBirthDay = x.IsBirthDay, - IsAbsent = x.IsAbsent, - IsFriday = x.IsFriday, - EnterDifferencesMinutes1 = isInRange ? x.EnterDifferencesMinutes1 : "", - EnterDifferencesMinutes2 = isInRange ? x.EnterDifferencesMinutes2 : "", - ExitDifferencesMinutes1 = isInRange ? x.ExitDifferencesMinutes1 : "", - ExitDifferencesMinutes2 = isInRange ? x.ExitDifferencesMinutes2 : "" + checkout.MonthlyRollCall = rollCalls; + checkout.MonthlyRollCall.DailyRollCalls = rollCalls.DailyRollCalls.Select(x => + { + var isInRange = x.DateTimeGr >= checkout.ContractStartGr && x.DateTimeGr <= checkout.ContractEndGr; + return new CheckoutDailyRollCallViewModel() + { + StartDate1 = isInRange ? x.StartDate1 : "", + EndDate1 = isInRange ? x.EndDate1 : "", + EndDate2 = isInRange ? x.EndDate2 : "", + StartDate2 = isInRange ? x.StartDate2 : "", + TotalWorkingHours = isInRange ? x.TotalWorkingHours : "", + DayOfWeek = x.DayOfWeek, + RollCallDateFa = x.RollCallDateFa, + DateTimeGr = x.DateTimeGr, + IsSliced = isInRange && x.IsSliced, + LeaveType = x.LeaveType, + IsBirthDay = x.IsBirthDay, + IsAbsent = x.IsAbsent, + IsFriday = x.IsFriday, + EnterDifferencesMinutes1 = isInRange ? x.EnterDifferencesMinutes1 : "", + EnterDifferencesMinutes2 = isInRange ? x.EnterDifferencesMinutes2 : "", + ExitDifferencesMinutes1 = isInRange ? x.ExitDifferencesMinutes1 : "", + ExitDifferencesMinutes2 = isInRange ? x.ExitDifferencesMinutes2 : "" - }; - }).ToList(); - checkout.PersonnelCode = personnelCodeList.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId)?.PersonnelCode ?? 0; + }; + }).ToList(); + checkout.PersonnelCode = personnelCodeList.FirstOrDefault(x => x.EmployeeId == checkout.EmployeeId)?.PersonnelCode ?? 0; - } - return customizeCheckoutsList.OrderBy(x => x.EmployeeFullName).ToList(); + } + return customizeCheckoutsList.OrderBy(x => x.EmployeeFullName).ToList(); - } + } - public void RemoveEmployeeTemporaryCheckoutInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth) + public void RemoveEmployeeTemporaryCheckoutInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth) { var checkout = _companyContext.CustomizeCheckoutTemps.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId && x.ContractStart.Date <= endOfMonth.Date && x.ContractEnd.Date >= startOfMonth.Date); @@ -480,5 +480,19 @@ namespace CompanyManagment.EFCore.Repository { return _companyContext.CustomizeCheckoutTemps.Where(x => x.WorkshopId == workshopId && ids.Contains(x.id)); } + + public List GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime startDate, DateTime endDate) + { + var checkouts = _companyContext.CustomizeCheckoutTemps.Where(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId && + x.ContractStart <= endDate && x.ContractEnd >= startDate).ToList(); + return checkouts; + } + + public async Task GetByWorkshopIdEmployeeIdInDate(long workshopId, long employeeId, DateTime inDate) + { + return await _companyContext.CustomizeCheckoutTemps.FirstOrDefaultAsync(x => + x.WorkshopId == workshopId && x.EmployeeId == employeeId && x.ContractStart <= inDate && + x.ContractEnd >= inDate); + } } } diff --git a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs index 42131f83..89855fa7 100644 --- a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs @@ -1223,7 +1223,8 @@ CreateWorkingHoursTemp command, bool holidayWorking) public CustomizeCheckoutMandatoryViewModel CustomizeCheckoutMandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd) { - + var checkoutEnd = contractEnd; + var checkoutStart = contractStart; if (workshopId == 170) return CustomizeCheckoutMandatoryComputeForKebabMahdi(employeeId, workshopId, contractStart, contractEnd); @@ -1483,34 +1484,14 @@ CreateWorkingHoursTemp command, bool holidayWorking) #endregion #region SalaryAidDeduction - var salaryAidViewModel = _context.SalaryAids - .Where(x => x.SalaryAidDateTime >= contractStart && x.SalaryAidDateTime <= contractEnd && x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x => new SalaryAidViewModel() - { - Amount = x.Amount.ToMoney(), - AmountDouble = x.Amount, - SalaryAidDateTimeFa = x.SalaryAidDateTime.ToFarsi(), - SalaryAidDateTimeGe = x.SalaryAidDateTime, - }).ToList(); + var salaryAidViewModel = SalaryAidsForCheckout(employeeId, workshopId, checkoutStart, checkoutEnd); double salaryAidDeduction = salaryAidViewModel.Sum(x => x.AmountDouble); #endregion #region Loan - var loanInstallments = _context.Loans - .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) - .SelectMany(x => x.LoanInstallments) - .Where(i => i.InstallmentDate > contractStart && i.InstallmentDate < contractEnd && i.IsActive == IsActive.True) - .Select(x => new LoanInstallmentViewModel() - { - Month = x.Month, - IsActive = x.IsActive, - Amount = x.AmountForMonth.ToMoney(), - Year = x.Year, - AmountDouble = x.AmountForMonth, - RemainingAmount = _context.Loans.SelectMany(l => l.LoanInstallments).Where(i => i.LoanId == x.LoanId && i.IsActive == IsActive.True && i.InstallmentDate > x.InstallmentDate) - .Sum(i => i.AmountForMonth).ToMoney() - }).ToList(); + var loanInstallments = LoanInstallmentForCheckout(employeeId, workshopId, contractStart, contractEnd); double loanDeduction = loanInstallments.Sum(x => x.AmountDouble); @@ -1518,18 +1499,7 @@ CreateWorkingHoursTemp command, bool holidayWorking) #region Fine - var fineViewModels = _context.Fines.Where(x => - x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.FineDate >= contractStart && - x.FineDate <= contractEnd && x.IsActive == IsActive.True).Select(x => new FineViewModel() - { - IsActive = x.IsActive, - Amount = x.Amount.ToMoney(), - FineDate = x.FineDate.ToFarsi(), - Id = x.id, - Title = x.Title, - EmployeeId = x.EmployeeId, - CreationDate = x.CreationDate.ToFarsi() - }).ToList(); + var fineViewModels = FinesForCheckout(employeeId, workshopId, contractStart, contractEnd); double fineDeduction = fineViewModels.Sum(x => x.Amount.MoneyToDouble()); #endregion @@ -1676,18 +1646,7 @@ CreateWorkingHoursTemp command, bool holidayWorking) #endregion #region Reward - var rewardViewModels = _context.Rewards.Where(x => - x.WorkshopId == workshopId && x.EmployeeId == employeeId && x.GrantDate <= contractEnd && - x.GrantDate >= contractStart).Select(x => new RewardViewModel - { - Title = x.Title, - Amount = x.Amount.ToMoney(), - AmountDouble = x.Amount, - Description = x.Description, - GrantDateGr = x.GrantDate, - GrantDateFa = x.GrantDate.ToFarsi(), - IsActive = x.IsActive, - }).ToList(); + var rewardViewModels = RewardForCheckout(employeeId, workshopId, checkoutEnd, checkoutStart); double rewardPay = rewardViewModels.Sum(x => x.AmountDouble); #endregion @@ -2289,38 +2248,14 @@ CreateWorkingHoursTemp command, bool holidayWorking) #region SalaryAidDeduction - var salaryAidViewModel = _context.SalaryAids - .Where(x => x.SalaryAidDateTime >= checkoutStart && x.SalaryAidDateTime <= checkoutEnd && - x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x => new SalaryAidViewModel() - { - Amount = x.Amount.ToMoney(), - AmountDouble = x.Amount, - SalaryAidDateTimeFa = x.SalaryAidDateTime.ToFarsi(), - SalaryAidDateTimeGe = x.SalaryAidDateTime, - }).ToList(); + var salaryAidViewModel = SalaryAidsForCheckout(employeeId, workshopId, checkoutStart, checkoutEnd); double salaryAidDeduction = salaryAidViewModel.Sum(x => x.AmountDouble); #endregion #region Loan - var loanInstallments = _context.Loans - .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) - .SelectMany(x => x.LoanInstallments) - .Where(i => i.InstallmentDate >= contractStart && i.InstallmentDate <= contractEnd && - i.IsActive == IsActive.True) - .Select(x => new LoanInstallmentViewModel() - { - Month = x.Month, - IsActive = x.IsActive, - Amount = x.AmountForMonth.ToMoney(), - Year = x.Year, - AmountDouble = x.AmountForMonth, - RemainingAmount = _context.Loans.SelectMany(l => l.LoanInstallments).Where(i => - i.LoanId == x.LoanId && i.IsActive == IsActive.True && i.InstallmentDate > x.InstallmentDate) - .Sum(i => i.AmountForMonth).ToMoney(), - LoanAmount = _context.Loans.FirstOrDefault(l => l.id == x.LoanId).Amount.ToMoney() - }).ToList(); + var loanInstallments = LoanInstallmentForCheckout(employeeId, workshopId, contractStart, contractEnd); double loanDeduction = loanInstallments.Sum(x => x.AmountDouble); @@ -2328,18 +2263,7 @@ CreateWorkingHoursTemp command, bool holidayWorking) #region Fine - var fineViewModels = _context.Fines.Where(x => - x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.FineDate >= contractStart && - x.FineDate <= contractEnd && x.IsActive == IsActive.True).Select(x => new FineViewModel() - { - IsActive = x.IsActive, - Amount = x.Amount.ToMoney(), - FineDate = x.FineDate.ToFarsi(), - Id = x.id, - Title = x.Title, - EmployeeId = x.EmployeeId, - CreationDate = x.CreationDate.ToFarsi() - }).ToList(); + var fineViewModels = FinesForCheckout(employeeId, workshopId, contractStart, contractEnd); double fineDeduction = fineViewModels.Sum(x => x.Amount.MoneyToDouble()); #endregion @@ -2557,18 +2481,7 @@ CreateWorkingHoursTemp command, bool holidayWorking) #region Reward - var rewardViewModels = _context.Rewards.Where(x => - x.WorkshopId == workshopId && x.EmployeeId == employeeId && x.GrantDate <= checkoutEnd && - x.GrantDate >= checkoutStart).Select(x => new RewardViewModel - { - Title = x.Title, - Amount = x.Amount.ToMoney(), - AmountDouble = x.Amount, - Description = x.Description, - GrantDateGr = x.GrantDate, - GrantDateFa = x.GrantDate.ToFarsi(), - IsActive = x.IsActive, - }).ToList(); + var rewardViewModels = RewardForCheckout(employeeId, workshopId, checkoutEnd, checkoutStart); double rewardPay = rewardViewModels.Sum(x => x.AmountDouble); @@ -2844,34 +2757,14 @@ CreateWorkingHoursTemp command, bool holidayWorking) #region SalaryAidDeduction - var salaryAidViewModel = _context.SalaryAids - .Where(x => x.SalaryAidDateTime >= contractStart && x.SalaryAidDateTime <= contractEnd && x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x => new SalaryAidViewModel() - { - Amount = x.Amount.ToMoney(), - AmountDouble = x.Amount, - SalaryAidDateTimeFa = x.SalaryAidDateTime.ToFarsi(), - SalaryAidDateTimeGe = x.SalaryAidDateTime, - }).ToList(); + var salaryAidViewModel = SalaryAidsForCheckout(employeeId, workshopId, contractEnd, contractEnd); double salaryAidDeduction = salaryAidViewModel.Sum(x => x.AmountDouble); #endregion #region Loan - var loanInstallments = _context.Loans - .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) - .SelectMany(x => x.LoanInstallments) - .Where(i => i.InstallmentDate > contractStart && i.InstallmentDate < contractEnd && i.IsActive == IsActive.True) - .Select(x => new LoanInstallmentViewModel() - { - Month = x.Month, - IsActive = x.IsActive, - Amount = x.AmountForMonth.ToMoney(), - Year = x.Year, - AmountDouble = x.AmountForMonth, - RemainingAmount = _context.Loans.SelectMany(l => l.LoanInstallments).Where(i => i.LoanId == x.LoanId && i.IsActive == IsActive.True && i.InstallmentDate > x.InstallmentDate) - .Sum(i => i.AmountForMonth).ToMoney() - }).ToList(); + var loanInstallments = LoanInstallmentForCheckout(employeeId, workshopId, contractStart, contractEnd); double loanDeduction = loanInstallments.Sum(x => x.AmountDouble); @@ -2879,35 +2772,13 @@ CreateWorkingHoursTemp command, bool holidayWorking) #region Fine - var fineViewModels = _context.Fines.Where(x => - x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.FineDate >= contractStart && - x.FineDate <= contractEnd && x.IsActive == IsActive.True).Select(x => new FineViewModel() - { - IsActive = x.IsActive, - Amount = x.Amount.ToMoney(), - FineDate = x.FineDate.ToFarsi(), - Id = x.id, - Title = x.Title, - EmployeeId = x.EmployeeId, - CreationDate = x.CreationDate.ToFarsi() - }).ToList(); + var fineViewModels = FinesForCheckout(employeeId, workshopId, contractStart, contractEnd); double fineDeduction = fineViewModels.Sum(x => x.Amount.MoneyToDouble()); #endregion #region Reward - var rewardViewModels = _context.Rewards.Where(x => - x.WorkshopId == workshopId && x.EmployeeId == employeeId && x.GrantDate <= contractEnd && - x.GrantDate >= contractStart).Select(x => new RewardViewModel - { - Title = x.Title, - Amount = x.Amount.ToMoney(), - AmountDouble = x.Amount, - Description = x.Description, - GrantDateGr = x.GrantDate, - GrantDateFa = x.GrantDate.ToFarsi(), - IsActive = x.IsActive, - }).ToList(); + var rewardViewModels = RewardForCheckout(employeeId, workshopId, contractStart, contractEnd); double rewardPay = rewardViewModels.Sum(x => x.AmountDouble); #endregion @@ -2931,6 +2802,75 @@ CreateWorkingHoursTemp command, bool holidayWorking) }; } + + private List RewardForCheckout(long employeeId, long workshopId, DateTime checkoutEnd, DateTime checkoutStart) + { + return _context.Rewards.Where(x => + x.WorkshopId == workshopId && x.EmployeeId == employeeId && x.GrantDate <= checkoutEnd && + x.GrantDate >= checkoutStart).Select(x => new RewardViewModel + { + Title = x.Title, + Amount = x.Amount.ToMoney(), + AmountDouble = x.Amount, + Description = x.Description, + GrantDateGr = x.GrantDate, + GrantDateFa = x.GrantDate.ToFarsi(), + IsActive = x.IsActive, + Id = x.id + }).ToList(); + } + + private List FinesForCheckout(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd) + { + return _context.Fines.Where(x => + x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.FineDate >= contractStart && + x.FineDate <= contractEnd && x.IsActive == IsActive.True).Select(x => new FineViewModel() + { + IsActive = x.IsActive, + Amount = x.Amount.ToMoney(), + FineDate = x.FineDate.ToFarsi(), + Id = x.id, + Title = x.Title, + EmployeeId = x.EmployeeId, + CreationDate = x.CreationDate.ToFarsi() + }).ToList(); + } + + private List LoanInstallmentForCheckout(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd) + { + return _context.Loans + .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) + .SelectMany(x => x.LoanInstallments) + .Where(i => i.InstallmentDate >= contractStart && i.InstallmentDate <= contractEnd && i.IsActive == IsActive.True) + .Select(x => new LoanInstallmentViewModel() + { + Id = x.Id, + Month = x.Month, + IsActive = x.IsActive, + Amount = x.AmountForMonth.ToMoney(), + Year = x.Year, + AmountDouble = x.AmountForMonth, + RemainingAmount = _context.Loans.SelectMany(l => l.LoanInstallments).Where(i => i.LoanId == x.LoanId && i.IsActive == IsActive.True && i.InstallmentDate > x.InstallmentDate) + .Sum(i => i.AmountForMonth).ToMoney(), + LoanAmount = _context.Loans.FirstOrDefault(l => l.id == x.LoanId).Amount.ToMoney() + }).ToList(); + } + + private List SalaryAidsForCheckout(long employeeId, long workshopId, DateTime checkoutStart, DateTime checkoutEnd) + { + return _context.SalaryAids + .Where(x => x.CalculationDate >= checkoutStart && x.CalculationDate <= checkoutEnd && x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x => new SalaryAidViewModel() + { + Amount = x.Amount.ToMoney(), + AmountDouble = x.Amount, + SalaryAidDateTimeFa = x.SalaryAidDateTime.ToFarsi(), + SalaryAidDateTimeGe = x.SalaryAidDateTime, + CalculationDateTimeGe = x.CalculationDate, + CalculationDateTimeFa = x.CalculationDate.ToFarsi(), + Id = x.id + }).ToList(); + } + private void CreateRewardForBirthDay(long employeeId, long workshopId, double amount, int month, int year, DateTime contractStart) { diff --git a/CompanyManagment.EFCore/Repository/SalaryAidRepository.cs b/CompanyManagment.EFCore/Repository/SalaryAidRepository.cs index 513c8b2b..842b56c7 100644 --- a/CompanyManagment.EFCore/Repository/SalaryAidRepository.cs +++ b/CompanyManagment.EFCore/Repository/SalaryAidRepository.cs @@ -72,7 +72,9 @@ public class SalaryAidRepository : RepositoryBase, ISalaryAidRe WorkshopId = entity.WorkshopId, EmployeeId = entity.EmployeeId, Amount = entity.Amount.ToMoney(), - SalaryDateTime = entity.SalaryAidDateTime.ToFarsi() + SalaryDateTime = entity.SalaryAidDateTime.ToFarsi(), + CalculationMonth = entity.CalculationMonth, + CalculationYear = entity.CalculationYear, }; res.EmployeeFullName = _companyContext.Employees.Find(entity.EmployeeId)?.FullName; diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs index 289d337f..1b2fdcf4 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs @@ -1,6 +1,8 @@ using _0_Framework.Application; using AccountManagement.Domain.AccountLeftWorkAgg; using AccountMangement.Infrastructure.EFCore; +using Company.Domain.CustomizeCheckoutAgg.ValueObjects; +using Company.Domain.CustomizeCheckoutTempAgg.ValueObjects; using Company.Domain.RewardAgg; using Company.Domain.RollCallAgg.DomainService; using CompanyManagment.App.Contracts.AndroidApkVersion; @@ -53,6 +55,8 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk //var notEndedRollCalls = rollCalls.Where(x => x.EndDate == null).ToList(); //RefactorAllTheRollCallsOnEsfand(endedRollCalls, notEndedRollCalls); //CreateRewardForKebabMahdi().GetAwaiter().GetResult(); + SetEntityIdForCheckoutValues(); + SetEntityIdForCheckoutValuesTemp(); ViewData["message"] = "ایجاد شد"; return Page(); } @@ -72,6 +76,140 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk return Page(); } + + private void SetEntityIdForCheckoutValuesTemp() + { + var customizeCheckouts = _context.CustomizeCheckoutTemps.ToList(); + foreach (var customizeCheckout in customizeCheckouts) + { + var newRewards = new List(); + foreach (var customizeCheckoutReward in customizeCheckout.CustomizeCheckoutRewards) + { + var reward = _context.Rewards.FirstOrDefault(x => x.GrantDate == customizeCheckoutReward.GrantDate && x.Title == customizeCheckoutReward.Title && x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); + if (reward != null) + { + newRewards.Add(new CustomizeCheckoutTempReward(reward.Amount.ToMoney(), reward.Description, reward.GrantDate, reward.GrantDate.ToFarsi(), reward.IsActive, reward.Title, reward.id)); + } + } + + var newSalary = new List(); + foreach (var customizeCheckoutSalaryAid in customizeCheckout.CustomizeCheckoutSalaryAids) + { + var salary = _context.SalaryAids.FirstOrDefault(x => x.SalaryAidDateTime == customizeCheckoutSalaryAid.SalaryAidDateTime && + x.Amount == customizeCheckoutSalaryAid.Amount.MoneyToDouble() && + x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); + + if (salary != null) + { + newSalary.Add(new CustomizeCheckoutTempSalaryAid(salary.Amount.ToMoney(), salary.SalaryAidDateTime, + salary.SalaryAidDateTime.ToFarsi(), salary.CalculationDate, salary.CalculationDate.ToFarsi(), salary.id)); + } + } + + var newFines = new List(); + foreach (var checkoutFine in customizeCheckout.CheckoutFines) + { + var fines = _context.Fines.FirstOrDefault(x => x.Amount == checkoutFine.Amount.MoneyToDouble() && x.FineDate == checkoutFine.FineDateGr && + x.Title == checkoutFine.Title && x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); + if (fines != null) + { + newFines.Add(new CustomizeCheckoutTempFine(fines.Title, fines.Amount.ToMoney(), fines.FineDate.ToFarsi(), fines.FineDate, fines.IsActive, fines.CreationDate, fines.id)); + } + } + + var newInstallments = new List(); + + foreach (var customizeCheckoutLoanInstallment in customizeCheckout.CustomizeCheckoutLoanInstallments) + { + + var installments = _context.Loans.SelectMany(x => x.LoanInstallments).AsNoTracking().Where(x => x.Month == customizeCheckoutLoanInstallment.Month && x.Year == customizeCheckoutLoanInstallment.Year && x.AmountForMonth == customizeCheckoutLoanInstallment.AmountForMonth.MoneyToDouble()).ToList(); + var loans = _context.Loans + .Where(x => x.Amount == customizeCheckoutLoanInstallment.LoanAmount.MoneyToDouble() && x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId).ToList(); + + var installment = installments.First(x => loans.Any(l => l.id == x.LoanId)); + + if (installment != null) + { + newInstallments.Add(new CustomizeCheckoutTempLoanInstallments(installment.AmountForMonth.ToMoney(), + installment.Month, installment.Year, installment.IsActive, + customizeCheckoutLoanInstallment.LoanRemaining, customizeCheckoutLoanInstallment.LoanAmount, + installment.Id)); + } + } + customizeCheckout.SetValueObjects(newFines, newInstallments, newSalary, newRewards); + + + _context.SaveChanges(); + + } + } + private void SetEntityIdForCheckoutValues() + { + var customizeCheckouts = _context.CustomizeCheckouts.ToList(); + foreach (var customizeCheckout in customizeCheckouts) + { + var newRewards = new List(); + foreach (var customizeCheckoutReward in customizeCheckout.CustomizeCheckoutRewards) + { + var reward = _context.Rewards.FirstOrDefault(x => x.GrantDate == customizeCheckoutReward.GrantDate && x.Title == customizeCheckoutReward.Title && x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); + if (reward != null) + { + newRewards.Add(new CustomizeCheckoutReward(reward.Amount.ToMoney(), reward.Description, reward.GrantDate, reward.GrantDate.ToFarsi(), reward.IsActive, reward.Title, reward.id)); + } + } + + var newSalary = new List(); + foreach (var customizeCheckoutSalaryAid in customizeCheckout.CustomizeCheckoutSalaryAids) + { + var salary = _context.SalaryAids.FirstOrDefault(x => x.SalaryAidDateTime == customizeCheckoutSalaryAid.SalaryAidDateTime && + x.Amount == customizeCheckoutSalaryAid.Amount.MoneyToDouble() && + x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); + + if (salary != null) + { + newSalary.Add(new CustomizeCheckoutSalaryAid(salary.Amount.ToMoney(), salary.SalaryAidDateTime, + salary.SalaryAidDateTime.ToFarsi(), salary.CalculationDate, salary.CalculationDate.ToFarsi(), salary.id)); + } + } + + var newFines = new List(); + foreach (var checkoutFine in customizeCheckout.CheckoutFines) + { + var fines = _context.Fines.FirstOrDefault(x => x.Amount == checkoutFine.Amount.MoneyToDouble() && x.FineDate == checkoutFine.FineDateGr && + x.Title == checkoutFine.Title && x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); + if (fines != null) + { + newFines.Add(new CustomizeCheckoutFine(fines.Title, fines.Amount.ToMoney(), fines.FineDate.ToFarsi(), fines.FineDate, fines.IsActive, fines.CreationDate, fines.id)); + } + } + + var newInstallments = new List(); + + foreach (var customizeCheckoutLoanInstallment in customizeCheckout.CustomizeCheckoutLoanInstallments) + { + + var installments = _context.Loans.SelectMany(x => x.LoanInstallments).AsNoTracking().Where(x => x.Month == customizeCheckoutLoanInstallment.Month && x.Year == customizeCheckoutLoanInstallment.Year && x.AmountForMonth == customizeCheckoutLoanInstallment.AmountForMonth.MoneyToDouble()).ToList(); + var loans = _context.Loans + .Where(x => x.Amount == customizeCheckoutLoanInstallment.LoanAmount.MoneyToDouble() && x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId).ToList(); + + var installment = installments.First(x => loans.Any(l => l.id == x.LoanId)); + + if (installment != null) + { + newInstallments.Add(new CustomizeCheckoutLoanInstallments(installment.AmountForMonth.ToMoney(), + installment.Month, installment.Year, installment.IsActive, + customizeCheckoutLoanInstallment.LoanRemaining, customizeCheckoutLoanInstallment.LoanAmount, + installment.Id)); + } + } + customizeCheckout.SetValueObjects(newFines, newInstallments, newSalary, newRewards); + + + _context.SaveChanges(); + + } + } + public async Task OnPostShiftDateNew2() { //var startRollCall = new DateTime(2025, 3, 21); diff --git a/ServiceHost/Areas/Client/Pages/Company/Fine/Index.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/Fine/Index.cshtml.cs index 5767bacf..aa90ca7b 100644 --- a/ServiceHost/Areas/Client/Pages/Company/Fine/Index.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/Fine/Index.cshtml.cs @@ -1,6 +1,7 @@ using System.Security.Claims; using _0_Framework.Application; using _0_Framework.Infrastructure; +using CompanyManagment.App.Contracts.CustomizeCheckout; using CompanyManagment.App.Contracts.Employee; using CompanyManagment.App.Contracts.Error; using CompanyManagment.App.Contracts.Fine; @@ -25,10 +26,11 @@ namespace ServiceHost.Areas.Client.Pages.Company.Fine private readonly long _workshopId; public string WorkshopFullName; public int PageIndex = 0; + private readonly ICustomizeCheckoutApplication _customizeCheckoutApplication; - public IndexModel(IFineApplication fineApplication, IWorkshopApplication workshopApplication, + public IndexModel(IFineApplication fineApplication, IWorkshopApplication workshopApplication, IPasswordHasher passwordHasher, IFineSubjectApplication fineSubjectApplication, - IEmployeeApplication employeeApplication, IAuthHelper authHelper) + IEmployeeApplication employeeApplication, IAuthHelper authHelper, ICustomizeCheckoutApplication customizeCheckoutApplication) { _fineApplication = fineApplication; _workshopApplication = workshopApplication; @@ -36,8 +38,9 @@ namespace ServiceHost.Areas.Client.Pages.Company.Fine _fineSubjectApplication = fineSubjectApplication; _employeeApplication = employeeApplication; _authHelper = authHelper; + _customizeCheckoutApplication = customizeCheckoutApplication; - var workshopHash = _authHelper.GetWorkshopSlug(); + var workshopHash = _authHelper.GetWorkshopSlug(); _workshopId = _passwordHasher.SlugDecrypt(workshopHash); if (_workshopId < 1) @@ -193,5 +196,19 @@ namespace ServiceHost.Areas.Client.Pages.Company.Fine data = result }); } - } + public IActionResult OnGetCheckoutExists(string fineDate, List employeeIds) + { + var fineDateGr = fineDate.ToGeorgianDateTime(); + + var validateExistsCheckouts = + _customizeCheckoutApplication.ValidateExistsCheckouts(fineDateGr, fineDateGr, _workshopId, employeeIds); + + return new JsonResult(new + { + checkout = validateExistsCheckouts.Checkout, + customizeCheckout = validateExistsCheckouts.CustomizeCheckout, + customizeCheckoutTemp = validateExistsCheckouts.CustomizeCheckoutTemp, + }); + } + } } diff --git a/ServiceHost/Areas/Client/Pages/Company/Fine/ModalCreateNewFine.cshtml b/ServiceHost/Areas/Client/Pages/Company/Fine/ModalCreateNewFine.cshtml index 9c78c0cd..e13f939f 100644 --- a/ServiceHost/Areas/Client/Pages/Company/Fine/ModalCreateNewFine.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/Fine/ModalCreateNewFine.cshtml @@ -55,8 +55,8 @@
-
-
+
+
@@ -93,7 +93,7 @@ @@ -110,6 +110,7 @@ \ No newline at end of file diff --git a/ServiceHost/Areas/Client/Pages/Company/Reward/Index.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/Reward/Index.cshtml.cs index ce3e3096..96e8c035 100644 --- a/ServiceHost/Areas/Client/Pages/Company/Reward/Index.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/Reward/Index.cshtml.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc.RazorPages; using System.Security.Claims; using _0_Framework.Application; using _0_Framework.Infrastructure; +using CompanyManagment.App.Contracts.CustomizeCheckout; using CompanyManagment.App.Contracts.Employee; using CompanyManagment.App.Contracts.Error; using CompanyManagment.App.Contracts.Reward; @@ -21,11 +22,12 @@ namespace ServiceHost.Areas.Client.Pages.Company.Reward private readonly IAuthHelper _authHelper; private readonly IEmployeeApplication _employeeApplication; private readonly IHttpContextAccessor _contextAccessor; + private readonly ICustomizeCheckoutApplication _customizeCheckoutApplication; private readonly long _workshopId; public string WorkshopFullName; public int PageIndex = 0; - public IndexModel(IWorkshopApplication workshopApplication, IPasswordHasher passwordHasher, IRewardApplication rewardApplication, IAuthHelper authHelper, IEmployeeApplication employeeApplication, IHttpContextAccessor contextAccessor) + public IndexModel(IWorkshopApplication workshopApplication, IPasswordHasher passwordHasher, IRewardApplication rewardApplication, IAuthHelper authHelper, IEmployeeApplication employeeApplication, IHttpContextAccessor contextAccessor, ICustomizeCheckoutApplication customizeCheckoutApplication) { _workshopApplication = workshopApplication; _passwordHasher = passwordHasher; @@ -33,6 +35,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.Reward _authHelper = authHelper; _employeeApplication = employeeApplication; _contextAccessor = contextAccessor; + _customizeCheckoutApplication = customizeCheckoutApplication; var workshopHash = _contextAccessor.HttpContext?.User.FindFirstValue("WorkshopSlug"); _workshopId = _passwordHasher.SlugDecrypt(workshopHash); @@ -142,5 +145,20 @@ namespace ServiceHost.Areas.Client.Pages.Company.Reward }); } + public IActionResult OnGetCheckoutExists(string grantDate,List employeeIds) + { + var grantDateGr = grantDate.ToGeorgianDateTime(); + + var validateExistsCheckouts = + _customizeCheckoutApplication.ValidateExistsCheckouts(grantDateGr, grantDateGr, _workshopId, employeeIds); + + return new JsonResult(new + { + checkout = validateExistsCheckouts.Checkout, + customizeCheckout = validateExistsCheckouts.CustomizeCheckout, + customizeCheckoutTemp = validateExistsCheckouts.CustomizeCheckoutTemp, + }); + } + } } diff --git a/ServiceHost/Areas/Client/Pages/Company/Reward/ModalCreateNewReward.cshtml b/ServiceHost/Areas/Client/Pages/Company/Reward/ModalCreateNewReward.cshtml index 4948f0c0..57806ced 100644 --- a/ServiceHost/Areas/Client/Pages/Company/Reward/ModalCreateNewReward.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/Reward/ModalCreateNewReward.cshtml @@ -37,8 +37,8 @@
-
-
+
+
@@ -81,6 +81,7 @@ \ No newline at end of file diff --git a/ServiceHost/Areas/Client/Pages/Company/Reward/ModalEditReward.cshtml b/ServiceHost/Areas/Client/Pages/Company/Reward/ModalEditReward.cshtml index c98c6339..4b3f2f9d 100644 --- a/ServiceHost/Areas/Client/Pages/Company/Reward/ModalEditReward.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/Reward/ModalEditReward.cshtml @@ -21,6 +21,7 @@
+ نام و نام خانوادگی پرسنل
@@ -35,8 +36,8 @@
-
-
+
+
@@ -80,6 +81,7 @@ \ No newline at end of file diff --git a/ServiceHost/Areas/Client/Pages/Company/SalaryAid/Index.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/SalaryAid/Index.cshtml.cs index 5516d50e..99c2da68 100644 --- a/ServiceHost/Areas/Client/Pages/Company/SalaryAid/Index.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/SalaryAid/Index.cshtml.cs @@ -7,9 +7,12 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using System.Security.Claims; using _0_Framework.Infrastructure; +using Company.Domain.CustomizeCheckoutAgg; using CompanyManagement.Infrastructure.Excel.SalaryAid; +using CompanyManagment.App.Contracts.CustomizeCheckout; using CompanyManagment.App.Contracts.SalaryAid; using CompanyManagment.App.Contracts.Employee; +using CompanyManagment.App.Contracts.YearlySalary; namespace ServiceHost.Areas.Client.Pages.Company.SalaryAid { @@ -20,23 +23,29 @@ namespace ServiceHost.Areas.Client.Pages.Company.SalaryAid private readonly IPasswordHasher _passwordHasher; private readonly ISalaryAidApplication _salaryAidApplication; private readonly IEmployeeApplication _employeeApplication; + private readonly IYearlySalaryApplication _yearlySalaryApplication; private readonly IAuthHelper _authHelper; + private readonly ICustomizeCheckoutApplication _customizeCheckoutApplication; private readonly SalaryAidImportExcel _salaryAidImportExcel; private readonly long _workshopId; public string WorkshopFullName; public int PageIndex = 0; + private readonly ICustomizeCheckoutRepository _customizeCheckoutRepository; - public IndexModel(IPasswordHasher passwordHasher, ISalaryAidApplication salaryAidApplication, - IEmployeeApplication employeeApplication, IHttpContextAccessor contextAccessor, IAuthHelper authHelper, SalaryAidImportExcel salaryAidImportExcel) + public IndexModel(IPasswordHasher passwordHasher, ISalaryAidApplication salaryAidApplication, + IEmployeeApplication employeeApplication, IHttpContextAccessor contextAccessor, IAuthHelper authHelper, SalaryAidImportExcel salaryAidImportExcel, ICustomizeCheckoutApplication customizeCheckoutApplication, ICustomizeCheckoutRepository customizeCheckoutRepository, IYearlySalaryApplication yearlySalaryApplication) { _passwordHasher = passwordHasher; _salaryAidApplication = salaryAidApplication; _employeeApplication = employeeApplication; _authHelper = authHelper; _salaryAidImportExcel = salaryAidImportExcel; + _yearlySalaryApplication = yearlySalaryApplication; + _customizeCheckoutApplication = customizeCheckoutApplication; + _customizeCheckoutRepository = customizeCheckoutRepository; - var workshopHash = _authHelper.GetWorkshopSlug(); + var workshopHash = _authHelper.GetWorkshopSlug(); _workshopId = _passwordHasher.SlugDecrypt(workshopHash); if (_workshopId < 1) @@ -50,6 +59,16 @@ namespace ServiceHost.Areas.Client.Pages.Company.SalaryAid return Page(); } + public IActionResult OnGetYearlyList() + { + var resultData = _yearlySalaryApplication.GetYears(); + return new JsonResult(new + { + success = true, + data = resultData + }); + } + public IActionResult OnGetLoadDataAjax(SalaryAidSearchViewModel searchViewModel) { searchViewModel.WorkshopId = _workshopId; @@ -156,7 +175,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.SalaryAid }); } - public async Task OnPostCreateFromExcelData(List data) + public IActionResult OnPostCreateFromExcelData(List data) { var commands = data.Select(x => new CreateSalaryAidViewModel() { @@ -164,9 +183,11 @@ namespace ServiceHost.Areas.Client.Pages.Company.SalaryAid Amount = x.Amount.ToMoney(), EmployeeIds = [x.EmployeeId], SalaryDateTime = x.SalaryAidDateTime, - NationalCode = x.NationalCode + NationalCode = x.NationalCode, + CalculationMonth = x.calculationMonth, + CalculationYear = x.calculationYear }).ToList(); - OperationResult result = await _salaryAidApplication.CreateRange(commands); + OperationResult result = _salaryAidApplication.CreateRange(commands); return new JsonResult(new { @@ -175,6 +196,50 @@ namespace ServiceHost.Areas.Client.Pages.Company.SalaryAid }); } + public IActionResult OnGetCreateValidation(DateTime dateTime,List employeeIds,long workshopId) + { + var op = new OperationResult(); + _ = DateTime.Now.Date.AddMonthsFa(-1, out var oneMonthAgoGr); + + if (oneMonthAgoGr > dateTime) + { + var prevCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(dateTime, + oneMonthAgoGr, workshopId, employeeIds); + + if (prevCheckouts.CustomizeCheckout || prevCheckouts.Checkout || prevCheckouts.CustomizeCheckoutTemp) + { + op.Failed("شما نمیتوانید در تاریخ قبل از یک ماه گذشته که فیش صادر شده باشد مساعده دهید"); + return new JsonResult(new + { + op.IsSuccedded, + op.Message + }); + } + } + + var existsCheckouts = _customizeCheckoutRepository.ValidateExistsCheckouts(dateTime, + dateTime, workshopId, employeeIds); + + if (existsCheckouts.Checkout) + { + op.Failed("شما نمیتوانید برای پرسنلی در تاریخی که برای فیش حقوقی رسمی صادر شده است مساعده دهید"); + return new JsonResult(new + { + op.IsSuccedded, + op.Message + }); + + } + + op.Succcedded(); + return new JsonResult(new + { + op.IsSuccedded, + op.Message, + data = existsCheckouts + }); + + } public IActionResult OnGetSearch(SalaryAidSearchViewModel searchModel) { searchModel.WorkshopId = _workshopId; @@ -184,6 +249,20 @@ namespace ServiceHost.Areas.Client.Pages.Company.SalaryAid data = result }); } + public IActionResult OnGetCheckoutExists(string calculationDate, List employeeIds) + { + var calculationDateGr = calculationDate.ToGeorgianDateTime(); - } + var validateExistsCheckouts = + _customizeCheckoutApplication.ValidateExistsCheckouts(calculationDateGr, calculationDateGr, _workshopId, employeeIds); + + return new JsonResult(new + { + checkout = validateExistsCheckouts.Checkout, + customizeCheckout = validateExistsCheckouts.CustomizeCheckout, + customizeCheckoutTemp = validateExistsCheckouts.CustomizeCheckoutTemp, + }); + } + + } } diff --git a/ServiceHost/Areas/Client/Pages/Company/SalaryAid/ModalCreateNewSalaryAid.cshtml b/ServiceHost/Areas/Client/Pages/Company/SalaryAid/ModalCreateNewSalaryAid.cshtml index 0fbf0115..5757614e 100644 --- a/ServiceHost/Areas/Client/Pages/Company/SalaryAid/ModalCreateNewSalaryAid.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/SalaryAid/ModalCreateNewSalaryAid.cshtml @@ -7,7 +7,6 @@ }
-
@@ -65,6 +108,7 @@ + @@ -73,6 +117,8 @@ \ No newline at end of file diff --git a/ServiceHost/Areas/Client/Pages/Company/SalaryAid/ModalEditSalaryAid.cshtml b/ServiceHost/Areas/Client/Pages/Company/SalaryAid/ModalEditSalaryAid.cshtml index ee0750db..7853917f 100644 --- a/ServiceHost/Areas/Client/Pages/Company/SalaryAid/ModalEditSalaryAid.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/SalaryAid/ModalEditSalaryAid.cshtml @@ -21,6 +21,7 @@
+ نام و نام خانوادگی پرسنل
@@ -31,14 +32,43 @@
-
-
+
+
تاریخ
+
+ تاریخ محاسبه + @* *@ + +
+
+ +
+
+ +
+
+
@@ -70,5 +100,8 @@ \ No newline at end of file diff --git a/ServiceHost/Areas/Client/Pages/Company/SalaryAid/ModalImportExcel.cshtml b/ServiceHost/Areas/Client/Pages/Company/SalaryAid/ModalImportExcel.cshtml index 455c3ace..56b53119 100644 --- a/ServiceHost/Areas/Client/Pages/Company/SalaryAid/ModalImportExcel.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/SalaryAid/ModalImportExcel.cshtml @@ -60,7 +60,7 @@
-