From 76666b3da7de0fe8be7e9e19566dc2a62f6476a2 Mon Sep 17 00:00:00 2001 From: mahan Date: Sat, 8 Nov 2025 19:25:14 +0330 Subject: [PATCH 1/6] add pizza amir calculation method --- .../Repository/RollCallMandatoryRepository.cs | 3443 ++++++++++------- 1 file changed, 2119 insertions(+), 1324 deletions(-) diff --git a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs index 626f25e8..d462bf8b 100644 --- a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs @@ -38,8 +38,6 @@ using OfficeOpenXml.ConditionalFormatting.Contracts; using PersianTools.Core; - - namespace CompanyManagment.EFCore.Repository; public class RollCallMandatoryRepository : RepositoryBase, IRollCallMandatoryRepository @@ -52,9 +50,9 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll private readonly TestDbContext _testDbContext; - public RollCallMandatoryRepository(CompanyContext context, IYearlySalaryRepository yearlySalaryRepository, - ILeftWorkRepository leftWorkRepository, ILeaveRepository leaveRepository, IHolidayItemRepository holidayItemRepository, TestDbContext testDbContext) : base(context) + ILeftWorkRepository leftWorkRepository, ILeaveRepository leaveRepository, + IHolidayItemRepository holidayItemRepository, TestDbContext testDbContext) : base(context) { _context = context; _yearlySalaryRepository = yearlySalaryRepository; @@ -62,15 +60,15 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll _leaveRepository = leaveRepository; _holidayItemRepository = holidayItemRepository; _testDbContext = testDbContext; - } - #region OfficialChckout - public ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, - DateTime contractEnd, - CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute,double dailyWageUnAffected, bool totalLeaveCompute) - { + #region OfficialChckout + public ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, + DateTime contractEnd, + CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, + double dailyWageUnAffected, bool totalLeaveCompute) + { #region Entities string SumWorkeTime = string.Empty; @@ -82,6 +80,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll string shiftOver22Minuts = "0"; double ShiftPayResult = 0; int numberOfFridays = 0; + #endregion int TotalContractDays = (int)(contractEnd - contractStart).TotalDays + 1; @@ -95,6 +94,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll fridays += 1; } } + int TotalDaysNoFriday = TotalContractDays - fridays; int mandatorDays = TotalContractDays - (fridays + holiday); if (command.ShiftWork != "4" && isStaticCheckout) @@ -113,10 +113,12 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //گرفتن ساعت استراحت پرسنل از تنظیمات + #region breakTime + BaseCustomizeEntity settings = _context.CustomizeWorkshopEmployeeSettings.AsSplitQuery() .Include(x => x.CustomizeWorkshopGroupSettings).FirstOrDefault(x => - x.WorkshopId == workshopId && x.EmployeeId == employeeId); + x.WorkshopId == workshopId && x.EmployeeId == employeeId); //اگر ساعت استراحت پرسنل وجود نداشت صفر است var breakTimeEntity = settings == null ? new BreakTime(false, new TimeOnly()) : settings.BreakTime; var endOfFarvardin = "1404/01/31".ToGeorgianDateTime(); @@ -146,8 +148,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll groupedRollCall = rollCallResult.GroupBy(x => x.ShiftDate.Date).Select(x => { - - DateTime friday = new DateTime(); if (x.Any(s => @@ -157,7 +157,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday)) .StartDate.Value; - } if (x.Any(s => @@ -172,8 +171,16 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll return new GroupedRollCalls() { CreationDate = x.Key, - ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value, EndWithOutResTime = s.ShiftEndWithoutRest.Value != null ? s.ShiftEndWithoutRest.Value : new DateTime() }).ToList(), - HasFriday = x.Any(s => s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)), + ShiftList = x.Select(s => new ShiftList() + { + Start = s.StartDate!.Value, End = s.EndDate!.Value, + EndWithOutResTime = s.ShiftEndWithoutRest.Value != null + ? s.ShiftEndWithoutRest.Value + : new DateTime() + }).ToList(), + HasFriday = x.Any(s => + s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || + s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)), //HasFriday = x.Any(s => // s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || // s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)), @@ -189,15 +196,16 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll else { rollCallResult = _context.RollCalls.Where(x => - x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate.Value.Date >= contractStart.Date && + x.EmployeeId == employeeId && x.WorkshopId == workshopId && + x.StartDate.Value.Date >= contractStart.Date && x.StartDate.Value.Date <= contractEnd.Date && x.EndDate != null).Select(x => new RollCallViewModel() - { - StartDate = x.StartDate, - EndDate = x.EndDate, - ShiftSpan = (x.EndDate.Value - x.StartDate.Value), - CreationDate = x.ShiftDate, - BreakTimeSpan = x.BreakTimeSpan - }).ToList(); + { + StartDate = x.StartDate, + EndDate = x.EndDate, + ShiftSpan = (x.EndDate.Value - x.StartDate.Value), + CreationDate = x.ShiftDate, + BreakTimeSpan = x.BreakTimeSpan + }).ToList(); groupedRollCall = rollCallResult.GroupBy(x => x.CreationDate.Date).Select(x => { @@ -210,7 +218,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } else { - breakTime = CalculateBreakTime(breakTimeEntity, new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))); + breakTime = CalculateBreakTime(breakTimeEntity, + new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))); } DateTime friday = new DateTime(); @@ -222,7 +231,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday)) .StartDate.Value; - } if (x.Any(s => @@ -237,7 +245,10 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll return new GroupedRollCalls() { CreationDate = x.Key, - ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value, EndWithOutResTime = s.EndDate!.Value }) + ShiftList = x.Select(s => new ShiftList() + { + Start = s.StartDate!.Value, End = s.EndDate!.Value, EndWithOutResTime = s.EndDate!.Value + }) .ToList(), //HasFriday = x.Any(s => // s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || @@ -253,7 +264,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } - var firdays = groupedRollCall.Where(x => x.Fridays != null && x.Fridays != new DateTime()).DistinctBy(x => x.Fridays.Value.Date).ToList(); + var firdays = groupedRollCall.Where(x => x.Fridays != null && x.Fridays != new DateTime()) + .DistinctBy(x => x.Fridays.Value.Date).ToList(); numberOfFridays = firdays.Count(); ////*****کسر ساعاعت استراحت پرسنل از ساعت کار @@ -264,8 +276,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //}).ToList(); - - TimeSpan sumSpans = new TimeSpan(groupedRollCall.Sum(x => x.SumOneDaySpan.Ticks)); TimeSpan sumSpansWhitOutleaves = new TimeSpan(groupedRollCall.Sum(x => x.SumOneDaySpan.Ticks)); @@ -293,14 +303,12 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { // کم کردن از مجموع ساعت کار پرسنل sumSpans = sumSpans.Subtract(hoursesleaveTimeSpans); - } - //****افزودن مرخصی پرسنل به مجموع ساعات کار*** - #region AddEmployeeLeavs + #region AddEmployeeLeavs LeaveSearchModel leaveSearch = new LeaveSearchModel() { @@ -353,7 +361,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //اگر مدت مرخصی از مجاز بیشتر بود و مدل محاسبه کامل نبود if (totalLeaveDouble > starndardHoursesPerTotalDays && !totalLeaveCompute) { - sumSpans = sumSpans.Add(starndardHoursesPerTotalDaysSapn); totalLeaveSpan = starndardHoursesPerTotalDaysSapn; } @@ -362,38 +369,36 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll sumSpans = sumSpans.Add(totalLeave); totalLeaveSpan = totalLeave; } - - - } else { int leavingDayCout = 0; //مرخصی های مابین - List beatweenCheckout = leaveSearchResult.Where(x => x.StartLeaveGr >= contractStart && x.EndLeaveGr <= contractEnd).Select(x => new LeaveViewModel() - { - DayCounter = Convert.ToInt32(x.LeaveHourses), - - }).ToList(); + List beatweenCheckout = leaveSearchResult + .Where(x => x.StartLeaveGr >= contractStart && x.EndLeaveGr <= contractEnd).Select(x => + new LeaveViewModel() + { + DayCounter = Convert.ToInt32(x.LeaveHourses), + }).ToList(); leavingDayCout += beatweenCheckout.Sum(x => x.DayCounter); // مرخصی که شروعش قبل از شروع تصفیه حساب است - List beforeCheckout = leaveSearchResult.Where(x => x.StartLeaveGr < contractStart).Select(x => new LeaveViewModel() - { - DayCounter = (int)(contractStart - x.EndLeaveGr).TotalDays + 1, - - }).ToList(); + List beforeCheckout = leaveSearchResult.Where(x => x.StartLeaveGr < contractStart) + .Select(x => new LeaveViewModel() + { + DayCounter = (int)(contractStart - x.EndLeaveGr).TotalDays + 1, + }).ToList(); leavingDayCout += beforeCheckout.Sum(x => x.DayCounter); // مرخصی که پایانش بعد از پایان تصفیه حساب است - List afterCheckout = leaveSearchResult.Where(x => x.EndLeaveGr > contractEnd).Select(x => new LeaveViewModel() - { - DayCounter = (int)(x.StartLeaveGr - contractEnd).TotalDays + 1, - - }).ToList(); + List afterCheckout = leaveSearchResult.Where(x => x.EndLeaveGr > contractEnd) + .Select(x => new LeaveViewModel() + { + DayCounter = (int)(x.StartLeaveGr - contractEnd).TotalDays + 1, + }).ToList(); leavingDayCout += afterCheckout.Sum(x => x.DayCounter); Console.WriteLine(leavingDayCout); - TimeSpan workingPerDayAve = sumSpans / groupedRollCall.Count;//میانگین ساعت کار در روز + TimeSpan workingPerDayAve = sumSpans / groupedRollCall.Count; //میانگین ساعت کار در روز TimeSpan sumLeave = new TimeSpan(); if (workingPerDayAve <= new TimeSpan(7, 20, 0)) { @@ -405,8 +410,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll var dayLeave = leavingDayCout * new TimeSpan(7, 20, 0); sumLeave = dayLeave.Add(hoursesleaveTimeSpans); - - } @@ -427,9 +430,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //#endregion } - - } + //اگر مرخصی روزانه نداشت و فقط مرخصی ساعتی داشت //if (leaveSearchResult.Count == 0 && hoursesleave.Count > 0) //{ @@ -443,7 +445,9 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll // } //} Console.WriteLine(sumSpans); + #endregion + //***********************************// //ToTalHourse Employe eWorked double totalHourses = (sumSpans.TotalMinutes) / 60; @@ -453,10 +457,9 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //********** محاسبه مدت اضافه کاری ***********// + #region ComputeMandatoryAtThisTime - - //***********************************// //var dailyFix = TimeSpan.Parse("07:20"); //TimeSpan mandatoryHoursTimeSpan = new TimeSpan(7, 20, 0).Multiply(mandatorDays); @@ -467,20 +470,18 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (mandatoryWorkWithOutleaves > mandatoryHours) { overTimeWork = mandatoryWorkWithOutleaves - mandatoryHours; - } - #endregion //******* دستمزد روزانه *******// + #region DailyFeeCompute var searchModel = new LeftWorkSearchModel() { EmployeeId = command.EmployeeId, WorkshopId = command.WorkshopId, - }; var leftworkList = _leftWorkRepository.search(searchModel); @@ -496,7 +497,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll double dailySalaryAffected = 0; if (styear >= 1370) { - if (leftworkList == null) leftworkList = new List(); @@ -529,11 +529,13 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll var MarriedAllowance = _yearlySalaryRepository.MarriedAllowance(contractEnd, command.EmployeeId); // حق تاهل string MarriedAllowanceStr = MarriedAllowance > 0 ? MarriedAllowance.ToMoney() : "0"; + #endregion var totalWeek = (int)(TotalContractDays / 6); #region Fix44Compute + int TotalContractdaysUnder30 = TotalContractDays > 30 ? 30 : TotalContractDays; if (totalHourses < mandatoryHours) { @@ -559,7 +561,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll #endregion - var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble(); var HousingStep1 = HousingAllowonceNumberType / 30; var HousingStep2 = HousingStep1 / 7.33; @@ -575,7 +576,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll ConsumableItems = consumableItemsStep4.ToMoney(); - //حق تاهل if (MarriedAllowance > 0) { @@ -588,7 +588,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (familyAllowance != "0") { - var familyAllowanceNumberType = familyAllowance.MoneyToDouble(); var familyAllowanceStep1 = familyAllowanceNumberType / 30; var familyAllowanceStep2 = familyAllowanceStep1 / 7.33; @@ -599,7 +598,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (totalWeek > 1) { - double weekAvrage = 0; if (totalHourses < 44.00) { @@ -613,7 +611,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //var oneday = weekAvrage * 6; var totalShiftRound = Math.Round(weekAvrage, 2); SumWorkeTime = $"{totalShiftRound}"; - } else if (totalWeek <= 1 && TotalDaysNoFriday <= 6) { @@ -631,11 +628,9 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll weeklyTime = sumSpans; } - } else // اگر بیشتر از 44 بود { - var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble(); var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble(); var familyAllowanceNumberType = familyAllowance.MoneyToDouble(); @@ -669,7 +664,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //اضافه کار if (overTimeWork > 0) { - //int mandatoryH = (int)Mandatory.TotalHours; //int mandatoryM = (int)(Mandatory.TotalMinutes % 60); int mandatoryH = (int)overTimeWork; @@ -677,11 +671,12 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll overMandatoryHours = mandatoryH.ToString(); overMandatoryMinuts = mandatoryM.ToString(); } - } + #endregion //****** نوبت کاری و شب کاری **** + #region RotatingShiftCheckAndNightWorkOver22 string shiftPayValue = "0"; @@ -771,6 +766,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll // تناسب گیری - اگر برای 28 روز 8 تغییر پس برای ایکس روز چند تغییر لازم است validCount = (int)((totalDays * 6) / 28); } + string maxName; int maxValue = moriningCount; @@ -780,6 +776,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll maxValue = eveningCount; maxName = "eveningCount"; } + if (nightCount > maxValue) { maxValue = nightCount; @@ -800,6 +797,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll countOutOfRange = moriningCount + eveningCount; break; } + var rotatingFaResult = ""; if (countOutOfRange >= validCount && rotatingShiftCompute) { @@ -820,7 +818,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (rotateNumber == 2) rotatingFaResult += $" و {RotatingfaName[rotateNumber]}"; } - } else { @@ -830,12 +827,13 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll var over22Minuts = (int)(over22.TotalMinutes % 60); shiftOver22Hours = over22Hours.ToString(); shiftOver22Minuts = over22Minuts.ToString(); - } #endregion + //******* محاسبه مبلغ نوبت کاری ************* - #region ShiftPayPercent + + #region ShiftPayPercent if (rotatingFaResult != "نوبت کاری ندارد" || rotatingFaResult != "") { @@ -864,6 +862,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll #endregion #region Result + LeaveSearchModel sickLeaveSearch = new LeaveSearchModel() { EmployeeId = employeeId, @@ -886,7 +885,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll var totalBreakTime = new TimeSpan(groupedRollCall.Sum(x => x.BreakTime.Ticks)); var res = new ComputingViewModel() { - NumberOfWorkingDays = $"{groupedRollCall.Count}", NumberOfFriday = $"{numberOfFridays}", TotalHoursesH = totalHolidaysAndNotH.ToString(), @@ -935,6 +933,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //ساعت موظفی پرسنل در این ماه EmployeeMandatoryHours = mandatoryHoursTimeSpan, + #endregion #region NewDailWage @@ -946,6 +945,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll }; #endregion + return res; } @@ -972,24 +972,27 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll rollCallResult = _context.RollCalls.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate.Value.Date >= contractStart.Date && x.StartDate.Value.Date <= contractEnd.Date && x.EndDate != null).Select(x => new RollCallViewModel() - { - StartDate = x.StartDate, - EndDate = x.EndDate, - ShiftSpan = (x.EndDate.Value - x.StartDate.Value), - CreationDate = x.ShiftDate, - BreakTimeSpan = x.BreakTimeSpan - }).ToList(); + { + StartDate = x.StartDate, + EndDate = x.EndDate, + ShiftSpan = (x.EndDate.Value - x.StartDate.Value), + CreationDate = x.ShiftDate, + BreakTimeSpan = x.BreakTimeSpan + }).ToList(); groupedRollCall = rollCallResult.GroupBy(x => x.CreationDate.Date).Select(x => new GroupedRollCalls() { CreationDate = x.Key, ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value }).ToList(), - HasFriday = x.Any(s => s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)), - SumOneDaySpan = new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)) - CalculateBreakTime(x.First().BreakTimeSpan, + HasFriday = x.Any(s => + s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || + s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)), + SumOneDaySpan = new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)) - CalculateBreakTime( + x.First().BreakTimeSpan, new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))), - BreakTime = CalculateBreakTime(x.First().BreakTimeSpan, new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))), - + BreakTime = + CalculateBreakTime(x.First().BreakTimeSpan, new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))), }).OrderBy(x => x.CreationDate).ToList(); @@ -998,29 +1001,31 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } - public async Task RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd, string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command, bool holidayWorking) + public async Task RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, + DateTime contractEnd, string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command, bool holidayWorking) { List rollCallResult = new List(); List groupedRollCall = new List(); if (hasRollCall) { rollCallResult = await _context.RollCalls.Where(x => - x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate.Value.Date >= contractStart.Date && - x.StartDate.Value.Date <= contractEnd.Date && x.EndDate != null).Select(x => new RollCallViewModel() - { - StartDate = x.StartDate, - EndDate = x.EndDate, - ShiftSpan = (x.EndDate.Value - x.StartDate.Value), - CreationDate = x.ShiftDate, - }).ToListAsync(); + x.EmployeeId == employeeId && x.WorkshopId == workshopId && + x.StartDate.Value.Date >= contractStart.Date && + x.StartDate.Value.Date <= contractEnd.Date && x.EndDate != null).Select(x => new RollCallViewModel() + { + StartDate = x.StartDate, + EndDate = x.EndDate, + ShiftSpan = (x.EndDate.Value - x.StartDate.Value), + CreationDate = x.ShiftDate, + }).ToListAsync(); groupedRollCall = rollCallResult.GroupBy(x => x.CreationDate.Date).Select(x => new GroupedRollCalls() { CreationDate = x.Key, - ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value }).ToList(), - HasFriday = x.Any(s => s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)), - - - + ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value }) + .ToList(), + HasFriday = x.Any(s => + s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || + s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)), }).OrderBy(x => x.CreationDate).ToList(); } else @@ -1033,17 +1038,19 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll groupedRollCall = rollCallResult.GroupBy(x => x.ShiftDate.Date).Select(x => new GroupedRollCalls() { CreationDate = x.Key, - ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value }).ToList(), - HasFriday = x.Any(s => s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)), + ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value }) + .ToList(), + HasFriday = x.Any(s => + s.StartDate != null && s.EndDate != null && (s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || + s.EndDate.Value!.DayOfWeek == DayOfWeek.Friday)), SumOneDaySpan = new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)) - }).OrderBy(x => x.CreationDate).ToList(); } - //****** نوبت کاری و شب کاری **** + #region RotatingShiftCheckAndNightWorkOver22 string shiftPayValue = "0"; @@ -1079,10 +1086,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } - - - - // شبکاری TimeSpan over22 = new TimeSpan(rotatingResultList.Sum(x => x.NightWorkSpan.Ticks)); var RotatingfaName = new List(); @@ -1104,8 +1107,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } - - string maxName; int maxValue = moriningCount; @@ -1115,6 +1116,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll maxValue = eveningCount; maxName = "eveningCount"; } + if (nightCount > maxValue) { maxValue = nightCount; @@ -1135,10 +1137,10 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll countOutOfRange = moriningCount + eveningCount; break; } + var rotatingFaResult = ""; if (countOutOfRange >= validCount) { - if (moriningCount >= 1) RotatingfaName.Add("صبح"); if (eveningCount >= 1) @@ -1154,13 +1156,10 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (rotateNumber == 2) rotatingFaResult += $" و {RotatingfaName[rotateNumber]}"; } - } else { rotatingFaResult = "نوبت کاری ندارد"; - - } @@ -1168,15 +1167,12 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { RotatingStatus = rotatingFaResult, RotatingResultList = rotatingResultList - }; #endregion } - - public static TimeSpan CalculateBreakTime(BreakTime breakTime, TimeSpan sumOneDaySpan) { if (breakTime.BreakTimeType != BreakTimeType.WithTime) @@ -1187,14 +1183,16 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (breakTimeSpan * 2 >= sumOneDaySpan) return new TimeSpan(); - return breakTimeSpan; ; - + return breakTimeSpan; + ; } + public static TimeSpan CalculateBreakTime(TimeSpan breakTimeSpan, TimeSpan sumOneDaySpan) { if (breakTimeSpan * 2 >= sumOneDaySpan) return new TimeSpan(); - return breakTimeSpan; ; + return breakTimeSpan; + ; } public TimeSpan AfterSubtract(CreateWorkingHoursTemp command, TimeSpan sumOneDaySpan, DateTime creationDate) @@ -1275,7 +1273,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } //week1 - #endregion var result = new TimeSpan(); @@ -1362,13 +1359,12 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll nightWorkingTime = nightWorkingTime.Add(morningStart - shift.Start); morningWorkingTime = morningWorkingTime.Add(shift.End - morningStart); } - else if (shift.Start >= midNight24 && shift.Start < morningStart// 00:00---6---14--->22 + else if (shift.Start >= midNight24 && shift.Start < morningStart // 00:00---6---14--->22 && shift.End > morningEnd && shift.End <= eveningEnd) { nightWorkingTime = nightWorkingTime.Add(morningStart - shift.Start); morningWorkingTime = morningWorkingTime.Add(new TimeSpan(8, 0, 0)); eveningWorkingTime = eveningWorkingTime.Add(shift.End - eveningStart); - } else if (shift.Start >= midNight24 // 00:00---6---14----22---->6 && shift.Start < morningStart @@ -1378,34 +1374,33 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll morningWorkingTime = morningWorkingTime.Add(new TimeSpan(8, 0, 0)); eveningWorkingTime = eveningWorkingTime.Add(new TimeSpan(8, 0, 0)); nightWorkingTime = nightWorkingTime.Add(shift.End - eveningEnd); - } #endregion #region morning enter 14 <- 6 + if (shift.Start >= morningStart // 14<---<6 - && shift.End <= morningEnd) + && shift.End <= morningEnd) { morningWorkingTime = morningWorkingTime.Add(shift.End - shift.Start); } else if (shift.Start >= morningStart && shift.Start < morningEnd // 22<---14---6 - && shift.End > eveningStart && shift.End <= eveningEnd) + && shift.End > eveningStart && shift.End <= eveningEnd) { morningWorkingTime = morningWorkingTime.Add(morningEnd - shift.Start); eveningWorkingTime = eveningWorkingTime.Add(shift.End - eveningStart); - } - else if (shift.Start >= morningStart && shift.Start < morningEnd// // 6<---22---14---6 - && shift.End > eveningEnd && shift.End <= nightEndNextday) + else if (shift.Start >= morningStart && shift.Start < morningEnd // // 6<---22---14---6 + && shift.End > eveningEnd && shift.End <= nightEndNextday) { morningWorkingTime = morningWorkingTime.Add(morningEnd - shift.Start); eveningWorkingTime = eveningWorkingTime.Add(new TimeSpan(8, 0, 0)); nightWorkingTime = nightWorkingTime.Add(shift.End - eveningEnd); } else if (shift.Start >= morningStart // 14<---6<---22---14---6 - && shift.Start < morningEnd - && shift.End > nightEndNextday && shift.End <= morningEndNextday) + && shift.Start < morningEnd + && shift.End > nightEndNextday && shift.End <= morningEndNextday) { morningWorkingTime = morningWorkingTime.Add(morningEnd - shift.Start); eveningWorkingTime = eveningWorkingTime.Add(new TimeSpan(8, 0, 0)); @@ -1423,10 +1418,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll morningWorkingTime = morningWorkingTime.Add(new TimeSpan(8, 0, 0)); TimeSpan nextDayEveningSpan = (shift.End - morningEndNextday); eveningWorkingTime = eveningWorkingTime.Add(nextDayEveningSpan); - } - #endregion #region evening enter 22 <- 14 @@ -1441,9 +1434,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { eveningWorkingTime = eveningWorkingTime.Add(eveningEnd - shift.Start); nightWorkingTime = nightWorkingTime.Add(shift.End - eveningEnd); - } - else if (shift.Start >= eveningStart && shift.Start < eveningEnd// // 14<---6---22---14 + else if (shift.Start >= eveningStart && shift.Start < eveningEnd // // 14<---6---22---14 && shift.End > nightEndNextday && shift.End <= morningEndNextday) { eveningWorkingTime = eveningWorkingTime.Add(eveningEnd - shift.Start); @@ -1464,6 +1456,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll #endregion #region night enter 6 <- 22 + if (shift.Start >= nightStart // 6<---<22 && shift.End <= nightEndNextday) { @@ -1474,12 +1467,12 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { nightWorkingTime = nightWorkingTime.Add(nightEndNextday - shift.Start); morningWorkingTime = morningWorkingTime.Add(shift.End - nightEndNextday); - } - else if (shift.Start >= nightStart && shift.Start < nightEndNextday// // 22<---14---6---22 + else if (shift.Start >= nightStart && shift.Start < nightEndNextday // // 22<---14---6---22 && shift.End > morningEndNextday && shift.End <= eveningEndNextday) { - nightWorkingTime = nightWorkingTime.Add(nightEndNextday - shift.Start); ; + nightWorkingTime = nightWorkingTime.Add(nightEndNextday - shift.Start); + ; morningWorkingTime = morningWorkingTime.Add(new TimeSpan(8, 0, 0)); eveningWorkingTime = eveningWorkingTime.Add(shift.End - morningEndNextday); } @@ -1487,18 +1480,16 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll && shift.Start < nightEndNextday && shift.End > eveningEndNextday) { - nightWorkingTime = nightWorkingTime.Add(nightEndNextday - shift.Start); morningWorkingTime = morningWorkingTime.Add(new TimeSpan(8, 0, 0)); eveningWorkingTime = eveningWorkingTime.Add(new TimeSpan(8, 0, 0)); TimeSpan nextDayNightSpan = (shift.End - eveningEndNextday); nightWorkingTime = nightWorkingTime.Add(nextDayNightSpan); } + #endregion - - - } + #region Result var result = new RotatingShiftViewModel(); @@ -1544,7 +1535,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (result.MorningWorkSpan > result.EveningWorkSpan || result.MorningWorkSpan == result.EveningWorkSpan) // if morning bigerThan evening or equal { - if (result.MorningWorkSpan != nullWorkspan) { var sumSpan = result.MorningWorkSpan.Add(result.EveningWorkSpan); @@ -1555,7 +1545,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll result.IsNightShift = false; result.IsEveningShift = false; result.RotatingShiftStatus = "صبح"; - } if (result.MorningWorkSpan < result.NightWorkSpan @@ -1602,17 +1591,19 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } finalResult.Add(result); + #endregion } return finalResult; - } - public List ConvertStaticHoursToRollCall(CreateWorkingHoursTemp command, bool workshopHolidyWorking) + public List ConvertStaticHoursToRollCall(CreateWorkingHoursTemp command, + bool workshopHolidyWorking) { var rollCallList = new List(); + #region Entities var sdate = command.ContarctStart.ToEnglishNumber(); @@ -1646,7 +1637,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll #endregion - #region SumRestTimesOneShift var rest0 = new TimeSpan(); @@ -1690,7 +1680,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll var rest6w4 = new TimeSpan(); if (command.ShiftWork == "4") { - //week1 command.RestTimeShanbe1 = command.RestTimeShanbe1 == "0" ? "00" : command.RestTimeShanbe1; command.RestTimeShanbe1Min = command.RestTimeShanbe1Min == "0" ? "00" : command.RestTimeShanbe1Min; @@ -1814,13 +1803,12 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll rest4w4 = TimeSpan.Parse($"{command.RestTimeCheharShanbe4}:{command.RestTimeCheharShanbe4Min}"); rest5w4 = TimeSpan.Parse($"{command.RestTimePanjShanbe4}:{command.RestTimePanjShanbe4Min}"); rest6w4 = TimeSpan.Parse($"{command.RestTimeJome4}:{command.RestTimeJome4Min}"); - } - #endregion #region Complex + //[12-24 : 5] [24-24 : 6] [12-36 : 7] [24-48 : 8] if (command.ShiftWork is "5" or "6" or "7" or "8") { @@ -1875,6 +1863,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll }; thisCheckoutLeaves.Add(modifyleave); } + // مرخصی که پایانش بعد از پایان تصفیه حساب است if (leave.EndLeaveGr > contractEnd && leave.StartLeaveGr >= contractStart) { @@ -1903,29 +1892,30 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll for (var da = startDateAndTime; da <= endContract; da = da.AddHours(addHours)) { - - var currentDateFa = $"{da}"; var currentDateGr = da.ToGregorianDateTime(); if (da == startContract) { - start = new DateTime(currentDateGr.Year, currentDateGr.Month, currentDateGr.Day, start.Hour, start.Minute, 0); - end = new DateTime(currentDateGr.Year, currentDateGr.Month, currentDateGr.Day, end.Hour, end.Minute, 0); + start = new DateTime(currentDateGr.Year, currentDateGr.Month, currentDateGr.Day, start.Hour, + start.Minute, 0); + end = new DateTime(currentDateGr.Year, currentDateGr.Month, currentDateGr.Day, end.Hour, end.Minute, + 0); if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay) end = end.AddDays(1); if ((command.ShiftWork is "6" or "8") && start == end) end = end.AddDays(1); - } var startComplex = new DateTime(start.Year, start.Month, start.Day, start.Hour, start.Minute, start.Second); var endComplex = new DateTime(end.Year, end.Month, end.Day, end.Hour, end.Minute, end.Second); - Console.WriteLine($"{currentDateFa} - {currentDateGr.Date} - start : {startComplex} end : {endComplex}"); + Console.WriteLine( + $"{currentDateFa} - {currentDateGr.Date} - start : {startComplex} end : {endComplex}"); - var hasLeave = thisCheckoutLeaves.Any(x => startComplex.Date <= x.EndLeaveGr.Date && endComplex.Date >= x.StartLeaveGr.Date); + var hasLeave = thisCheckoutLeaves.Any(x => + startComplex.Date <= x.EndLeaveGr.Date && endComplex.Date >= x.StartLeaveGr.Date); if (!hasLeave) { rollCallList.Add(new RollCallViewModel() @@ -1939,7 +1929,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } else { - var affected = thisCheckoutLeaves.FirstOrDefault(x => startComplex.Date <= x.EndLeaveGr.Date && endComplex.Date >= x.StartLeaveGr.Date); + var affected = thisCheckoutLeaves.FirstOrDefault(x => + startComplex.Date <= x.EndLeaveGr.Date && endComplex.Date >= x.StartLeaveGr.Date); var modifyleave = new LeaveViewModel() { Id = affected.Id, @@ -1950,15 +1941,12 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } - var endCal = end - start; start = startComplex.AddHours(addHours); end = start.Add(endCal); - } - affectedLeaves = affectedLeaves.DistinctBy(x => x.Id).ToList(); //مرخصی هایی که تاریخ آن ها بین رکورد های حضور پرسنل بوده و اعمال نشده @@ -1973,13 +1961,11 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll int takRollCall = exceptionLeaves.Count < countRollCall ? (countRollCall - exceptionLeaves.Count) : 0; rollCallList = rollCallList.Take(takRollCall).ToList(); } - } #endregion - #region ShiftWork4Compute if (command.ShiftWork == "4") @@ -2001,6 +1987,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { isHoliday = holidayList.Any(x => x == currentDateFa); } + switch (FirstDayOfMonth.DayOfWeek) { case "شنبه": @@ -2061,7 +2048,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (((da.Day <= w1) || (da.Day > w4 && da.Day <= w5)) && command.Shanbe1 && isHoliday == false) { - var res = FindStaticShiftsStatus( command.SingleShift1Shanbe1, command.SingleShift2Shanbe1, @@ -2069,11 +2055,10 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll command.TowShifts2Shanbe1, currntDateGr, rest0w1, leaveSearchResult); if (res.Count > 0) rollCallList.AddRange(res); - } - else if (((da.Day > w1 && da.Day <= w2) || (da.Day > w5 && da.Day <= w6)) && command.Shanbe2 && isHoliday == false) + else if (((da.Day > w1 && da.Day <= w2) || (da.Day > w5 && da.Day <= w6)) && command.Shanbe2 && + isHoliday == false) { - var res = FindStaticShiftsStatus( command.SingleShift1Shanbe2, command.SingleShift2Shanbe2, @@ -2081,11 +2066,9 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll command.TowShifts2Shanbe2, currntDateGr, rest0w2, leaveSearchResult); if (res.Count > 0) rollCallList.AddRange(res); - } else if (da.Day > w2 && da.Day <= w3 && command.Shanbe3 && isHoliday == false) { - var res = FindStaticShiftsStatus( command.SingleShift1Shanbe3, command.SingleShift2Shanbe3, @@ -2093,7 +2076,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll command.TowShifts2Shanbe3, currntDateGr, rest0w3, leaveSearchResult); if (res.Count > 0) rollCallList.AddRange(res); - } else if (da.Day > w3 && da.Day <= w4 && command.Shanbe4 && isHoliday == false) { @@ -2104,11 +2086,12 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll command.TowShifts2Shanbe4, currntDateGr, rest0w3, leaveSearchResult); if (res.Count > 0) rollCallList.AddRange(res); - } + break; case "یکشنبه": - if (((da.Day <= w1) || (da.Day > w4 && da.Day <= w5)) && command.YekShanbe1 && isHoliday == false) + if (((da.Day <= w1) || (da.Day > w4 && da.Day <= w5)) && command.YekShanbe1 && + isHoliday == false) { var res = FindStaticShiftsStatus( command.SingleShift1YekShanbe1, @@ -2118,7 +2101,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (res.Count > 0) rollCallList.AddRange(res); } - else if (((da.Day > w1 && da.Day <= w2) || (da.Day > w5 && da.Day <= w6)) && command.YekShanbe2 && isHoliday == false) + else if (((da.Day > w1 && da.Day <= w2) || (da.Day > w5 && da.Day <= w6)) && + command.YekShanbe2 && isHoliday == false) { var res = FindStaticShiftsStatus( command.SingleShift1YekShanbe2, @@ -2140,7 +2124,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } else if (da.Day > w3 && da.Day <= w4 && command.YekShanbe4 && isHoliday == false) { - var res = FindStaticShiftsStatus( command.SingleShift1YekShanbe4, command.SingleShift2YekShanbe4, @@ -2149,9 +2132,11 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (res.Count > 0) rollCallList.AddRange(res); } + break; case "دوشنبه": - if (((da.Day <= w1) || (da.Day > w4 && da.Day <= w5)) && command.DoShanbe1 && isHoliday == false) + if (((da.Day <= w1) || (da.Day > w4 && da.Day <= w5)) && command.DoShanbe1 && + isHoliday == false) { var res = FindStaticShiftsStatus( command.SingleShift1DoShanbe1, @@ -2161,7 +2146,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (res.Count > 0) rollCallList.AddRange(res); } - else if (((da.Day > w1 && da.Day <= w2) || (da.Day > w5 && da.Day <= w6)) && command.DoShanbe2 && isHoliday == false) + else if (((da.Day > w1 && da.Day <= w2) || (da.Day > w5 && da.Day <= w6)) && + command.DoShanbe2 && isHoliday == false) { var res = FindStaticShiftsStatus( command.SingleShift1DoShanbe2, @@ -2180,11 +2166,9 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll command.TowShifts2DoShanbe3, currntDateGr, rest2w3, leaveSearchResult); if (res.Count > 0) rollCallList.AddRange(res); - } else if (da.Day > w3 && da.Day <= w4 && command.DoShanbe4 && isHoliday == false) { - var res = FindStaticShiftsStatus( command.SingleShift1DoShanbe4, command.SingleShift2DoShanbe4, @@ -2197,7 +2181,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll break; case "سه شنبه": - if (((da.Day <= w1) || (da.Day > w4 && da.Day <= w5)) && command.SeShanbe1 && isHoliday == false) + if (((da.Day <= w1) || (da.Day > w4 && da.Day <= w5)) && command.SeShanbe1 && + isHoliday == false) { var res = FindStaticShiftsStatus( command.SingleShift1SeShanbe1, @@ -2207,7 +2192,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (res.Count > 0) rollCallList.AddRange(res); } - else if (((da.Day > w1 && da.Day <= w2) || (da.Day > w5 && da.Day <= w6)) && command.SeShanbe2 && isHoliday == false) + else if (((da.Day > w1 && da.Day <= w2) || (da.Day > w5 && da.Day <= w6)) && + command.SeShanbe2 && isHoliday == false) { var res = FindStaticShiftsStatus( command.SingleShift1SeShanbe2, @@ -2237,9 +2223,11 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (res.Count > 0) rollCallList.AddRange(res); } + break; case "چهارشنبه": - if (((da.Day <= w1) || (da.Day > w4 && da.Day <= w5)) && command.CheharShanbe1 && isHoliday == false) + if (((da.Day <= w1) || (da.Day > w4 && da.Day <= w5)) && command.CheharShanbe1 && + isHoliday == false) { var res = FindStaticShiftsStatus( command.SingleShift1CheharShanbe1, @@ -2249,7 +2237,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (res.Count > 0) rollCallList.AddRange(res); } - else if (((da.Day > w1 && da.Day <= w2) || (da.Day > w5 && da.Day <= w6)) && command.CheharShanbe2 && isHoliday == false) + else if (((da.Day > w1 && da.Day <= w2) || (da.Day > w5 && da.Day <= w6)) && + command.CheharShanbe2 && isHoliday == false) { var res = FindStaticShiftsStatus( command.SingleShift1CheharShanbe2, @@ -2279,9 +2268,11 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (res.Count > 0) rollCallList.AddRange(res); } + break; case "پنج شنبه": - if (((da.Day <= w1) || (da.Day > w4 && da.Day <= w5)) && command.PanjShanbe2 && isHoliday == false) + if (((da.Day <= w1) || (da.Day > w4 && da.Day <= w5)) && command.PanjShanbe2 && + isHoliday == false) { var res = FindStaticShiftsStatus( command.SingleShift1PanjShanbe1, @@ -2291,7 +2282,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (res.Count > 0) rollCallList.AddRange(res); } - else if (((da.Day > w1 && da.Day <= w2) || (da.Day > w5 && da.Day <= w6)) && command.PanjShanbe2 && isHoliday == false) + else if (((da.Day > w1 && da.Day <= w2) || (da.Day > w5 && da.Day <= w6)) && + command.PanjShanbe2 && isHoliday == false) { var res = FindStaticShiftsStatus( command.SingleShift1PanjShanbe2, @@ -2321,6 +2313,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (res.Count > 0) rollCallList.AddRange(res); } + break; case "جمعه": if (((da.Day <= w1) || (da.Day > w4 && da.Day <= w5)) && command.Jome1) @@ -2363,9 +2356,9 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (res.Count > 0) rollCallList.AddRange(res); } + break; } - } } @@ -2390,24 +2383,21 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll var shift2EndGr = new DateTime(); if (leaveSearchResult.Count > 0) { - leaveSearchResult = leaveSearchResult.Select(x => new LeaveViewModel() { LeaveHourses = x.LeaveHourses, LeaveType = x.LeaveType, PaidLeaveType = x.PaidLeaveType, StartLeaveGr = x.StartLeaveGr, - EndLeaveGr = x.PaidLeaveType == "روزانه" ? new DateTime(x.EndLeaveGr.Year, x.EndLeaveGr.Month, x.EndLeaveGr.Day, 23, 59, 59) : x.EndLeaveGr, + EndLeaveGr = x.PaidLeaveType == "روزانه" + ? new DateTime(x.EndLeaveGr.Year, x.EndLeaveGr.Month, x.EndLeaveGr.Day, 23, 59, 59) + : x.EndLeaveGr, }).ToList(); } #region Shift1 - - - - if (!string.IsNullOrWhiteSpace(shift1Start) && !string.IsNullOrWhiteSpace(shift1End)) { try @@ -2418,8 +2408,10 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll bool hasRestTime = false; - shift1StartGr = new DateTime(cuurentDate.Year, cuurentDate.Month, cuurentDate.Day, starTimeSingel1.Hour, starTimeSingel1.Minute, 0); - shift1EndGr = new DateTime(cuurentDate.Year, cuurentDate.Month, cuurentDate.Day, endTimeSingel2.Hour, endTimeSingel2.Minute, 0); + shift1StartGr = new DateTime(cuurentDate.Year, cuurentDate.Month, cuurentDate.Day, starTimeSingel1.Hour, + starTimeSingel1.Minute, 0); + shift1EndGr = new DateTime(cuurentDate.Year, cuurentDate.Month, cuurentDate.Day, endTimeSingel2.Hour, + endTimeSingel2.Minute, 0); if (shift1EndGr.TimeOfDay < shift1StartGr.TimeOfDay) shift1EndGr = shift1EndGr.AddDays(1); @@ -2432,10 +2424,10 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll hasRestTime = true; shift1EndGr = shift1EndGr.Subtract(restTime); shiftSpan = (shift1EndGr - shift1StartGr); - } - if (!leaveSearchResult.Any(x => x.StartLeaveGr < shift1EndGr && x.EndLeaveGr > shift1StartGr && x.PaidLeaveType == "روزانه")) + if (!leaveSearchResult.Any(x => + x.StartLeaveGr < shift1EndGr && x.EndLeaveGr > shift1StartGr && x.PaidLeaveType == "روزانه")) { var hourseLeaveTypeResult = leaveSearchResult.FirstOrDefault(x => x.StartLeaveGr < shift1EndGr && x.EndLeaveGr > shift1StartGr && x.PaidLeaveType == "ساعتی"); @@ -2453,8 +2445,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } else { - - if (hourseLeaveTypeResult.StartLeaveGr <= shift1StartGr && hourseLeaveTypeResult.EndLeaveGr < shift1EndGr) + if (hourseLeaveTypeResult.StartLeaveGr <= shift1StartGr && + hourseLeaveTypeResult.EndLeaveGr < shift1EndGr) { //leave <--------------------> //shift <----------------------------------> @@ -2466,10 +2458,10 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll ShiftSpan = (shift1EndGr - hourseLeaveTypeResult.EndLeaveGr), ShiftDate = shift1StartGr, ShiftEndWithoutRest = shiftEndWithoutRest - }); } - else if (hourseLeaveTypeResult.StartLeaveGr > shift1StartGr && hourseLeaveTypeResult.EndLeaveGr < shift1EndGr) + else if (hourseLeaveTypeResult.StartLeaveGr > shift1StartGr && + hourseLeaveTypeResult.EndLeaveGr < shift1EndGr) { //leave <--------------------> //shift <----------------------------------> @@ -2481,7 +2473,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll ShiftSpan = (hourseLeaveTypeResult.StartLeaveGr - shift1StartGr), ShiftDate = shift1StartGr, ShiftEndWithoutRest = hourseLeaveTypeResult.StartLeaveGr - }); result.Add(new RollCallViewModel() @@ -2492,10 +2483,10 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll ShiftSpan = (shift1EndGr - hourseLeaveTypeResult.EndLeaveGr), ShiftDate = shift1StartGr, ShiftEndWithoutRest = shiftEndWithoutRest - }); } - else if (hourseLeaveTypeResult.StartLeaveGr > shift1StartGr && hourseLeaveTypeResult.EndLeaveGr >= shift1EndGr) + else if (hourseLeaveTypeResult.StartLeaveGr > shift1StartGr && + hourseLeaveTypeResult.EndLeaveGr >= shift1EndGr) { //leave <--------------------> //shift <----------------------------------> @@ -2508,16 +2499,10 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll ShiftSpan = (hourseLeaveTypeResult.StartLeaveGr - shift1StartGr), ShiftDate = shift1StartGr, ShiftEndWithoutRest = hourseLeaveTypeResult.StartLeaveGr - }); - } - - } - } - } catch (Exception e) { @@ -2533,8 +2518,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { try { - - var startTimeTowSh1 = Convert.ToDateTime(shift2Start); var endTimeTowSh2 = Convert.ToDateTime(shift2End); @@ -2546,20 +2529,21 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll cuurentDate = shift1.EndDate.Value; - shift2StartGr = new DateTime(cuurentDate.Year, cuurentDate.Month, cuurentDate.Day, startTimeTowSh1.Hour, startTimeTowSh1.Minute, 0); - shift2EndGr = new DateTime(cuurentDate.Year, cuurentDate.Month, cuurentDate.Day, endTimeTowSh2.Hour, endTimeTowSh2.Minute, 0); + shift2StartGr = new DateTime(cuurentDate.Year, cuurentDate.Month, cuurentDate.Day, startTimeTowSh1.Hour, + startTimeTowSh1.Minute, 0); + shift2EndGr = new DateTime(cuurentDate.Year, cuurentDate.Month, cuurentDate.Day, endTimeTowSh2.Hour, + endTimeTowSh2.Minute, 0); if (shift2EndGr.TimeOfDay < shift2StartGr.TimeOfDay) shift2EndGr = shift2EndGr.AddDays(1); - if (!leaveSearchResult.Any(x => x.StartLeaveGr < shift2EndGr && x.EndLeaveGr > shift2StartGr && x.PaidLeaveType == "روزانه")) + if (!leaveSearchResult.Any(x => + x.StartLeaveGr < shift2EndGr && x.EndLeaveGr > shift2StartGr && x.PaidLeaveType == "روزانه")) { var hourseLeaveTypeResult = leaveSearchResult.FirstOrDefault(x => x.StartLeaveGr < shift2EndGr && x.EndLeaveGr > shift2StartGr && x.PaidLeaveType == "ساعتی"); if (hourseLeaveTypeResult == null) { - - result.Add(new RollCallViewModel() { StartDate = shift2StartGr, @@ -2571,8 +2555,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } else { - - if (hourseLeaveTypeResult.StartLeaveGr <= shift2StartGr && hourseLeaveTypeResult.EndLeaveGr < shift2EndGr) + if (hourseLeaveTypeResult.StartLeaveGr <= shift2StartGr && + hourseLeaveTypeResult.EndLeaveGr < shift2EndGr) { //leave <--------------------> //shift <----------------------------------> @@ -2585,7 +2569,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll ShiftEndWithoutRest = shift2EndGr, }); } - else if (hourseLeaveTypeResult.StartLeaveGr > shift2StartGr && hourseLeaveTypeResult.EndLeaveGr < shift2EndGr) + else if (hourseLeaveTypeResult.StartLeaveGr > shift2StartGr && + hourseLeaveTypeResult.EndLeaveGr < shift2EndGr) { //leave <--------------------> //shift <----------------------------------> @@ -2607,7 +2592,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll ShiftEndWithoutRest = shift2EndGr, }); } - else if (hourseLeaveTypeResult.StartLeaveGr > shift2StartGr && hourseLeaveTypeResult.EndLeaveGr >= shift2EndGr) + else if (hourseLeaveTypeResult.StartLeaveGr > shift2StartGr && + hourseLeaveTypeResult.EndLeaveGr >= shift2EndGr) { //leave <--------------------> //shift <----------------------------------> @@ -2620,14 +2606,9 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll ShiftDate = shift1?.EndDate ?? shift2EndGr, ShiftEndWithoutRest = hourseLeaveTypeResult.StartLeaveGr, }); - } - - } - } - } catch (Exception e) { @@ -2639,10 +2620,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll return result; - } - #endregion @@ -2656,7 +2635,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll /// /// /// - public CustomizeCheckoutMandatoryViewModel CustomizeCheckoutMandatoryCompute(long employeeId, long workshopId, DateTime contractStart, + public CustomizeCheckoutMandatoryViewModel CustomizeCheckoutMandatoryCompute(long employeeId, long workshopId, + DateTime contractStart, DateTime contractEnd) { var checkoutEnd = contractEnd; @@ -2668,7 +2648,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll #region LeftWork - var leftWork = _leftWorkRepository.GetByWorkshopIdEmployeeIdInDates(workshopId, employeeId, contractStart, contractEnd); + var leftWork = + _leftWorkRepository.GetByWorkshopIdEmployeeIdInDates(workshopId, employeeId, contractStart, contractEnd); if (leftWork.StartWorkDateGr > contractStart) { @@ -2680,8 +2661,9 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll contractEnd = leftWork.LeftWorkDateGr.AddDays(-1); } - TimeSpan leftWorkDurationTimeSpan = leftWork.HasLeft ? leftWork.LeftWorkDateGr.AddDays(-1) - leftWork.StartWorkDateGr : contractEnd - leftWork.StartWorkDateGr; - + TimeSpan leftWorkDurationTimeSpan = leftWork.HasLeft + ? leftWork.LeftWorkDateGr.AddDays(-1) - leftWork.StartWorkDateGr + : contractEnd - leftWork.StartWorkDateGr; #endregion @@ -2702,20 +2684,23 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll TimeSpan contractDuration = contractEnd - contractStart; var employee = _context.Employees.FirstOrDefault(x => x.id == employeeId); var personnelCode = - _context.PersonnelCodeSet.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId)?.PersonnelCode ?? 0; + _context.PersonnelCodeSet.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId) + ?.PersonnelCode ?? 0; var contract = _context.Contracts.Where(x => x.WorkshopIds == workshopId && x.EmployeeId == employeeId && x.ContractEnd.Date >= contractStart.Date && - x.ContarctStart.Date <= contractEnd.Date).ToList()?.MaxBy(x => x.ContarctStart); + x.ContarctStart.Date <= contractEnd.Date).ToList() + ?.MaxBy(x => x.ContarctStart); var totalDays = (int)(contractEnd - contractStart).TotalDays + 1; mandatoryDays = totalDays; - #endregion + #endregion #region CustomizeSettings - CustomizeWorkshopEmployeeSettings customizeWorkshopEmployeeSettings = _context.CustomizeWorkshopEmployeeSettings.AsSplitQuery().FirstOrDefault(x => - x.WorkshopId == workshopId && x.EmployeeId == employeeId); + CustomizeWorkshopEmployeeSettings customizeWorkshopEmployeeSettings = _context.CustomizeWorkshopEmployeeSettings + .AsSplitQuery().FirstOrDefault(x => + x.WorkshopId == workshopId && x.EmployeeId == employeeId); CustomizeWorkshopSettings customizeWorkshopSettings = _context.CustomizeWorkshopSettings.FirstOrDefault(x => x.WorkshopId == workshopId); //ToDo handel exception if is null @@ -2739,7 +2724,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll Placement = x.Placement, ShiftSpan = span }; - }); var sumOfEmployeeShiftSpan = new TimeSpan(employeeShiftsSpans.Sum(x => x.ShiftSpan.Ticks)); @@ -2753,11 +2737,13 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { sumOfEmployeeShiftSpan -= customizeWorkshopEmployeeSettings.BreakTime.BreakTimeValue.ToTimeSpan(); } + #endregion List rollCallResult = _context.RollCalls.Where(x => - x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate.Value.Date >= contractStart.Date && - x.StartDate.Value.Date <= contractEnd.Date && x.EndDate != null) + x.EmployeeId == employeeId && x.WorkshopId == workshopId && + x.StartDate.Value.Date >= contractStart.Date && + x.StartDate.Value.Date <= contractEnd.Date && x.EndDate != null) .Select(x => new RollCallViewModel() { StartDate = x.StartDate, @@ -2768,20 +2754,22 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll }).ToList(); + List groupedRollCall = rollCallResult.GroupBy(x => x.StartDate!.Value.Date).Select(x => + new GroupedRollCalls() + { + CreationDate = x.Key, + ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value }) + .ToList(), + HasFriday = x.Any(s => + s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || s.EndDate.Value.DayOfWeek == DayOfWeek.Friday), + SumOneDaySpan = new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)) - CalculateBreakTime( + x.First().BreakTimeSpan, + new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))), - List groupedRollCall = rollCallResult.GroupBy(x => x.StartDate!.Value.Date).Select(x => new GroupedRollCalls() - { - CreationDate = x.Key, - ShiftList = x.Select(s => new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value }).ToList(), - HasFriday = x.Any(s => s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || s.EndDate.Value.DayOfWeek == DayOfWeek.Friday), - - SumOneDaySpan = new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)) - CalculateBreakTime(x.First().BreakTimeSpan, - new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))), - - BreakTime = CalculateBreakTime(x.First().BreakTimeSpan, new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))) - }).ToList(); - + BreakTime = CalculateBreakTime(x.First().BreakTimeSpan, + new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))) + }).ToList(); TimeSpan sumSpans = new TimeSpan(groupedRollCall.Sum(x => x.SumOneDaySpan.Ticks)); @@ -2814,7 +2802,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll fridays = fridays - fridayWorkingTotalDays; mandatoryDays -= fridays; - } if (customizeWorkshopEmployeeSettings.HolidayWork == HolidayWork.Default) @@ -2825,697 +2812,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll holiday = holiday - holidayWorkingDays; mandatoryDays -= holiday; - - } - TimeSpan absentTimeSpans = new(); - - if ((mandatoryDays * sumOfEmployeeShiftSpan) > sumSpans) - { - absentTimeSpans = (mandatoryDays * sumOfEmployeeShiftSpan) - sumSpans; - } - - dailyWage = monthySalary / monthDays; - - var minuteWage = sumOfEmployeeShiftSpan.TotalMinutes == 0 ? 0 : (dailyWage / sumOfEmployeeShiftSpan.TotalMinutes); - - - - // یافتن مرخصی ساعتی - #region LeavHourse - - LeaveSearchModel leaveHourseSearch = new LeaveSearchModel() - { - EmployeeId = employeeId, - WorkshopId = workshopId, - LeaveType = "استحقاقی", - - StartLeaveGr = contractStart, - EndLeaveGr = contractEnd, - IsAccepted = true, - }; - List leaveList = _leaveRepository.search(leaveHourseSearch); - - #endregion - - //****افزودن مرخصی پرسنل به مجموع ساعات کار*** - #region AddEmployeeLeaves - - //TimeSpan workingPerDayAve = sumSpans / numberOfWorkingDay;//میانگین ساعت کار در روز - - - - //if (workingPerDayAve <= new TimeSpan(7, 20, 0)) - //{ - // sumLeave = leavingDayCout * workingPerDayAve; - //} - //else - //{ - // sumLeave = leavingDayCout * new TimeSpan(7, 20, 0); - //} - - - - double leavePayAmount = 0; - double absentsDeductionAmount = 0; - if (customizeWorkshopEmployeeSettings.LeavePay.LeavePayType != LeavePayType.None) - { - int permittedDays = customizeWorkshopEmployeeSettings.LeavePermittedDays; - double leaveValue = customizeWorkshopEmployeeSettings.LeavePay.Value; - sumSpans = CalculateLeavePay(sumOfEmployeeShiftSpan, absentTimeSpans, permittedDays, monthDays, contractDays, sumSpans - , leaveValue, minuteWage, contractStart, contractEnd, out leavePayAmount, out absentsDeductionAmount); - } - else - { - absentsDeductionAmount = absentTimeSpans.TotalMinutes * minuteWage; - } - - - - - - Console.WriteLine(sumSpans); - #endregion - - //***********************************// - //ToTal Hours Employee Worked - double totalHours = (sumSpans.TotalMinutes) / 60; - int totalHolidaysAndNotH = (int)sumSpans.TotalHours; - int totalHolidaysAndNotM = (int)(sumSpans.TotalMinutes % 60); - //***********************************// - - - - #region Deductions - - //غیبت - - //تاخیر و تعجیل - - - //حق بیمه - #region InsurancePay - - InsuranceDeduction insuranceDeduction = customizeWorkshopEmployeeSettings.InsuranceDeduction; - //farokhiChange - double insuranceDeductionAmount = InsurancePayCalculation(employeeId, contractStart, contractEnd, insuranceDeduction, monthySalary); - #endregion - #region SalaryAidDeduction - - var salaryAidViewModel = SalaryAidsForCheckout(employeeId, workshopId, checkoutStart, checkoutEnd); - double salaryAidDeduction = salaryAidViewModel.Sum(x => x.AmountDouble); - - #endregion - - #region Loan - - var loanInstallments = LoanInstallmentForCheckout(employeeId, workshopId, contractStart, contractEnd); - - double loanDeduction = loanInstallments.Sum(x => x.AmountDouble); - - #endregion - - #region Fine - - var fineViewModels = FinesForCheckout(employeeId, workshopId, contractStart, contractEnd); - double fineDeduction = fineViewModels.Sum(x => x.Amount.MoneyToDouble()); - - #endregion - - - #endregion - - - #region Payments - //اضافه کاری - #region OvertimePay - - double overtimePayAmount = 0; - - - - TimeSpan overtimeTimeSpan; - - if (customizeWorkshopSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular && customizeWorkshopEmployeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular) - { - TimeOnly employeeOffSet = customizeWorkshopSettings.EndTimeOffSet; - overtimeTimeSpan = CalculateOvertimeTimeSpan(rollCallResult, shiftSettings, employeeOffSet); - } - else if (customizeWorkshopEmployeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular) - { - var date = new DateOnly(); - var firstStartShift = new DateTime(date, customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts.MinBy(x => x.Placement).StartTime); - var lastEndShift = new DateTime(date, customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts.MaxBy(x => x.Placement).EndTime); - if (lastEndShift > firstStartShift) - firstStartShift = firstStartShift.AddDays(1); - var offSet = (firstStartShift - lastEndShift).Divide(2); - var employeeOffSet = TimeOnly.FromDateTime(lastEndShift.Add(offSet)); - - overtimeTimeSpan = CalculateOvertimeTimeSpan(rollCallResult, shiftSettings, employeeOffSet); - } - else - { - var irregularShifts = customizeWorkshopEmployeeSettings.IrregularShift.WorkshopIrregularShifts; - overtimeTimeSpan = CalculateIrregularOverTime(rollCallResult, sumOfEmployeeShiftSpan, irregularShifts, mandatoryDays); - //Todo: fix for irregular and rotating shifts - } - overtimePayAmount = CalculateOvertimePay(overtimeTimeSpan, customizeWorkshopEmployeeSettings.OverTimePay, dailyWage); - if (overtimePayAmount >= absentsDeductionAmount) - { - overtimePayAmount = overtimePayAmount - absentsDeductionAmount; - absentsDeductionAmount = 0; - } - else - { - absentsDeductionAmount = absentsDeductionAmount - overtimePayAmount; - overtimePayAmount = 0; - } - #endregion - - #region FridayPay - double fridayPayAmount = 0; - - fridayPayAmount = FridayPayCalculation(customizeWorkshopEmployeeSettings, rollCallResult, dailyWage, shiftSettings, overtimePayAmount); - - - #endregion - - //حق تاهل - #region MaritalAllownace - double maritalAllowancePay = 0; - if (employee.MaritalStatus == "متاهل") - { - switch (customizeWorkshopEmployeeSettings.MarriedAllowance.MarriedAllowanceType) - { - case MarriedAllowanceType.Money: - { - maritalAllowancePay = customizeWorkshopEmployeeSettings.MarriedAllowance.Value; - break; - } - //case MarriedAllowanceType.PercentageFromSalary: - - // { - // double multiplier = customizeWorkshopEmployeeSettings.MarriedAllowance.Value / 100; - // maritalAllowance = dailyWage * multiplier; - // break; - // } - } - } - #endregion - - //شب کاری - #region NightWorkPay - double nightworkPayAmount = 0; - List rotatingResultList = RotatingShiftCheck(groupedRollCall); - - // شبکاری - TimeSpan nightWorks = new TimeSpan(rotatingResultList.Sum(x => x.NightWorkSpan.Ticks)); - - if (nightWorks > new TimeSpan()) - { - switch (customizeWorkshopEmployeeSettings.NightWorkPay.NightWorkingType) - { - case NightWorkType.MoneyPerHour: - { - var baseAmount = customizeWorkshopEmployeeSettings.NightWorkPay.Value; - var nightWorkMinutes = (int)(nightWorks).TotalMinutes; - nightworkPayAmount += nightWorkMinutes * (baseAmount / 60); - break; - } - case NightWorkType.PercentageFromSalary: - { - double multiplier = customizeWorkshopEmployeeSettings.NightWorkPay.Value / 100; - var nightWorkMinutes = (int)(nightWorks).TotalMinutes; - nightworkPayAmount += ((dailyWage * multiplier) / 60) * nightWorkMinutes; - break; - } - - - } - } - #endregion - - //سنوات - #region BaseYearsPay - double baseYearsPayAmount = CalculateYearsPayAmount(employeeId, workshopId, monthySalary, contractStart, contractEnd - , customizeWorkshopEmployeeSettings.BaseYearsPay, customizeWorkshopSettings.BaseYearsPayInEndOfYear, customizeWorkshopSettings.MaxMonthDays); - - #endregion - //حق اولاد - - #region FamilyAllowancePay - double familyAllowancePay = 0; - switch (customizeWorkshopEmployeeSettings.FamilyAllowance.FamilyAllowanceType) - { - case FamilyAllowanceType.Money: - { - double baseAmount = customizeWorkshopEmployeeSettings.FamilyAllowance.Value; - familyAllowancePay = CalculateFamilyAllowancePayAmount(employeeId, baseAmount, contractEnd); - break; - } - - case FamilyAllowanceType.Percentage: - { - double multiplier = customizeWorkshopEmployeeSettings.FamilyAllowance.Value / 100; - familyAllowancePay = CalculateFamilyAllowancePayAmount(employeeId, multiplier * monthySalary, contractEnd); - break; - } - } - #endregion - #region Reward - - var rewardViewModels = RewardForCheckout(employeeId, workshopId, checkoutEnd, checkoutStart); - - double rewardPay = rewardViewModels.Sum(x => x.AmountDouble); - #endregion - - #region LeavePay - - - - #endregion - - #region BonusesPay - - double bonusesPayAmount = 0; - - - if (customizeWorkshopEmployeeSettings.BonusesPay.BonusesPayType != BonusesType.None) - { - switch (customizeWorkshopEmployeeSettings.BonusesPay.BonusesPayType) - { - case BonusesType.OneTimeOfSalary: - bonusesPayAmount = monthySalary; - break; - case BonusesType.TwoTimeOfSalary: - bonusesPayAmount = monthySalary * 2; - break; - case BonusesType.Money: - bonusesPayAmount = customizeWorkshopEmployeeSettings.BonusesPay.Value; - break; - case BonusesType.PercentageOfSalary: - bonusesPayAmount = (monthySalary * customizeWorkshopEmployeeSettings.BonusesPay.Value) / 100; - break; - } - double bonusesPerMonth = bonusesPayAmount / 12; - - if (customizeWorkshopEmployeeSettings.BonusesPay.PaymentType == BonusesPaymentType.YearlyPay) - { - var contractEndFarsi = Tools.FindeEndOfMonth(contractEnd.ToFarsi()); - if (monthOfCheckout == 12 && (contractEndFarsi.EndsWith("29")) || contractEndFarsi.EndsWith("30")) - { - } - else if (customizeWorkshopSettings.BonusesPaysInEndOfMonth == BonusesPaysInEndOfYear.WhenEverEmployeeLeftWork && leftWork.HasLeft) - { - TimeSpan bonusDuration; - DateTime startOfYear = new PersianCalendar().ToDateTime(yearOfCheckout, 1, 1, 0, 0, 0, 0); - if (startOfYear < leftWork.StartWorkDateGr) - bonusDuration = leftWorkDurationTimeSpan; - else - bonusDuration = leftWork.LeftWorkDateGr - startOfYear; - //ToDo: Check if should be absolute 365! - bonusesPayAmount = (bonusesPayAmount / 365) * bonusDuration.TotalDays; - } - else - { - bonusesPayAmount = 0; - } - } - else if (customizeWorkshopEmployeeSettings.BonusesPay.PaymentType == BonusesPaymentType.MonthlyPay) - { - - - if (customizeWorkshopSettings.BonusesPaysInEndOfMonth == - BonusesPaysInEndOfYear.WhenEverEmployeeLeftWork && leftWork.HasLeft && contractDays < monthDays) - bonusesPayAmount = (bonusesPerMonth / contractEnd.CountPersianMonthDays()) * contractDuration.TotalDays + 1; - - - bonusesPayAmount = bonusesPerMonth; - } - else - { - throw new InvalidDataException(); - } - } - - #endregion - - - #endregion - - #region LateToWork & EarlyExit - - var lateToWorkEarlyExit = LateToWorkEarlyExit(groupedRollCall, shiftSettings, leaveList); - foreach (var i in lateToWorkEarlyExit) - { - Console.WriteLine(" start : " + i.StartSpan + " end : " + i.EndSpan + " spaning : " + i.Spanning + " Type : " + i.TypeOfSapn); - } - - var lateToWoks = lateToWorkEarlyExit.Where(x => x.TypeOfSapn == "LateToWork"); - var earlyExits = lateToWorkEarlyExit.Where(x => x.TypeOfSapn == "EarlyExist"); - - var lateToWork = new TimeSpan(lateToWoks.Sum(x => x.Spanning.Ticks)); - var earlyExist = new TimeSpan(earlyExits.Sum(x => x.Spanning.Ticks)); - var totalSpaning = new TimeSpan(lateToWorkEarlyExit.Sum(x => x.Spanning.Ticks)); - Console.ForegroundColor = ConsoleColor.Yellow; - Console.WriteLine(" LateToWork H : " + (int)lateToWork.TotalHours + " M : " + (int)(lateToWork.TotalMinutes % 60)); - Console.WriteLine(" EarlyExist H : " + (int)earlyExist.TotalHours + " M : " + (int)(earlyExist.TotalMinutes % 60)); - Console.WriteLine(" TotalSpaning H : " + (int)totalSpaning.TotalHours + " M : " + (int)(totalSpaning.TotalMinutes % 60)); - Console.ResetColor(); - - double earlyExitDeduction = 0; - double lateToWorkDeduction = 0; - - ////محاسبه مزد روزانه به ازای هر دقیقه - //double dailyWagePerMinute = - // (customizeWorkshopEmployeeSettings.Salary / monthDays) / sumOfEmployeeShiftSpan.TotalMinutes; - - if (customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitType != EarlyExitType.None && earlyExist > new TimeSpan()) - { - earlyExitDeduction = customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitType switch - { - EarlyExitType.Default => earlyExist.TotalMinutes * minuteWage, - - EarlyExitType.MoneyPerMinute => earlyExist.TotalMinutes * customizeWorkshopEmployeeSettings.EarlyExit.Value, - - _ => 0 - }; - - } - - - if (customizeWorkshopEmployeeSettings.LateToWork.LateToWorkType != LateToWorkType.None && lateToWork > new TimeSpan()) - { - lateToWorkDeduction = customizeWorkshopEmployeeSettings.LateToWork.LateToWorkType switch - { - LateToWorkType.Default => lateToWork.TotalMinutes * minuteWage, - - LateToWorkType.MoneyPerMinute => lateToWork.TotalMinutes * customizeWorkshopEmployeeSettings.LateToWork.Value, - - _ => 0 - }; - - } - - if (customizeWorkshopEmployeeSettings.LateToWork.LateToWorkTimeFines.Any()) - { - lateToWorkDeduction += - (from lateToWorkTimeFine in customizeWorkshopEmployeeSettings.LateToWork.LateToWorkTimeFines - let stepFine = lateToWoks.Count(x => x.Spanning.TotalMinutes >= Convert.ToInt32(lateToWorkTimeFine.Minute)) - select stepFine * lateToWorkTimeFine.FineMoney).Sum(); - } - if (customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitTimeFines.Any()) - { - earlyExitDeduction += - (from earlyExitFine in customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitTimeFines - let stepFine = earlyExits.Count(x => x.Spanning.TotalMinutes >= Convert.ToInt32(earlyExitFine.Minute)) - select stepFine * earlyExitFine.FineMoney).Sum(); - } - - - - #endregion - - return new CustomizeCheckoutMandatoryViewModel - { - InsuranceDeduction = insuranceDeductionAmount, - FridayPay = fridayPayAmount, - OverTimePay = overtimePayAmount, - BaseYearsPay = baseYearsPayAmount, - NightWorkPay = nightworkPayAmount, - MarriedAllowance = maritalAllowancePay, - FamilyAllowance = familyAllowancePay, - LeavePay = leavePayAmount, - FineAbsenceDeduction = absentsDeductionAmount, - BonusesPay = bonusesPayAmount, - ContractEndFa = contractEnd.ToFarsi(), - ContractStartFa = contractStart.ToFarsi(), - EmployeeName = employee.FullName, - InstallmentDeduction = loanDeduction, - SalaryAidDeduction = salaryAidDeduction, - FineDeduction = fineDeduction, - RewardPay = rewardPay, - Month = monthOfCheckout, - Year = yearOfCheckout, - LateToWorkDeduction = lateToWorkDeduction, - EarlyExitDeduction = earlyExitDeduction, - ShiftPay = 0, - TaxDeduction = 0, - EmployeeId = employeeId, - SumOfWorkingDays = totalDays.ToString(), - ContractNo = contract?.ContractNo ?? "-", - MonthlySalary = dailyWage * mandatoryDays, - PersonnelCode = personnelCode, - FineViewModels = fineViewModels, - InstallmentViewModels = loanInstallments, - SalaryAidViewModels = salaryAidViewModel, - RewardViewModels = rewardViewModels - }; - } - - - - public CustomizeCheckoutMandatoryViewModel CustomizeCheckoutMandatoryComputeForKebabMahdi(long employeeId, - long workshopId, - DateTime contractStart, DateTime contractEnd) - { - var checkoutEnd = contractEnd; - var checkoutStart = contractStart; - - var exceptionEmployees = _context.CustomizeWorkshopGroupSettings.Where(x => x.id == 117) - .Include(x => x.CustomizeWorkshopEmployeeSettingsCollection).AsSplitQuery().FirstOrDefault()?.CustomizeWorkshopEmployeeSettingsCollection.Select(x => x.EmployeeId).ToList() ?? []; - - if (exceptionEmployees.Contains(employeeId)) - { - return CheckoutWithoutCalculationForKebabMahdi(workshopId, employeeId, contractStart, contractEnd); - } - - var firstDayOfMonth = $"{(contractStart.ToFarsi())[..8]}/01".ToGeorgianDateTime(); - - #region LeftWork - - var leftWork = - _leftWorkRepository.GetByWorkshopIdEmployeeIdInDates(workshopId, employeeId, contractStart, contractEnd); - - if (leftWork.StartWorkDateGr > contractStart) - { - contractStart = leftWork.StartWorkDateGr; - } - - if (leftWork.LeftWorkDateGr.AddDays(-1) < contractEnd) - { - contractEnd = leftWork.LeftWorkDateGr.AddDays(-1); - } - - TimeSpan leftWorkDurationTimeSpan = leftWork.HasLeft - ? leftWork.LeftWorkDateGr.AddDays(-1) - leftWork.StartWorkDateGr - : contractEnd - leftWork.StartWorkDateGr; - - - #endregion - - - #region Entities - - int numberOfFridays = 0; - double monthySalary = 0; - int monthDays = 0; - double dailyWage = 0; - int numberOfWorkingDay = 0; - string endPersianDate = contractEnd.ToFarsi(); - int monthOfCheckout = Convert.ToInt32(endPersianDate.Substring(5, 2)); - int yearOfCheckout = Convert.ToInt32(endPersianDate.Substring(0, 4)); - //روز هایی که پرسنل موظف بوده کار کند - var mandatoryDays = 0; - - TimeSpan contractDuration = contractEnd - contractStart; - var employee = _context.Employees.FirstOrDefault(x => x.id == employeeId); - var personnelCode = - _context.PersonnelCodeSet.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId) - ?.PersonnelCode ?? 0; - var contract = _context.Contracts.Where(x => x.WorkshopIds == workshopId && x.EmployeeId == employeeId && - x.ContractEnd.Date >= contractStart.Date && - x.ContarctStart.Date <= contractEnd.Date).ToList() - ?.MaxBy(x => x.ContarctStart); - var totalDays = (int)(contractEnd - contractStart).TotalDays + 1; - mandatoryDays = totalDays; - - - #endregion - - - - #region CustomizeSettings - - CustomizeWorkshopEmployeeSettings customizeWorkshopEmployeeSettings; - CustomizeWorkshopSettings customizeWorkshopSettings; - - - var endFarvarding = new DateTime(2025, 4, 20); - if (contractStart > endFarvarding) - { - customizeWorkshopEmployeeSettings = _context.CustomizeWorkshopEmployeeSettings - .AsSplitQuery().AsNoTracking().FirstOrDefault(x => - x.WorkshopId == workshopId && x.EmployeeId == employeeId); - - customizeWorkshopSettings = _context.CustomizeWorkshopSettings.AsNoTracking().FirstOrDefault(x => x.WorkshopId == workshopId); - } - - else - { - customizeWorkshopEmployeeSettings = _testDbContext.CustomizeWorkshopEmployeeSettings - .AsSplitQuery().AsNoTracking().FirstOrDefault(x => - x.WorkshopId == workshopId && x.EmployeeId == employeeId); - - customizeWorkshopSettings = _testDbContext.CustomizeWorkshopSettings.AsNoTracking().FirstOrDefault(x => x.WorkshopId == workshopId); - - } - - //ToDo handel exception if is null - monthySalary = customizeWorkshopEmployeeSettings?.Salary ?? 0; - monthDays = customizeWorkshopSettings.MaxMonthDays == MaxMonthDays.ThirtyDaysForAllMonth - ? 30 - : firstDayOfMonth.CountMonthDays(); - - - var shiftSettings = customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts; - - var employeeShiftsSpans = shiftSettings.Select(x => - { - var start = new DateTime(new DateOnly(), x.StartTime); - var end = new DateTime(new DateOnly(), x.EndTime); - if (x.EndTime < x.StartTime) - end = end.AddDays(1); - var span = end - start; - return new EmployeeShiftResult - { - Placement = x.Placement, - ShiftSpan = span - }; - - }); - - - #endregion - - List rollCallResult = _context.RollCalls.AsNoTracking().Where(x => - x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.ShiftDate.Date >= contractStart.Date && - x.ShiftDate.Date <= contractEnd.Date && x.EndDate != null) - .Select(x => new RollCallViewModel() - { - StartDate = x.StartDate, - EndDate = x.EndDate, - ShiftSpan = (x.EndDate.Value - x.StartDate.Value), - CreationDate = x.CreationDate, - ShiftDate = x.ShiftDate, - EarlyEntryDuration = x.EarlyEntryDuration, - LateEntryDuration = x.LateEntryDuration, - EarlyExitDuration = x.EarlyExitDuration, - LateExitDuration = x.LateExitDuration, - ShiftDurationTimeSpan = x.ShiftDurationTimeSpan, - BreakTimeSpan = x.BreakTimeSpan - - }).ToList(); - - - - - List groupedRollCall = rollCallResult.GroupBy(x => x.ShiftDate.Date).Select(x => - new GroupedRollCalls() - { - CreationDate = x.Key, - ShiftList = x.Select(s => new ShiftList() - { - Start = s.StartDate!.Value, - End = s.EndDate!.Value, - EarlyEntryDuration = s.EarlyEntryDuration, - EarlyExitDuration = s.EarlyExitDuration, - LateEntryDuration = s.LateEntryDuration, - LateExitDuration = s.LateExitDuration, - }).ToList(), - HasFriday = x.Any(s => - s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || s.EndDate.Value.DayOfWeek == DayOfWeek.Friday), - - SumOneDaySpan = new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)) - CalculateBreakTime( - x.First().BreakTimeSpan, - new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))), - - BreakTime = CalculateBreakTime(x.First().BreakTimeSpan, - new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))), - ShiftDate = x.Key, - TotalEarlyEntryDuration = new TimeSpan(x.Sum(rollCall => rollCall.EarlyEntryDuration.Ticks)), - TotalLateEntryDuration = new TimeSpan(x.Sum(rollCall => rollCall.LateEntryDuration.Ticks)), - TotalEarlyExitDuration = new TimeSpan(x.Sum(rollCall => rollCall.EarlyExitDuration.Ticks)), - TotalLateExitDuration = new TimeSpan(x.Sum(rollCall => rollCall.LateExitDuration.Ticks)), - TotalShiftDurationTimeSpan = - x.FirstOrDefault() == null ? TimeSpan.Zero : x.First().ShiftDurationTimeSpan - }).ToList(); - - var sumOfEmployeeShiftSpan = - groupedRollCall.Any() ? groupedRollCall.First().TotalShiftDurationTimeSpan : TimeSpan.Zero; - - - if (customizeWorkshopEmployeeSettings.BreakTime.BreakTimeType == BreakTimeType.WithTime && - sumOfEmployeeShiftSpan != TimeSpan.Zero) - { - sumOfEmployeeShiftSpan -= customizeWorkshopEmployeeSettings.BreakTime.BreakTimeValue.ToTimeSpan(); - } - - - - // ساخت لیست همه تاریخ‌ها در بازه - List allDates = Enumerable.Range(0, (contractEnd - contractStart).Days + 1) - .Select(offset => contractStart.AddDays(offset)) - .ToList(); - - // فیلتر تاریخ‌هایی که در لیست حضور نیستند - List absentDates = allDates - .Where(date => !groupedRollCall.Any(g => g.ShiftDate.Date == date.Date)) - .ToList(); - - - TimeSpan sumSpans = new TimeSpan(groupedRollCall.Sum(x => x.SumOneDaySpan.Ticks)); - - numberOfFridays = groupedRollCall.Count(x => x.HasFriday); - - numberOfWorkingDay = groupedRollCall.Count(); - //تعداد روز های قرارداد - int contractDays = (int)contractDuration.TotalDays + 1; - - //روز های غیبت - var absenceDays = mandatoryDays - groupedRollCall.Count; - - int fridays = 0; - - int holiday = _context.HolidayItems.Count(x => x.Holidaydate >= contractStart && x.Holidaydate <= contractEnd); - - - for (var gDate = contractStart; gDate <= contractEnd; gDate = gDate.AddDays(1)) - { - if (gDate.DayOfWeek == DayOfWeek.Friday) - { - fridays += 1; - } - } - - if (customizeWorkshopEmployeeSettings.FridayWork == FridayWork.Default) - { - var fridayWorkingTotalDays = groupedRollCall.Count(x => x.ShiftDate.DayOfWeek == DayOfWeek.Friday); - var fridayWorking = fridays - fridayWorkingTotalDays; - - - //mandatoryDays -= fridayWorking; - - } - - if (customizeWorkshopEmployeeSettings.HolidayWork == HolidayWork.Default) - { - var groupStartDaysDates = groupedRollCall.Select(x => x.CreationDate.Date).ToList(); - var holidayWorkingDays = _context.HolidayItems.Count(x => - groupStartDaysDates.Any(r => r == x.Holidaydate.Date)); - holiday = holiday - holidayWorkingDays; - - mandatoryDays -= holiday; - } TimeSpan absentTimeSpans = new(); @@ -3525,7 +2821,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll absentTimeSpans = (mandatoryDays * sumOfEmployeeShiftSpan) - sumSpans; } - dailyWage = monthySalary / monthDays; var minuteWage = sumOfEmployeeShiftSpan.TotalMinutes == 0 @@ -3533,7 +2828,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll : (dailyWage / sumOfEmployeeShiftSpan.TotalMinutes); - // یافتن مرخصی ساعتی #region LeavHourse @@ -3547,7 +2841,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll StartLeaveGr = contractStart, EndLeaveGr = contractEnd, IsAccepted = true, - }; List leaveList = _leaveRepository.search(leaveHourseSearch); @@ -3560,7 +2853,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //TimeSpan workingPerDayAve = sumSpans / numberOfWorkingDay;//میانگین ساعت کار در روز - //if (workingPerDayAve <= new TimeSpan(7, 20, 0)) //{ // sumLeave = leavingDayCout * workingPerDayAve; @@ -3571,108 +2863,21 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //} - double leavePayAmount = 0; double absentsDeductionAmount = 0; - - int leavePermittedDays = customizeWorkshopEmployeeSettings.LeavePermittedDays; - double leaveValue = customizeWorkshopEmployeeSettings.LeavePay.Value; - - - - if (customizeWorkshopEmployeeSettings.CustomizeWorkshopGroupSettingId == 77) - { - var startMonth = contractStart; - var endMonth = contractStart.ToFarsi().FindeEndOfMonth().ToGeorgianDateTime(); - - int fridayInMonth = 0; - - // Ensure the dates are in the correct order - if (startMonth > endMonth) - { - var temp = startMonth; - startMonth = endMonth; - endMonth = temp; - } - - // Find the first Friday in the range - int daysUntilFriday = ((int)DayOfWeek.Friday - (int)startMonth.DayOfWeek + 7) % 7; - DateTime firstFriday = startMonth.AddDays(daysUntilFriday); - - // If the first Friday is outside the range, there are no Fridays - if (firstFriday > endMonth) - { - fridayInMonth = 0; - } - - // Calculate the total number of days between the first Friday and the end date - int totalFridayPeriod = (endMonth - firstFriday).Days; - - // Count the Fridays by dividing the total days by 7 and adding 1 for the first Friday - fridayInMonth = totalFridayPeriod / 7 + 1; - - - leavePermittedDays = fridayInMonth; - } - - - - - - - - sumSpans = CalculateLeavePay(sumOfEmployeeShiftSpan, absentTimeSpans, leavePermittedDays, monthDays, - contractDays, sumSpans - , leaveValue, minuteWage, contractStart, contractEnd, out leavePayAmount, out absentsDeductionAmount); - if (customizeWorkshopEmployeeSettings.LeavePay.LeavePayType != LeavePayType.None) { - + int permittedDays = customizeWorkshopEmployeeSettings.LeavePermittedDays; + double leaveValue = customizeWorkshopEmployeeSettings.LeavePay.Value; + sumSpans = CalculateLeavePay(sumOfEmployeeShiftSpan, absentTimeSpans, permittedDays, monthDays, + contractDays, sumSpans + , leaveValue, minuteWage, contractStart, contractEnd, out leavePayAmount, out absentsDeductionAmount); } else { absentsDeductionAmount = absentTimeSpans.TotalMinutes * minuteWage; } - leavePayAmount = 0; - - - - absenceDays = (absenceDays - leavePermittedDays) < 0 ? 0 : (absenceDays - leavePermittedDays); - - - //اگر روز تولدش تاریخ فیش وجود داشت - var monthOfBirthDay = employee!.DateOfBirth.ToFarsi().Substring(5, 2); - - var pc = new PersianCalendar(); - - var birthdayMonth = pc.GetMonth(employee.DateOfBirth); - var birthdayDay = pc.GetDayOfMonth(employee.DateOfBirth); - if (birthdayMonth == 12 && birthdayDay == 30) - { - //چک کن که آیا سال قرارداد کبیسه هست یا نه - var leap = - pc.IsLeapYear(pc.GetYear(contractStart)); - if (!leap) - { - birthdayDay = 29; - } - } - - - - var employeeBirthDay = $"{yearOfCheckout:0000}/{birthdayMonth:00}/{birthdayDay:00}".ToGeorgianDateTime(); - - - if (employeeBirthDay >= contractStart && employeeBirthDay <= contractEnd && absenceDays > 0) - { - - CreateRewardForBirthDay(employeeId, workshopId, dailyWage, monthOfCheckout, yearOfCheckout, contractStart); - } - - - - Console.WriteLine(sumSpans); @@ -3686,7 +2891,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //***********************************// - #region Deductions //غیبت @@ -3727,7 +2931,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll #endregion - #endregion @@ -3740,37 +2943,40 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll double overtimePayAmount = 0; - TimeSpan overtimeTimeSpan; if (customizeWorkshopSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular && customizeWorkshopEmployeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular) { - overtimeTimeSpan = CalculateOvertimeSpanWithSumSpan(sumSpans, mandatoryDays, shiftSettings); + TimeOnly employeeOffSet = customizeWorkshopSettings.EndTimeOffSet; + overtimeTimeSpan = CalculateOvertimeTimeSpan(rollCallResult, shiftSettings, employeeOffSet); } else if (customizeWorkshopEmployeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular) { - //var date = new DateOnly(); - //var firstStartShift = new DateTime(date, customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts.MinBy(x => x.Placement).StartTime); - //var lastEndShift = new DateTime(date, customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts.MaxBy(x => x.Placement).EndTime); - //if (lastEndShift > firstStartShift) - // firstStartShift = firstStartShift.AddDays(1); - //var offSet = (firstStartShift - lastEndShift).Divide(2); - //var employeeOffSet = TimeOnly.FromDateTime(lastEndShift.Add(offSet)); - - overtimeTimeSpan = CalculateOvertimeSpanWithSumSpan(sumSpans, mandatoryDays, shiftSettings); + var date = new DateOnly(); + var firstStartShift = new DateTime(date, + customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts.MinBy(x => x.Placement) + .StartTime); + var lastEndShift = new DateTime(date, + customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts.MaxBy(x => x.Placement) + .EndTime); + if (lastEndShift > firstStartShift) + firstStartShift = firstStartShift.AddDays(1); + var offSet = (firstStartShift - lastEndShift).Divide(2); + var employeeOffSet = TimeOnly.FromDateTime(lastEndShift.Add(offSet)); + overtimeTimeSpan = CalculateOvertimeTimeSpan(rollCallResult, shiftSettings, employeeOffSet); } else { var irregularShifts = customizeWorkshopEmployeeSettings.IrregularShift.WorkshopIrregularShifts; - overtimeTimeSpan = CalculateRotatingOvertime(customizeWorkshopEmployeeSettings.CustomizeRotatingShifts, - groupedRollCall, mandatoryDays, sumSpans); + overtimeTimeSpan = + CalculateIrregularOverTime(rollCallResult, sumOfEmployeeShiftSpan, irregularShifts, mandatoryDays); + //Todo: fix for irregular and rotating shifts } overtimePayAmount = CalculateOvertimePay(overtimeTimeSpan, customizeWorkshopEmployeeSettings.OverTimePay, dailyWage); - if (overtimePayAmount >= absentsDeductionAmount) { overtimePayAmount = overtimePayAmount - absentsDeductionAmount; @@ -3782,55 +2988,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll overtimePayAmount = 0; } - overtimePayAmount = 0; - - - - - #endregion - #region KebabMahdiAbsentsCaclculation - - var rollCallDays = groupedRollCall.Count > mandatoryDays ? mandatoryDays : groupedRollCall.Count; - - absenceDays = mandatoryDays - rollCallDays; - absenceDays = absenceDays - leavePermittedDays < 0 ? 0 : absenceDays - leavePermittedDays; - absentsDeductionAmount = absenceDays * dailyWage; - - - #endregion - - var createReward = absenceDays; - if (monthOfCheckout == 1 && yearOfCheckout == 1404) - { - bool hasAbsents = _context.CustomizeCheckouts.Any(x => - x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.MonthInt == 12 && x.YearInt == 1403 && - x.FineAbsenceDeduction > 0); - bool absentInEid = !_context.RollCalls.Any(x => - x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.ShiftDate == new DateTime(2025, 3, 20)); - if (hasAbsents && absentInEid) - { - CreateReward(employeeId, workshopId, dailyWage, monthOfCheckout, yearOfCheckout, - new DateTime(2025, 3, 21), RewardType.Eid, "بابت تعطیلی آخر سال"); - } - - if (absentDates.Any(x => x == new DateTime(2025, 4, 2) && createReward > 0)) - { - CreateReward(employeeId, workshopId, dailyWage, monthOfCheckout, yearOfCheckout, - new DateTime(2025, 4, 2), RewardType.SinzdahBedar, "بابت تعطیلی روز 13 فروردین"); - createReward--; - } - - if (absentDates.Any(x => x == new DateTime(2025, 4, 3) && createReward > 0)) - { - CreateReward(employeeId, workshopId, dailyWage, monthOfCheckout, yearOfCheckout, - new DateTime(2025, 4, 3), RewardType.ChahardahFarvardin, "بابت تعطیلی روز 14 فروردین"); - createReward--; - } - } - - #region FridayPay double fridayPayAmount = 0; @@ -3838,7 +2997,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll fridayPayAmount = FridayPayCalculation(customizeWorkshopEmployeeSettings, rollCallResult, dailyWage, shiftSettings, overtimePayAmount); - #endregion //حق تاهل @@ -3851,17 +3009,17 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll switch (customizeWorkshopEmployeeSettings.MarriedAllowance.MarriedAllowanceType) { case MarriedAllowanceType.Money: - { - maritalAllowancePay = customizeWorkshopEmployeeSettings.MarriedAllowance.Value; - break; - } - //case MarriedAllowanceType.PercentageFromSalary: + { + maritalAllowancePay = customizeWorkshopEmployeeSettings.MarriedAllowance.Value; + break; + } + //case MarriedAllowanceType.PercentageFromSalary: - // { - // double multiplier = customizeWorkshopEmployeeSettings.MarriedAllowance.Value / 100; - // maritalAllowance = dailyWage * multiplier; - // break; - // } + // { + // double multiplier = customizeWorkshopEmployeeSettings.MarriedAllowance.Value / 100; + // maritalAllowance = dailyWage * multiplier; + // break; + // } } } @@ -3882,21 +3040,19 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll switch (customizeWorkshopEmployeeSettings.NightWorkPay.NightWorkingType) { case NightWorkType.MoneyPerHour: - { - var baseAmount = customizeWorkshopEmployeeSettings.NightWorkPay.Value; - var nightWorkMinutes = (int)(nightWorks).TotalMinutes; - nightworkPayAmount += nightWorkMinutes * (baseAmount / 60); - break; - } + { + var baseAmount = customizeWorkshopEmployeeSettings.NightWorkPay.Value; + var nightWorkMinutes = (int)(nightWorks).TotalMinutes; + nightworkPayAmount += nightWorkMinutes * (baseAmount / 60); + break; + } case NightWorkType.PercentageFromSalary: - { - double multiplier = customizeWorkshopEmployeeSettings.NightWorkPay.Value / 100; - var nightWorkMinutes = (int)(nightWorks).TotalMinutes; - nightworkPayAmount += ((dailyWage * multiplier) / 60) * nightWorkMinutes; - break; - } - - + { + double multiplier = customizeWorkshopEmployeeSettings.NightWorkPay.Value / 100; + var nightWorkMinutes = (int)(nightWorks).TotalMinutes; + nightworkPayAmount += ((dailyWage * multiplier) / 60) * nightWorkMinutes; + break; + } } } @@ -3921,19 +3077,19 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll switch (customizeWorkshopEmployeeSettings.FamilyAllowance.FamilyAllowanceType) { case FamilyAllowanceType.Money: - { - double baseAmount = customizeWorkshopEmployeeSettings.FamilyAllowance.Value; - familyAllowancePay = CalculateFamilyAllowancePayAmount(employeeId, baseAmount, contractEnd); - break; - } + { + double baseAmount = customizeWorkshopEmployeeSettings.FamilyAllowance.Value; + familyAllowancePay = CalculateFamilyAllowancePayAmount(employeeId, baseAmount, contractEnd); + break; + } case FamilyAllowanceType.Percentage: - { - double multiplier = customizeWorkshopEmployeeSettings.FamilyAllowance.Value / 100; - familyAllowancePay = - CalculateFamilyAllowancePayAmount(employeeId, multiplier * monthySalary, contractEnd); - break; - } + { + double multiplier = customizeWorkshopEmployeeSettings.FamilyAllowance.Value / 100; + familyAllowancePay = + CalculateFamilyAllowancePayAmount(employeeId, multiplier * monthySalary, contractEnd); + break; + } } #endregion @@ -3948,8 +3104,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll #region LeavePay - - #endregion #region BonusesPay @@ -4002,8 +3156,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } else if (customizeWorkshopEmployeeSettings.BonusesPay.PaymentType == BonusesPaymentType.MonthlyPay) { - - if (customizeWorkshopSettings.BonusesPaysInEndOfMonth == BonusesPaysInEndOfYear.WhenEverEmployeeLeftWork && leftWork.HasLeft && contractDays < monthDays) bonusesPayAmount = (bonusesPerMonth / contractEnd.CountPersianMonthDays()) * @@ -4020,6 +3172,829 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll #endregion + #endregion + + #region LateToWork & EarlyExit + + var lateToWorkEarlyExit = LateToWorkEarlyExit(groupedRollCall, shiftSettings, leaveList); + foreach (var i in lateToWorkEarlyExit) + { + Console.WriteLine(" start : " + i.StartSpan + " end : " + i.EndSpan + " spaning : " + i.Spanning + + " Type : " + i.TypeOfSapn); + } + + var lateToWoks = lateToWorkEarlyExit.Where(x => x.TypeOfSapn == "LateToWork"); + var earlyExits = lateToWorkEarlyExit.Where(x => x.TypeOfSapn == "EarlyExist"); + + var lateToWork = new TimeSpan(lateToWoks.Sum(x => x.Spanning.Ticks)); + var earlyExist = new TimeSpan(earlyExits.Sum(x => x.Spanning.Ticks)); + var totalSpaning = new TimeSpan(lateToWorkEarlyExit.Sum(x => x.Spanning.Ticks)); + Console.ForegroundColor = ConsoleColor.Yellow; + Console.WriteLine(" LateToWork H : " + (int)lateToWork.TotalHours + " M : " + + (int)(lateToWork.TotalMinutes % 60)); + Console.WriteLine(" EarlyExist H : " + (int)earlyExist.TotalHours + " M : " + + (int)(earlyExist.TotalMinutes % 60)); + Console.WriteLine(" TotalSpaning H : " + (int)totalSpaning.TotalHours + " M : " + + (int)(totalSpaning.TotalMinutes % 60)); + Console.ResetColor(); + + double earlyExitDeduction = 0; + double lateToWorkDeduction = 0; + + ////محاسبه مزد روزانه به ازای هر دقیقه + //double dailyWagePerMinute = + // (customizeWorkshopEmployeeSettings.Salary / monthDays) / sumOfEmployeeShiftSpan.TotalMinutes; + + if (customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitType != EarlyExitType.None && + earlyExist > new TimeSpan()) + { + earlyExitDeduction = customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitType switch + { + EarlyExitType.Default => earlyExist.TotalMinutes * minuteWage, + + EarlyExitType.MoneyPerMinute => earlyExist.TotalMinutes * + customizeWorkshopEmployeeSettings.EarlyExit.Value, + + _ => 0 + }; + } + + + if (customizeWorkshopEmployeeSettings.LateToWork.LateToWorkType != LateToWorkType.None && + lateToWork > new TimeSpan()) + { + lateToWorkDeduction = customizeWorkshopEmployeeSettings.LateToWork.LateToWorkType switch + { + LateToWorkType.Default => lateToWork.TotalMinutes * minuteWage, + + LateToWorkType.MoneyPerMinute => lateToWork.TotalMinutes * + customizeWorkshopEmployeeSettings.LateToWork.Value, + + _ => 0 + }; + } + + if (customizeWorkshopEmployeeSettings.LateToWork.LateToWorkTimeFines.Any()) + { + lateToWorkDeduction += + (from lateToWorkTimeFine in customizeWorkshopEmployeeSettings.LateToWork.LateToWorkTimeFines + let stepFine = lateToWoks.Count(x => + x.Spanning.TotalMinutes >= Convert.ToInt32(lateToWorkTimeFine.Minute)) + select stepFine * lateToWorkTimeFine.FineMoney).Sum(); + } + + if (customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitTimeFines.Any()) + { + earlyExitDeduction += + (from earlyExitFine in customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitTimeFines + let stepFine = + earlyExits.Count(x => x.Spanning.TotalMinutes >= Convert.ToInt32(earlyExitFine.Minute)) + select stepFine * earlyExitFine.FineMoney).Sum(); + } + + #endregion + + return new CustomizeCheckoutMandatoryViewModel + { + InsuranceDeduction = insuranceDeductionAmount, + FridayPay = fridayPayAmount, + OverTimePay = overtimePayAmount, + BaseYearsPay = baseYearsPayAmount, + NightWorkPay = nightworkPayAmount, + MarriedAllowance = maritalAllowancePay, + FamilyAllowance = familyAllowancePay, + LeavePay = leavePayAmount, + FineAbsenceDeduction = absentsDeductionAmount, + BonusesPay = bonusesPayAmount, + ContractEndFa = contractEnd.ToFarsi(), + ContractStartFa = contractStart.ToFarsi(), + EmployeeName = employee.FullName, + InstallmentDeduction = loanDeduction, + SalaryAidDeduction = salaryAidDeduction, + FineDeduction = fineDeduction, + RewardPay = rewardPay, + Month = monthOfCheckout, + Year = yearOfCheckout, + LateToWorkDeduction = lateToWorkDeduction, + EarlyExitDeduction = earlyExitDeduction, + ShiftPay = 0, + TaxDeduction = 0, + EmployeeId = employeeId, + SumOfWorkingDays = totalDays.ToString(), + ContractNo = contract?.ContractNo ?? "-", + MonthlySalary = dailyWage * mandatoryDays, + PersonnelCode = personnelCode, + FineViewModels = fineViewModels, + InstallmentViewModels = loanInstallments, + SalaryAidViewModels = salaryAidViewModel, + RewardViewModels = rewardViewModels + }; + } + + + public CustomizeCheckoutMandatoryViewModel CustomizeCheckoutMandatoryComputeForKebabMahdi(long employeeId, + long workshopId, + DateTime contractStart, DateTime contractEnd) + { + var checkoutEnd = contractEnd; + var checkoutStart = contractStart; + + var exceptionEmployees = _context.CustomizeWorkshopGroupSettings.Where(x => x.id == 117) + .Include(x => x.CustomizeWorkshopEmployeeSettingsCollection).AsSplitQuery().FirstOrDefault() + ?.CustomizeWorkshopEmployeeSettingsCollection.Select(x => x.EmployeeId).ToList() ?? []; + + if (exceptionEmployees.Contains(employeeId)) + { + return CheckoutWithoutCalculationForKebabMahdi(workshopId, employeeId, contractStart, contractEnd); + } + + var firstDayOfMonth = $"{(contractStart.ToFarsi())[..8]}/01".ToGeorgianDateTime(); + + #region LeftWork + + var leftWork = + _leftWorkRepository.GetByWorkshopIdEmployeeIdInDates(workshopId, employeeId, contractStart, contractEnd); + + if (leftWork.StartWorkDateGr > contractStart) + { + contractStart = leftWork.StartWorkDateGr; + } + + if (leftWork.LeftWorkDateGr.AddDays(-1) < contractEnd) + { + contractEnd = leftWork.LeftWorkDateGr.AddDays(-1); + } + + TimeSpan leftWorkDurationTimeSpan = leftWork.HasLeft + ? leftWork.LeftWorkDateGr.AddDays(-1) - leftWork.StartWorkDateGr + : contractEnd - leftWork.StartWorkDateGr; + + #endregion + + + #region Entities + + int numberOfFridays = 0; + double monthySalary = 0; + int monthDays = 0; + double dailyWage = 0; + int numberOfWorkingDay = 0; + string endPersianDate = contractEnd.ToFarsi(); + int monthOfCheckout = Convert.ToInt32(endPersianDate.Substring(5, 2)); + int yearOfCheckout = Convert.ToInt32(endPersianDate.Substring(0, 4)); + //روز هایی که پرسنل موظف بوده کار کند + var mandatoryDays = 0; + + TimeSpan contractDuration = contractEnd - contractStart; + var employee = _context.Employees.FirstOrDefault(x => x.id == employeeId); + var personnelCode = + _context.PersonnelCodeSet.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId) + ?.PersonnelCode ?? 0; + var contract = _context.Contracts.Where(x => x.WorkshopIds == workshopId && x.EmployeeId == employeeId && + x.ContractEnd.Date >= contractStart.Date && + x.ContarctStart.Date <= contractEnd.Date).ToList() + ?.MaxBy(x => x.ContarctStart); + var totalDays = (int)(contractEnd - contractStart).TotalDays + 1; + mandatoryDays = totalDays; + + #endregion + + + #region CustomizeSettings + + CustomizeWorkshopEmployeeSettings customizeWorkshopEmployeeSettings; + CustomizeWorkshopSettings customizeWorkshopSettings; + + + var endFarvarding = new DateTime(2025, 4, 20); + if (contractStart > endFarvarding) + { + customizeWorkshopEmployeeSettings = _context.CustomizeWorkshopEmployeeSettings + .AsSplitQuery().AsNoTracking().FirstOrDefault(x => + x.WorkshopId == workshopId && x.EmployeeId == employeeId); + + customizeWorkshopSettings = _context.CustomizeWorkshopSettings.AsNoTracking() + .FirstOrDefault(x => x.WorkshopId == workshopId); + } + + else + { + customizeWorkshopEmployeeSettings = _testDbContext.CustomizeWorkshopEmployeeSettings + .AsSplitQuery().AsNoTracking().FirstOrDefault(x => + x.WorkshopId == workshopId && x.EmployeeId == employeeId); + + customizeWorkshopSettings = _testDbContext.CustomizeWorkshopSettings.AsNoTracking() + .FirstOrDefault(x => x.WorkshopId == workshopId); + } + + //ToDo handel exception if is null + monthySalary = customizeWorkshopEmployeeSettings?.Salary ?? 0; + monthDays = customizeWorkshopSettings.MaxMonthDays == MaxMonthDays.ThirtyDaysForAllMonth + ? 30 + : firstDayOfMonth.CountMonthDays(); + + + var shiftSettings = customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts; + + var employeeShiftsSpans = shiftSettings.Select(x => + { + var start = new DateTime(new DateOnly(), x.StartTime); + var end = new DateTime(new DateOnly(), x.EndTime); + if (x.EndTime < x.StartTime) + end = end.AddDays(1); + var span = end - start; + return new EmployeeShiftResult + { + Placement = x.Placement, + ShiftSpan = span + }; + }); + + #endregion + + List rollCallResult = _context.RollCalls.AsNoTracking().Where(x => + x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.ShiftDate.Date >= contractStart.Date && + x.ShiftDate.Date <= contractEnd.Date && x.EndDate != null) + .Select(x => new RollCallViewModel() + { + StartDate = x.StartDate, + EndDate = x.EndDate, + ShiftSpan = (x.EndDate.Value - x.StartDate.Value), + CreationDate = x.CreationDate, + ShiftDate = x.ShiftDate, + EarlyEntryDuration = x.EarlyEntryDuration, + LateEntryDuration = x.LateEntryDuration, + EarlyExitDuration = x.EarlyExitDuration, + LateExitDuration = x.LateExitDuration, + ShiftDurationTimeSpan = x.ShiftDurationTimeSpan, + BreakTimeSpan = x.BreakTimeSpan + }).ToList(); + + + List groupedRollCall = rollCallResult.GroupBy(x => x.ShiftDate.Date).Select(x => + new GroupedRollCalls() + { + CreationDate = x.Key, + ShiftList = x.Select(s => new ShiftList() + { + Start = s.StartDate!.Value, + End = s.EndDate!.Value, + EarlyEntryDuration = s.EarlyEntryDuration, + EarlyExitDuration = s.EarlyExitDuration, + LateEntryDuration = s.LateEntryDuration, + LateExitDuration = s.LateExitDuration, + }).ToList(), + HasFriday = x.Any(s => + s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || s.EndDate.Value.DayOfWeek == DayOfWeek.Friday), + + SumOneDaySpan = new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)) - CalculateBreakTime( + x.First().BreakTimeSpan, + new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))), + + BreakTime = CalculateBreakTime(x.First().BreakTimeSpan, + new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))), + ShiftDate = x.Key, + TotalEarlyEntryDuration = new TimeSpan(x.Sum(rollCall => rollCall.EarlyEntryDuration.Ticks)), + TotalLateEntryDuration = new TimeSpan(x.Sum(rollCall => rollCall.LateEntryDuration.Ticks)), + TotalEarlyExitDuration = new TimeSpan(x.Sum(rollCall => rollCall.EarlyExitDuration.Ticks)), + TotalLateExitDuration = new TimeSpan(x.Sum(rollCall => rollCall.LateExitDuration.Ticks)), + TotalShiftDurationTimeSpan = + x.FirstOrDefault() == null ? TimeSpan.Zero : x.First().ShiftDurationTimeSpan + }).ToList(); + + var sumOfEmployeeShiftSpan = + groupedRollCall.Any() ? groupedRollCall.First().TotalShiftDurationTimeSpan : TimeSpan.Zero; + + + if (customizeWorkshopEmployeeSettings.BreakTime.BreakTimeType == BreakTimeType.WithTime && + sumOfEmployeeShiftSpan != TimeSpan.Zero) + { + sumOfEmployeeShiftSpan -= customizeWorkshopEmployeeSettings.BreakTime.BreakTimeValue.ToTimeSpan(); + } + + + // ساخت لیست همه تاریخ‌ها در بازه + List allDates = Enumerable.Range(0, (contractEnd - contractStart).Days + 1) + .Select(offset => contractStart.AddDays(offset)) + .ToList(); + + // فیلتر تاریخ‌هایی که در لیست حضور نیستند + List absentDates = allDates + .Where(date => !groupedRollCall.Any(g => g.ShiftDate.Date == date.Date)) + .ToList(); + + + TimeSpan sumSpans = new TimeSpan(groupedRollCall.Sum(x => x.SumOneDaySpan.Ticks)); + + numberOfFridays = groupedRollCall.Count(x => x.HasFriday); + + numberOfWorkingDay = groupedRollCall.Count(); + //تعداد روز های قرارداد + int contractDays = (int)contractDuration.TotalDays + 1; + + //روز های غیبت + var absenceDays = mandatoryDays - groupedRollCall.Count; + + int fridays = 0; + + int holiday = _context.HolidayItems.Count(x => x.Holidaydate >= contractStart && x.Holidaydate <= contractEnd); + + + for (var gDate = contractStart; gDate <= contractEnd; gDate = gDate.AddDays(1)) + { + if (gDate.DayOfWeek == DayOfWeek.Friday) + { + fridays += 1; + } + } + + if (customizeWorkshopEmployeeSettings.FridayWork == FridayWork.Default) + { + var fridayWorkingTotalDays = groupedRollCall.Count(x => x.ShiftDate.DayOfWeek == DayOfWeek.Friday); + var fridayWorking = fridays - fridayWorkingTotalDays; + + + //mandatoryDays -= fridayWorking; + } + + if (customizeWorkshopEmployeeSettings.HolidayWork == HolidayWork.Default) + { + var groupStartDaysDates = groupedRollCall.Select(x => x.CreationDate.Date).ToList(); + var holidayWorkingDays = _context.HolidayItems.Count(x => + groupStartDaysDates.Any(r => r == x.Holidaydate.Date)); + holiday = holiday - holidayWorkingDays; + + mandatoryDays -= holiday; + } + + TimeSpan absentTimeSpans = new(); + + if ((mandatoryDays * sumOfEmployeeShiftSpan) > sumSpans) + { + absentTimeSpans = (mandatoryDays * sumOfEmployeeShiftSpan) - sumSpans; + } + + + dailyWage = monthySalary / monthDays; + + var minuteWage = sumOfEmployeeShiftSpan.TotalMinutes == 0 + ? 0 + : (dailyWage / sumOfEmployeeShiftSpan.TotalMinutes); + + + // یافتن مرخصی ساعتی + + #region LeavHourse + + LeaveSearchModel leaveHourseSearch = new LeaveSearchModel() + { + EmployeeId = employeeId, + WorkshopId = workshopId, + LeaveType = "استحقاقی", + + StartLeaveGr = contractStart, + EndLeaveGr = contractEnd, + IsAccepted = true, + }; + List leaveList = _leaveRepository.search(leaveHourseSearch); + + #endregion + + //****افزودن مرخصی پرسنل به مجموع ساعات کار*** + + #region AddEmployeeLeaves + + //TimeSpan workingPerDayAve = sumSpans / numberOfWorkingDay;//میانگین ساعت کار در روز + + + //if (workingPerDayAve <= new TimeSpan(7, 20, 0)) + //{ + // sumLeave = leavingDayCout * workingPerDayAve; + //} + //else + //{ + // sumLeave = leavingDayCout * new TimeSpan(7, 20, 0); + //} + + + double leavePayAmount = 0; + double absentsDeductionAmount = 0; + + int leavePermittedDays = customizeWorkshopEmployeeSettings.LeavePermittedDays; + double leaveValue = customizeWorkshopEmployeeSettings.LeavePay.Value; + + + if (customizeWorkshopEmployeeSettings.CustomizeWorkshopGroupSettingId == 77) + { + var startMonth = contractStart; + var endMonth = contractStart.ToFarsi().FindeEndOfMonth().ToGeorgianDateTime(); + + int fridayInMonth = 0; + + // Ensure the dates are in the correct order + if (startMonth > endMonth) + { + var temp = startMonth; + startMonth = endMonth; + endMonth = temp; + } + + // Find the first Friday in the range + int daysUntilFriday = ((int)DayOfWeek.Friday - (int)startMonth.DayOfWeek + 7) % 7; + DateTime firstFriday = startMonth.AddDays(daysUntilFriday); + + // If the first Friday is outside the range, there are no Fridays + if (firstFriday > endMonth) + { + fridayInMonth = 0; + } + + // Calculate the total number of days between the first Friday and the end date + int totalFridayPeriod = (endMonth - firstFriday).Days; + + // Count the Fridays by dividing the total days by 7 and adding 1 for the first Friday + fridayInMonth = totalFridayPeriod / 7 + 1; + + + leavePermittedDays = fridayInMonth; + } + + + sumSpans = CalculateLeavePay(sumOfEmployeeShiftSpan, absentTimeSpans, leavePermittedDays, monthDays, + contractDays, sumSpans + , leaveValue, minuteWage, contractStart, contractEnd, out leavePayAmount, out absentsDeductionAmount); + + if (customizeWorkshopEmployeeSettings.LeavePay.LeavePayType != LeavePayType.None) + { + } + else + { + absentsDeductionAmount = absentTimeSpans.TotalMinutes * minuteWage; + } + + leavePayAmount = 0; + + + absenceDays = (absenceDays - leavePermittedDays) < 0 ? 0 : (absenceDays - leavePermittedDays); + + + //اگر روز تولدش تاریخ فیش وجود داشت + var monthOfBirthDay = employee!.DateOfBirth.ToFarsi().Substring(5, 2); + + var pc = new PersianCalendar(); + + var birthdayMonth = pc.GetMonth(employee.DateOfBirth); + var birthdayDay = pc.GetDayOfMonth(employee.DateOfBirth); + if (birthdayMonth == 12 && birthdayDay == 30) + { + //چک کن که آیا سال قرارداد کبیسه هست یا نه + var leap = + pc.IsLeapYear(pc.GetYear(contractStart)); + if (!leap) + { + birthdayDay = 29; + } + } + + + var employeeBirthDay = $"{yearOfCheckout:0000}/{birthdayMonth:00}/{birthdayDay:00}".ToGeorgianDateTime(); + + + if (employeeBirthDay >= contractStart && employeeBirthDay <= contractEnd && absenceDays > 0) + { + CreateRewardForBirthDay(employeeId, workshopId, dailyWage, monthOfCheckout, yearOfCheckout, contractStart); + } + + + Console.WriteLine(sumSpans); + + #endregion + + //***********************************// + //ToTal Hours Employee Worked + double totalHours = (sumSpans.TotalMinutes) / 60; + int totalHolidaysAndNotH = (int)sumSpans.TotalHours; + int totalHolidaysAndNotM = (int)(sumSpans.TotalMinutes % 60); + //***********************************// + + + #region Deductions + + //غیبت + + //تاخیر و تعجیل + + + //حق بیمه + + #region InsurancePay + + InsuranceDeduction insuranceDeduction = customizeWorkshopEmployeeSettings.InsuranceDeduction; + //farokhiChange + double insuranceDeductionAmount = + InsurancePayCalculation(employeeId, contractStart, contractEnd, insuranceDeduction, monthySalary); + + #endregion + + #region SalaryAidDeduction + + var salaryAidViewModel = SalaryAidsForCheckout(employeeId, workshopId, checkoutStart, checkoutEnd); + double salaryAidDeduction = salaryAidViewModel.Sum(x => x.AmountDouble); + + #endregion + + #region Loan + + var loanInstallments = LoanInstallmentForCheckout(employeeId, workshopId, contractStart, contractEnd); + + double loanDeduction = loanInstallments.Sum(x => x.AmountDouble); + + #endregion + + #region Fine + + var fineViewModels = FinesForCheckout(employeeId, workshopId, contractStart, contractEnd); + double fineDeduction = fineViewModels.Sum(x => x.Amount.MoneyToDouble()); + + #endregion + + #endregion + + + #region Payments + + //اضافه کاری + + #region OvertimePay + + double overtimePayAmount = 0; + + + TimeSpan overtimeTimeSpan; + + if (customizeWorkshopSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular && + customizeWorkshopEmployeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular) + { + overtimeTimeSpan = CalculateOvertimeSpanWithSumSpan(sumSpans, mandatoryDays, shiftSettings); + } + else if (customizeWorkshopEmployeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular) + { + //var date = new DateOnly(); + //var firstStartShift = new DateTime(date, customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts.MinBy(x => x.Placement).StartTime); + //var lastEndShift = new DateTime(date, customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts.MaxBy(x => x.Placement).EndTime); + //if (lastEndShift > firstStartShift) + // firstStartShift = firstStartShift.AddDays(1); + //var offSet = (firstStartShift - lastEndShift).Divide(2); + //var employeeOffSet = TimeOnly.FromDateTime(lastEndShift.Add(offSet)); + + overtimeTimeSpan = CalculateOvertimeSpanWithSumSpan(sumSpans, mandatoryDays, shiftSettings); + } + else + { + var irregularShifts = customizeWorkshopEmployeeSettings.IrregularShift.WorkshopIrregularShifts; + overtimeTimeSpan = CalculateRotatingOvertime(customizeWorkshopEmployeeSettings.CustomizeRotatingShifts, + groupedRollCall, mandatoryDays, sumSpans); + } + + overtimePayAmount = + CalculateOvertimePay(overtimeTimeSpan, customizeWorkshopEmployeeSettings.OverTimePay, dailyWage); + + if (overtimePayAmount >= absentsDeductionAmount) + { + overtimePayAmount = overtimePayAmount - absentsDeductionAmount; + absentsDeductionAmount = 0; + } + else + { + absentsDeductionAmount = absentsDeductionAmount - overtimePayAmount; + overtimePayAmount = 0; + } + + overtimePayAmount = 0; + + #endregion + + #region KebabMahdiAbsentsCaclculation + + var rollCallDays = groupedRollCall.Count > mandatoryDays ? mandatoryDays : groupedRollCall.Count; + + absenceDays = mandatoryDays - rollCallDays; + absenceDays = absenceDays - leavePermittedDays < 0 ? 0 : absenceDays - leavePermittedDays; + absentsDeductionAmount = absenceDays * dailyWage; + + #endregion + + var createReward = absenceDays; + if (monthOfCheckout == 1 && yearOfCheckout == 1404) + { + bool hasAbsents = _context.CustomizeCheckouts.Any(x => + x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.MonthInt == 12 && x.YearInt == 1403 && + x.FineAbsenceDeduction > 0); + bool absentInEid = !_context.RollCalls.Any(x => + x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.ShiftDate == new DateTime(2025, 3, 20)); + if (hasAbsents && absentInEid) + { + CreateReward(employeeId, workshopId, dailyWage, monthOfCheckout, yearOfCheckout, + new DateTime(2025, 3, 21), RewardType.Eid, "بابت تعطیلی آخر سال"); + } + + if (absentDates.Any(x => x == new DateTime(2025, 4, 2) && createReward > 0)) + { + CreateReward(employeeId, workshopId, dailyWage, monthOfCheckout, yearOfCheckout, + new DateTime(2025, 4, 2), RewardType.SinzdahBedar, "بابت تعطیلی روز 13 فروردین"); + createReward--; + } + + if (absentDates.Any(x => x == new DateTime(2025, 4, 3) && createReward > 0)) + { + CreateReward(employeeId, workshopId, dailyWage, monthOfCheckout, yearOfCheckout, + new DateTime(2025, 4, 3), RewardType.ChahardahFarvardin, "بابت تعطیلی روز 14 فروردین"); + createReward--; + } + } + + + #region FridayPay + + double fridayPayAmount = 0; + + fridayPayAmount = FridayPayCalculation(customizeWorkshopEmployeeSettings, rollCallResult, dailyWage, + shiftSettings, overtimePayAmount); + + #endregion + + //حق تاهل + + #region MaritalAllownace + + double maritalAllowancePay = 0; + if (employee.MaritalStatus == "متاهل") + { + switch (customizeWorkshopEmployeeSettings.MarriedAllowance.MarriedAllowanceType) + { + case MarriedAllowanceType.Money: + { + maritalAllowancePay = customizeWorkshopEmployeeSettings.MarriedAllowance.Value; + break; + } + //case MarriedAllowanceType.PercentageFromSalary: + + // { + // double multiplier = customizeWorkshopEmployeeSettings.MarriedAllowance.Value / 100; + // maritalAllowance = dailyWage * multiplier; + // break; + // } + } + } + + #endregion + + //شب کاری + + #region NightWorkPay + + double nightworkPayAmount = 0; + List rotatingResultList = RotatingShiftCheck(groupedRollCall); + + // شبکاری + TimeSpan nightWorks = new TimeSpan(rotatingResultList.Sum(x => x.NightWorkSpan.Ticks)); + + if (nightWorks > new TimeSpan()) + { + switch (customizeWorkshopEmployeeSettings.NightWorkPay.NightWorkingType) + { + case NightWorkType.MoneyPerHour: + { + var baseAmount = customizeWorkshopEmployeeSettings.NightWorkPay.Value; + var nightWorkMinutes = (int)(nightWorks).TotalMinutes; + nightworkPayAmount += nightWorkMinutes * (baseAmount / 60); + break; + } + case NightWorkType.PercentageFromSalary: + { + double multiplier = customizeWorkshopEmployeeSettings.NightWorkPay.Value / 100; + var nightWorkMinutes = (int)(nightWorks).TotalMinutes; + nightworkPayAmount += ((dailyWage * multiplier) / 60) * nightWorkMinutes; + break; + } + } + } + + #endregion + + //سنوات + + #region BaseYearsPay + + double baseYearsPayAmount = CalculateYearsPayAmount(employeeId, workshopId, monthySalary, contractStart, + contractEnd + , customizeWorkshopEmployeeSettings.BaseYearsPay, customizeWorkshopSettings.BaseYearsPayInEndOfYear, + customizeWorkshopSettings.MaxMonthDays); + + #endregion + + //حق اولاد + + #region FamilyAllowancePay + + double familyAllowancePay = 0; + switch (customizeWorkshopEmployeeSettings.FamilyAllowance.FamilyAllowanceType) + { + case FamilyAllowanceType.Money: + { + double baseAmount = customizeWorkshopEmployeeSettings.FamilyAllowance.Value; + familyAllowancePay = CalculateFamilyAllowancePayAmount(employeeId, baseAmount, contractEnd); + break; + } + + case FamilyAllowanceType.Percentage: + { + double multiplier = customizeWorkshopEmployeeSettings.FamilyAllowance.Value / 100; + familyAllowancePay = + CalculateFamilyAllowancePayAmount(employeeId, multiplier * monthySalary, contractEnd); + break; + } + } + + #endregion + + #region Reward + + var rewardViewModels = RewardForCheckout(employeeId, workshopId, checkoutEnd, checkoutStart); + + double rewardPay = rewardViewModels.Sum(x => x.AmountDouble); + + #endregion + + #region LeavePay + + #endregion + + #region BonusesPay + + double bonusesPayAmount = 0; + + + if (customizeWorkshopEmployeeSettings.BonusesPay.BonusesPayType != BonusesType.None) + { + switch (customizeWorkshopEmployeeSettings.BonusesPay.BonusesPayType) + { + case BonusesType.OneTimeOfSalary: + bonusesPayAmount = monthySalary; + break; + case BonusesType.TwoTimeOfSalary: + bonusesPayAmount = monthySalary * 2; + break; + case BonusesType.Money: + bonusesPayAmount = customizeWorkshopEmployeeSettings.BonusesPay.Value; + break; + case BonusesType.PercentageOfSalary: + bonusesPayAmount = (monthySalary * customizeWorkshopEmployeeSettings.BonusesPay.Value) / 100; + break; + } + + double bonusesPerMonth = bonusesPayAmount / 12; + + if (customizeWorkshopEmployeeSettings.BonusesPay.PaymentType == BonusesPaymentType.YearlyPay) + { + var contractEndFarsi = Tools.FindeEndOfMonth(contractEnd.ToFarsi()); + if (monthOfCheckout == 12 && (contractEndFarsi.EndsWith("29")) || contractEndFarsi.EndsWith("30")) + { + } + else if (customizeWorkshopSettings.BonusesPaysInEndOfMonth == + BonusesPaysInEndOfYear.WhenEverEmployeeLeftWork && leftWork.HasLeft) + { + TimeSpan bonusDuration; + DateTime startOfYear = new PersianCalendar().ToDateTime(yearOfCheckout, 1, 1, 0, 0, 0, 0); + if (startOfYear < leftWork.StartWorkDateGr) + bonusDuration = leftWorkDurationTimeSpan; + else + bonusDuration = leftWork.LeftWorkDateGr - startOfYear; + //ToDo: Check if should be absolute 365! + bonusesPayAmount = (bonusesPayAmount / 365) * bonusDuration.TotalDays; + } + else + { + bonusesPayAmount = 0; + } + } + else if (customizeWorkshopEmployeeSettings.BonusesPay.PaymentType == BonusesPaymentType.MonthlyPay) + { + if (customizeWorkshopSettings.BonusesPaysInEndOfMonth == + BonusesPaysInEndOfYear.WhenEverEmployeeLeftWork && leftWork.HasLeft && contractDays < monthDays) + bonusesPayAmount = (bonusesPerMonth / contractEnd.CountPersianMonthDays()) * + contractDuration.TotalDays + 1; + + + bonusesPayAmount = bonusesPerMonth; + } + else + { + throw new InvalidDataException(); + } + } + + #endregion #endregion @@ -4101,14 +4076,14 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { foreach (var rollCall in groupedRollCall) { - var rollCallShift = rollCall.TotalShiftDurationTimeSpan; var dayMinuteWage = rollCallShift.TotalMinutes == 0 ? 0 : (dailyWage / rollCallShift.TotalMinutes); (DateTime start, DateTime end)? firstShift = null; foreach (var rc in rollCall.ShiftList.OrderBy(x => x.Start)) { double minutes = 0; - var shift = FindRotatingShift(rc.Start, rc.End, customizeWorkshopEmployeeSettings.CustomizeRotatingShifts); + var shift = FindRotatingShift(rc.Start, rc.End, + customizeWorkshopEmployeeSettings.CustomizeRotatingShifts); if (firstShift == null) { firstShift = shift; @@ -4147,16 +4122,12 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //} //lateToWorkDeduction += dayMinuteWage * minutes; } - } - - } else { foreach (var rollCall in groupedRollCall) { - var rollCallShift = rollCall.TotalShiftDurationTimeSpan; var dayMinuteWage = rollCallShift.TotalMinutes == 0 ? 0 : (dailyWage / rollCallShift.TotalMinutes); @@ -4178,7 +4149,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll var minutes = effectiveLate.TotalMinutes; lateToWorkDeduction += dayMinuteWage * minutes; totalLateToWorkSpan = totalLateToWorkSpan.Add(effectiveLate); - } } @@ -4188,7 +4158,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll mandatoryDays = 30; } - #endregion return new CustomizeCheckoutMandatoryViewModel @@ -4236,7 +4205,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll }; } - private CustomizeCheckoutMandatoryViewModel CheckoutWithoutCalculationForKebabMahdi(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd) + private CustomizeCheckoutMandatoryViewModel CheckoutWithoutCalculationForKebabMahdi(long workshopId, + long employeeId, DateTime contractStart, DateTime contractEnd) { var firstDayOfMonth = $"{(contractStart.ToFarsi())[..8]}/01".ToGeorgianDateTime(); @@ -4250,7 +4220,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll .AsSplitQuery().AsNoTracking().FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId); - customizeWorkshopSettings = _context.CustomizeWorkshopSettings.AsNoTracking().FirstOrDefault(x => x.WorkshopId == workshopId); + customizeWorkshopSettings = _context.CustomizeWorkshopSettings.AsNoTracking() + .FirstOrDefault(x => x.WorkshopId == workshopId); } else @@ -4259,14 +4230,15 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll .AsSplitQuery().AsNoTracking().FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId); - customizeWorkshopSettings = _testDbContext.CustomizeWorkshopSettings.AsNoTracking().FirstOrDefault(x => x.WorkshopId == workshopId); - + customizeWorkshopSettings = _testDbContext.CustomizeWorkshopSettings.AsNoTracking() + .FirstOrDefault(x => x.WorkshopId == workshopId); } + //ToDo handel exception if is null var monthySalary = customizeWorkshopEmployeeSettings?.Salary ?? 0; var monthDays = customizeWorkshopSettings.MaxMonthDays == MaxMonthDays.ThirtyDaysForAllMonth - ? 30 - : firstDayOfMonth.CountMonthDays(); + ? 30 + : firstDayOfMonth.CountMonthDays(); double dailyWage = 0; dailyWage = monthySalary / monthDays; @@ -4295,11 +4267,13 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll double fineDeduction = fineViewModels.Sum(x => x.Amount.MoneyToDouble()); #endregion + #region Reward var rewardViewModels = RewardForCheckout(employeeId, workshopId, contractEnd, contractStart); double rewardPay = rewardViewModels.Sum(x => x.AmountDouble); + #endregion @@ -4307,6 +4281,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { mandatoryDays = 30; } + return new CustomizeCheckoutMandatoryViewModel() { MonthlySalary = dailyWage * mandatoryDays, @@ -4321,46 +4296,860 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll }; } + public CustomizeCheckoutMandatoryViewModel CustomizeCheckoutMandatoryComputeForPizzaAmir(long employeeId, + long workshopId, + DateTime contractStart, DateTime contractEnd) + { + //مقدار جریمه تاخیر ورود + double lateEntryFine = 0; + //مرز جریمه جداگانه تاخیر ورود + int minuteThresholdForLateEntryFine = 16; - private List RewardForCheckout(long employeeId, long workshopId, DateTime checkoutEnd, DateTime checkoutStart) + int lateEntryFineTimes = 0; + //مرز محاسبه تعجیل خروج + int minuteThresholdForEarlyExitCalculation = 30; + //مبلغ جریمه تاخیر ورود + int lateEntryFineAmount = 40_000; + + //مقدار جریمه افرادی که دارای بیمه هستند ولی غیبت کرده اند + int absenceForInsuranceEmployeesAmount = 150_000; + + + var checkoutEnd = contractEnd; + var checkoutStart = contractStart; + + var firstDayOfMonth = $"{(contractStart.ToFarsi())[..8]}/01".ToGeorgianDateTime(); + + #region LeftWork + + var leftWork = + _leftWorkRepository.GetByWorkshopIdEmployeeIdInDates(workshopId, employeeId, contractStart, contractEnd); + + if (leftWork.StartWorkDateGr > contractStart) + { + contractStart = leftWork.StartWorkDateGr; + } + + if (leftWork.LeftWorkDateGr.AddDays(-1) < contractEnd) + { + contractEnd = leftWork.LeftWorkDateGr.AddDays(-1); + } + + TimeSpan leftWorkDurationTimeSpan = leftWork.HasLeft + ? leftWork.LeftWorkDateGr.AddDays(-1) - leftWork.StartWorkDateGr + : contractEnd - leftWork.StartWorkDateGr; + + #endregion + + + #region Entities + + int numberOfFridays = 0; + double monthySalary = 0; + int monthDays = 0; + double dailyWage = 0; + int numberOfWorkingDay = 0; + string endPersianDate = contractEnd.ToFarsi(); + int monthOfCheckout = Convert.ToInt32(endPersianDate.Substring(5, 2)); + int yearOfCheckout = Convert.ToInt32(endPersianDate.Substring(0, 4)); + //روز هایی که پرسنل موظف بوده کار کند + var mandatoryDays = 0; + + TimeSpan contractDuration = contractEnd - contractStart; + var employee = _context.Employees.FirstOrDefault(x => x.id == employeeId); + var personnelCode = + _context.PersonnelCodeSet.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId) + ?.PersonnelCode ?? 0; + var contract = _context.Contracts.Where(x => x.WorkshopIds == workshopId && x.EmployeeId == employeeId && + x.ContractEnd.Date >= contractStart.Date && + x.ContarctStart.Date <= contractEnd.Date).ToList() + ?.MaxBy(x => x.ContarctStart); + var totalDays = (int)(contractEnd - contractStart).TotalDays + 1; + mandatoryDays = totalDays; + + #endregion + + + #region CustomizeSettings + + CustomizeWorkshopEmployeeSettings customizeWorkshopEmployeeSettings; + CustomizeWorkshopSettings customizeWorkshopSettings; + + + customizeWorkshopEmployeeSettings = _context.CustomizeWorkshopEmployeeSettings + .AsSplitQuery().AsNoTracking().FirstOrDefault(x => + x.WorkshopId == workshopId && x.EmployeeId == employeeId); + + customizeWorkshopSettings = _context.CustomizeWorkshopSettings.AsNoTracking() + .FirstOrDefault(x => x.WorkshopId == workshopId); + + + //ToDo handel exception if is null + monthySalary = customizeWorkshopEmployeeSettings?.Salary ?? 0; + monthDays = customizeWorkshopSettings.MaxMonthDays == MaxMonthDays.ThirtyDaysForAllMonth + ? 30 + : firstDayOfMonth.CountMonthDays(); + + + var shiftSettings = customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts; + + var employeeShiftsSpans = shiftSettings.Select(x => + { + var start = new DateTime(new DateOnly(), x.StartTime); + var end = new DateTime(new DateOnly(), x.EndTime); + if (x.EndTime < x.StartTime) + end = end.AddDays(1); + var span = end - start; + return new EmployeeShiftResult + { + Placement = x.Placement, + ShiftSpan = span + }; + }); + + #endregion + + List rollCallResult = _context.RollCalls.AsNoTracking().Where(x => + x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.ShiftDate.Date >= contractStart.Date && + x.ShiftDate.Date <= contractEnd.Date && x.EndDate != null) + .Select(x => new RollCallViewModel() + { + StartDate = x.StartDate, + EndDate = x.EndDate, + ShiftSpan = (x.EndDate.Value - x.StartDate.Value), + CreationDate = x.CreationDate, + ShiftDate = x.ShiftDate, + EarlyEntryDuration = x.EarlyEntryDuration, + LateEntryDuration = x.LateEntryDuration, + EarlyExitDuration = x.EarlyExitDuration, + LateExitDuration = x.LateExitDuration, + ShiftDurationTimeSpan = x.ShiftDurationTimeSpan, + BreakTimeSpan = x.BreakTimeSpan + }).ToList(); + + + List groupedRollCall = rollCallResult.GroupBy(x => x.ShiftDate.Date).Select(x => + new GroupedRollCalls() + { + CreationDate = x.Key, + ShiftList = x.Select(s => new ShiftList() + { + Start = s.StartDate!.Value, + End = s.EndDate!.Value, + EarlyEntryDuration = s.EarlyEntryDuration, + EarlyExitDuration = s.EarlyExitDuration, + LateEntryDuration = s.LateEntryDuration, + LateExitDuration = s.LateExitDuration, + }).ToList(), + HasFriday = x.Any(s => + s.StartDate.Value.DayOfWeek == DayOfWeek.Friday || s.EndDate.Value.DayOfWeek == DayOfWeek.Friday), + + SumOneDaySpan = new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)) - CalculateBreakTime( + x.First().BreakTimeSpan, + new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))), + + BreakTime = CalculateBreakTime(x.First().BreakTimeSpan, + new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks))), + ShiftDate = x.Key, + TotalEarlyEntryDuration = new TimeSpan(x.Sum(rollCall => rollCall.EarlyEntryDuration.Ticks)), + TotalLateEntryDuration = new TimeSpan(x.Sum(rollCall => rollCall.LateEntryDuration.Ticks)), + TotalEarlyExitDuration = new TimeSpan(x.Sum(rollCall => rollCall.EarlyExitDuration.Ticks)), + TotalLateExitDuration = new TimeSpan(x.Sum(rollCall => rollCall.LateExitDuration.Ticks)), + TotalShiftDurationTimeSpan = + x.FirstOrDefault() == null ? TimeSpan.Zero : x.First().ShiftDurationTimeSpan + }).ToList(); + + var sumOfEmployeeShiftSpan = + groupedRollCall.Any() ? groupedRollCall.First().TotalShiftDurationTimeSpan : TimeSpan.Zero; + + + if (customizeWorkshopEmployeeSettings.BreakTime.BreakTimeType == BreakTimeType.WithTime && + sumOfEmployeeShiftSpan != TimeSpan.Zero) + { + sumOfEmployeeShiftSpan -= customizeWorkshopEmployeeSettings.BreakTime.BreakTimeValue.ToTimeSpan(); + } + + + // ساخت لیست همه تاریخ‌ها در بازه + List allDates = Enumerable.Range(0, (contractEnd - contractStart).Days + 1) + .Select(offset => contractStart.AddDays(offset)) + .ToList(); + + // فیلتر تاریخ‌هایی که در لیست حضور نیستند + List absentDates = allDates + .Where(date => !groupedRollCall.Any(g => g.ShiftDate.Date == date.Date)) + .ToList(); + + + TimeSpan sumSpans = new TimeSpan(groupedRollCall.Sum(x => x.SumOneDaySpan.Ticks)); + + numberOfFridays = groupedRollCall.Count(x => x.HasFriday); + + numberOfWorkingDay = groupedRollCall.Count(); + //تعداد روز های قرارداد + int contractDays = (int)contractDuration.TotalDays + 1; + + //روز های غیبت + var absenceDays = mandatoryDays - groupedRollCall.Count; + + int fridays = 0; + + int holiday = _context.HolidayItems.Count(x => x.Holidaydate >= contractStart && x.Holidaydate <= contractEnd); + + + for (var gDate = contractStart; gDate <= contractEnd; gDate = gDate.AddDays(1)) + { + if (gDate.DayOfWeek == DayOfWeek.Friday) + { + fridays += 1; + } + } + + if (customizeWorkshopEmployeeSettings.FridayWork == FridayWork.Default) + { + var fridayWorkingTotalDays = groupedRollCall.Count(x => x.ShiftDate.DayOfWeek == DayOfWeek.Friday); + var fridayWorking = fridays - fridayWorkingTotalDays; + + + //mandatoryDays -= fridayWorking; + } + + if (customizeWorkshopEmployeeSettings.HolidayWork == HolidayWork.Default) + { + var groupStartDaysDates = groupedRollCall.Select(x => x.CreationDate.Date).ToList(); + var holidayWorkingDays = _context.HolidayItems.Count(x => + groupStartDaysDates.Any(r => r == x.Holidaydate.Date)); + holiday = holiday - holidayWorkingDays; + + mandatoryDays -= holiday; + } + + TimeSpan absentTimeSpans = new(); + + if ((mandatoryDays * sumOfEmployeeShiftSpan) > sumSpans) + { + absentTimeSpans = (mandatoryDays * sumOfEmployeeShiftSpan) - sumSpans; + } + + + dailyWage = monthySalary / monthDays; + + var minuteWage = sumOfEmployeeShiftSpan.TotalMinutes == 0 + ? 0 + : (dailyWage / sumOfEmployeeShiftSpan.TotalMinutes); + + + // یافتن مرخصی ساعتی + + #region LeavHourse + + // LeaveSearchModel leaveHourseSearch = new LeaveSearchModel() + // { + // EmployeeId = employeeId, + // WorkshopId = workshopId, + // LeaveType = "استحقاقی", + // + // StartLeaveGr = contractStart, + // EndLeaveGr = contractEnd, + // IsAccepted = true, + // + // }; + + // List leaveList = _leaveRepository.search(leaveHourseSearch); + + #endregion + + //****افزودن مرخصی پرسنل به مجموع ساعات کار*** + + #region AddEmployeeLeaves + + //TimeSpan workingPerDayAve = sumSpans / numberOfWorkingDay;//میانگین ساعت کار در روز + + + //if (workingPerDayAve <= new TimeSpan(7, 20, 0)) + //{ + // sumLeave = leavingDayCout * workingPerDayAve; + //} + //else + //{ + // sumLeave = leavingDayCout * new TimeSpan(7, 20, 0); + //} + + + double leavePayAmount = 0; + double absentsDeductionAmount = 0; + + int leavePermittedDays = customizeWorkshopEmployeeSettings.LeavePermittedDays; + double leaveValue = customizeWorkshopEmployeeSettings.LeavePay.Value; + + + sumSpans = CalculateLeavePay(sumOfEmployeeShiftSpan, absentTimeSpans, leavePermittedDays, monthDays, + contractDays, sumSpans + , leaveValue, minuteWage, contractStart, contractEnd, out leavePayAmount, out absentsDeductionAmount); + + if (customizeWorkshopEmployeeSettings.LeavePay.LeavePayType != LeavePayType.None) + { + } + else + { + absentsDeductionAmount = absentTimeSpans.TotalMinutes * minuteWage; + } + + leavePayAmount = 0; + + + absenceDays = (absenceDays - leavePermittedDays) < 0 ? 0 : (absenceDays - leavePermittedDays); + + + //اگر روز تولدش تاریخ فیش وجود داشت + + Console.WriteLine(sumSpans); + + #endregion + + //***********************************// + //ToTal Hours Employee Worked + double totalHours = (sumSpans.TotalMinutes) / 60; + int totalHolidaysAndNotH = (int)sumSpans.TotalHours; + int totalHolidaysAndNotM = (int)(sumSpans.TotalMinutes % 60); + //***********************************// + + + #region Deductions + + //غیبت + + //تاخیر و تعجیل + + + //حق بیمه + + #region InsurancePay + + InsuranceDeduction insuranceDeduction = customizeWorkshopEmployeeSettings.InsuranceDeduction; + //farokhiChange + double insuranceDeductionAmount = + InsurancePayCalculation(employeeId, contractStart, contractEnd, insuranceDeduction, monthySalary); + + #endregion + + #region SalaryAidDeduction + + var salaryAidViewModel = SalaryAidsForCheckout(employeeId, workshopId, checkoutStart, checkoutEnd); + double salaryAidDeduction = salaryAidViewModel.Sum(x => x.AmountDouble); + + #endregion + + #region Loan + + var loanInstallments = LoanInstallmentForCheckout(employeeId, workshopId, contractStart, contractEnd); + + double loanDeduction = loanInstallments.Sum(x => x.AmountDouble); + + #endregion + + #region Fine + + var fineViewModels = FinesForCheckout(employeeId, workshopId, contractStart, contractEnd); + double fineDeduction = fineViewModels.Sum(x => x.Amount.MoneyToDouble()); + + #endregion + + #endregion + + + #region Payments + + //اضافه کاری + + #region OvertimePay + + double overtimePayAmount = 0; + + + TimeSpan overtimeTimeSpan; + + if (customizeWorkshopSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular && + customizeWorkshopEmployeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular) + { + overtimeTimeSpan = CalculateOvertimeSpanWithSumSpan(sumSpans, mandatoryDays, shiftSettings); + } + else if (customizeWorkshopEmployeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular) + { + //var date = new DateOnly(); + //var firstStartShift = new DateTime(date, customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts.MinBy(x => x.Placement).StartTime); + //var lastEndShift = new DateTime(date, customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts.MaxBy(x => x.Placement).EndTime); + //if (lastEndShift > firstStartShift) + // firstStartShift = firstStartShift.AddDays(1); + //var offSet = (firstStartShift - lastEndShift).Divide(2); + //var employeeOffSet = TimeOnly.FromDateTime(lastEndShift.Add(offSet)); + + overtimeTimeSpan = CalculateOvertimeSpanWithSumSpan(sumSpans, mandatoryDays, shiftSettings); + } + else + { + var irregularShifts = customizeWorkshopEmployeeSettings.IrregularShift.WorkshopIrregularShifts; + overtimeTimeSpan = CalculateRotatingOvertime(customizeWorkshopEmployeeSettings.CustomizeRotatingShifts, + groupedRollCall, mandatoryDays, sumSpans); + } + + overtimePayAmount = + CalculateOvertimePay(overtimeTimeSpan, customizeWorkshopEmployeeSettings.OverTimePay, dailyWage); + + if (overtimePayAmount >= absentsDeductionAmount) + { + overtimePayAmount = overtimePayAmount - absentsDeductionAmount; + absentsDeductionAmount = 0; + } + else + { + absentsDeductionAmount = absentsDeductionAmount - overtimePayAmount; + overtimePayAmount = 0; + } + + overtimePayAmount = 0; + + #endregion + + #region KebabMahdiAbsentsCaclculation + + var rollCallDays = groupedRollCall.Count > mandatoryDays ? mandatoryDays : groupedRollCall.Count; + + absenceDays = mandatoryDays - rollCallDays; + + if (absenceDays - leavePermittedDays < 0) + { + leavePermittedDays -= absenceDays; + leavePayAmount = leavePermittedDays * dailyWage; + } + else + { + absenceDays -= leavePermittedDays; + absentsDeductionAmount = absenceDays * dailyWage; + } + + #endregion + + + #region FridayPay + + double fridayPayAmount = 0; + + fridayPayAmount = FridayPayCalculation(customizeWorkshopEmployeeSettings, rollCallResult, dailyWage, + shiftSettings, overtimePayAmount); + + #endregion + + //حق تاهل + + #region MaritalAllownace + + double maritalAllowancePay = 0; + if (employee.MaritalStatus == "متاهل") + { + switch (customizeWorkshopEmployeeSettings.MarriedAllowance.MarriedAllowanceType) + { + case MarriedAllowanceType.Money: + { + maritalAllowancePay = customizeWorkshopEmployeeSettings.MarriedAllowance.Value; + break; + } + //case MarriedAllowanceType.PercentageFromSalary: + + // { + // double multiplier = customizeWorkshopEmployeeSettings.MarriedAllowance.Value / 100; + // maritalAllowance = dailyWage * multiplier; + // break; + // } + } + } + + #endregion + + //شب کاری + + #region NightWorkPay + + double nightworkPayAmount = 0; + List rotatingResultList = RotatingShiftCheck(groupedRollCall); + + // شبکاری + TimeSpan nightWorks = new TimeSpan(rotatingResultList.Sum(x => x.NightWorkSpan.Ticks)); + + if (nightWorks > new TimeSpan()) + { + switch (customizeWorkshopEmployeeSettings.NightWorkPay.NightWorkingType) + { + case NightWorkType.MoneyPerHour: + { + var baseAmount = customizeWorkshopEmployeeSettings.NightWorkPay.Value; + var nightWorkMinutes = (int)(nightWorks).TotalMinutes; + nightworkPayAmount += nightWorkMinutes * (baseAmount / 60); + break; + } + case NightWorkType.PercentageFromSalary: + { + double multiplier = customizeWorkshopEmployeeSettings.NightWorkPay.Value / 100; + var nightWorkMinutes = (int)(nightWorks).TotalMinutes; + nightworkPayAmount += ((dailyWage * multiplier) / 60) * nightWorkMinutes; + break; + } + } + } + + #endregion + + //سنوات + + #region BaseYearsPay + + double baseYearsPayAmount = CalculateYearsPayAmount(employeeId, workshopId, monthySalary, contractStart, + contractEnd + , customizeWorkshopEmployeeSettings.BaseYearsPay, customizeWorkshopSettings.BaseYearsPayInEndOfYear, + customizeWorkshopSettings.MaxMonthDays); + + #endregion + + //حق اولاد + + #region FamilyAllowancePay + + double familyAllowancePay = 0; + switch (customizeWorkshopEmployeeSettings.FamilyAllowance.FamilyAllowanceType) + { + case FamilyAllowanceType.Money: + { + double baseAmount = customizeWorkshopEmployeeSettings.FamilyAllowance.Value; + familyAllowancePay = CalculateFamilyAllowancePayAmount(employeeId, baseAmount, contractEnd); + break; + } + + case FamilyAllowanceType.Percentage: + { + double multiplier = customizeWorkshopEmployeeSettings.FamilyAllowance.Value / 100; + familyAllowancePay = + CalculateFamilyAllowancePayAmount(employeeId, multiplier * monthySalary, contractEnd); + break; + } + } + + #endregion + + #region Reward + + var rewardViewModels = RewardForCheckout(employeeId, workshopId, checkoutEnd, checkoutStart); + + double rewardPay = rewardViewModels.Sum(x => x.AmountDouble); + + #endregion + + #region LeavePay + + #endregion + + #region BonusesPay + + double bonusesPayAmount = 0; + + + if (customizeWorkshopEmployeeSettings.BonusesPay.BonusesPayType != BonusesType.None) + { + switch (customizeWorkshopEmployeeSettings.BonusesPay.BonusesPayType) + { + case BonusesType.OneTimeOfSalary: + bonusesPayAmount = monthySalary; + break; + case BonusesType.TwoTimeOfSalary: + bonusesPayAmount = monthySalary * 2; + break; + case BonusesType.Money: + bonusesPayAmount = customizeWorkshopEmployeeSettings.BonusesPay.Value; + break; + case BonusesType.PercentageOfSalary: + bonusesPayAmount = (monthySalary * customizeWorkshopEmployeeSettings.BonusesPay.Value) / 100; + break; + } + + double bonusesPerMonth = bonusesPayAmount / 12; + + if (customizeWorkshopEmployeeSettings.BonusesPay.PaymentType == BonusesPaymentType.YearlyPay) + { + var contractEndFarsi = Tools.FindeEndOfMonth(contractEnd.ToFarsi()); + if (monthOfCheckout == 12 && (contractEndFarsi.EndsWith("29")) || contractEndFarsi.EndsWith("30")) + { + } + else if (customizeWorkshopSettings.BonusesPaysInEndOfMonth == + BonusesPaysInEndOfYear.WhenEverEmployeeLeftWork && leftWork.HasLeft) + { + TimeSpan bonusDuration; + DateTime startOfYear = new PersianCalendar().ToDateTime(yearOfCheckout, 1, 1, 0, 0, 0, 0); + if (startOfYear < leftWork.StartWorkDateGr) + bonusDuration = leftWorkDurationTimeSpan; + else + bonusDuration = leftWork.LeftWorkDateGr - startOfYear; + //ToDo: Check if should be absolute 365! + bonusesPayAmount = (bonusesPayAmount / 365) * bonusDuration.TotalDays; + } + else + { + bonusesPayAmount = 0; + } + } + else if (customizeWorkshopEmployeeSettings.BonusesPay.PaymentType == BonusesPaymentType.MonthlyPay) + { + if (customizeWorkshopSettings.BonusesPaysInEndOfMonth == + BonusesPaysInEndOfYear.WhenEverEmployeeLeftWork && leftWork.HasLeft && contractDays < monthDays) + bonusesPayAmount = (bonusesPerMonth / contractEnd.CountPersianMonthDays()) * + contractDuration.TotalDays + 1; + + + bonusesPayAmount = bonusesPerMonth; + } + else + { + throw new InvalidDataException(); + } + } + + #endregion + + #endregion + + #region LateToWork & EarlyExit + + //var lateToWorkEarlyExit = LateToWorkEarlyExit(groupedRollCall, shiftSettings, leaveList); + //foreach (var i in lateToWorkEarlyExit) + //{ + // Console.WriteLine(" start : " + i.StartSpan + " end : " + i.EndSpan + " spaning : " + i.Spanning + " Type : " + i.TypeOfSapn); + //} + + //var lateToWoks = lateToWorkEarlyExit.Where(x => x.TypeOfSapn == "LateToWork"); + //var earlyExits = lateToWorkEarlyExit.Where(x => x.TypeOfSapn == "EarlyExist"); + + //var lateToWork = new TimeSpan(lateToWoks.Sum(x => x.Spanning.Ticks)); + //var earlyExist = new TimeSpan(earlyExits.Sum(x => x.Spanning.Ticks)); + //var totalSpaning = new TimeSpan(lateToWorkEarlyExit.Sum(x => x.Spanning.Ticks)); + //Console.ForegroundColor = ConsoleColor.Yellow; + //Console.WriteLine(" LateToWork H : " + (int)lateToWork.TotalHours + " M : " + (int)(lateToWork.TotalMinutes % 60)); + //Console.WriteLine(" EarlyExist H : " + (int)earlyExist.TotalHours + " M : " + (int)(earlyExist.TotalMinutes % 60)); + //Console.WriteLine(" TotalSpaning H : " + (int)totalSpaning.TotalHours + " M : " + (int)(totalSpaning.TotalMinutes % 60)); + //Console.ResetColor(); + + //double earlyExitDeduction = 0; + //double lateToWorkDeduction = 0; + + //////محاسبه مزد روزانه به ازای هر دقیقه + ////double dailyWagePerMinute = + //// (customizeWorkshopEmployeeSettings.Salary / monthDays) / sumOfEmployeeShiftSpan.TotalMinutes; + + //if (customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitType != EarlyExitType.None && earlyExist > new TimeSpan()) + //{ + // earlyExitDeduction = customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitType switch + // { + // EarlyExitType.Default => earlyExist.TotalMinutes * minuteWage, + + // EarlyExitType.MoneyPerMinute => earlyExist.TotalMinutes * customizeWorkshopEmployeeSettings.EarlyExit.Value, + + // _ => 0 + // }; + + //} + + + //if (customizeWorkshopEmployeeSettings.LateToWork.LateToWorkType != LateToWorkType.None && lateToWork > new TimeSpan()) + //{ + // lateToWorkDeduction = customizeWorkshopEmployeeSettings.LateToWork.LateToWorkType switch + // { + // LateToWorkType.Default => lateToWork.TotalMinutes * minuteWage, + + // LateToWorkType.MoneyPerMinute => lateToWork.TotalMinutes * customizeWorkshopEmployeeSettings.LateToWork.Value, + + // _ => 0 + // }; + + //} + + //if (customizeWorkshopEmployeeSettings.LateToWork.LateToWorkTimeFines.Any()) + //{ + // lateToWorkDeduction += + // (from lateToWorkTimeFine in customizeWorkshopEmployeeSettings.LateToWork.LateToWorkTimeFines + // let stepFine = lateToWoks.Count(x => x.Spanning.TotalMinutes >= Convert.ToInt32(lateToWorkTimeFine.Minute)) + // select stepFine * lateToWorkTimeFine.FineMoney).Sum(); + //} + //if (customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitTimeFines.Any()) + //{ + // earlyExitDeduction += + // (from earlyExitFine in customizeWorkshopEmployeeSettings.EarlyExit.EarlyExitTimeFines + // let stepFine = earlyExits.Count(x => x.Spanning.TotalMinutes >= Convert.ToInt32(earlyExitFine.Minute)) + // select stepFine * earlyExitFine.FineMoney).Sum(); + //} + + double lateToWorkDeduction = 0; + double earlyExitDeduction = 0; + TimeSpan totalLateToWorkSpan = TimeSpan.Zero; + + + if (customizeWorkshopEmployeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Rotating) + { + foreach (var rollCall in groupedRollCall) + { + var rollCallShift = rollCall.TotalShiftDurationTimeSpan; + var dayMinuteWage = rollCallShift.TotalMinutes == 0 ? 0 : (dailyWage / rollCallShift.TotalMinutes); + (DateTime start, DateTime end)? firstShift = null; + foreach (var rc in rollCall.ShiftList.OrderBy(x => x.Start)) + { + var shift = FindRotatingShift(rc.Start, rc.End, + customizeWorkshopEmployeeSettings.CustomizeRotatingShifts); + if (firstShift == null) + { + firstShift = shift; + } + + TimeSpan effectiveLate = rc.LateEntryDuration; + + var minutes = effectiveLate.TotalMinutes; + if (minutes >= minuteThresholdForLateEntryFine) + { + lateEntryFineTimes = (int)minutes / minuteThresholdForLateEntryFine; + lateEntryFine = lateEntryFineTimes * lateEntryFineAmount; + } + + totalLateToWorkSpan = totalLateToWorkSpan.Add(effectiveLate); + + lateToWorkDeduction += dayMinuteWage * minutes; + + TimeSpan effectiveEarlyExit = rollCall.TotalEarlyExitDuration; + if (effectiveEarlyExit.TotalMinutes > minuteThresholdForEarlyExitCalculation) + { + earlyExitDeduction += dayMinuteWage * effectiveEarlyExit.TotalMinutes; + } + } + } + } + else + { + foreach (var rollCall in groupedRollCall) + { + var rollCallShift = rollCall.TotalShiftDurationTimeSpan; + var dayMinuteWage = rollCallShift.TotalMinutes == 0 ? 0 : (dailyWage / rollCallShift.TotalMinutes); + + TimeSpan effectiveLate = rollCall.TotalLateEntryDuration; + + var minutes = effectiveLate.TotalMinutes; + if (minutes >= minuteThresholdForLateEntryFine) + { + lateEntryFineTimes = (int)minutes / minuteThresholdForLateEntryFine; + lateEntryFine = lateEntryFineTimes * lateEntryFineAmount; + } + + lateToWorkDeduction += dayMinuteWage * minutes; + totalLateToWorkSpan = totalLateToWorkSpan.Add(effectiveLate); + + + TimeSpan effectiveEarlyExit = rollCall.TotalEarlyExitDuration; + if (effectiveEarlyExit.TotalMinutes > minuteThresholdForEarlyExitCalculation) + { + earlyExitDeduction += dayMinuteWage * effectiveEarlyExit.TotalMinutes; + } + } + } + + + // if (mandatoryDays == 31) + // { + // mandatoryDays = 30; + // } + + #endregion + + return new CustomizeCheckoutMandatoryViewModel + { + InsuranceDeduction = Math.Truncate(insuranceDeductionAmount), + FridayPay = Math.Truncate(fridayPayAmount), + OverTimePay = Math.Truncate(overtimePayAmount), + BaseYearsPay = Math.Truncate(baseYearsPayAmount), + NightWorkPay = Math.Truncate(nightworkPayAmount), + MarriedAllowance = Math.Truncate(maritalAllowancePay), + FamilyAllowance = Math.Truncate(familyAllowancePay), + LeavePay = Math.Truncate(leavePayAmount), + FineAbsenceDeduction = Math.Truncate(absentsDeductionAmount), + BonusesPay = Math.Truncate(bonusesPayAmount), + ContractEndFa = contractEnd.ToFarsi(), + ContractStartFa = contractStart.ToFarsi(), + EmployeeName = employee.FullName, + InstallmentDeduction = Math.Truncate(loanDeduction), + SalaryAidDeduction = Math.Truncate(salaryAidDeduction), + FineDeduction = Math.Truncate(fineDeduction), + RewardPay = Math.Truncate(rewardPay), + Month = monthOfCheckout, + Year = yearOfCheckout, + LateToWorkDeduction = Math.Truncate(lateToWorkDeduction), + EarlyExitDeduction = earlyExitDeduction, + ShiftPay = 0, + TaxDeduction = 0, + EmployeeId = employeeId, + SumOfWorkingDays = totalDays.ToString(), + ContractNo = contract?.ContractNo ?? "-", + MonthlySalary = dailyWage * mandatoryDays, + PersonnelCode = personnelCode, + FineViewModels = fineViewModels, + InstallmentViewModels = loanInstallments, + SalaryAidViewModels = salaryAidViewModel, + RewardViewModels = rewardViewModels, + LateToWorkValue = totalLateToWorkSpan, + SettingSalary = customizeWorkshopEmployeeSettings.Salary, + DailyWage = dailyWage, + ShiftStatus = customizeWorkshopEmployeeSettings.WorkshopShiftStatus, + IrregularShift = customizeWorkshopEmployeeSettings.IrregularShift, + CustomizeRotatingShifts = customizeWorkshopEmployeeSettings.CustomizeRotatingShifts, + EmployeeSettingsShifts = customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts + .Select(x => (CustomizeSifts)x).ToList(), + }; + } + + 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(); + { + 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) + 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(); + { + 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(); } - public List LoanInstallmentForCheckout(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd) + public 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) + .Where(i => i.InstallmentDate >= contractStart && i.InstallmentDate <= contractEnd && + i.IsActive == IsActive.True) .Select(x => new LoanInstallmentViewModel() { Id = x.Id, @@ -4369,16 +5158,19 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll 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) + 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(); } - public List SalaryAidsForCheckout(long employeeId, long workshopId, DateTime checkoutStart, DateTime checkoutEnd) + public 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() + .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, @@ -4397,7 +5189,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll var end = $"{year}/{month:00}/01".FindeEndOfMonth().ToGeorgianDateTime(); if (_context.Rewards.Any(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId && x.GrantDate >= start && x.GrantDate <= end - && x.RewardType == RewardType.CreatedByCheckoutForBirthDay) == false) + && x.RewardType == + RewardType.CreatedByCheckoutForBirthDay) == false) { var reward = new Reward(employeeId, workshopId, amount, "", 0, UserType.System, contractStart, "هدیه تولد", RewardType.CreatedByCheckoutForBirthDay); @@ -4437,9 +5230,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //} - - - private TimeSpan CalculateIrregularOverTime(List rollCalls, TimeSpan employeeShiftSpan, WorkshopIrregularShifts irregularShifts, int mandatoryDays) + private TimeSpan CalculateIrregularOverTime(List rollCalls, TimeSpan employeeShiftSpan, + WorkshopIrregularShifts irregularShifts, int mandatoryDays) { var sumOfRollCallTicks = rollCalls.Sum(x => (x.EndDate.Value - x.StartDate.Value).Ticks); @@ -4453,7 +5245,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } - public static TimeSpan CalculateIrregularShiftSpans(int totalDays, IrregularShift irregularShift) { //مبنای تقسیم که بر اساس جمع مقدار ساعت استراحت و ساعت کاری بدست میاد @@ -4480,6 +5271,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll workTime = 24; break; } + //کل ساعاتی داخلش ممکنه کار کرده باشه var workingHour = totalDays * 24; @@ -4533,8 +5325,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll var leftDays = mandatoryDays - rollCalls.Count; if (leftDays > 0) { - - TimeSpan totalDuration = new TimeSpan(rotatingShifts.Sum(shift => Math.Abs(shift.EndTime.Ticks - shift.StartTime.Ticks))); + TimeSpan totalDuration = + new TimeSpan(rotatingShifts.Sum(shift => Math.Abs(shift.EndTime.Ticks - shift.StartTime.Ticks))); var averageDuration = totalDuration / rotatingShifts.Count; mandatorySpan += averageDuration * leftDays; } @@ -4543,40 +5335,41 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { return sumSpan - mandatorySpan; } - return TimeSpan.Zero; + return TimeSpan.Zero; } #region CustomizeCheckoutCalculation public static double FridayPayCalculation(CustomizeWorkshopEmployeeSettings customizeWorkshopEmployeeSettings, - List rollCallResult, double dailyWage, ICollection shiftSettings, double overtimePayAmount) + List rollCallResult, double dailyWage, + ICollection shiftSettings, double overtimePayAmount) { double fridayPayAmount = 0; switch (customizeWorkshopEmployeeSettings.FridayPay.FridayPayType) { case (FridayPayType.MoneyPerFridayForDay): - { - int workedFridaysCount = CalculateFridayWorkingTotalDays(rollCallResult); - double baseAmount = customizeWorkshopEmployeeSettings.FridayPay.Value; - fridayPayAmount = baseAmount * workedFridaysCount; - break; - } + { + int workedFridaysCount = CalculateFridayWorkingTotalDays(rollCallResult); + double baseAmount = customizeWorkshopEmployeeSettings.FridayPay.Value; + fridayPayAmount = baseAmount * workedFridaysCount; + break; + } case (FridayPayType.MoneyPerFridayPerHour): - { - int workedFridaysMinutes = (int)CalculateFridayWorkingTimeSpan(rollCallResult).TotalMinutes; - double baseAmount = customizeWorkshopEmployeeSettings.FridayPay.Value; - fridayPayAmount = (baseAmount / 60) * workedFridaysMinutes; - break; - } + { + int workedFridaysMinutes = (int)CalculateFridayWorkingTimeSpan(rollCallResult).TotalMinutes; + double baseAmount = customizeWorkshopEmployeeSettings.FridayPay.Value; + fridayPayAmount = (baseAmount / 60) * workedFridaysMinutes; + break; + } case (FridayPayType.PercentageFromSalaryPerHour): - { - int workedFridaysMinutes = (int)CalculateFridayWorkingTimeSpan(rollCallResult).TotalMinutes; - double percentageAmount = (customizeWorkshopEmployeeSettings.FridayPay.Value / 100 * dailyWage); - fridayPayAmount = (percentageAmount / 60) * workedFridaysMinutes; - break; - } + { + int workedFridaysMinutes = (int)CalculateFridayWorkingTimeSpan(rollCallResult).TotalMinutes; + double percentageAmount = (customizeWorkshopEmployeeSettings.FridayPay.Value / 100 * dailyWage); + fridayPayAmount = (percentageAmount / 60) * workedFridaysMinutes; + break; + } //case (FridayPayType.ExtraWorking): // { // var fridayOvertimeTimeSpan = CalculateFridayWorkingTimeSpanWithoutOvertime(rollCallResult, shiftSettings); @@ -4600,7 +5393,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll case InsuranceDeductionType.BasedOnLaborLaw: //farokhiChange - double familyAllowance = _yearlySalaryRepository.FamilyAllowance(employeeId, contractStart, contractEnd).MoneyToDouble(); + double familyAllowance = _yearlySalaryRepository.FamilyAllowance(employeeId, contractStart, contractEnd) + .MoneyToDouble(); double housingAllowance = _yearlySalaryRepository.HousingAllowance(contractEnd).MoneyToDouble(); @@ -4640,12 +5434,9 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll public static TimeSpan CalculateLeavePay(TimeSpan sumOfEmployeeShiftSpan, TimeSpan absentsTimeSpan, int permittedLeaveDay, int monthDays, int contractDays, TimeSpan sumSpans, - double leaveValue, double minuteWage, DateTime startDate, DateTime endDate, out double leavePayAmount, out double absentsDeduction) + double leaveValue, double minuteWage, DateTime startDate, DateTime endDate, out double leavePayAmount, + out double absentsDeduction) { - - - - // زمان مجاز مرخصی TimeSpan permittedLeaveTimeSpan = sumOfEmployeeShiftSpan * permittedLeaveDay; @@ -4662,7 +5453,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //اگر قراردادش کامل بود else { - } //اختلاف غیبت و مرخصی @@ -4713,7 +5503,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //} - //اگر مقدار مجاز مرخصی بیشتر از غیبت یا مساوی باشد if (permittedLeaveTimeSpan >= absentsTimeSpan) { @@ -4733,8 +5522,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (permittedLeaveTimeSpan.TotalHours == 0) return sumSpans; - leavePayAmount = (leavePayPerDayWage / permittedLeaveTimeSpan.TotalMinutes) * absentAndLeaveDifference.Diffrence.TotalMinutes; - + leavePayAmount = (leavePayPerDayWage / permittedLeaveTimeSpan.TotalMinutes) * + absentAndLeaveDifference.Diffrence.TotalMinutes; } //اگر مقدار غیبت بیشتر از مرخصی باشد else @@ -4751,7 +5540,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //sumSpans += permittedLeaveTimeSpan; absentsDeduction = absentsTimeSpan.TotalMinutes * minuteWage; - } return sumSpans; @@ -4763,19 +5551,21 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll /// /// /// - public List LateToWorkEarlyExit(List groupedRollCall, ICollection shiftSettings, List leavList) + public List LateToWorkEarlyExit(List groupedRollCall, + ICollection shiftSettings, List leavList) { List lateToWorkEarlyExistSpannig = new List(); foreach (var day in groupedRollCall) { - foreach (var shift in shiftSettings) { //DateTime start = DateTime.Parse(shift.StartTime); //DateTime end = DateTime.Parse(shift.EndTime); - DateTime startShift = new DateTime(day.CreationDate.Year, day.CreationDate.Month, day.CreationDate.Day, shift.StartTime.Hour, shift.StartTime.Minute, 0); - DateTime endShift = new DateTime(day.CreationDate.Year, day.CreationDate.Month, day.CreationDate.Day, shift.EndTime.Hour, shift.EndTime.Minute, 0); + DateTime startShift = new DateTime(day.CreationDate.Year, day.CreationDate.Month, day.CreationDate.Day, + shift.StartTime.Hour, shift.StartTime.Minute, 0); + DateTime endShift = new DateTime(day.CreationDate.Year, day.CreationDate.Month, day.CreationDate.Day, + shift.EndTime.Hour, shift.EndTime.Minute, 0); if (shift.StartTime > shift.EndTime) endShift = endShift.AddDays(1); @@ -4786,7 +5576,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll (x.Start >= startShift && x.End <= endShift) || (x.Start > startShift && x.End > endShift)).ToList(); - if (!hasRollCall.Any())// اگر در بازه شیفت هیچ حضور غیابی نداشت + if (!hasRollCall.Any()) // اگر در بازه شیفت هیچ حضور غیابی نداشت { lateToWorkEarlyExistSpannig.Add(new LateToWorkEarlyExistSpannig() { @@ -4887,7 +5677,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (hasLeve) lateToWorkEarlyExistSpannig.Remove(el); } - } @@ -4899,7 +5688,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll public double CalculateFamilyAllowancePayAmount(long employeeId, double basePay, DateTime contractEnd) { int underageChildrenCount = _context.EmployeeChildrenSet.Where(x => x.EmployeeId == employeeId && - x.DateOfBirth.AddYears(18) > contractEnd).Count(); + x.DateOfBirth.AddYears(18) > contractEnd) + .Count(); return basePay * underageChildrenCount; } @@ -4907,11 +5697,11 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll private TimeSpan CalculateOvertimeTimeSpanWithThreshold(List rollCalls, ICollection shiftSettings, int overtimeThresholdMinutes) { - var mandatoryTotalTimeSpan = new TimeSpan(shiftSettings.Sum(x => (x.EndTime - x.StartTime).Ticks)); mandatoryTotalTimeSpan += new TimeSpan(0, overtimeThresholdMinutes, 0); - var rollCallsTimeSpans = rollCalls.Select(x => x.EndDate.Value - x.StartDate.Value).Where(x => x > mandatoryTotalTimeSpan).ToList(); + var rollCallsTimeSpans = rollCalls.Select(x => x.EndDate.Value - x.StartDate.Value) + .Where(x => x > mandatoryTotalTimeSpan).ToList(); var rollCallTotalTimeSpan = new TimeSpan(rollCallsTimeSpans.Sum(x => x.Ticks)); if (rollCallTotalTimeSpan < mandatoryTotalTimeSpan) @@ -4927,7 +5717,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll /// حقوق ماهیانه پرسنل /// تنظیمات سنوات /// تنظیم مربوط به پرداخت هنگام ترک کار - public double CalculateYearsPayAmount(long employeeId, long workshopId, double monthlySalary, DateTime contractStart, DateTime contractEnd, + public double CalculateYearsPayAmount(long employeeId, long workshopId, double monthlySalary, + DateTime contractStart, DateTime contractEnd, BaseYearsPay baseYearsSettings, BaseYearsPayInEndOfYear payOnLeave, MaxMonthDays maxMonthDays) { double baseYearPayAmount = 0; @@ -4935,15 +5726,15 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll var leftWorks = _context.LeftWorkList .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId && - x.LeftWorkDate.Date.AddDays(-1) >= contractStart && x.StartWorkDate.Date <= contractEnd).ToList(); + x.LeftWorkDate.Date.AddDays(-1) >= contractStart && x.StartWorkDate.Date <= contractEnd) + .ToList(); if (!leftWorks.Any()) return 0; int daysWorked = (int)new TimeSpan(leftWorks.Select(x => new { - Start = x.StartWorkDate < contractStart ? contractStart : x.StartWorkDate - , + Start = x.StartWorkDate < contractStart ? contractStart : x.StartWorkDate, End = x.LeftWorkDate.AddDays(-1) > contractEnd ? contractEnd : x.LeftWorkDate.AddDays(-1) }).Sum(x => (x.End - x.Start).Ticks)).TotalDays + 1; @@ -4953,19 +5744,19 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll switch (baseYearsSettings.BaseYearsPayType) { case BaseYearsPayType.PercentageOfSalary: - { - baseYearPayAmount = monthlySalary * baseYearsSettings.Value / 100; - break; - } + { + baseYearPayAmount = monthlySalary * baseYearsSettings.Value / 100; + break; + } case BaseYearsPayType.Money: - { - baseYearPayAmount = baseYearsSettings.Value; - break; - } + { + baseYearPayAmount = baseYearsSettings.Value; + break; + } case BaseYearsPayType.None: - { - return 0; - } + { + return 0; + } } //در صورت ترک کار @@ -4980,24 +5771,23 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll //اگر هنگام ترک کار سنوات تعلق می گیرد case BaseYearsPayInEndOfYear.WhenEverEmployeeLeftWork: + { + //بر اساس نوع پرداخت سالیانه یا ماهیانه سنوات محاسبه می گردد + switch (baseYearsSettings.PaymentType) { - - //بر اساس نوع پرداخت سالیانه یا ماهیانه سنوات محاسبه می گردد - switch (baseYearsSettings.PaymentType) + case BaseYearsPaymentType.MonthlyPay: { - case BaseYearsPaymentType.MonthlyPay: - { - return CalculateYearsPayMonthlyByDays(baseYearPayAmount, daysWorked, contractStart.CountPersianMonthDays(), maxMonthDays); - } - case BaseYearsPaymentType.YearlyPay: - { - - return CalculateYearsPayYearlyByDays(baseYearPayAmount, daysWorked); - } - default: - return 0; + return CalculateYearsPayMonthlyByDays(baseYearPayAmount, daysWorked, + contractStart.CountPersianMonthDays(), maxMonthDays); } + case BaseYearsPaymentType.YearlyPay: + { + return CalculateYearsPayYearlyByDays(baseYearPayAmount, daysWorked); + } + default: + return 0; } + } } } @@ -5005,25 +5795,25 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll switch (baseYearsSettings.PaymentType) { case BaseYearsPaymentType.MonthlyPay: - { - return CalculateYearsPayMonthlyByDays(baseYearPayAmount, daysWorked, contractStart.CountPersianMonthDays(), maxMonthDays); - } + { + return CalculateYearsPayMonthlyByDays(baseYearPayAmount, daysWorked, + contractStart.CountPersianMonthDays(), maxMonthDays); + } case BaseYearsPaymentType.YearlyPay: - { - string contractEndFa = contractEnd.ToFarsi(); - bool isCheckoutForEsfand = contractEndFa.Substring(5, 2) == "12"; - bool isContractEndOfMonth = contractEndFa.FindeEndOfMonth() == contractEndFa; + { + string contractEndFa = contractEnd.ToFarsi(); + bool isCheckoutForEsfand = contractEndFa.Substring(5, 2) == "12"; + bool isContractEndOfMonth = contractEndFa.FindeEndOfMonth() == contractEndFa; - //اگر آخر ماه نبود یا اسفند نبود سنوات سالیانه محاسبه نمی گردد - if (isContractEndOfMonth == false || isCheckoutForEsfand == false) - return 0; + //اگر آخر ماه نبود یا اسفند نبود سنوات سالیانه محاسبه نمی گردد + if (isContractEndOfMonth == false || isCheckoutForEsfand == false) + return 0; - return CalculateYearsPayYearlyByDays(baseYearPayAmount, daysWorked); - } + return CalculateYearsPayYearlyByDays(baseYearPayAmount, daysWorked); + } default: return 0; } - } /// @@ -5032,7 +5822,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll /// سنوات در کل سال /// روز های کارکرد /// تعداد روز های ماه - public static double CalculateYearsPayMonthlyByDays(double baseYears, int daysWorked, int totalDaysInMonth, MaxMonthDays maxMonthDays) + public static double CalculateYearsPayMonthlyByDays(double baseYears, int daysWorked, int totalDaysInMonth, + MaxMonthDays maxMonthDays) { daysWorked = maxMonthDays == MaxMonthDays.ThirtyDaysForAllMonth && daysWorked > 30 ? 30 : daysWorked; totalDaysInMonth = maxMonthDays == MaxMonthDays.ThirtyDaysForAllMonth ? 30 : totalDaysInMonth; @@ -5050,8 +5841,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { return baseYears / 365 * daysWorked; } - #endregion + #endregion //TODO: this must be updated with Mahan's method for leaves @@ -5059,9 +5850,8 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll /// محاسبه مدت اضافه کاری /// public static TimeSpan CalculateOvertimeTimeSpan(List rollCalls, - ICollection shiftSettings, TimeOnly employeeOffSet) + ICollection shiftSettings, TimeOnly employeeOffSet) { - //for (DateTime offset = start; offset <= end; offset.AddDays(1)) //{ // DayOfWeek dayOfWeek = offset.DayOfWeek; @@ -5152,7 +5942,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll return TimeSpan.Zero; return sumSpan - mandatoryWorkingTimeSpan; - } /// @@ -5162,54 +5951,57 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll /// تنظیمات اضافه کاری /// مزد روزانه /// - public static double CalculateOvertimePay(TimeSpan overtimeTimeSpan, OverTimePay overTimePaySettings, double dailyWage) + public static double CalculateOvertimePay(TimeSpan overtimeTimeSpan, OverTimePay overTimePaySettings, + double dailyWage) { double baseAmount = overTimePaySettings.Value; double result = 0; switch (overTimePaySettings.OverTimePayType) { - case OverTimePayType.None: break; case OverTimePayType.MoneyPerHour: - { - int totalMinutes = (int)overtimeTimeSpan.TotalMinutes; - result = totalMinutes * (baseAmount / 60); - break; - } + { + int totalMinutes = (int)overtimeTimeSpan.TotalMinutes; + result = totalMinutes * (baseAmount / 60); + break; + } case OverTimePayType.PercentagePerHourOfSalary: - { - int totalMinutes = (int)overtimeTimeSpan.TotalMinutes; - double multiplier = overTimePaySettings.Value / 100; - result = ((dailyWage * multiplier) / 60) * totalMinutes; - break; - } - + { + int totalMinutes = (int)overtimeTimeSpan.TotalMinutes; + double multiplier = overTimePaySettings.Value / 100; + result = ((dailyWage * multiplier) / 60) * totalMinutes; + break; + } } + return result; } /// /// محاسبه مدت جمعه کاری بدون در نظر گرفتن اضافه کاری /// - public static TimeSpan CalculateFridayWorkingTimeSpanWithoutOvertime(List rollCallsList, ICollection shiftSettings) + public static TimeSpan CalculateFridayWorkingTimeSpanWithoutOvertime(List rollCallsList, + ICollection shiftSettings) { var _rollCallsList = rollCallsList; _rollCallsList = _rollCallsList.Where(x => x.StartDate.Value.DayOfWeek == DayOfWeek.Friday || - x.EndDate.Value.DayOfWeek == DayOfWeek.Friday || - (x.StartDate.Value.DayOfWeek == DayOfWeek.Thursday && x.EndDate.Value.DayOfWeek == DayOfWeek.Saturday)).ToList(); + x.EndDate.Value.DayOfWeek == DayOfWeek.Friday || + (x.StartDate.Value.DayOfWeek == DayOfWeek.Thursday && + x.EndDate.Value.DayOfWeek == DayOfWeek.Saturday)).ToList(); var preprocessedRollCalls = _rollCallsList.Select(x => - new RollCallViewModel - { - StartDate = x.StartDate.Value.DayOfWeek == DayOfWeek.Thursday ? x.StartDate.Value.AddDays(1).Date : x.StartDate.Value - , - EndDate = x.EndDate.Value.DayOfWeek == DayOfWeek.Saturday ? x.EndDate.Value.Date : x.EndDate.Value - }).ToList(); + new RollCallViewModel + { + StartDate = x.StartDate.Value.DayOfWeek == DayOfWeek.Thursday + ? x.StartDate.Value.AddDays(1).Date + : x.StartDate.Value, + EndDate = x.EndDate.Value.DayOfWeek == DayOfWeek.Saturday ? x.EndDate.Value.Date : x.EndDate.Value + }).ToList(); //var timeSpan = new TimeSpan(preprocessedRollCalls.Sum(x => (x.EndDate.Value - x.StartDate.Value).Ticks)); @@ -5219,8 +6011,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll if (rollCallTimeSpan <= extraWorkingTimeSpan) return TimeSpan.Zero; return rollCallTimeSpan - extraWorkingTimeSpan; - - } /// @@ -5230,16 +6020,18 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { var _rollCallsList = rollCallsList; _rollCallsList = _rollCallsList.Where(x => x.StartDate.Value.DayOfWeek == DayOfWeek.Friday || - x.EndDate.Value.DayOfWeek == DayOfWeek.Friday || - (x.StartDate.Value.DayOfWeek == DayOfWeek.Thursday && x.EndDate.Value.DayOfWeek == DayOfWeek.Saturday)).ToList(); + x.EndDate.Value.DayOfWeek == DayOfWeek.Friday || + (x.StartDate.Value.DayOfWeek == DayOfWeek.Thursday && + x.EndDate.Value.DayOfWeek == DayOfWeek.Saturday)).ToList(); var preprocessedRollCalls = _rollCallsList.Select(x => - new - { - Start = x.StartDate.Value.DayOfWeek == DayOfWeek.Thursday ? x.StartDate.Value.AddDays(1).Date : x.StartDate.Value - , - End = x.EndDate.Value.DayOfWeek == DayOfWeek.Saturday ? x.EndDate.Value.Date : x.EndDate.Value - }).ToList(); + new + { + Start = x.StartDate.Value.DayOfWeek == DayOfWeek.Thursday + ? x.StartDate.Value.AddDays(1).Date + : x.StartDate.Value, + End = x.EndDate.Value.DayOfWeek == DayOfWeek.Saturday ? x.EndDate.Value.Date : x.EndDate.Value + }).ToList(); var timeSpan = new TimeSpan(preprocessedRollCalls.Sum(x => (x.End - x.Start).Ticks)); return timeSpan; @@ -5252,17 +6044,19 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { var _rollCallsList = rollCallsList; _rollCallsList = _rollCallsList.Where(x => x.StartDate.Value.DayOfWeek == DayOfWeek.Friday || - x.EndDate.Value.DayOfWeek == DayOfWeek.Friday || - (x.StartDate.Value.DayOfWeek == DayOfWeek.Thursday && x.EndDate.Value.DayOfWeek == DayOfWeek.Saturday)).ToList(); + x.EndDate.Value.DayOfWeek == DayOfWeek.Friday || + (x.StartDate.Value.DayOfWeek == DayOfWeek.Thursday && + x.EndDate.Value.DayOfWeek == DayOfWeek.Saturday)).ToList(); var preprocessedRollCalls = _rollCallsList.Select(x => - new - { - Start = x.StartDate.Value.DayOfWeek == DayOfWeek.Thursday ? x.StartDate.Value.AddDays(1).Date : x.StartDate.Value - , - End = x.EndDate.Value.DayOfWeek == DayOfWeek.Saturday ? x.StartDate.Value.Date : x.EndDate.Value, - ShiftDate = x.ShiftDate - }).ToList(); + new + { + Start = x.StartDate.Value.DayOfWeek == DayOfWeek.Thursday + ? x.StartDate.Value.AddDays(1).Date + : x.StartDate.Value, + End = x.EndDate.Value.DayOfWeek == DayOfWeek.Saturday ? x.StartDate.Value.Date : x.EndDate.Value, + ShiftDate = x.ShiftDate + }).ToList(); int fridaysCount = preprocessedRollCalls.GroupBy(x => x.ShiftDate).Count(); return fridaysCount; @@ -5280,7 +6074,6 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll DateTime endDate = endRollCall.Date; - DateTime startEntryWithDate = startDate.Add(startRollCall.TimeOfDay); DateTime endEntryWithDate = endDate.Add(endRollCall.TimeOfDay); @@ -5361,13 +6154,14 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll Math.Max(shift.Start.Ticks, startRollCall.Ticks))), StartDistance = Math.Abs((shift.Start - startRollCall).Ticks), EndDistance = Math.Abs((shift.End - endRollCall).Ticks), - TotalDistance = Math.Abs((shift.Start - startRollCall).Ticks) + Math.Abs((shift.End - endRollCall).Ticks) + TotalDistance = Math.Abs((shift.Start - startRollCall).Ticks) + + Math.Abs((shift.End - endRollCall).Ticks) }) - .OrderByDescending(s => s.TotalTimeInShift) // 1. بیشترین زمان حضور فرد - .ThenByDescending(s => s.Overlap) // 2. بیشترین Overlap + .OrderByDescending(s => s.TotalTimeInShift) // 1. بیشترین زمان حضور فرد + .ThenByDescending(s => s.Overlap) // 2. بیشترین Overlap .ThenBy(s => s.TotalDistance) .ThenBy(s => s.StartDistance) - .ThenBy(x => x.EndDistance); // 3. اگر برابر بود، Start نزدیک‌تر + .ThenBy(x => x.EndDistance); // 3. اگر برابر بود، Start نزدیک‌تر var overlapChosenShift = overlapShifts.First(); var end = overlapChosenShift.Shift.End; @@ -5379,15 +6173,16 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll #endregion } + #endregion } - enum AbsentOrLeave { LeavePay, AbsentDeduction } + internal class EmployeeShiftResult { public ShiftPlacement Placement { get; set; } From 2035b6fff8c4cc5157839ecb2ff16a87c4c0980b Mon Sep 17 00:00:00 2001 From: mahan Date: Wed, 19 Nov 2025 10:45:40 +0330 Subject: [PATCH 2/6] feat: add dynamic deductions to checkout model and enhance roll call difference calculations --- .../CustomizeCheckoutViewModel.cs | 3 ++ .../Repository/RollCallMandatoryRepository.cs | 6 ++++ .../Repository/RollCallRepository.cs | 31 ++++++++++++------- .../PrintDetailsCheckoutTemporaryRaw.cshtml | 2 +- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutViewModel.cs b/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutViewModel.cs index da3e98de..0da3d689 100644 --- a/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutViewModel.cs +++ b/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutViewModel.cs @@ -111,6 +111,9 @@ namespace CompanyManagment.App.Contracts.CustomizeCheckout public bool HasAmountConflict { get; set; } + // New: up to three dynamic deduction items (title -> amount string) + public IDictionary DynamicDeductions { get; set; } = new Dictionary(); + //public bool HasLeft { get; set; } //public string IsBlockCantracingParty { get; set; } //public string IsActiveString { get; set; } diff --git a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs index d462bf8b..e4f32f41 100644 --- a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs @@ -2641,8 +2641,12 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { var checkoutEnd = contractEnd; var checkoutStart = contractStart; + if (workshopId == 170) return CustomizeCheckoutMandatoryComputeForKebabMahdi(employeeId, workshopId, contractStart, contractEnd); + + if (workshopId is 367 or 368) + return CustomizeCheckoutMandatoryComputeForPizzaAmir(employeeId, workshopId, contractStart, contractEnd); var firstDayOfMonth = $"{(contractStart.ToFarsi())[..8]}/01".ToGeorgianDateTime(); @@ -4721,11 +4725,13 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { leavePermittedDays -= absenceDays; leavePayAmount = leavePermittedDays * dailyWage; + absentsDeductionAmount = 0; } else { absenceDays -= leavePermittedDays; absentsDeductionAmount = absenceDays * dailyWage; + leavePayAmount = 0; } #endregion diff --git a/CompanyManagment.EFCore/Repository/RollCallRepository.cs b/CompanyManagment.EFCore/Repository/RollCallRepository.cs index 27b00e72..b76e01b8 100644 --- a/CompanyManagment.EFCore/Repository/RollCallRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallRepository.cs @@ -412,17 +412,23 @@ public class RollCallRepository : RepositoryBase, IRollCallRepos DateTimeGr = x.Key.Date, IsSliced = x.Count() > 2, IsAbsent = false, - EnterDifferencesMinutes1 = firstRollCall != null && firstRollCall.LateEntryDuration > TimeSpan.Zero && workshopId == 170 + EnterDifferencesMinutes1 = firstRollCall != null && firstRollCall.LateEntryDuration > TimeSpan.Zero ? CalculateEntryMinuteDifference(firstRollCall.EarlyEntryDuration, firstRollCall.LateEntryDuration) : "", - ExitDifferencesMinutes1 = "", + ExitDifferencesMinutes1 = firstRollCall != null && firstRollCall.EarlyExitDuration > TimeSpan.Zero + ? CalculateExitMinuteDifference(firstRollCall.EarlyExitDuration, + firstRollCall.LateExitDuration) + : "", - EnterDifferencesMinutes2 = secondRollCall != null && secondRollCall.LateEntryDuration > TimeSpan.Zero && workshopId == 170 && hasSecondTimeDiff + EnterDifferencesMinutes2 = secondRollCall != null && secondRollCall.LateEntryDuration > TimeSpan.Zero && hasSecondTimeDiff ? CalculateEntryMinuteDifference(secondRollCall.EarlyEntryDuration, secondRollCall.LateEntryDuration) : "", - ExitDifferencesMinutes2 = "" + ExitDifferencesMinutes2 = secondRollCall != null && secondRollCall.EarlyExitDuration > TimeSpan.Zero && hasSecondTimeDiff + ? CalculateExitMinuteDifference(secondRollCall.EarlyExitDuration, + secondRollCall.LateExitDuration) + : "" }; }); presentDays = presentDays.Select(x => new CheckoutDailyRollCallViewModel @@ -1736,17 +1742,23 @@ public class RollCallRepository : RepositoryBase, IRollCallRepos IsSliced = x.Count() > 2, IsAbsent = false, - EnterDifferencesMinutes1 = firstRollCall != null && firstRollCall.LateEntryDuration > TimeSpan.Zero && workshopId == 170 + EnterDifferencesMinutes1 = firstRollCall != null && firstRollCall.LateEntryDuration > TimeSpan.Zero ? CalculateEntryMinuteDifference(firstRollCall.EarlyEntryDuration, firstRollCall.LateEntryDuration) : "", - ExitDifferencesMinutes1 = "", + ExitDifferencesMinutes1 = firstRollCall != null && firstRollCall.EarlyExitDuration > TimeSpan.Zero + ? CalculateExitMinuteDifference(firstRollCall.EarlyExitDuration, + firstRollCall.LateExitDuration) + : "", - EnterDifferencesMinutes2 = secondRollCall != null && secondRollCall.LateEntryDuration > TimeSpan.Zero && workshopId == 170&& hasSecondTimeDiff + EnterDifferencesMinutes2 = secondRollCall != null && secondRollCall.LateEntryDuration > TimeSpan.Zero && hasSecondTimeDiff ? CalculateEntryMinuteDifference(secondRollCall.EarlyEntryDuration, secondRollCall.LateEntryDuration) : "", - ExitDifferencesMinutes2 = "" + ExitDifferencesMinutes2 = secondRollCall != null && secondRollCall.EarlyExitDuration > TimeSpan.Zero && hasSecondTimeDiff + ? CalculateExitMinuteDifference(secondRollCall.EarlyExitDuration, + secondRollCall.LateExitDuration) + : "" }; }); presentDays = presentDays.Select(x => new CheckoutDailyRollCallViewModel @@ -1801,9 +1813,6 @@ public class RollCallRepository : RepositoryBase, IRollCallRepos //حضور غیاب گروهی از پرسنل برای پرینت گروهی فیش حقوقی غیر رسمی نهایی public List GetEmployeeRollCallsForMonthForKababMahdi(IEnumerable employeeIds, long workshopId, DateTime start, DateTime end) { - - - var rollCalls = _context.RollCalls.Where(x => employeeIds.Contains(x.EmployeeId) && workshopId == x.WorkshopId && x.StartDate != null && x.EndDate != null && x.RollCallModifyType != RollCallModifyType.Undefined && diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_Partials/PrintDetailsCheckoutTemporaryRaw.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_Partials/PrintDetailsCheckoutTemporaryRaw.cshtml index 0d969e5b..0f544828 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_Partials/PrintDetailsCheckoutTemporaryRaw.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_Partials/PrintDetailsCheckoutTemporaryRaw.cshtml @@ -254,7 +254,7 @@ عیدی - @(Model.BonusesPay == "0" ? "-" : Model.BonusesPay) - + تتتتتتت From 3ed14bf2bdc9d665eec05b3ed32e3011fd313354 Mon Sep 17 00:00:00 2001 From: SamSys Date: Thu, 20 Nov 2025 11:37:04 +0330 Subject: [PATCH 3/6] update block sms method --- .../Jobs/JobSchedulerRegistrator.cs | 34 ++++++------ .../InstitutionContractRepository.cs | 55 +++++++++++-------- 2 files changed, 50 insertions(+), 39 deletions(-) diff --git a/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/Jobs/JobSchedulerRegistrator.cs b/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/Jobs/JobSchedulerRegistrator.cs index a0365042..1425a1a7 100644 --- a/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/Jobs/JobSchedulerRegistrator.cs +++ b/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/Jobs/JobSchedulerRegistrator.cs @@ -25,23 +25,23 @@ public class JobSchedulerRegistrator public void Register() { - //RecurringJob.AddOrUpdate( - // "InstitutionContract.CreateFinancialTransaction", - // () => CreateFinancialTransaction(), - // "*/30 * * * *" // هر 30 دقیقه یکبار چک کن - //); + RecurringJob.AddOrUpdate( + "InstitutionContract.CreateFinancialTransaction", + () => CreateFinancialTransaction(), + "*/30 * * * *" // هر 30 دقیقه یکبار چک کن + ); - //RecurringJob.AddOrUpdate( - // "InstitutionContract.SendMonthlySms", - // () => SendMonthlySms(), - // "*/20 * * * *" // هر 30 دقیقه یکبار چک کن - //); + RecurringJob.AddOrUpdate( + "InstitutionContract.SendMonthlySms", + () => SendFirstDayOfMonthSms(), + "*/20 * * * *" // هر 30 دقیقه یکبار چک کن + ); - //RecurringJob.AddOrUpdate( - // "InstitutionContract.SendReminderSms", - // () => SendReminderSms(), - // "*/1 * * * *" // هر 1 دقیقه یکبار چک کن - //); + RecurringJob.AddOrUpdate( + "InstitutionContract.SendReminderSms", + () => SendReminderSms(), + "*/1 * * * *" // هر 1 دقیقه یکبار چک کن + ); RecurringJob.AddOrUpdate( "InstitutionContract.SendBlockSms", () => SendBlockSms(), @@ -98,8 +98,8 @@ public class JobSchedulerRegistrator /// ارسال پیامک صورت حساب ماهانه /// /// - [DisableConcurrentExecution(timeoutInSeconds: 1000)] - public async System.Threading.Tasks.Task SendMonthlySms() + [DisableConcurrentExecution(timeoutInSeconds: 600)] + public async System.Threading.Tasks.Task SendFirstDayOfMonthSms() { //var now = new DateTime(2025,11,21, 10,30,0); var now = DateTime.Now; diff --git a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs index c06280a0..804252fd 100644 --- a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs @@ -3168,11 +3168,24 @@ public class InstitutionContractRepository : RepositoryBase 0).GroupBy(x => x.ContractingPartyId).Select(x => x.First()).ToListAsync(); + var contractingPartyList = await _context.PersonalContractingParties + .Where(x => institutionContracts.Select(ins => ins.ContractingPartyId).Contains(x.id)).ToListAsync(); + + var financialStatmentList = await _context.FinancialStatments.AsSplitQuery() + .Where(x => institutionContracts.Select(ins => ins.ContractingPartyId).Contains(x.ContractingPartyId)) + .Include(x => x.FinancialTransactionList).Where( + x => x.FinancialTransactionList.Count > 0).ToListAsync(); + + var phoneNumberList = await _context.InstitutionContractContactInfos + .Where(x => institutionContracts.Select(ins => ins.Id).Contains(x.InstitutionContractId)) + .Where(x => x.SendSms && x.PhoneType == "شماره همراه" && !string.IsNullOrWhiteSpace(x.PhoneNumber) && + x.PhoneNumber.Length == 11).ToListAsync(); + foreach (var item in institutionContracts) { try { - var contractingParty = await _context.PersonalContractingParties.FirstOrDefaultAsync(x => x.id == item.ContractingPartyId); + var contractingParty = contractingPartyList.FirstOrDefault(x => x.id == item.ContractingPartyId); if (contractingParty != null && contractingParty.IsBlock == "true") { @@ -3184,26 +3197,25 @@ public class InstitutionContractRepository : RepositoryBase x.FinancialTransactionList).AnyAsync( - x => x.ContractingPartyId == item.ContractingPartyId && x.FinancialTransactionList.Count > 0); - - var hasPhonNumber =await _context.InstitutionContractContactInfos - .AnyAsync(x => x.InstitutionContractId == item.Id && x.SendSms && x.PhoneType == "شماره همراه" && - x.PhoneNumber.Length == 11); + var hasFinancialStatment = + financialStatmentList.Any(x => x.ContractingPartyId == item.ContractingPartyId & x.FinancialTransactionList.Count > 0); + + + var hasPhonNumber = phoneNumberList.Any(x => x.InstitutionContractId == item.Id); + - if (hasFinancialStatment && hasPhonNumber) { - var transactions = GetFinancialByContractingPartyId(contractingParty.id).GetAwaiter().GetResult(); - - var debtor = transactions.FinancialTransactionViewModels.Sum(x => x.Deptor); - var creditor = transactions.FinancialTransactionViewModels.Sum(x => x.Creditor); + var transactions = financialStatmentList.FirstOrDefault(x => x.ContractingPartyId == item.ContractingPartyId); + + var debtor = transactions.FinancialTransactionList.Sum(x => x.Deptor); + var creditor = transactions.FinancialTransactionList.Sum(x => x.Creditor); var id = $"{item.ContractingPartyId}"; - var aprove = $"{transactions.Id}"; + var aprove = $"{transactions.id}"; var balance = debtor - creditor; if (balance > 0) { @@ -3211,10 +3223,10 @@ public class InstitutionContractRepository : RepositoryBase x.TdateGr).FirstOrDefault(x => x.TypeOfTransaction == "debt" && x.DescriptionOption == jobRelation); - var taxAndFinancialContract = transactions.FinancialTransactionViewModels + var taxAndFinancialContract = transactions.FinancialTransactionList .OrderByDescending(x => x.TdateGr).FirstOrDefault(x => x.TypeOfTransaction == "debt" && x.DescriptionOption == taxAndFinancial); @@ -3227,9 +3239,7 @@ public class InstitutionContractRepository : RepositoryBase= sumOfAmounts) { var phoneNumbers = new List(); - phoneNumbers = await _context.InstitutionContractContactInfos.Where(n => - n.InstitutionContractId == item.Id && n.SendSms && n.PhoneType == "شماره همراه" && - !string.IsNullOrWhiteSpace(n.PhoneNumber)) + phoneNumbers = phoneNumberList.Where(x => x.InstitutionContractId == item.Id) .Select(x => new CreateContactInfo { PhoneType = x.PhoneType, @@ -3237,7 +3247,8 @@ public class InstitutionContractRepository : RepositoryBase x.PhoneNumber.Length == 11).ToListAsync(); + }).Where(x => x.PhoneNumber.Length == 11).ToList(); + var accountType = item.OfficialCompany == "Official" ? "ol" : "nol"; @@ -3309,7 +3320,7 @@ public class InstitutionContractRepository : RepositoryBase institutionContracts.Select(ins => ins.ContractingPartyId).Contains(x.id)).ToListAsync(); - var financialStamentList = await _context.FinancialStatments.AsSplitQuery() + var financialStatmentList = await _context.FinancialStatments.AsSplitQuery() .Where(x=> institutionContracts.Select(ins => ins.ContractingPartyId).Contains(x.ContractingPartyId)) .Include(x => x.FinancialTransactionList).Where( x => x.FinancialTransactionList.Count > 0).ToListAsync(); @@ -3343,7 +3354,7 @@ public class InstitutionContractRepository : RepositoryBase x.ContractingPartyId == item.ContractingPartyId); + financialStatmentList.Any(x => x.ContractingPartyId == item.ContractingPartyId); var hasPhonNumber = phoneNumberList.Any(x => x.InstitutionContractId == item.Id); @@ -3362,7 +3373,7 @@ public class InstitutionContractRepository : RepositoryBase x.PhoneNumber.Length == 11).ToList(); - var transactions = financialStamentList.FirstOrDefault(x=>x.ContractingPartyId == item.ContractingPartyId); + var transactions = financialStatmentList.FirstOrDefault(x=>x.ContractingPartyId == item.ContractingPartyId); var debtor = transactions.FinancialTransactionList.Sum(x => x.Deptor); var creditor = transactions.FinancialTransactionList.Sum(x => x.Creditor); From 3937cd8a9f84433031060d6c5125b8d66c15c05b Mon Sep 17 00:00:00 2001 From: mahan Date: Thu, 20 Nov 2025 12:58:25 +0330 Subject: [PATCH 4/6] feat: add dynamic deduction items for late entry and insurance fines to checkout calculations --- .../CheckoutDynamicDeductionItem.cs | 9 + .../CustomizeCheckoutAgg/CustomizeCheckout.cs | 6 +- .../CustomizeCheckoutTemp.cs | 11 +- .../CustomizeCheckoutMandatoryViewModel.cs | 5 +- .../CustomizeCheckoutViewModel.cs | 172 +++++++++--------- .../CustomizeCheckoutApplication.cs | 4 +- .../CustomizeCheckoutTempApplication.cs | 7 +- .../Repository/RollCallMandatoryRepository.cs | 49 ++++- _0_Framework/_0_Framework_b.csproj | 4 + 9 files changed, 166 insertions(+), 101 deletions(-) create mode 100644 0_Framework/Domain/CustomizeCheckoutShared/ValueObjects/CheckoutDynamicDeductionItem.cs diff --git a/0_Framework/Domain/CustomizeCheckoutShared/ValueObjects/CheckoutDynamicDeductionItem.cs b/0_Framework/Domain/CustomizeCheckoutShared/ValueObjects/CheckoutDynamicDeductionItem.cs new file mode 100644 index 00000000..911f3c87 --- /dev/null +++ b/0_Framework/Domain/CustomizeCheckoutShared/ValueObjects/CheckoutDynamicDeductionItem.cs @@ -0,0 +1,9 @@ +namespace _0_Framework.Application.Enums +{ + public class CheckoutDynamicDeductionItem + { + public string Name { get; set; } + public int Count { get; set; } + public string Amount { get; set; } + } +} diff --git a/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs b/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs index 637290cc..992573d7 100644 --- a/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs +++ b/Company.Domain/CustomizeCheckoutAgg/CustomizeCheckout.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using _0_Framework.Application; +using _0_Framework.Application.Enums; using _0_Framework.Domain; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; @@ -33,7 +34,8 @@ public class CustomizeCheckout : EntityBase ICollection customizeCheckoutSalaryAids, ICollection customizeCheckoutRewards, TimeSpan lateToWorkValue, double settingSalary, double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift, - ICollection customizeRotatingShifts, ICollection employeeSettingsShifts) + ICollection customizeRotatingShifts, ICollection employeeSettingsShifts, + ICollection checkoutDynamicDeductions) { YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4)); MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2)); @@ -83,6 +85,7 @@ public class CustomizeCheckout : EntityBase IrregularShift = irregularShift; CustomizeRotatingShifts = customizeRotatingShifts; RegularShifts = employeeSettingsShifts; + CheckoutDynamicDeductions = checkoutDynamicDeductions; } @@ -286,6 +289,7 @@ public class CustomizeCheckout : EntityBase public ICollection CustomizeCheckoutLoanInstallments { get; set; } public ICollection CustomizeCheckoutSalaryAids { get; set; } public ICollection CustomizeCheckoutRewards { get; set; } + public ICollection CheckoutDynamicDeductions { get; private set; } public IrregularShift IrregularShift { get; set; } public ICollection CustomizeRotatingShifts { get; set; } diff --git a/Company.Domain/CustomizeCheckoutTempAgg/CustomizeCheckoutTemp.cs b/Company.Domain/CustomizeCheckoutTempAgg/CustomizeCheckoutTemp.cs index d6330491..cf888f0c 100644 --- a/Company.Domain/CustomizeCheckoutTempAgg/CustomizeCheckoutTemp.cs +++ b/Company.Domain/CustomizeCheckoutTempAgg/CustomizeCheckoutTemp.cs @@ -9,6 +9,7 @@ using Company.Domain.CustomizeCheckoutTempAgg.ValueObjects; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; using System.Linq; +using _0_Framework.Application.Enums; namespace Company.Domain.CustomizeCheckoutTempAgg; @@ -21,7 +22,8 @@ public class CustomizeCheckoutTemp : EntityBase { LateToWorkValue = lateToWorkValue; } - public CustomizeCheckoutTemp(DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName, + public CustomizeCheckoutTemp( + 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, @@ -37,7 +39,8 @@ public class CustomizeCheckoutTemp : EntityBase ICollection customizeCheckoutSalaryAids, ICollection customizeCheckoutRewards, TimeSpan lateToWorkValue, double settingSalary, double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift, - ICollection customizeRotatingShifts, ICollection employeeSettingsShifts) + ICollection customizeRotatingShifts, ICollection employeeSettingsShifts, + ICollection checkoutDynamicDeductions) { YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4)); MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2)); @@ -87,6 +90,7 @@ public class CustomizeCheckoutTemp : EntityBase IrregularShift = irregularShift; CustomizeRotatingShifts = customizeRotatingShifts; RegularShifts = employeeSettingsShifts; + CheckoutDynamicDeductions = checkoutDynamicDeductions; } #region Getters @@ -123,6 +127,7 @@ public class CustomizeCheckoutTemp : EntityBase public IrregularShift IrregularShift { get; set; } public ICollection CustomizeRotatingShifts { get; set; } public ICollection RegularShifts { get; set; } + public ICollection CheckoutDynamicDeductions { get; private set; } #endregion @@ -389,4 +394,4 @@ public class CustomizeCheckoutTemp : EntityBase { HasAmountConflict = hasConflict; } -} \ No newline at end of file +} diff --git a/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutMandatoryViewModel.cs b/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutMandatoryViewModel.cs index 19dfc86a..8d025842 100644 --- a/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutMandatoryViewModel.cs +++ b/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutMandatoryViewModel.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Security.AccessControl; using _0_Framework.Application; +using _0_Framework.Application.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.Base; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; @@ -18,8 +19,6 @@ namespace CompanyManagment.App.Contracts.CustomizeCheckout; public class CustomizeCheckoutMandatoryViewModel { - - /// /// حقوق ماهانه /// @@ -207,6 +206,8 @@ public class CustomizeCheckoutMandatoryViewModel public ICollection CustomizeRotatingShifts { get; set; } = []; public ICollection EmployeeSettingsShifts { get; set; } = []; + public List DynamicDeductions { get; set; } = new(); + } diff --git a/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutViewModel.cs b/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutViewModel.cs index 0da3d689..049eeb25 100644 --- a/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutViewModel.cs +++ b/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutViewModel.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Runtime; using System.Security.AccessControl; +using _0_Framework.Application.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.Base; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; @@ -12,116 +13,115 @@ using CompanyManagment.App.Contracts.Loan; using CompanyManagment.App.Contracts.Reward; using CompanyManagment.App.Contracts.SalaryAid; -namespace CompanyManagment.App.Contracts.CustomizeCheckout +namespace CompanyManagment.App.Contracts.CustomizeCheckout; + +public class CustomizeCheckoutViewModel { - public class CustomizeCheckoutViewModel - { - public long Id { get; set; } - public DateTime CreationDate { get; set; } - public string Month { get; set; } - public string Year { get; set; } - public int PrintCounter { get; set; } + public long Id { get; set; } + public DateTime CreationDate { get; set; } + public string Month { get; set; } + public string Year { get; set; } + public int PrintCounter { get; set; } - public long EmployeeId { get; set; } - public string EmployeeFName { get; set; } - public string EmployeeLName { get; set; } - public string EmployeeFullName => $"{EmployeeFName} {EmployeeLName}"; - public string FatherName { get; set; } - public string NationalCode { get; set; } - public string DateOfBirth { get; set; } - public long PersonnelCode { get; set; } - public string PersonnelCodeString => PersonnelCode.ToString(); + public long EmployeeId { get; set; } + public string EmployeeFName { get; set; } + public string EmployeeLName { get; set; } + public string EmployeeFullName => $"{EmployeeFName} {EmployeeLName}"; + public string FatherName { get; set; } + public string NationalCode { get; set; } + public string DateOfBirth { get; set; } + public long PersonnelCode { get; set; } + public string PersonnelCodeString => PersonnelCode.ToString(); - public string WorkshopName { get; set; } - public long WorkshopId { get; set; } + public string WorkshopName { get; set; } + public long WorkshopId { get; set; } - public long EmployerId { get; set; } - public string EmployerName { get; set; } - public List EmployerList { get; set; } + public long EmployerId { get; set; } + public string EmployerName { get; set; } + public List EmployerList { get; set; } - public long ContractId { get; set; } - public string ContractNo { get; set; } - public DateTime ContractStartGr { get; set; } - public DateTime ContractEndGr { get; set; } - public string ContractStartFa { get; set; } - public string ContractEndFa { get; set; } - //[JsonIgnore] - //public string LastDayOfWork => LeftWorkDateGr.AddDays(-1).ToFarsi(); - //[JsonIgnore] - //public string LeftWorkDateFa => LeftWorkDateGr.ToFarsi(); - public DateTime LeftWorkDateGr { get; set; } + public long ContractId { get; set; } + public string ContractNo { get; set; } + public DateTime ContractStartGr { get; set; } + public DateTime ContractEndGr { get; set; } + public string ContractStartFa { get; set; } + public string ContractEndFa { get; set; } + //[JsonIgnore] + //public string LastDayOfWork => LeftWorkDateGr.AddDays(-1).ToFarsi(); + //[JsonIgnore] + //public string LeftWorkDateFa => LeftWorkDateGr.ToFarsi(); + public DateTime LeftWorkDateGr { get; set; } - public string SumOfWorkingDays { get; set; } + public string SumOfWorkingDays { get; set; } - public string MonthlySalary { get; set; } - public string BaseYearsPay { get; set; } + public string MonthlySalary { get; set; } + public string BaseYearsPay { get; set; } - public string MarriedAllowance { get; set; } - public string OvertimePay { get; set; } - public string NightworkPay { get; set; } - public string FridayPay { get; set; } - public string MissionPay { get; set; } - public string ShiftPay { get; set; } - public string FamilyAllowance { get; set; } - public string BonusesPay { get; set; } - public string LeavePay { get; set; } - public string RewardPay { get; set; } + public string MarriedAllowance { get; set; } + public string OvertimePay { get; set; } + public string NightworkPay { get; set; } + public string FridayPay { get; set; } + public string MissionPay { get; set; } + public string ShiftPay { get; set; } + public string FamilyAllowance { get; set; } + public string BonusesPay { get; set; } + public string LeavePay { get; set; } + public string RewardPay { get; set; } - public bool IsBirthday { get; set; } = true; - public string FineDeduction { get; set; } - public string InsuranceDeduction { get; set; } - public string TaxDeducation { get; set; } - public string InstallmentDeduction { get; set; } - public string SalaryAidDeduction { get; set; } - public string AbsenceDeduction { get; set; } - public string EarlyExitDeduction { get; set; } - public string LateToWorkDeduction { get; set; } + public bool IsBirthday { get; set; } = true; + public string FineDeduction { get; set; } + public string InsuranceDeduction { get; set; } + public string TaxDeducation { get; set; } + public string InstallmentDeduction { get; set; } + public string SalaryAidDeduction { get; set; } + public string AbsenceDeduction { get; set; } + public string EarlyExitDeduction { get; set; } + public string LateToWorkDeduction { get; set; } - public string TotalClaims { get; set; } - public string TotalDeductions { get; set; } - public string TotalPayment { get; set; } + public string TotalClaims { get; set; } + public string TotalDeductions { get; set; } + public string TotalPayment { get; set; } - public List FineViewModelList { get; set; } - public List RewardViewModels { get; set; } - public List InstallmentViewModels { get; set; } - public List SalaryAidViewModels { get; set; } - public bool TotalPaymentHide { get; set; } - public PersonnelCheckoutDailyRollCallViewModel MonthlyRollCall { get; set; } - public double TotalPaymentD { get; set; } + public List FineViewModelList { get; set; } + public List RewardViewModels { get; set; } + public List InstallmentViewModels { get; set; } + public List SalaryAidViewModels { get; set; } + public bool TotalPaymentHide { get; set; } + public PersonnelCheckoutDailyRollCallViewModel MonthlyRollCall { get; set; } + public double TotalPaymentD { get; set; } - public string TotalLateToWorkDeduction { get; set; } + public string TotalLateToWorkDeduction { get; set; } - public string LateToWorkValue { get; set; } + public string LateToWorkValue { get; set; } - public string SettingSalary { get; set; } - public string DailyWage { get; set; } - public WorkshopShiftStatus ShiftStatus { get; set; } + public string SettingSalary { get; set; } + public string DailyWage { get; set; } + public WorkshopShiftStatus ShiftStatus { get; set; } - public string EmployeePicture { get; set; } + public string EmployeePicture { get; set; } - public IrregularShift IrregularShift { get; set; } - public List CustomizeRotatingShifts { get; set; } - public List RegularShift { get; set; } + public IrregularShift IrregularShift { get; set; } + public List CustomizeRotatingShifts { get; set; } + public List RegularShift { get; set; } - public bool HasAmountConflict { get; set; } + public bool HasAmountConflict { get; set; } - // New: up to three dynamic deduction items (title -> amount string) - public IDictionary DynamicDeductions { get; set; } = new Dictionary(); + // New: up to three dynamic deduction items (name, count, amount) + public List CheckoutDynamicDeductions { get; set; } = new List(); - //public bool HasLeft { get; set; } - //public string IsBlockCantracingParty { get; set; } - //public string IsActiveString { get; set; } - //public long WorkingHoursId { get; set; } - //public string ArchiveCode { get; set; } - //public string ConsumableItems { get; set; } - //public string HousingAllowance { get; set; } - //public string YearsPay { get; set; } + //public bool HasLeft { get; set; } + //public string IsBlockCantracingParty { get; set; } + //public string IsActiveString { get; set; } + //public long WorkingHoursId { get; set; } + //public string ArchiveCode { get; set; } + //public string ConsumableItems { get; set; } + //public string HousingAllowance { get; set; } + //public string YearsPay { get; set; } - } } diff --git a/CompanyManagment.Application/CustomizeCheckoutApplication.cs b/CompanyManagment.Application/CustomizeCheckoutApplication.cs index 8c41e745..fab2a84e 100644 --- a/CompanyManagment.Application/CustomizeCheckoutApplication.cs +++ b/CompanyManagment.Application/CustomizeCheckoutApplication.cs @@ -123,7 +123,7 @@ namespace CompanyManagment.Application 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, - regularShift); + regularShift,result.DynamicDeductions); _customizeCheckoutRepository.Create(entity); @@ -187,7 +187,7 @@ namespace CompanyManagment.Application 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, - computations.CustomizeRotatingShifts, regularShift); + computations.CustomizeRotatingShifts, regularShift,computations.DynamicDeductions); _customizeCheckoutRepository.Create(entity); _customizeCheckoutRepository.RemoveEmployeeCustomizeCheckoutInDates(command.WorkshopId, employeeId, command.ContractStart, command.ContractEnd); diff --git a/CompanyManagment.Application/CustomizeCheckoutTempApplication.cs b/CompanyManagment.Application/CustomizeCheckoutTempApplication.cs index 750e9a96..406d3238 100644 --- a/CompanyManagment.Application/CustomizeCheckoutTempApplication.cs +++ b/CompanyManagment.Application/CustomizeCheckoutTempApplication.cs @@ -98,7 +98,7 @@ namespace CompanyManagment.Application 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, - regularShift); + regularShift,result.DynamicDeductions); _customizeCheckoutTempRepository.Create(entity); @@ -146,7 +146,8 @@ namespace CompanyManagment.Application var regularShift = computations.EmployeeSettingsShifts.Select(x => new CustomizeCheckoutRegularShift(x.StartTime, x.EndTime, x.Placement)).ToList(); - + + var entity = new CustomizeCheckoutTemp(command.ContractStart, command.ContractEnd, employeeId, employee.FName, employee.LName, employee.DateOfBirth, employee.NationalCode, workshop.WorkshopFullName, command.WorkshopId, contract?.Id, computations.MonthlySalary, computations.FridayPay, computations.OverTimePay, computations.BaseYearsPay, @@ -155,7 +156,7 @@ namespace CompanyManagment.Application 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, - computations.CustomizeRotatingShifts, regularShift); + computations.CustomizeRotatingShifts, regularShift,computations.DynamicDeductions); _customizeCheckoutTempRepository.Create(entity); _customizeCheckoutTempRepository.RemoveEmployeeTemporaryCheckoutInDates(command.WorkshopId, employeeId, command.ContractStart, command.ContractEnd); } diff --git a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs index e4f32f41..d78fbec5 100644 --- a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs @@ -20,6 +20,7 @@ using CompanyManagment.App.Contracts.Fine; using System.Globalization; using System.IO; using System.Threading.Tasks; +using _0_Framework.Application.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.Base; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; @@ -4304,19 +4305,25 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll long workshopId, DateTime contractStart, DateTime contractEnd) { + var dynamicdeductions = new List(); //مقدار جریمه تاخیر ورود double lateEntryFine = 0; //مرز جریمه جداگانه تاخیر ورود int minuteThresholdForLateEntryFine = 16; - - int lateEntryFineTimes = 0; +//تعداد دفعاتی که پرسنل بیش از مرز تاخیر ورود داشته است + int lateEntryFineTimes = 0; //مرز محاسبه تعجیل خروج int minuteThresholdForEarlyExitCalculation = 30; //مبلغ جریمه تاخیر ورود - int lateEntryFineAmount = 40_000; + int lateEntryFineAmount = 400_000; + //مقدار جریمه افرادی که دارای بیمه هستند ولی غیبت کرده اند - int absenceForInsuranceEmployeesAmount = 150_000; + int absenceForInsuranceEmployeesAmount = 1500_000; + //جریمه غیبت برای پرسنل بیمه شده + double absenceForInsuranceFine = 0; + //تعداد روز غیبت پرسنل بیمه شده + int absenceForInsuranceDays = 0; var checkoutEnd = contractEnd; @@ -4726,12 +4733,14 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll leavePermittedDays -= absenceDays; leavePayAmount = leavePermittedDays * dailyWage; absentsDeductionAmount = 0; + absenceDays = 0; } else { absenceDays -= leavePermittedDays; absentsDeductionAmount = absenceDays * dailyWage; leavePayAmount = 0; + leavePermittedDays = 0; } #endregion @@ -5046,6 +5055,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll { lateEntryFineTimes = (int)minutes / minuteThresholdForLateEntryFine; lateEntryFine = lateEntryFineTimes * lateEntryFineAmount; + } lateToWorkDeduction += dayMinuteWage * minutes; @@ -5060,6 +5070,14 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll } } + dynamicdeductions.Add(new() + { + Amount = lateEntryFine.ToMoney(), + Name = "جریمه 40 تومانی", + Count = lateEntryFineTimes + }); + + // if (mandatoryDays == 31) // { @@ -5067,6 +5085,28 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll // } #endregion + + + # region جریمه افراد غایبی که بیمه هستند + + var leftWorkInsurance = _context.LeftWorkInsuranceList.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId + &&( x.StartWorkDate <= contractEnd && + x.LeftWorkDate >= contractStart) + || (x.LeftWorkDate == null && x.StartWorkDate <= contractEnd)); + if (leftWorkInsurance != null && absenceDays >0) + { + absenceForInsuranceFine = absenceDays * absenceForInsuranceEmployeesAmount; + absenceForInsuranceDays = absenceDays; + + dynamicdeductions.Add(new CheckoutDynamicDeductionItem + { + Amount = absenceForInsuranceFine.ToMoney(), + Name = "جریمه بیمه", + Count = absenceForInsuranceDays + }); + } + #endregion + return new CustomizeCheckoutMandatoryViewModel { @@ -5110,6 +5150,7 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll CustomizeRotatingShifts = customizeWorkshopEmployeeSettings.CustomizeRotatingShifts, EmployeeSettingsShifts = customizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts .Select(x => (CustomizeSifts)x).ToList(), + DynamicDeductions = dynamicdeductions, }; } diff --git a/_0_Framework/_0_Framework_b.csproj b/_0_Framework/_0_Framework_b.csproj index ceb20d98..bb6a3bd7 100644 --- a/_0_Framework/_0_Framework_b.csproj +++ b/_0_Framework/_0_Framework_b.csproj @@ -13,4 +13,8 @@ + + + + From b5ee4f01c7cd5e0b8ed142b6feb1e02ebaf607ae Mon Sep 17 00:00:00 2001 From: SamSys Date: Thu, 20 Nov 2025 14:29:03 +0330 Subject: [PATCH 5/6] update BackgroundInstitutionContract --- .../Program.cs | 4 ++++ .../appsettings.Development.json | 3 ++- .../appsettings.json | 23 +++++++++++++++++-- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/Program.cs b/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/Program.cs index 0c6798e6..dda9d58e 100644 --- a/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/Program.cs +++ b/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/Program.cs @@ -5,6 +5,7 @@ using _0_Framework.InfraStructure.Mongo; using AccountManagement.Configuration; using BackgroundInstitutionContract.Task; using BackgroundInstitutionContract.Task.Jobs; +using CompanyManagment.App.Contracts.Hubs; using CompanyManagment.EFCore.Services; using Hangfire; using Microsoft.AspNetCore.Identity; @@ -45,7 +46,10 @@ QueryBootstrapper.Configure(builder.Services); JobsBootstrapper.Configure(builder.Services); builder.Services.AddHttpClient(); builder.Services.AddHttpContextAccessor(); +builder.Services.AddSignalR(); + var app = builder.Build(); +app.MapHub("/sendSmsHub"); app.MapHangfireDashboard(); app.MapGet("/", () => "Hello World!"); diff --git a/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/appsettings.Development.json b/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/appsettings.Development.json index 2dc32b9b..07d44356 100644 --- a/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/appsettings.Development.json +++ b/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/appsettings.Development.json @@ -25,7 +25,8 @@ //mahan Docker //"MesbahDb": "Data Source=localhost,5069;Initial Catalog=mesbah_db;User ID=sa;Password=YourPassword123;TrustServerCertificate=True;", - "HangfireDb": "Data Source=.;Initial Catalog=hangfire_db;Integrated Security=True;TrustServerCertificate=true;" + //"HangfireDb": "Data Source=.;Initial Catalog=hangfire_db;Integrated Security=True;TrustServerCertificate=true;", + "HangfireDb": "Data Source=185.208.175.186;Initial Catalog=hangfire_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]18[3019]#@ATt;TrustServerCertificate=true;" }, "GoogleRecaptchaV3": { diff --git a/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/appsettings.json b/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/appsettings.json index 10f68b8c..06293dbd 100644 --- a/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/appsettings.json +++ b/BackgroundInstitutionContract/BackgroundInstitutionContract.Task/appsettings.json @@ -2,8 +2,27 @@ "Logging": { "LogLevel": { "Default": "Information", - "Microsoft.AspNetCore": "Warning" + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" } }, - "AllowedHosts": "*" + "ConnectionStrings": { + + //local + //"MesbahDb": "Data Source=.;Initial Catalog=mesbah_db;Integrated Security=True;TrustServerCertificate=true;", + "MesbahDb": "Data Source=185.208.175.186;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]18[3019]#@ATt;TrustServerCertificate=true;", + //dad-mehr + //"MesbahDb": "Data Source=.;Initial Catalog=teamWork;Integrated Security=True;TrustServerCertificate=true;", + + //"TestDb": "Data Source=.;Initial Catalog=TestDb;Integrated Security=True;TrustServerCertificate=true;", + "TestDb": "Data Source=185.208.175.186;Initial Catalog=TestDb;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]18[3019]#@ATt;TrustServerCertificate=true;", + //"MesbahDb": "Data Source=.\\MSSQLSERVER2019;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=mesbah_db;Password=sa142857$@;" + //"HangfireDb": "Data Source=.;Initial Catalog=hangfire_db;Integrated Security=True;TrustServerCertificate=true;", + "HangfireDb": "Data Source=185.208.175.186;Initial Catalog=hangfire_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]18[3019]#@ATt;TrustServerCertificate=true;" + }, + "MongoDb": { + "ConnectionString": "mongodb://localhost:27017", + "DatabaseName": "Gozareshgir" + } + } From 7025478417e776de1350153159d01f8575dcbf72 Mon Sep 17 00:00:00 2001 From: mahan Date: Thu, 20 Nov 2025 15:20:45 +0330 Subject: [PATCH 6/6] feat: add dynamic deduction items to customize checkout and temp entities with migration --- .../CustomizeCheckoutMandatoryViewModel.cs | 3 +- .../Mapping/CustomizeCheckoutMapping.cs | 7 + .../Mapping/CustomizeCheckoutTempMapping.cs | 7 + ...duction to customize checkouts.Designer.cs | 11180 ++++++++++++++++ ...ynamic deduction to customize checkouts.cs | 68 + .../Migrations/CompanyContextModelSnapshot.cs | 64 + .../Repository/CustomizeCheckoutRepository.cs | 4 +- .../CustomizeCheckoutTempRepository.cs | 3 +- .../Repository/RollCallMandatoryRepository.cs | 8 +- .../CheckoutTemporary.cshtml.cs | 1 - .../PrintOneCheckoutTemporary.cshtml | 26 +- .../PrintOneCheckoutUnofficial.cshtml | 24 +- .../PrintDetailsCheckoutTemporaryRaw.cshtml | 27 +- .../PrintDetailsCheckoutUnofficialRaw.cshtml | 26 +- 14 files changed, 11398 insertions(+), 50 deletions(-) create mode 100644 CompanyManagment.EFCore/Migrations/20251120104018_add dynamic deduction to customize checkouts.Designer.cs create mode 100644 CompanyManagment.EFCore/Migrations/20251120104018_add dynamic deduction to customize checkouts.cs diff --git a/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutMandatoryViewModel.cs b/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutMandatoryViewModel.cs index 8d025842..dda5572e 100644 --- a/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutMandatoryViewModel.cs +++ b/CompanyManagment.App.Contracts/CustomizeCheckout/CustomizeCheckoutMandatoryViewModel.cs @@ -1,6 +1,7 @@  using System; using System.Collections.Generic; +using System.Linq; using System.Security.AccessControl; using _0_Framework.Application; using _0_Framework.Application.Enums; @@ -158,7 +159,7 @@ public class CustomizeCheckoutMandatoryViewModel /// public double TotalDeductionsDouble => FineAbsenceDeduction + InsuranceDeduction + LateToWorkDeduction + EarlyExitDeduction + SalaryAidDeduction + InstallmentDeduction + - FineDeduction + TaxDeduction; + FineDeduction + TaxDeduction+ DynamicDeductions.Sum(x=>x.Amount.MoneyToDouble()); /// /// مجموع مطالبات diff --git a/CompanyManagment.EFCore/Mapping/CustomizeCheckoutMapping.cs b/CompanyManagment.EFCore/Mapping/CustomizeCheckoutMapping.cs index 7932daa3..8d9d3550 100644 --- a/CompanyManagment.EFCore/Mapping/CustomizeCheckoutMapping.cs +++ b/CompanyManagment.EFCore/Mapping/CustomizeCheckoutMapping.cs @@ -131,5 +131,12 @@ public class CustomizeCheckoutMapping : IEntityTypeConfiguration x.EmployeeId); #endregion + + builder.OwnsMany(x => x.CheckoutDynamicDeductions, dynamicDeduction => + { + dynamicDeduction.Property(x => x.Name).HasMaxLength(100); + dynamicDeduction.Property(x => x.Count); + dynamicDeduction.Property(x => x.Amount).HasMaxLength(30); + }); } } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Mapping/CustomizeCheckoutTempMapping.cs b/CompanyManagment.EFCore/Mapping/CustomizeCheckoutTempMapping.cs index 354595a2..54effe44 100644 --- a/CompanyManagment.EFCore/Mapping/CustomizeCheckoutTempMapping.cs +++ b/CompanyManagment.EFCore/Mapping/CustomizeCheckoutTempMapping.cs @@ -129,5 +129,12 @@ public class CustomizeCheckoutTempMapping : IEntityTypeConfiguration x.EmployeeId); #endregion + + builder.OwnsMany(x => x.CheckoutDynamicDeductions, dynamicDeduction => + { + dynamicDeduction.Property(x => x.Name).HasMaxLength(100); + dynamicDeduction.Property(x => x.Count); + dynamicDeduction.Property(x => x.Amount).HasMaxLength(30); + }); } } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Migrations/20251120104018_add dynamic deduction to customize checkouts.Designer.cs b/CompanyManagment.EFCore/Migrations/20251120104018_add dynamic deduction to customize checkouts.Designer.cs new file mode 100644 index 00000000..640acd50 --- /dev/null +++ b/CompanyManagment.EFCore/Migrations/20251120104018_add dynamic deduction to customize checkouts.Designer.cs @@ -0,0 +1,11180 @@ +// +using System; +using System.Collections.Generic; +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("20251120104018_add dynamic deduction to customize checkouts")] + partial class adddynamicdeductiontocustomizecheckouts + { + /// + 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.AdminMonthlyOverviewAgg.AdminMonthlyOverview", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Month") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(155) + .HasColumnType("nvarchar(155)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("AdminMonthlyOverviews"); + }); + + 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.AuthorizedBankDetailsAgg.AuthorizedBankDetails", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AccountNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("BankName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CardNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IBan") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("AuthorizedBankDetails", (string)null); + }); + + modelBuilder.Entity("Company.Domain.AuthorizedPersonAgg.AuthorizedPerson", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BirthDate") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DeathStatus") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FatherName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Gender") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsVerified") + .HasColumnType("bit"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ShenasnameSeri") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ShenasnameSerial") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ShenasnamehNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("VerificationDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("NationalCode") + .IsUnique(); + + b.ToTable("AuthorizedPersons", (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("EmployeeMandatoryHours") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + 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("HasAmountConflict") + .HasColumnType("bit"); + + b.Property("HasInsuranceShareTheSameAsList") + .HasColumnType("bit"); + + 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("IsUpdateNeeded") + .HasColumnType("bit"); + + 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.CheckoutAgg.CheckoutWarningMessage", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CheckoutId") + .HasColumnType("bigint"); + + b.Property("TypeOfCheckoutWarning") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("WarningMessage") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("id"); + + b.HasIndex("CheckoutId"); + + b.ToTable("CheckoutWarningMessage", (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.ContactUsAgg.ContactUs", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Email") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("FirstName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FullName") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("LastName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Message") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("PhoneNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Title") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.HasKey("id"); + + b.ToTable("ContactUs"); + }); + + 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("CeoFName") + .HasColumnType("nvarchar(max)"); + + b.Property("CeoLName") + .HasColumnType("nvarchar(max)"); + + 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("LegalPosition") + .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("BaseYearAffected") + .HasColumnType("float"); + + b.Property("BaseYearUnAffected") + .HasColumnType("float"); + + 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("DailySalaryAffected") + .HasColumnType("float"); + + b.Property("DailySalaryUnAffected") + .HasColumnType("float"); + + b.Property("DailyWageType") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + 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("HasManualDailyWage") + .HasColumnType("bit"); + + 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.ContractingPartyBankAccountsAgg.ContractingPartyBankAccount", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AccountHolderName") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("AccountNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CardNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IBan") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsAuth") + .HasColumnType("bit"); + + b.HasKey("id"); + + b.HasIndex("ContractingPartyId"); + + b.ToTable("ContractingPartyBankAccounts", (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("HasAmountConflict") + .HasColumnType("bit"); + + 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("HasAmountConflict") + .HasColumnType("bit"); + + 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("ContractTerm") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("CreateCheckout") + .HasColumnType("bit"); + + b.Property("CreateContract") + .HasColumnType("bit"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CutContractEndOfYear") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("SignCheckout") + .HasColumnType("bit"); + + b.Property("SignContract") + .HasColumnType("bit"); + + 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("FamilyAllowance") + .HasColumnType("float"); + + 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("OverTimePay") + .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.Property("PublicId") + .HasColumnType("uniqueidentifier"); + + 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("IsInstallment") + .HasColumnType("bit"); + + b.Property("LawId") + .HasColumnType("bigint"); + + b.Property("Obligation") + .HasColumnType("float"); + + b.Property("OfficialCompany") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("PublicId") + .HasColumnType("uniqueidentifier"); + + 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("VerificationStatus") + .IsRequired() + .HasMaxLength(122) + .HasColumnType("nvarchar(122)"); + + b.Property("VerifierFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("VerifierPhoneNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("VerifyCode") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("VerifyCodeCreation") + .HasColumnType("datetime2"); + + b.Property("WorkshopManualCount") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.HasKey("id"); + + b.ToTable("InstitutionContracts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractAmendment", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("HasInstallment") + .HasColumnType("bit"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.Property("LawId") + .HasColumnType("bigint"); + + b.Property("VerificationCreation") + .HasColumnType("datetime2"); + + b.Property("VerifierFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("VerifierPhoneNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("VerifyCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("VerifyCodeCreation") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("InstitutionContractId"); + + b.ToTable("InstitutionContractAmendments", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractAmendmentChange", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ChangeDateGr") + .HasColumnType("datetime2"); + + b.Property("ChangeType") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("HasContractPlan") + .HasColumnType("bit"); + + b.Property("HasContractPlanInPerson") + .HasColumnType("bit"); + + b.Property("HasCustomizeCheckoutPlan") + .HasColumnType("bit"); + + b.Property("HasInsurancePlan") + .HasColumnType("bit"); + + b.Property("HasInsurancePlanInPerson") + .HasColumnType("bit"); + + b.Property("HasRollCallPlan") + .HasColumnType("bit"); + + b.Property("InstitutionContractAmendmentId") + .HasColumnType("bigint"); + + b.Property("PersonnelCount") + .HasColumnType("int"); + + b.Property("WorkshopDetailsId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("InstitutionContractAmendmentId"); + + b.ToTable("InstitutionContractAmendmentChange"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractInstallment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("nvarchar(1000)"); + + b.Property("InstallmentDateFa") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("InstallmentDateGr") + .HasColumnType("datetime2"); + + b.Property("InstitutionContractAmendmentId") + .HasColumnType("bigint"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("InstitutionContractAmendmentId"); + + b.HasIndex("InstitutionContractId"); + + b.ToTable("InstitutionContractInstallments", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopCurrent", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("InitialWorkshopId") + .HasColumnType("bigint"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.Property("InstitutionContractWorkshopGroupId") + .HasColumnType("bigint"); + + b.Property("PersonnelCount") + .HasColumnType("int"); + + b.Property("Price") + .HasColumnType("float"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("InstitutionContractWorkshopGroupId"); + + b.ToTable("InstitutionContractWorkshopCurrents", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopGroup", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.Property("LastModifiedDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("InstitutionContractId") + .IsUnique(); + + b.ToTable("InstitutionContractWorkshopGroups"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopInitial", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.Property("InstitutionContractWorkshopCurrentId") + .HasColumnType("bigint"); + + b.Property("InstitutionContractWorkshopGroupId") + .HasColumnType("bigint"); + + b.Property("PersonnelCount") + .HasColumnType("int"); + + b.Property("Price") + .HasColumnType("float"); + + b.Property("WorkshopCreated") + .HasColumnType("bit"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("InstitutionContractWorkshopCurrentId") + .IsUnique() + .HasFilter("[InstitutionContractWorkshopCurrentId] IS NOT NULL"); + + b.HasIndex("InstitutionContractWorkshopGroupId"); + + b.ToTable("InstitutionContractWorkshopInitials", (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("EndDate") + .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.Property("StartDate") + .HasColumnType("datetime2"); + + 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.ComplexProperty>("Debt", "Company.Domain.InsuranceListAgg.InsuranceList.Debt#InsuranceListDebt", b1 => + { + b1.IsRequired(); + + b1.Property("Amount") + .HasColumnType("float"); + + b1.Property("DebtDate") + .HasColumnType("datetime2"); + + b1.Property("IsDone") + .HasColumnType("bit"); + + b1.Property("MediaId") + .HasColumnType("bigint"); + + b1.Property("Type") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + }); + + b.ComplexProperty>("EmployerApproval", "Company.Domain.InsuranceListAgg.InsuranceList.EmployerApproval#InsuranceListEmployerApproval", b1 => + { + b1.IsRequired(); + + b1.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b1.Property("IsDone") + .HasColumnType("bit"); + + b1.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + }); + + b.ComplexProperty>("Inspection", "Company.Domain.InsuranceListAgg.InsuranceList.Inspection#InsuranceListInspection", b1 => + { + b1.IsRequired(); + + b1.Property("IsDone") + .HasColumnType("bit"); + + b1.Property("LastInspectionDateTime") + .HasColumnType("datetime2"); + + b1.Property("MediaId") + .HasColumnType("bigint"); + + b1.Property("Type") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + }); + + 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.LawAgg.Law", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("HeadTitle") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("NotificationsJson") + .HasMaxLength(3000) + .HasColumnType("nvarchar(3000)") + .HasColumnName("Notifications"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Version") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("Law", (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("IsInvalid") + .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.PaymentInstrumentAgg.PaymentInstrument", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AccountHolderName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("AccountNumber") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("CardNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("IBan") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsAuth") + .HasColumnType("bit"); + + b.Property("PaymentInstrumentGroupId") + .HasColumnType("bigint"); + + b.Property("PosTerminalId") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.HasIndex("PaymentInstrumentGroupId"); + + b.ToTable("PaymentInstruments"); + }); + + modelBuilder.Entity("Company.Domain.PaymentInstrumentAgg.PaymentInstrumentGroup", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.HasKey("id"); + + b.ToTable("PaymentInstrumentGroups"); + }); + + 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.PaymentTransactionAgg.PaymentTransaction", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("BankName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CallBackUrl") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("CardNumber") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("ContractingPartyName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(35) + .HasColumnType("nvarchar(35)"); + + b.Property("TransactionDate") + .HasColumnType("datetime2"); + + b.Property("TransactionId") + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("id"); + + b.ToTable("PaymentTransactions", (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("PublicId") + .HasColumnType("uniqueidentifier"); + + b.Property("State") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("VerifyCode") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("VerifyCodeSentDateTime") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.ToTable("ContractingPartyTemp", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.InstitutionContractContactInfoTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("InstitutionContractTempId") + .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("InstitutionContractTempId"); + + b.ToTable("InstitutionContractContactInfoTemp", (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("PublicId") + .HasColumnType("uniqueidentifier"); + + b.Property("RegistrationStatus") + .IsRequired() + .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("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("CreateCheckout") + .HasColumnType("bit"); + + b.Property("CreateContract") + .HasColumnType("bit"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CutContractEndOfYear") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("FixedSalary") + .HasColumnType("bit"); + + b.Property("HasRollCallFreeVip") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("InsuranceCheckoutFamilyAllowance") + .HasColumnType("bit"); + + b.Property("InsuranceCheckoutOvertime") + .HasColumnType("bit"); + + 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("IsStaticCheckout") + .HasColumnType("bit"); + + b.Property("Population") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("RotatingShiftCompute") + .HasColumnType("bit"); + + b.Property("SignCheckout") + .HasColumnType("bit"); + + b.Property("SignContract") + .HasColumnType("bit"); + + 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("IdNumberSeri") + .HasColumnType("nvarchar(max)"); + + b.Property("IdNumberSerial") + .HasColumnType("nvarchar(max)"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsAuth") + .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.AuthorizedBankDetailsAgg.AuthorizedBankDetails", b => + { + b.OwnsMany("Company.Domain.AuthorizedBankDetailsAgg.AuthorizedBankDetailsOwner", "OwnersList", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AuthorizedBankDetailsId") + .HasColumnType("bigint"); + + b1.Property("CustomerType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b1.Property("FName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b1.Property("LName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b1.Property("NationalIdentifier") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.HasKey("Id"); + + b1.HasIndex("AuthorizedBankDetailsId"); + + b1.ToTable("AuthorizedBankDetailsOwners", (string)null); + + b1.WithOwner() + .HasForeignKey("AuthorizedBankDetailsId"); + }); + + b.Navigation("OwnersList"); + }); + + 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.OwnsOne("Company.Domain.CheckoutAgg.CheckoutRollCall", "CheckoutRollCall", b1 => + { + b1.Property("Checkoutid") + .HasColumnType("bigint"); + + b1.Property("TotalBreakTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("TotalMandatoryTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("TotalPaidLeaveTmeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("TotalPresentTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("TotalSickLeaveTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("TotalWorkingTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.HasKey("Checkoutid"); + + b1.ToTable("Checkouts"); + + b1.WithOwner() + .HasForeignKey("Checkoutid"); + + b1.OwnsMany("Company.Domain.CheckoutAgg.CheckoutRollCallDay", "RollCallDaysCollection", b2 => + { + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("BreakTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b2.Property("CheckoutId") + .HasColumnType("bigint"); + + b2.Property("Date") + .HasColumnType("datetime2"); + + b2.Property("FirstEndDate") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b2.Property("FirstStartDate") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b2.Property("IsAbsent") + .HasColumnType("bit"); + + b2.Property("IsFriday") + .HasColumnType("bit"); + + b2.Property("IsHoliday") + .HasColumnType("bit"); + + b2.Property("IsSliced") + .HasColumnType("bit"); + + b2.Property("LeaveType") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b2.Property("SecondEndDate") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b2.Property("SecondStartDate") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b2.Property("WorkingTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b2.HasKey("Id"); + + b2.HasIndex("CheckoutId"); + + b2.ToTable("CheckoutRollCallDay"); + + b2.WithOwner() + .HasForeignKey("CheckoutId"); + }); + + b1.Navigation("RollCallDaysCollection"); + }); + + b.OwnsMany("Company.Domain.CheckoutAgg.ValueObjects.CheckoutLoanInstallment", "LoanInstallments", b1 => + { + b1.Property("Checkoutid") + .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("Checkoutid", "Id"); + + b1.ToTable("CheckoutLoanInstallment"); + + b1.WithOwner() + .HasForeignKey("Checkoutid"); + }); + + b.OwnsMany("Company.Domain.CheckoutAgg.ValueObjects.CheckoutSalaryAid", "SalaryAids", b1 => + { + b1.Property("Checkoutid") + .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("Checkoutid", "Id"); + + b1.ToTable("CheckoutSalaryAid"); + + b1.WithOwner() + .HasForeignKey("Checkoutid"); + }); + + b.Navigation("CheckoutRollCall"); + + b.Navigation("LoanInstallments"); + + b.Navigation("SalaryAids"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.CheckoutAgg.CheckoutWarningMessage", b => + { + b.HasOne("Company.Domain.CheckoutAgg.Checkout", "Checkout") + .WithMany("CheckoutWarningMessageList") + .HasForeignKey("CheckoutId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Checkout"); + }); + + 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.ContractingPartyBankAccountsAgg.ContractingPartyBankAccount", b => + { + b.HasOne("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", "ContractingParty") + .WithMany("ContractingPartyBankAccounts") + .HasForeignKey("ContractingPartyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ContractingParty"); + }); + + 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.Application.Enums.CheckoutDynamicDeductionItem", "CheckoutDynamicDeductions", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("Count") + .HasColumnType("int"); + + b1.Property("Name") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckouts_CheckoutDynamicDeductions"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + 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("CheckoutDynamicDeductions"); + + 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.Application.Enums.CheckoutDynamicDeductionItem", "CheckoutDynamicDeductions", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("Count") + .HasColumnType("int"); + + b1.Property("Name") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTemps_CheckoutDynamicDeductions"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + 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("CheckoutDynamicDeductions"); + + 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.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.Base.WeeklyOffDay", "WeeklyOffDays", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("ParentId") + .HasColumnType("bigint"); + + b1.HasKey("Id"); + + b1.HasIndex("ParentId"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings_WeeklyOffDays"); + + b1.WithOwner() + .HasForeignKey("ParentId"); + }); + + 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"); + + b.Navigation("WeeklyOffDays"); + }); + + 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.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.Base.WeeklyOffDay", "WeeklyOffDays", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("ParentId") + .HasColumnType("bigint"); + + b1.HasKey("Id"); + + b1.HasIndex("ParentId"); + + b1.ToTable("CustomizeWorkshopGroupSettings_WeeklyOffDays"); + + b1.WithOwner() + .HasForeignKey("ParentId"); + }); + + 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"); + + b.Navigation("WeeklyOffDays"); + }); + + 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.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.Base.WeeklyOffDay", "WeeklyOffDays", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("ParentId") + .HasColumnType("bigint"); + + b1.HasKey("Id"); + + b1.HasIndex("ParentId"); + + b1.ToTable("CustomizeWorkshopSettings_WeeklyOffDays"); + + b1.WithOwner() + .HasForeignKey("ParentId"); + }); + + 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("WeeklyOffDays"); + + 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.InstitutionContractAgg.InstitutionContractAmendment", b => + { + b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContract", "InstitutionContract") + .WithMany("Amendments") + .HasForeignKey("InstitutionContractId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InstitutionContract"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractAmendmentChange", b => + { + b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContractAmendment", "InstitutionContractAmendment") + .WithMany("AmendmentChanges") + .HasForeignKey("InstitutionContractAmendmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InstitutionContractAmendment"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractInstallment", b => + { + b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContractAmendment", "InstitutionContractAmendment") + .WithMany("Installments") + .HasForeignKey("InstitutionContractAmendmentId"); + + b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContract", "InstitutionContract") + .WithMany("Installments") + .HasForeignKey("InstitutionContractId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InstitutionContract"); + + b.Navigation("InstitutionContractAmendment"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopCurrent", b => + { + b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopGroup", "WorkshopGroup") + .WithMany("CurrentWorkshops") + .HasForeignKey("InstitutionContractWorkshopGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopDetailEmployer", "Employers", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("EmployerId") + .HasColumnType("bigint"); + + b1.Property("InstitutionContractWorkshopCurrentid") + .HasColumnType("bigint"); + + b1.HasKey("id"); + + b1.HasIndex("InstitutionContractWorkshopCurrentid"); + + b1.ToTable("InstitutionContractWorkshopCurrentEmployers", (string)null); + + b1.WithOwner() + .HasForeignKey("InstitutionContractWorkshopCurrentid"); + }); + + b.OwnsOne("Company.Domain.InstitutionContractAgg.WorkshopServices", "Services", b1 => + { + b1.Property("InstitutionContractWorkshopCurrentid") + .HasColumnType("bigint"); + + b1.Property("Contract") + .HasColumnType("bit"); + + b1.Property("ContractInPerson") + .HasColumnType("bit"); + + b1.Property("CustomizeCheckout") + .HasColumnType("bit"); + + b1.Property("Insurance") + .HasColumnType("bit"); + + b1.Property("InsuranceInPerson") + .HasColumnType("bit"); + + b1.Property("RollCall") + .HasColumnType("bit"); + + b1.Property("RollCallInPerson") + .HasColumnType("bit"); + + b1.HasKey("InstitutionContractWorkshopCurrentid"); + + b1.ToTable("InstitutionContractWorkshopCurrents"); + + b1.WithOwner() + .HasForeignKey("InstitutionContractWorkshopCurrentid"); + }); + + b.Navigation("Employers"); + + b.Navigation("Services"); + + b.Navigation("WorkshopGroup"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopGroup", b => + { + b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContract", "InstitutionContract") + .WithOne("WorkshopGroup") + .HasForeignKey("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopGroup", "InstitutionContractId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InstitutionContract"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopInitial", b => + { + b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopCurrent", "WorkshopCurrent") + .WithOne("WorkshopInitial") + .HasForeignKey("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopInitial", "InstitutionContractWorkshopCurrentId"); + + b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopGroup", "WorkshopGroup") + .WithMany("InitialWorkshops") + .HasForeignKey("InstitutionContractWorkshopGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopDetailEmployer", "Employers", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("EmployerId") + .HasColumnType("bigint"); + + b1.Property("InstitutionContractWorkshopInitialid") + .HasColumnType("bigint"); + + b1.HasKey("id"); + + b1.HasIndex("InstitutionContractWorkshopInitialid"); + + b1.ToTable("InstitutionContractWorkshopInitialEmployers", (string)null); + + b1.WithOwner() + .HasForeignKey("InstitutionContractWorkshopInitialid"); + }); + + b.OwnsOne("Company.Domain.InstitutionContractAgg.WorkshopServices", "Services", b1 => + { + b1.Property("InstitutionContractWorkshopInitialid") + .HasColumnType("bigint"); + + b1.Property("Contract") + .HasColumnType("bit"); + + b1.Property("ContractInPerson") + .HasColumnType("bit"); + + b1.Property("CustomizeCheckout") + .HasColumnType("bit"); + + b1.Property("Insurance") + .HasColumnType("bit"); + + b1.Property("InsuranceInPerson") + .HasColumnType("bit"); + + b1.Property("RollCall") + .HasColumnType("bit"); + + b1.Property("RollCallInPerson") + .HasColumnType("bit"); + + b1.HasKey("InstitutionContractWorkshopInitialid"); + + b1.ToTable("InstitutionContractWorkshopInitials"); + + b1.WithOwner() + .HasForeignKey("InstitutionContractWorkshopInitialid"); + }); + + b.Navigation("Employers"); + + b.Navigation("Services"); + + b.Navigation("WorkshopCurrent"); + + b.Navigation("WorkshopGroup"); + }); + + 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.LawAgg.Law", b => + { + b.OwnsMany("Company.Domain.LawAgg.LawItem", "Items", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Details") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b1.Property("Header") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.Property("LawId") + .HasColumnType("bigint"); + + b1.Property("OrderNumber") + .HasColumnType("int"); + + b1.HasKey("Id"); + + b1.HasIndex("LawId"); + + b1.ToTable("LawItem", (string)null); + + b1.WithOwner() + .HasForeignKey("LawId"); + }); + + b.Navigation("Items"); + }); + + 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.PaymentInstrumentAgg.PaymentInstrument", b => + { + b.HasOne("Company.Domain.PaymentInstrumentAgg.PaymentInstrumentGroup", "PaymentInstrumentGroup") + .WithMany("PaymentInstruments") + .HasForeignKey("PaymentInstrumentGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentInstrumentGroup"); + }); + + 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.InstitutionContractContactInfoTemp", b => + { + b.HasOne("Company.Domain.TemporaryClientRegistrationAgg.InstitutionContractTemp", "InstitutionContractTemp") + .WithMany("ContactInfoList") + .HasForeignKey("InstitutionContractTempId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InstitutionContractTemp"); + }); + + 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.CheckoutAgg.Checkout", b => + { + b.Navigation("CheckoutWarningMessageList"); + }); + + modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b => + { + b.Navigation("ContractingPartyBankAccounts"); + + 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("Amendments"); + + b.Navigation("ContactInfoList"); + + b.Navigation("Installments"); + + b.Navigation("WorkshopGroup"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractAmendment", b => + { + b.Navigation("AmendmentChanges"); + + b.Navigation("Installments"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopCurrent", b => + { + b.Navigation("WorkshopInitial"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContractWorkshopGroup", b => + { + b.Navigation("CurrentWorkshops"); + + b.Navigation("InitialWorkshops"); + }); + + 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.PaymentInstrumentAgg.PaymentInstrumentGroup", b => + { + b.Navigation("PaymentInstruments"); + }); + + 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.InstitutionContractTemp", b => + { + b.Navigation("ContactInfoList"); + }); + + 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/20251120104018_add dynamic deduction to customize checkouts.cs b/CompanyManagment.EFCore/Migrations/20251120104018_add dynamic deduction to customize checkouts.cs new file mode 100644 index 00000000..04284867 --- /dev/null +++ b/CompanyManagment.EFCore/Migrations/20251120104018_add dynamic deduction to customize checkouts.cs @@ -0,0 +1,68 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace CompanyManagment.EFCore.Migrations +{ + /// + public partial class adddynamicdeductiontocustomizecheckouts : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "CustomizeCheckouts_CheckoutDynamicDeductions", + columns: table => new + { + CustomizeCheckoutid = table.Column(type: "bigint", nullable: false), + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Count = table.Column(type: "int", nullable: false), + Amount = table.Column(type: "nvarchar(30)", maxLength: 30, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomizeCheckouts_CheckoutDynamicDeductions", x => new { x.CustomizeCheckoutid, x.Id }); + table.ForeignKey( + name: "FK_CustomizeCheckouts_CheckoutDynamicDeductions_CustomizeCheckouts_CustomizeCheckoutid", + column: x => x.CustomizeCheckoutid, + principalTable: "CustomizeCheckouts", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CustomizeCheckoutTemps_CheckoutDynamicDeductions", + columns: table => new + { + CustomizeCheckoutTempid = table.Column(type: "bigint", nullable: false), + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Count = table.Column(type: "int", nullable: false), + Amount = table.Column(type: "nvarchar(30)", maxLength: 30, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomizeCheckoutTemps_CheckoutDynamicDeductions", x => new { x.CustomizeCheckoutTempid, x.Id }); + table.ForeignKey( + name: "FK_CustomizeCheckoutTemps_CheckoutDynamicDeductions_CustomizeCheckoutTemps_CustomizeCheckoutTempid", + column: x => x.CustomizeCheckoutTempid, + principalTable: "CustomizeCheckoutTemps", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "CustomizeCheckouts_CheckoutDynamicDeductions"); + + migrationBuilder.DropTable( + name: "CustomizeCheckoutTemps_CheckoutDynamicDeductions"); + } + } +} diff --git a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs index eb2884e5..9fff61e5 100644 --- a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs +++ b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs @@ -7398,6 +7398,36 @@ namespace CompanyManagment.EFCore.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.OwnsMany("_0_Framework.Application.Enums.CheckoutDynamicDeductionItem", "CheckoutDynamicDeductions", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("Count") + .HasColumnType("int"); + + b1.Property("Name") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckouts_CheckoutDynamicDeductions"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => { b1.Property("CustomizeCheckoutid") @@ -7659,6 +7689,8 @@ namespace CompanyManagment.EFCore.Migrations .HasForeignKey("CustomizeCheckoutid"); }); + b.Navigation("CheckoutDynamicDeductions"); + b.Navigation("CheckoutFines"); b.Navigation("CustomizeCheckoutLoanInstallments"); @@ -7692,6 +7724,36 @@ namespace CompanyManagment.EFCore.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.OwnsMany("_0_Framework.Application.Enums.CheckoutDynamicDeductionItem", "CheckoutDynamicDeductions", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("Count") + .HasColumnType("int"); + + b1.Property("Name") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTemps_CheckoutDynamicDeductions"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => { b1.Property("CustomizeCheckoutTempid") @@ -7953,6 +8015,8 @@ namespace CompanyManagment.EFCore.Migrations .HasForeignKey("CustomizeCheckoutTempid"); }); + b.Navigation("CheckoutDynamicDeductions"); + b.Navigation("CheckoutFines"); b.Navigation("CustomizeCheckoutLoanInstallments"); diff --git a/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs index 1f0cdd3d..3511e425 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeCheckoutRepository.cs @@ -230,8 +230,8 @@ 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(), + CheckoutDynamicDeductions = x.CheckoutDynamicDeductions.ToList() }).ToList(); List workshopsList = workshopsQuery.Select(x => new WorkshopViewModel { diff --git a/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs index 3e99bbcc..07449f0c 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeCheckoutTempRepository.cs @@ -371,7 +371,8 @@ namespace CompanyManagment.EFCore.Repository ShiftStatus = x.ShiftStatus, IrregularShift = x.IrregularShift, CustomizeRotatingShifts = x.CustomizeRotatingShifts.ToList(), - RegularShift = x.RegularShifts.Select(x => (CustomizeSifts)x).ToList() + RegularShift = x.RegularShifts.Select(x => (CustomizeSifts)x).ToList(), + CheckoutDynamicDeductions = x.CheckoutDynamicDeductions.ToList() }).ToList(); List workshopsList = workshopsQuery.Select(x => new WorkshopViewModel diff --git a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs index d78fbec5..c22c6d15 100644 --- a/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallMandatoryRepository.cs @@ -5089,10 +5089,12 @@ public class RollCallMandatoryRepository : RepositoryBase, IRoll # region جریمه افراد غایبی که بیمه هستند - var leftWorkInsurance = _context.LeftWorkInsuranceList.FirstOrDefault(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId - &&( x.StartWorkDate <= contractEnd && + var leftWorkInsurance = _context.LeftWorkInsuranceList + .FirstOrDefault(x => x.WorkshopId == workshopId + && x.EmployeeId == employeeId + &&(( x.StartWorkDate <= contractEnd && x.LeftWorkDate >= contractStart) - || (x.LeftWorkDate == null && x.StartWorkDate <= contractEnd)); + || (x.LeftWorkDate == null && x.StartWorkDate <= contractEnd))); if (leftWorkInsurance != null && absenceDays >0) { absenceForInsuranceFine = absenceDays * absenceForInsuranceEmployeesAmount; diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml.cs index 68c9e823..e40e9807 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/CheckoutTemporary.cshtml.cs @@ -152,7 +152,6 @@ namespace ServiceHost.Areas.Client.Pages.Company.CustomizeCheckout public IActionResult OnGetPrintOne(long checkoutId, int yearFa, int monthFa) { List id = new() { checkoutId }; - Console.WriteLine(id); var result = _customizeCheckoutTempApplication.PrintAll(_workshopId, id).FirstOrDefault(); return Partial("PrintOneCheckoutTemporary", result); } diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintOneCheckoutTemporary.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintOneCheckoutTemporary.cshtml index fa12d15d..b090caa5 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintOneCheckoutTemporary.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintOneCheckoutTemporary.cshtml @@ -170,7 +170,11 @@ - + @{ + var firstDynamicData = Model.CheckoutDynamicDeductions.FirstOrDefault(); + var secondDynamicData = Model.CheckoutDynamicDeductions.Skip(1).FirstOrDefault(); + var thirdDynamicData = Model.CheckoutDynamicDeductions.Skip(2).FirstOrDefault(); + }
@@ -277,27 +281,27 @@ - - - + + + - - - + + + - - - + + + @@ -528,7 +532,7 @@ - + diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintOneCheckoutUnofficial.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintOneCheckoutUnofficial.cshtml index 2bf70552..901de0d3 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintOneCheckoutUnofficial.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/PrintOneCheckoutUnofficial.cshtml @@ -172,7 +172,11 @@
عیدی - @(Model.BonusesPay == "0" ? "-" : Model.BonusesPay) @firstDynamicData?.Name @firstDynamicData?.Count @firstDynamicData?.Amount
10 سنوات - @(Model.BaseYearsPay == "0" ? "-" : Model.BaseYearsPay) @secondDynamicData?.Name @secondDynamicData?.Count @secondDynamicData?.Amount
11 مزد مرخصی - @(Model.LeavePay == "0" ? "-" : Model.LeavePay) @thirdDynamicData?.Name @thirdDynamicData?.Count @thirdDynamicData?.Amount
@day.ExitDifferencesMinutes1@day.EnterDifferencesMinutes1@day.EnterDifferencesMinutes2 @day.StartDate2 @day.EndDate2
- + @{ + var firstDynamicData = Model.CheckoutDynamicDeductions.FirstOrDefault(); + var secondDynamicData = Model.CheckoutDynamicDeductions.Skip(1).FirstOrDefault(); + var thirdDynamicData = Model.CheckoutDynamicDeductions.Skip(2).FirstOrDefault(); + }
@@ -280,27 +284,27 @@ عیدی - @(Model.BonusesPay == "0" ? "-" : Model.BonusesPay) - - - + @firstDynamicData?.Name + @firstDynamicData?.Count + @firstDynamicData?.Amount 10 سنوات - @(Model.BaseYearsPay == "0" ? "-" : Model.BaseYearsPay) - - - + @secondDynamicData?.Name + @secondDynamicData?.Count + @secondDynamicData?.Amount 11 مزد مرخصی - @(Model.LeavePay == "0" ? "-" : Model.LeavePay) - - - + @thirdDynamicData?.Name + @thirdDynamicData?.Count + @thirdDynamicData?.Amount diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_Partials/PrintDetailsCheckoutTemporaryRaw.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_Partials/PrintDetailsCheckoutTemporaryRaw.cshtml index 0f544828..5f7aeb00 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_Partials/PrintDetailsCheckoutTemporaryRaw.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_Partials/PrintDetailsCheckoutTemporaryRaw.cshtml @@ -147,7 +147,12 @@
- + @{ + var firstDynamicData = Model.CheckoutDynamicDeductions.FirstOrDefault(); + Console.WriteLine(firstDynamicData.Name); + var secondDynamicData = Model.CheckoutDynamicDeductions.Skip(1).FirstOrDefault(); + var thirdDynamicData = Model.CheckoutDynamicDeductions.Skip(2).FirstOrDefault(); + }
@@ -254,27 +259,27 @@ - - - + + + - - - + + + - - - + + + @@ -505,7 +510,7 @@ - + diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_Partials/PrintDetailsCheckoutUnofficialRaw.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_Partials/PrintDetailsCheckoutUnofficialRaw.cshtml index b4ad3658..e83ff9ed 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_Partials/PrintDetailsCheckoutUnofficialRaw.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_Partials/PrintDetailsCheckoutUnofficialRaw.cshtml @@ -146,6 +146,12 @@
عیدی - @(Model.BonusesPay == "0" ? "-" : Model.BonusesPay) تتتتتتت @firstDynamicData?.Name@firstDynamicData?.Count @firstDynamicData?.Amount
10 سنوات - @(Model.BaseYearsPay == "0" ? "-" : Model.BaseYearsPay) @secondDynamicData?.Name @secondDynamicData?.Count @secondDynamicData?.Amount
11 مزد مرخصی - @(Model.LeavePay == "0" ? "-" : Model.LeavePay) @thirdDynamicData?.Name @thirdDynamicData?.Count @thirdDynamicData?.Amount
@day.ExitDifferencesMinutes1@day.EnterDifferencesMinutes1@day.EnterDifferencesMinutes2 @day.StartDate2 @day.EndDate2
+ @{ + var firstDynamicData = Model.CheckoutDynamicDeductions.FirstOrDefault(); + var secondDynamicData = Model.CheckoutDynamicDeductions.Skip(1).FirstOrDefault(); + var thirdDynamicData = Model.CheckoutDynamicDeductions.Skip(2).FirstOrDefault(); + } +
@@ -253,27 +259,27 @@ عیدی - @(Model.BonusesPay == "0" ? "-" : Model.BonusesPay) - - - + @firstDynamicData?.Name + @firstDynamicData?.Count + @firstDynamicData?.Amount 10 سنوات - @(Model.BaseYearsPay == "0" ? "-" : Model.BaseYearsPay) - - - + @secondDynamicData?.Name + @secondDynamicData?.Count + @secondDynamicData?.Amount 11 مزد مرخصی - @(Model.LeavePay == "0" ? "-" : Model.LeavePay) - - - + @thirdDynamicData?.Name + @thirdDynamicData?.Count + @thirdDynamicData?.Amount @@ -504,7 +510,7 @@ @day.ExitDifferencesMinutes1 - @day.EnterDifferencesMinutes1 + @day.EnterDifferencesMinutes2 @day.StartDate2 @day.EndDate2