From 97b4c7dc666f59cdd515084e64aa52b4a235c75e Mon Sep 17 00:00:00 2001 From: Mahan Ch Date: Mon, 2 Jun 2025 19:42:20 +0330 Subject: [PATCH 01/25] add offdays for cws --- .../Base/BaseCustomizeEntity.cs | 21 +- .../CustomizeWorkshopEmployeeSettings.cs | 5 +- .../CustomizeWorkshopGroupSettings.cs | 8 +- .../Entities/CustomizeWorkshopSettings.cs | 4 +- .../CreateCustomizeWorkshopSettings.cs | 5 +- .../CustomizeWorkshopSettingsApplication.cs | 12 +- ...ustomizeWorkshopEmployeeSettingsMapping.cs | 9 +- .../CustomizeWorkshopGroupSettingsMapping.cs | 9 +- .../CustomizeWorkshopSettingsMapping.cs | 6 + ...50602161025_add offDays to cws.Designer.cs | 9744 +++++++++++++++++ .../20250602161025_add offDays to cws.cs | 180 + .../Migrations/CompanyContextModelSnapshot.cs | 84 + 12 files changed, 10071 insertions(+), 16 deletions(-) create mode 100644 CompanyManagment.EFCore/Migrations/20250602161025_add offDays to cws.Designer.cs create mode 100644 CompanyManagment.EFCore/Migrations/20250602161025_add offDays to cws.cs diff --git a/0_Framework/Domain/CustomizeCheckoutShared/Base/BaseCustomizeEntity.cs b/0_Framework/Domain/CustomizeCheckoutShared/Base/BaseCustomizeEntity.cs index 2b563221..b315e609 100644 --- a/0_Framework/Domain/CustomizeCheckoutShared/Base/BaseCustomizeEntity.cs +++ b/0_Framework/Domain/CustomizeCheckoutShared/Base/BaseCustomizeEntity.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; using Microsoft.EntityFrameworkCore.Design.Internal; @@ -13,7 +15,7 @@ public class BaseCustomizeEntity : EntityBase public BaseCustomizeEntity(FridayPay fridayPay, OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay, FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, - FridayWork fridayWork, HolidayWork holidayWork, BreakTime breakTime,int leavePermittedDays) + FridayWork fridayWork, HolidayWork holidayWork, BreakTime breakTime,int leavePermittedDays,List weeklyOffDays) { FridayPay = fridayPay; @@ -33,6 +35,7 @@ public class BaseCustomizeEntity : EntityBase HolidayWork = holidayWork; BreakTime = breakTime; LeavePermittedDays = leavePermittedDays; + WeeklyOffDays = weeklyOffDays.Select(x=> new WeeklyOffDay(x.DayOfWeek)).ToList(); } /// @@ -117,4 +120,18 @@ public class BaseCustomizeEntity : EntityBase public BreakTime BreakTime { get; protected set; } + + public List WeeklyOffDays { get; set; } +} + +public class WeeklyOffDay +{ + public WeeklyOffDay(DayOfWeek dayOfWeek) + { + DayOfWeek = dayOfWeek; + } + + public long Id { get; set; } + public DayOfWeek DayOfWeek { get; set; } + public long ParentId { get; set; } } \ No newline at end of file diff --git a/Company.Domain/CustomizeWorkshopEmployeeSettingsAgg/Entities/CustomizeWorkshopEmployeeSettings.cs b/Company.Domain/CustomizeWorkshopEmployeeSettingsAgg/Entities/CustomizeWorkshopEmployeeSettings.cs index d3db6404..f652ccd3 100644 --- a/Company.Domain/CustomizeWorkshopEmployeeSettingsAgg/Entities/CustomizeWorkshopEmployeeSettings.cs +++ b/Company.Domain/CustomizeWorkshopEmployeeSettingsAgg/Entities/CustomizeWorkshopEmployeeSettings.cs @@ -28,11 +28,12 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity long workshopId, double salary, long customizeWorkshopGroupSettingId, ICollection customizeWorkshopEmployeeSettingsShifts, FridayWork fridayWork, - HolidayWork holidayWork, IrregularShift irregularShift, WorkshopShiftStatus workshopShiftStatus, BreakTime breakTime, int leavePermittedDays, ICollection rotatingShifts) : + HolidayWork holidayWork, IrregularShift irregularShift, WorkshopShiftStatus workshopShiftStatus, BreakTime breakTime, int leavePermittedDays, ICollection rotatingShifts + , List weeklyOffDays) : base(fridayPay, overTimePay, baseYearsPay, bonusesPay, nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork, - earlyExit, fridayWork, holidayWork, breakTime, leavePermittedDays) + earlyExit, fridayWork, holidayWork, breakTime, leavePermittedDays,weeklyOffDays) { CustomizeWorkshopGroupSettingId = customizeWorkshopGroupSettingId; IsSettingChanged = false; diff --git a/Company.Domain/CustomizeWorkshopGroupSettingsAgg/Entities/CustomizeWorkshopGroupSettings.cs b/Company.Domain/CustomizeWorkshopGroupSettingsAgg/Entities/CustomizeWorkshopGroupSettings.cs index a12a6086..0a0cb34d 100644 --- a/Company.Domain/CustomizeWorkshopGroupSettingsAgg/Entities/CustomizeWorkshopGroupSettings.cs +++ b/Company.Domain/CustomizeWorkshopGroupSettingsAgg/Entities/CustomizeWorkshopGroupSettings.cs @@ -28,10 +28,11 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity BonusesPay bonusesPay, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay, FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, FridayWork fridayWork, - HolidayWork holidayWork, BreakTime breakTime, WorkshopShiftStatus workshopShiftStatus, IrregularShift irregularShift, int leavePermittedDays, ICollection rotatingShifts) : + HolidayWork holidayWork, BreakTime breakTime, WorkshopShiftStatus workshopShiftStatus, IrregularShift irregularShift, int leavePermittedDays, + ICollection rotatingShifts, List weeklyOffDays) : base(fridayPay, overTimePay, baseYearsPay, bonusesPay, nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork, - earlyExit, fridayWork, holidayWork, breakTime, leavePermittedDays) + earlyExit, fridayWork, holidayWork, breakTime, leavePermittedDays,weeklyOffDays) { GroupName = groupName; Salary = salary; @@ -298,13 +299,14 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity IrregularShift irregularShift = new(IrregularShift.StartTime, IrregularShift.EndTime, IrregularShift.WorkshopIrregularShifts); BreakTime breakTime = new(BreakTime.HasBreakTimeValue, BreakTime.BreakTimeValue); + List weeklyOffDays = WeeklyOffDays.Select(x => new WeeklyOffDay(x.DayOfWeek)).ToList(); var rotatingShift = CustomizeRotatingShifts.Select(x => new CustomizeRotatingShift(x.StartTime, x.EndTime)).ToList(); var customizeWorkshopEmployeeSettings = new CustomizeWorkshopEmployeeSettings(fridayPay, overTimePay, baseYearsPay, bonusesPay, nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork, earlyExit, employeeId, workshopId, Salary, id, shifts, FridayWork, HolidayWork, irregularShift, - WorkshopShiftStatus, breakTime, LeavePermittedDays, rotatingShift); + WorkshopShiftStatus, breakTime, LeavePermittedDays, rotatingShift, weeklyOffDays); CustomizeWorkshopEmployeeSettingsCollection.Add(customizeWorkshopEmployeeSettings); } diff --git a/Company.Domain/CustomizeWorkshopSettingsAgg/Entities/CustomizeWorkshopSettings.cs b/Company.Domain/CustomizeWorkshopSettingsAgg/Entities/CustomizeWorkshopSettings.cs index ca3470ee..27da8b37 100644 --- a/Company.Domain/CustomizeWorkshopSettingsAgg/Entities/CustomizeWorkshopSettings.cs +++ b/Company.Domain/CustomizeWorkshopSettingsAgg/Entities/CustomizeWorkshopSettings.cs @@ -17,7 +17,7 @@ public class CustomizeWorkshopSettings : BaseCustomizeEntity public CustomizeWorkshopSettings(long workshopId, ICollection customizeWorkshopSettingsShifts, int leavePermittedDays, - WorkshopShiftStatus workshopShiftStatus,FridayWork fridayWork,HolidayWork holidayWork) + WorkshopShiftStatus workshopShiftStatus,FridayWork fridayWork,HolidayWork holidayWork, List weeklyOffDays) { FridayPay = new FridayPay(FridayPayType.None, 0); OverTimePay = new OverTimePay(OverTimePayType.None, 0); @@ -42,7 +42,7 @@ public class CustomizeWorkshopSettings : BaseCustomizeEntity HolidayWork = holidayWork; BonusesPaysInEndOfMonth = BonusesPaysInEndOfYear.EndOfYear; WorkshopShiftStatus = workshopShiftStatus; - + WeeklyOffDays = weeklyOffDays; if (workshopShiftStatus == WorkshopShiftStatus.Irregular) return; diff --git a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CreateCustomizeWorkshopSettings.cs b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CreateCustomizeWorkshopSettings.cs index e40246d5..960f7cd4 100644 --- a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CreateCustomizeWorkshopSettings.cs +++ b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CreateCustomizeWorkshopSettings.cs @@ -1,4 +1,5 @@ -using _0_Framework.Domain.CustomizeCheckoutShared.Enums; +using System; +using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using CompanyManagment.App.Contracts.CustomizeWorkshopSettings.ValueObjectsViewModel; using System.Collections.Generic; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; @@ -30,6 +31,8 @@ public class CreateCustomizeWorkshopSettings /// public HolidayWork HolidayWork { get; set; } + public List OffDays { get; set; } + diff --git a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs index cf4a3e61..5b4b6e3a 100644 --- a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs +++ b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs @@ -19,6 +19,7 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using System.Transactions; +using _0_Framework.Domain.CustomizeCheckoutShared.Base; using CompanyManagment.App.Contracts.RollCall; using Microsoft.EntityFrameworkCore.Query; using Company.Domain.CheckoutAgg; @@ -153,8 +154,10 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo } + var offDays = command.OffDays.Select(x => new WeeklyOffDay(x)).ToList(); + var record = new CustomizeWorkshopSettings(workshopId, shiftCollection, command.LeavePermittedDays, - command.WorkshopShiftStatus, command.FridayWork, command.HolidayWork); + command.WorkshopShiftStatus, command.FridayWork, command.HolidayWork, offDays); using (var transaction = new TransactionScope()) { @@ -344,7 +347,7 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo workshopSettings.BaseYearsPay, workshopSettings.BonusesPay, workshopSettings.NightWorkPay, workshopSettings.MarriedAllowance, workshopSettings.ShiftPay, workshopSettings.FamilyAllowance, workshopSettings.LeavePay, workshopSettings.InsuranceDeduction, workshopSettings.FineAbsenceDeduction, workshopSettings.LateToWork, workshopSettings.EarlyExit, command.FridayWork, - command.HolidayWork, breakTime, command.WorkshopShiftStatus, command.IrregularShift, command.LeavePermittedDays, customizeRotatingShifts); + command.HolidayWork, breakTime, command.WorkshopShiftStatus, command.IrregularShift, command.LeavePermittedDays, customizeRotatingShifts,workshopSettings.WeeklyOffDays); _customizeWorkshopGroupSettingsRepository.Create(entity); @@ -553,7 +556,7 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo customizeWorkshopGroupSettings.BaseYearsPay, customizeWorkshopGroupSettings.BonusesPay, customizeWorkshopGroupSettings.NightWorkPay, customizeWorkshopGroupSettings.MarriedAllowance, customizeWorkshopGroupSettings.ShiftPay, customizeWorkshopGroupSettings.FamilyAllowance, customizeWorkshopGroupSettings.LeavePay, customizeWorkshopGroupSettings.InsuranceDeduction, customizeWorkshopGroupSettings.FineAbsenceDeduction, customizeWorkshopGroupSettings.LateToWork, customizeWorkshopGroupSettings.EarlyExit, command.EmployeeIds.First(), command.WorkshopId, customizeWorkshopGroupSettings.Salary, command.GroupId, - shiftCollection, command.FridayWork, command.HolidayWork, command.IrregularShift, command.WorkshopShiftStatus, breakTime, command.LeavePermittedDays, rotatingShift); + shiftCollection, command.FridayWork, command.HolidayWork, command.IrregularShift, command.WorkshopShiftStatus, breakTime, command.LeavePermittedDays, rotatingShift,customizeWorkshopGroupSettings.WeeklyOffDays); _customizeWorkshopEmployeeSettingsRepository.Create(entity); @@ -1194,7 +1197,8 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo groupData.WorkshopShiftStatus, new(groupData.BreakTime.HasBreakTimeValue, groupData.BreakTime.BreakTimeValue), command.LeavePermittedDays, - groupData.CustomizeRotatingShifts.Select(x => new CustomizeRotatingShift(x.StartTime, x.EndTime)).ToList() + groupData.CustomizeRotatingShifts.Select(x => new CustomizeRotatingShift(x.StartTime, x.EndTime)).ToList(), + groupData.WeeklyOffDays ); _customizeWorkshopEmployeeSettingsRepository.Create(entity); diff --git a/CompanyManagment.EFCore/Mapping/CustomizeWorkshopEmployeeSettingsMapping.cs b/CompanyManagment.EFCore/Mapping/CustomizeWorkshopEmployeeSettingsMapping.cs index f296640c..27456ac3 100644 --- a/CompanyManagment.EFCore/Mapping/CustomizeWorkshopEmployeeSettingsMapping.cs +++ b/CompanyManagment.EFCore/Mapping/CustomizeWorkshopEmployeeSettingsMapping.cs @@ -228,7 +228,14 @@ public class CustomizeWorkshopEmployeeSettingsMapping : IEntityTypeConfiguration }); - builder.OwnsMany(x => x.CustomizeRotatingShifts); + builder.OwnsMany(x => x.WeeklyOffDays, offDay => + { + offDay.HasKey(x => x.Id); + offDay.Property(x => x.DayOfWeek).HasConversion().HasMaxLength(15); + offDay.WithOwner().HasForeignKey(x => x.ParentId); + }); + + builder.OwnsMany(x => x.CustomizeRotatingShifts); } } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Mapping/CustomizeWorkshopGroupSettingsMapping.cs b/CompanyManagment.EFCore/Mapping/CustomizeWorkshopGroupSettingsMapping.cs index 830224f7..2bbc5ca6 100644 --- a/CompanyManagment.EFCore/Mapping/CustomizeWorkshopGroupSettingsMapping.cs +++ b/CompanyManagment.EFCore/Mapping/CustomizeWorkshopGroupSettingsMapping.cs @@ -227,7 +227,14 @@ public class CustomizeWorkshopGroupSettingsMapping : IEntityTypeConfiguration x.CustomizeRotatingShifts); + builder.OwnsMany(x => x.WeeklyOffDays, offDay => + { + offDay.HasKey(x => x.Id); + offDay.Property(x => x.DayOfWeek).HasConversion().HasMaxLength(15); + offDay.WithOwner().HasForeignKey(x => x.ParentId); + }); + + builder.OwnsMany(x => x.CustomizeRotatingShifts); builder.HasOne(x => x.CustomizeWorkshopSettings).WithMany(x => x.CustomizeWorkshopGroupSettingsCollection) diff --git a/CompanyManagment.EFCore/Mapping/CustomizeWorkshopSettingsMapping.cs b/CompanyManagment.EFCore/Mapping/CustomizeWorkshopSettingsMapping.cs index 10e83286..391aba7b 100644 --- a/CompanyManagment.EFCore/Mapping/CustomizeWorkshopSettingsMapping.cs +++ b/CompanyManagment.EFCore/Mapping/CustomizeWorkshopSettingsMapping.cs @@ -221,6 +221,12 @@ public class CustomizeWorkshopSettingsMapping:IEntityTypeConfiguration x.WeeklyOffDays, offDay => + { + offDay.HasKey(x => x.Id); + offDay.Property(x => x.DayOfWeek).HasConversion().HasMaxLength(15); + offDay.WithOwner().HasForeignKey(x => x.ParentId); + }); builder.HasMany(x => x.CustomizeWorkshopGroupSettingsCollection).WithOne(x => x.CustomizeWorkshopSettings) diff --git a/CompanyManagment.EFCore/Migrations/20250602161025_add offDays to cws.Designer.cs b/CompanyManagment.EFCore/Migrations/20250602161025_add offDays to cws.Designer.cs new file mode 100644 index 00000000..7cfdcf8a --- /dev/null +++ b/CompanyManagment.EFCore/Migrations/20250602161025_add offDays to cws.Designer.cs @@ -0,0 +1,9744 @@ +// +using System; +using CompanyManagment.EFCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace CompanyManagment.EFCore.Migrations +{ + [DbContext(typeof(CompanyContext))] + [Migration("20250602161025_add offDays to cws")] + partial class addoffDaystocws + { + /// + 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.BankAgg.Bank", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BankLogoMediaId") + .HasColumnType("bigint"); + + b.Property("BankName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("Banks", (string)null); + }); + + modelBuilder.Entity("Company.Domain.BillAgg.EntityBill", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Appointed") + .HasColumnType("nvarchar(max)"); + + b.Property("Contact") + .HasColumnType("nvarchar(max)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("ProcessingStage") + .HasColumnType("nvarchar(max)"); + + b.Property("SubjectBill") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("id"); + + b.ToTable("TextManager_Bill", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Board.Board", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardChairman") + .HasColumnType("nvarchar(max)"); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("Branch") + .HasColumnType("nvarchar(max)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DisputeResolutionPetitionDate") + .HasColumnType("datetime2"); + + b.Property("ExpertReport") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Boards", (string)null); + }); + + modelBuilder.Entity("Company.Domain.BoardType.BoardType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("BoardTypes", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ChapterAgg.EntityChapter", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Chapter") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("Subtitle_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("Subtitle_Id"); + + b.ToTable("TextManager_Chapter", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CheckoutAgg.Checkout", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AbsenceDeduction") + .HasColumnType("float"); + + b.Property("AbsencePeriod") + .HasColumnType("float"); + + b.Property("AbsenceValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ArchiveCode") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("AverageHoursPerDay") + .HasColumnType("float"); + + b.Property("BaseYearsPay") + .HasColumnType("float"); + + b.Property("BonusesPay") + .HasColumnType("float"); + + b.Property("ConsumableItems") + .HasColumnType("float"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractStart") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreditLeaves") + .HasColumnType("float"); + + b.Property("DateOfBirth") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("EmployeeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FamilyAllowance") + .HasColumnType("float"); + + b.Property("FathersName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("FridayPay") + .HasColumnType("float"); + + b.Property("FridayWorkValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("HasRollCall") + .HasColumnType("bit"); + + b.Property("HousingAllowance") + .HasColumnType("float"); + + b.Property("InstallmentDeduction") + .HasColumnType("float"); + + b.Property("InsuranceDeduction") + .HasColumnType("float"); + + b.Property("IsActiveString") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LeaveCheckout") + .HasColumnType("bit"); + + b.Property("LeavePay") + .HasColumnType("float"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MissionPay") + .HasColumnType("float"); + + b.Property("Month") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NightworkPay") + .HasColumnType("float"); + + b.Property("OverNightWorkValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OverTimeWorkValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OvertimePay") + .HasColumnType("float"); + + b.Property("PersonnelCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("RewardPay") + .HasColumnType("float"); + + b.Property("RotatingShiftValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("SalaryAidDeduction") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("Signature") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("SumOfWorkingDays") + .HasMaxLength(6) + .HasColumnType("nvarchar(6)"); + + b.Property("TaxDeducation") + .HasColumnType("float"); + + b.Property("TotalClaims") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("TotalDayOfBunosesCompute") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TotalDayOfLeaveCompute") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TotalDayOfYearsCompute") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TotalDeductions") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("WorkingHoursId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(70) + .HasColumnType("nvarchar(70)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.Property("YearsPay") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId"); + + b.ToTable("Checkouts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ClassifiedSalaryAgg.ClassifiedSalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("Group1") + .HasColumnType("float"); + + b.Property("Group10") + .HasColumnType("float"); + + b.Property("Group11") + .HasColumnType("float"); + + b.Property("Group12") + .HasColumnType("float"); + + b.Property("Group13") + .HasColumnType("float"); + + b.Property("Group14") + .HasColumnType("float"); + + b.Property("Group15") + .HasColumnType("float"); + + b.Property("Group16") + .HasColumnType("float"); + + b.Property("Group17") + .HasColumnType("float"); + + b.Property("Group18") + .HasColumnType("float"); + + b.Property("Group19") + .HasColumnType("float"); + + b.Property("Group2") + .HasColumnType("float"); + + b.Property("Group20") + .HasColumnType("float"); + + b.Property("Group3") + .HasColumnType("float"); + + b.Property("Group4") + .HasColumnType("float"); + + b.Property("Group5") + .HasColumnType("float"); + + b.Property("Group6") + .HasColumnType("float"); + + b.Property("Group7") + .HasColumnType("float"); + + b.Property("Group8") + .HasColumnType("float"); + + b.Property("Group9") + .HasColumnType("float"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("ClassifiedSalaries", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ClientEmployeeWorkshopAgg.ClientEmployeeWorkshop", b => + { + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.HasKey("WorkshopId", "EmployeeId"); + + b.HasIndex("EmployeeId"); + + b.ToTable("ClientWorkshopEmployee", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Contact2Agg.EntityContact", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("NameContact") + .HasColumnType("nvarchar(max)"); + + b.Property("Signature") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("TextManager_Contact", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgentPhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ArchiveCode") + .HasColumnType("int"); + + b.Property("BlockTimes") + .HasColumnType("int"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("FName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FatherName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(6) + .HasColumnType("nvarchar(6)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IdNumberSeri") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IdNumberSerial") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsAuthenticated") + .HasColumnType("bit"); + + b.Property("IsBlock") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsLegal") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("NationalId") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("Nationalcode") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RegisterId") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("RepresentativeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("State") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SureName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Zone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.HasIndex("RepresentativeId"); + + b.ToTable("PersonalContractingParties", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AgreementSalary") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ArchiveCode") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ConsumableItems") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContarctStart") + .HasColumnType("datetime2"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractNo") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ContractPeriod") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("ContractType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DayliWage") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployerId") + .HasColumnType("bigint"); + + b.Property("FamilyAllowance") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("GetWorkDate") + .HasColumnType("datetime2"); + + b.Property("HousingAllowance") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsActiveString") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("JobType") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("JobTypeId") + .HasColumnType("bigint"); + + b.Property("MandatoryHoursid") + .HasColumnType("bigint"); + + b.Property("PersonnelCode") + .HasColumnType("bigint"); + + b.Property("SetContractDate") + .HasColumnType("datetime2"); + + b.Property("Signature") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("WorkingHoursWeekly") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkshopAddress1") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("WorkshopAddress2") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("WorkshopIds") + .HasColumnType("bigint"); + + b.Property("YearlySalaryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("EmployerId"); + + b.HasIndex("JobTypeId"); + + b.HasIndex("MandatoryHoursid"); + + b.HasIndex("WorkshopIds"); + + b.HasIndex("YearlySalaryId"); + + b.ToTable("Contracts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ContractingPartyAccountAgg.ContractingPartyAccount", b => + { + b.Property("PersonalContractingPartyId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.HasKey("PersonalContractingPartyId", "AccountId"); + + b.ToTable("ContractingPartyAccount", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CrossJobGuildId") + .HasColumnType("bigint"); + + b.Property("EquivalentRialOver") + .HasColumnType("bigint"); + + b.Property("EquivalentRialUnder") + .HasColumnType("bigint"); + + b.Property("SalaryRatioOver") + .HasColumnType("float"); + + b.Property("SalaryRatioUnder") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("CrossJobGuildId"); + + b.ToTable("CrossJobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CrossJobGuildAgg.CrossJobGuild", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EconomicCode") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("CrossJobGuilds", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CrossJobItemsAgg.CrossJobItems", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CrossJobId") + .HasColumnType("bigint"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("CrossJobId"); + + b.HasIndex("JobId"); + + b.ToTable("CrossJobItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYearsPay") + .HasColumnType("float"); + + b.Property("BonusesPay") + .HasColumnType("float"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ContractStart") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyWage") + .HasColumnType("float"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EarlyExitDeduction") + .HasColumnType("float"); + + b.Property("EmployeeFName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployeeLName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FamilyAllowance") + .HasColumnType("float"); + + b.Property("FineAbsenceDeduction") + .HasColumnType("float"); + + b.Property("FineDeduction") + .HasColumnType("float"); + + b.Property("FridayPay") + .HasColumnType("float"); + + b.Property("InstallmentDeduction") + .HasColumnType("float"); + + b.Property("InsuranceDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkValue") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("LeavePay") + .HasColumnType("float"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MonthInt") + .HasColumnType("int"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NightWorkPay") + .HasColumnType("float"); + + b.Property("OverTimePay") + .HasColumnType("float"); + + b.Property("RewardPay") + .HasColumnType("float"); + + b.Property("SalaryAidDeduction") + .HasColumnType("float"); + + b.Property("SettingSalary") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("ShiftStatus") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("SumOfWorkingDays") + .HasColumnType("nvarchar(max)"); + + b.Property("TaxDeduction") + .HasColumnType("float"); + + b.Property("TotalClaims") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalDeductions") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("WorkshopFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("YearInt") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("CustomizeCheckouts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYearsPay") + .HasColumnType("float"); + + b.Property("BonusesPay") + .HasColumnType("float"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ContractStart") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyWage") + .HasColumnType("float"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EarlyExitDeduction") + .HasColumnType("float"); + + b.Property("EmployeeFName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployeeLName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FamilyAllowance") + .HasColumnType("float"); + + b.Property("FineAbsenceDeduction") + .HasColumnType("float"); + + b.Property("FineDeduction") + .HasColumnType("float"); + + b.Property("FridayPay") + .HasColumnType("float"); + + b.Property("InstallmentDeduction") + .HasColumnType("float"); + + b.Property("InsuranceDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkValue") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("LeavePay") + .HasColumnType("float"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MonthInt") + .HasColumnType("int"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NightWorkPay") + .HasColumnType("float"); + + b.Property("OverTimePay") + .HasColumnType("float"); + + b.Property("RewardPay") + .HasColumnType("float"); + + b.Property("SalaryAidDeduction") + .HasColumnType("float"); + + b.Property("SettingSalary") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("ShiftStatus") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("SumOfWorkingDays") + .HasColumnType("nvarchar(max)"); + + b.Property("TaxDeduction") + .HasColumnType("float"); + + b.Property("TotalClaims") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalDeductions") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("WorkshopFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("YearInt") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("CustomizeCheckoutTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CustomizeWorkshopGroupSettingId") + .HasColumnType("bigint"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FridayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("HolidayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("IsSettingChanged") + .HasColumnType("bit"); + + b.Property("IsShiftChanged") + .HasColumnType("bit"); + + b.Property("LeavePermittedDays") + .HasColumnType("int"); + + b.Property("Salary") + .HasColumnType("float"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopShiftStatus") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.HasKey("id"); + + b.HasIndex("CustomizeWorkshopGroupSettingId"); + + b.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CustomizeWorkshopSettingId") + .HasColumnType("bigint"); + + b.Property("FridayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("GroupName") + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.Property("HolidayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("IsSettingChange") + .HasColumnType("bit"); + + b.Property("IsShiftChange") + .HasColumnType("bit"); + + b.Property("LeavePermittedDays") + .HasColumnType("int"); + + b.Property("MainGroup") + .HasColumnType("bit"); + + b.Property("Salary") + .HasColumnType("float"); + + b.Property("WorkshopShiftStatus") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.HasKey("id"); + + b.HasIndex("CustomizeWorkshopSettingId"); + + b.ToTable("CustomizeWorkshopGroupSettings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYearsPayInEndOfYear") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("BonusesPaysInEndOfMonth") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Currency") + .HasColumnType("int"); + + b.Property("EndTimeOffSet") + .HasColumnType("time"); + + b.Property("FridayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("HolidayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("LeavePermittedDays") + .HasColumnType("int"); + + b.Property("MaxMonthDays") + .HasColumnType("int"); + + b.Property("OverTimeThresholdMinute") + .HasColumnType("int"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopShiftStatus") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId") + .IsUnique(); + + b.ToTable("CustomizeWorkshopSettings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryAgg.DateSalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("EndDateGr") + .HasColumnType("datetime2"); + + b.Property("StartDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("StartDateGr") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("DateSalaries", (string)null); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryItemAgg.DateSalaryItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateSalaryId") + .HasColumnType("bigint"); + + b.Property("Percent") + .HasColumnType("float"); + + b.Property("PercentageId") + .HasColumnType("bigint"); + + b.Property("Salary") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("DateSalaryId"); + + b.HasIndex("PercentageId"); + + b.ToTable("DateSalaryItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAccountAgg.EmployeeAccount", b => + { + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.HasKey("EmployeeId", "AccountId"); + + b.ToTable("EmployeeAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAgg.Employee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("BankBranch") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("BankCardNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("City") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("DateOfIssue") + .HasColumnType("datetime2"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FatherName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FieldOfStudy") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IdNumberSeri") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("IdNumberSerial") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("InsuranceCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("InsuranceHistoryByMonth") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("InsuranceHistoryByYear") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsActiveString") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IsAuthorized") + .HasColumnType("bit"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("LevelOfEducation") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MaritalStatus") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MilitaryService") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Nationality") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("NumberOfChildren") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OfficePhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PlaceOfIssue") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("State") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.ToTable("Employees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAuthorizeTempAgg.EmployeeAuthorizeTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BirthDate") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FatherName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("IdNumberSeri") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("IdNumberSerial") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("LName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.HasKey("id"); + + b.HasIndex("NationalCode") + .IsUnique() + .HasFilter("[NationalCode] IS NOT NULL"); + + b.ToTable("EmployeeAuthorizeTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeBankInformationAgg.EmployeeBankInformation", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BankAccountNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("BankId") + .HasColumnType("bigint"); + + b.Property("CardNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IsDefault") + .HasColumnType("bit"); + + b.Property("ShebaNumber") + .HasMaxLength(26) + .HasColumnType("nvarchar(26)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("BankId"); + + b.HasIndex("EmployeeId"); + + b.ToTable("EmployeeBankInformationSet", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeChildrenAgg.EmployeeChildren", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ParentNationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.ToTable("EmployeeChildren", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeClientTempAgg.EmployeeClientTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasColumnType("nvarchar(max)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("MaritalStatus") + .HasColumnType("nvarchar(max)"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("EmployeeClientTemps"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeComputeOptionsAgg.EmployeeComputeOptions", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BonusesOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ComputeOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("YearsOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("EmployeeComputeOptions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ConfirmationDateTime") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DocumentLabel") + .IsRequired() + .HasMaxLength(31) + .HasColumnType("nvarchar(31)"); + + b.Property("DocumentStatus") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("EmployeeDocumentId") + .HasColumnType("bigint"); + + b.Property("EmployeeDocumentsAdminViewId") + .HasColumnType("bigint"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("MediaId") + .HasColumnType("bigint"); + + b.Property("RejectionReason") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("ReviewedById") + .HasMaxLength(120) + .HasColumnType("bigint"); + + b.Property("UploaderId") + .HasColumnType("bigint"); + + b.Property("UploaderRoleId") + .HasColumnType("bigint"); + + b.Property("UploaderType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeDocumentId"); + + b.HasIndex("EmployeeDocumentsAdminViewId"); + + b.ToTable("EmployeeDocumentItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId") + .IsUnique(); + + b.ToTable("EmployeeDocumentsAdminSelection", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("HasRejectedItems") + .HasColumnType("bit"); + + b.Property("IsConfirmed") + .HasColumnType("bit"); + + b.Property("IsSentToChecker") + .HasColumnType("bit"); + + b.Property("RequiredItemsSubmittedByClient") + .HasColumnType("bit"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("EmployeeDocuments", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeInsurancListDataAgg.EmployeeInsurancListData", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYears") + .HasColumnType("float"); + + b.Property("BenefitsIncludedContinuous") + .HasColumnType("float"); + + b.Property("BenefitsIncludedNonContinuous") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyWage") + .HasColumnType("float"); + + b.Property("DailyWagePlusBaseYears") + .HasColumnType("float"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("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.HasKey("id"); + + b.ToTable("FinancialStatments", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FinancialTransactionAgg.FinancialTransaction", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Balance") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Creditor") + .HasColumnType("float"); + + b.Property("Deptor") + .HasColumnType("float"); + + b.Property("Description") + .HasMaxLength(600) + .HasColumnType("nvarchar(600)"); + + b.Property("DescriptionOption") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FinancialStatementId") + .HasColumnType("bigint"); + + b.Property("MessageText") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("SentSms") + .HasColumnType("bit"); + + b.Property("SentSmsDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TdateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TdateGr") + .HasColumnType("datetime2"); + + b.Property("TypeOfTransaction") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.HasIndex("FinancialStatementId"); + + b.ToTable("FinancialTransactions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FineAgg.Fine", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreatedByAccountId") + .HasColumnType("bigint"); + + b.Property("CreatedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FineDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LastModifiedByAccountId") + .HasColumnType("bigint"); + + b.Property("LastModifiedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Fines", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FineSubjectAgg.FineSubject", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("FineSubjects", (string)null); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanAgg.GroupPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AnnualSalary") + .HasColumnType("float"); + + b.Property("BaseSalary") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("GroupNo") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("JobSalary") + .HasColumnType("float"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopPlanId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopPlanId"); + + b.ToTable("GroupPlans", (string)null); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanJobItemAgg.GroupPlanJobItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("GroupNo") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("GroupPlanId") + .HasColumnType("bigint"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("JobName") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopPlanId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("GroupPlanId"); + + b.ToTable("GroupPlanJobItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.HolidayAgg.Holiday", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("Holidays", (string)null); + }); + + modelBuilder.Entity("Company.Domain.HolidayItemAgg.HolidayItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("HolidayId") + .HasColumnType("bigint"); + + b.Property("HolidayYear") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.Property("Holidaydate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("HolidayId"); + + b.ToTable("Holidayitems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContract", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("City") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("ContractAmount") + .HasColumnType("float"); + + b.Property("ContractDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ContractDateGr") + .HasColumnType("datetime2"); + + b.Property("ContractEndFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ContractEndGr") + .HasColumnType("datetime2"); + + b.Property("ContractNo") + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("ContractStartFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ContractStartGr") + .HasColumnType("datetime2"); + + b.Property("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("ContractingPartyName") + .HasMaxLength(80) + .HasColumnType("nvarchar(80)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyCompenseation") + .HasColumnType("float"); + + b.Property("Description") + .HasMaxLength(10000) + .HasColumnType("nvarchar(max)"); + + b.Property("EmployeeManualCount") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ExtensionNo") + .HasColumnType("int"); + + b.Property("HasValueAddedTax") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Obligation") + .HasColumnType("float"); + + b.Property("OfficialCompany") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("RepresentativeName") + .HasMaxLength(80) + .HasColumnType("nvarchar(80)"); + + b.Property("Signature") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("State") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("TotalAmount") + .HasColumnType("float"); + + b.Property("TypeOfContract") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("ValueAddedTax") + .HasColumnType("float"); + + b.Property("WorkshopManualCount") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.HasKey("id"); + + b.ToTable("InstitutionContracts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractContactInfoAgg.InstitutionContractContactInfo", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FnameLname") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.Property("PhoneNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("PhoneType") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Position") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SendSms") + .HasColumnType("bit"); + + b.HasKey("id"); + + b.HasIndex("InstitutionContractId"); + + b.ToTable("InstitutinContractContactInfo", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionPlanAgg.InstitutionPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseContractAmont") + .HasColumnType("float"); + + b.Property("CountPerson") + .HasColumnType("int"); + + b.Property("FinalContractAmont") + .HasColumnType("float"); + + b.Property("IncreasePercentage") + .HasColumnType("float"); + + b.HasKey("id"); + + b.ToTable("InstitutionPlan", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionPlanAgg.PlanPercentage", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractAndCheckoutInPersonPercent") + .HasColumnType("int"); + + b.Property("ContractAndCheckoutPercent") + .HasColumnType("int"); + + b.Property("CustomizeCheckoutPercent") + .HasColumnType("int"); + + b.Property("InsuranceInPersonPercent") + .HasColumnType("int"); + + b.Property("InsurancePercent") + .HasColumnType("int"); + + b.Property("RollCallPercent") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("PlanPercentage", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsurancJobAgg.InsuranceJob", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EconomicCode") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("InsuranceJobTitle") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.Property("YearlySalaryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("InsuranceJobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsurancWorkshopInfoAgg.InsuranceWorkshopInfo", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgreementNumber") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployerName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InsuranceCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ListNumber") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId") + .IsUnique(); + + b.ToTable("InsuranceWorkshopInformation", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceAgg.Insurance", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployerStr") + .HasColumnType("nvarchar(max)"); + + b.Property("ListNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("Month") + .HasMaxLength(2) + .HasColumnType("int"); + + b.Property("WorkShopId") + .HasColumnType("bigint"); + + b.Property("WorkShopStr") + .HasColumnType("nvarchar(max)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("WorkShopId"); + + b.ToTable("Insurances", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceEmployeeInfoAgg.InsuranceEmployeeInfo", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("DateOfIssue") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FatherName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Gender") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("InsuranceCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("PlaceOfIssue") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId") + .IsUnique(); + + b.ToTable("InsuranceEmployeeInformation", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobAndJobsAgg.InsuranceJobAndJobs", b => + { + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("InsuranceJobItemId") + .HasColumnType("bigint"); + + b.HasKey("JobId", "InsuranceJobItemId"); + + b.HasIndex("InsuranceJobItemId"); + + b.ToTable("InsuranceJobAndJobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("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.HasKey("id"); + + b.ToTable("InsuranceLists", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceWorkshopAgg.InsuranceListWorkshop", b => + { + b.Property("InsurancListId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("InsurancListId", "WorkshopId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("InsuranceListWorkshops", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceYearlySalaryAgg.InsuranceYearlySalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("Group1") + .HasColumnType("float"); + + b.Property("Group10") + .HasColumnType("float"); + + b.Property("Group11") + .HasColumnType("float"); + + b.Property("Group12") + .HasColumnType("float"); + + b.Property("Group13") + .HasColumnType("float"); + + b.Property("Group14") + .HasColumnType("float"); + + b.Property("Group15") + .HasColumnType("float"); + + b.Property("Group16") + .HasColumnType("float"); + + b.Property("Group17") + .HasColumnType("float"); + + b.Property("Group18") + .HasColumnType("float"); + + b.Property("Group19") + .HasColumnType("float"); + + b.Property("Group2") + .HasColumnType("float"); + + b.Property("Group20") + .HasColumnType("float"); + + b.Property("Group21") + .HasColumnType("float"); + + b.Property("Group22") + .HasColumnType("float"); + + b.Property("Group23") + .HasColumnType("float"); + + b.Property("Group24") + .HasColumnType("float"); + + b.Property("Group25") + .HasColumnType("float"); + + b.Property("Group26") + .HasColumnType("float"); + + b.Property("Group27") + .HasColumnType("float"); + + b.Property("Group28") + .HasColumnType("float"); + + b.Property("Group29") + .HasColumnType("float"); + + b.Property("Group3") + .HasColumnType("float"); + + b.Property("Group30") + .HasColumnType("float"); + + b.Property("Group4") + .HasColumnType("float"); + + b.Property("Group5") + .HasColumnType("float"); + + b.Property("Group6") + .HasColumnType("float"); + + b.Property("Group7") + .HasColumnType("float"); + + b.Property("Group8") + .HasColumnType("float"); + + b.Property("Group9") + .HasColumnType("float"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("InsuranceYearlySalaries", (string)null); + }); + + modelBuilder.Entity("Company.Domain.JobAgg.Job", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("JobCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("JobName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.ToTable("Jobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeaveAgg.Leave", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Decription") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EndLeave") + .HasColumnType("datetime2"); + + b.Property("HasShiftDuration") + .HasColumnType("bit"); + + b.Property("IsAccepted") + .HasColumnType("bit"); + + b.Property("LeaveHourses") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LeaveType") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("Month") + .HasColumnType("int"); + + b.Property("PaidLeaveType") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("ShiftDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("StartLeave") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("Leave", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkAgg.LeftWork", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AddBonusesPay") + .HasColumnType("bit"); + + b.Property("AddLeavePay") + .HasColumnType("bit"); + + b.Property("AddYearsPay") + .HasColumnType("bit"); + + b.Property("BonusesOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ComputeOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IncludeStatus") + .HasColumnType("bit"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LeftWorkDate") + .HasColumnType("datetime2"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("LeftWork", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkInsuranceAgg.LeftWorkInsurance", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IncludeStatus") + .HasColumnType("bit"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LeftWorkDate") + .HasColumnType("datetime2(7)"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("LeftWorkInsurances", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkTempAgg.LeftWorkTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LastDayStanding") + .HasColumnType("datetime2"); + + b.Property("LeftWork") + .HasColumnType("datetime2"); + + b.Property("LeftWorkId") + .HasColumnType("bigint"); + + b.Property("LeftWorkType") + .HasColumnType("int"); + + b.Property("StartWork") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("LeftWorkTemps"); + }); + + modelBuilder.Entity("Company.Domain.LoanAgg.Entities.Loan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("AmountPerMonth") + .HasColumnType("float"); + + b.Property("Count") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("CreatedByAccountId") + .HasColumnType("bigint"); + + b.Property("CreatedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("GetRounded") + .HasColumnType("bit"); + + b.Property("LoanGrantDate") + .HasColumnType("datetime2"); + + b.Property("StartInstallmentPayment") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Loan", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MandatoryHoursAgg.MandatoryHours", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Aban") + .HasColumnType("float"); + + b.Property("AbanFridays") + .HasColumnType("int"); + + b.Property("AbanHolidays") + .HasColumnType("int"); + + b.Property("AbanMonadatoryDays") + .HasColumnType("int"); + + b.Property("Azar") + .HasColumnType("float"); + + b.Property("AzarFridays") + .HasColumnType("int"); + + b.Property("AzarHolidays") + .HasColumnType("int"); + + b.Property("AzarMonadatoryDays") + .HasColumnType("int"); + + b.Property("Bahman") + .HasColumnType("float"); + + b.Property("BahmanFridays") + .HasColumnType("int"); + + b.Property("BahmanHolidays") + .HasColumnType("int"); + + b.Property("BahmanMonadatoryDays") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Dey") + .HasColumnType("float"); + + b.Property("DeyFridays") + .HasColumnType("int"); + + b.Property("DeyHolidays") + .HasColumnType("int"); + + b.Property("DeyMonadatoryDays") + .HasColumnType("int"); + + b.Property("Esfand") + .HasColumnType("float"); + + b.Property("EsfandFridays") + .HasColumnType("int"); + + b.Property("EsfandHolidays") + .HasColumnType("int"); + + b.Property("EsfandMonadatoryDays") + .HasColumnType("int"); + + b.Property("Farvardin") + .HasColumnType("float"); + + b.Property("FarvardinFridays") + .HasColumnType("int"); + + b.Property("FarvardinHolidays") + .HasColumnType("int"); + + b.Property("FarvardinMonadatoryDays") + .HasColumnType("int"); + + b.Property("Khordad") + .HasColumnType("float"); + + b.Property("KhordadFridays") + .HasColumnType("int"); + + b.Property("KhordadHolidays") + .HasColumnType("int"); + + b.Property("KhordadMonadatoryDays") + .HasColumnType("int"); + + b.Property("Mehr") + .HasColumnType("float"); + + b.Property("MehrFridays") + .HasColumnType("int"); + + b.Property("MehrHolidays") + .HasColumnType("int"); + + b.Property("MehrMonadatoryDays") + .HasColumnType("int"); + + b.Property("Mordad") + .HasColumnType("float"); + + b.Property("MordadFridays") + .HasColumnType("int"); + + b.Property("MordadHolidays") + .HasColumnType("int"); + + b.Property("MordadMonadatoryDays") + .HasColumnType("int"); + + b.Property("Ordibehesht") + .HasColumnType("float"); + + b.Property("OrdibeheshtFridays") + .HasColumnType("int"); + + b.Property("OrdibeheshtHolidays") + .HasColumnType("int"); + + b.Property("OrdibeheshtMonadatoryDays") + .HasColumnType("int"); + + b.Property("Shahrivar") + .HasColumnType("float"); + + b.Property("ShahrivarFridays") + .HasColumnType("int"); + + b.Property("ShahrivarHolidays") + .HasColumnType("int"); + + b.Property("ShahrivarMonadatoryDays") + .HasColumnType("int"); + + b.Property("Tir") + .HasColumnType("float"); + + b.Property("TirFridays") + .HasColumnType("int"); + + b.Property("TirHolidays") + .HasColumnType("int"); + + b.Property("TirMonadatoryDays") + .HasColumnType("int"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("MandatoryHours", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MasterPenaltyTitle.MasterPenaltyTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Day") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("MasterPetition_Id") + .HasColumnType("bigint"); + + b.Property("PaidAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("RemainingAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("MasterPetition_Id"); + + b.ToTable("Master_PenaltyTitles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MasterPetition.MasterPetition", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.Property("MasterName") + .HasColumnType("nvarchar(max)"); + + b.Property("WorkHistoryDescreption") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Master_Petitions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MasterWorkHistory.MasterWorkHistory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("MasterPetition_Id") + .HasColumnType("bigint"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.Property("WorkingHoursPerDay") + .HasColumnType("int"); + + b.Property("WorkingHoursPerWeek") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("MasterPetition_Id"); + + b.ToTable("Master_WorkHistories", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ModuleAgg.EntityModule", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("NameSubModule") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("TextManager_Module", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ModuleTextManagerAgg.EntityModuleTextManager", b => + { + b.Property("TextManagerId") + .HasColumnType("bigint"); + + b.Property("ModuleId") + .HasColumnType("bigint"); + + b.HasKey("TextManagerId", "ModuleId"); + + b.HasIndex("ModuleId"); + + b.ToTable("TextManager_ModuleTextManager", (string)null); + }); + + modelBuilder.Entity("Company.Domain.OriginalTitleAgg.EntityOriginalTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("id"); + + b.ToTable("TextManager_OriginalTitle", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeAgg.PaymentToEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("Month") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("PaymentToEmployees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeItemAgg.PaymentToEmployeeItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BankCheckNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CashDescription") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DestinationBankAccountNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("DestinationBankName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("PayDate") + .HasColumnType("datetime2"); + + b.Property("Payment") + .HasColumnType("float"); + + b.Property("PaymentMetod") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("PaymentTitle") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("PaymentToEmployeeId") + .HasColumnType("bigint"); + + b.Property("SourceBankAccountNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SourceBankName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TypeDestinationBankNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TypeSourceBankNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("PaymentToEmployeeId"); + + b.ToTable("PaymentToEmployeeItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PenaltyTitle.PenaltyTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Day") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2(7)"); + + b.Property("PaidAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("Petition_Id") + .HasColumnType("bigint"); + + b.Property("RemainingAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("ToDate") + .HasColumnType("datetime2(7)"); + + b.HasKey("id"); + + b.HasIndex("Petition_Id"); + + b.ToTable("PenaltyTitles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PercentageAgg.Percentage", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Percent") + .HasColumnType("float"); + + b.HasKey("id"); + + b.ToTable("Percentages", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PersonnelCodeAgg.PersonnelCodeDomain", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("PersonnelCode") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("PersonnelCodes", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Petition.Petition", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.Property("NotificationPetitionDate") + .HasColumnType("datetime2"); + + b.Property("PetitionIssuanceDate") + .HasColumnType("datetime2"); + + b.Property("PetitionNo") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPenalty") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPenaltyTitles") + .HasColumnType("nvarchar(max)"); + + b.Property("WorkHistoryDescreption") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Petitions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ProceedingSession.ProceedingSession", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Board_Id") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Date") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Time") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("Board_Id"); + + b.ToTable("ProceedingSessions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RepresentativeAgg.Representative", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("AgentPhone") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("FullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsLegal") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("LegalName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("NationalId") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Nationalcode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Phone") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("RegisterId") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.HasKey("id"); + + b.ToTable("Representative", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RewardAgg.Reward", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreatedByAccountId") + .HasColumnType("bigint"); + + b.Property("CreatedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("ntext"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("GrantDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LastModifiedByAccountId") + .HasColumnType("bigint"); + + b.Property("LastModifiedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RewardType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Rewards", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallAgg.RollCall", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BreakTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EarlyEntryDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("EarlyExitDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("EmployeeFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("FridayWorkTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("LateEntryDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("LateExitDuration") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("Month") + .HasColumnType("int"); + + b.Property("NightWorkTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("RollCallModifyType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ShiftDate") + .HasColumnType("datetime2"); + + b.Property("ShiftDurationTimeSpan") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("ShiftType") + .IsRequired() + .HasMaxLength(22) + .HasColumnType("nvarchar(22)"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("RollCall", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeAgg.RollCallEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("EmployeeFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("HasChangedName") + .HasColumnType("bit"); + + b.Property("HasUploadedImage") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("RollCallEmployees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeStatusAgg.RollCallEmployeeStatus", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("RollCallEmployeeId") + .HasColumnType("bigint"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("RollCallEmployeeId"); + + b.ToTable("RollCallEmployeesStatus"); + }); + + modelBuilder.Entity("Company.Domain.RollCallPlanAgg.RollCallPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseAmont") + .HasColumnType("float"); + + b.Property("FinalAmont") + .HasColumnType("float"); + + b.Property("IncreasePercentage") + .HasColumnType("float"); + + b.Property("MaxPersonValid") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("RollCallPlans", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallServiceAgg.RollCallService", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CustomizeCheckoutAmount") + .HasColumnType("float"); + + b.Property("CustomizeCheckoutServiceEnd") + .HasColumnType("datetime2"); + + b.Property("CustomizeCheckoutServiceStart") + .HasColumnType("datetime2"); + + b.Property("Duration") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("EndService") + .HasColumnType("datetime2"); + + b.Property("HasCustomizeCheckoutService") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("MaxPersonValid") + .HasColumnType("int"); + + b.Property("ServiceType") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("StartService") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId"); + + b.ToTable("RollCallServices", (string)null); + }); + + modelBuilder.Entity("Company.Domain.SalaryAidAgg.SalaryAid", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CalculationDate") + .HasColumnType("datetime2"); + + b.Property("CalculationMonth") + .HasColumnType("int"); + + b.Property("CalculationYear") + .HasColumnType("int"); + + b.Property("CreatedByAccountId") + .HasColumnType("bigint"); + + b.Property("CreatedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("LastModifiedByAccountId") + .HasColumnType("bigint"); + + b.Property("LastModifiedByUserType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SalaryAidDateTime") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("SalaryAids", (string)null); + }); + + modelBuilder.Entity("Company.Domain.SmsResultAgg.SmsResult", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractingPartyName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractingPatyId") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.Property("MessageId") + .HasColumnType("int"); + + b.Property("Mobile") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("Status") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("TypeOfSms") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("SmsResults", (string)null); + }); + + modelBuilder.Entity("Company.Domain.SubtitleAgg.EntitySubtitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EntitySubtitleid") + .HasColumnType("bigint"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("OriginalTitle_Id") + .HasColumnType("bigint"); + + b.Property("Subtitle") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("id"); + + b.HasIndex("EntitySubtitleid"); + + b.HasIndex("OriginalTitle_Id"); + + b.ToTable("TextManager_Subtitle", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TaxJobCategoryAgg.TaxJobCategory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("JobCategoryCode") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("JobCategoryName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.ToTable("TaxJobCategory", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BudgetLawExceptions") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("Country") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CurrencyType") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployeeName") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("EmploymentLocationStatus") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("ExchangeRate") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("InsuranceBranch") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InsuranceName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("JobCategoryCode") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("JobCategoryId") + .HasColumnType("bigint"); + + b.Property("JobTitle") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("PaymentType") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("RetirementDate") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TaxExempt") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("TypeOfEmployment") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("TypeOfInsurance") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId"); + + b.ToTable("TaxLeftWorkCategory", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkItemAgg.TaxLeftWorkItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("LeftWork") + .HasColumnType("datetime2"); + + b.Property("StartWork") + .HasColumnType("datetime2"); + + b.Property("TaxLeftWorkCategoryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("TaxLeftWorkCategoryId"); + + b.ToTable("TaxLeftWorkItem", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.ContractingPartyTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("City") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("FName") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("FatherName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(6) + .HasColumnType("nvarchar(6)"); + + b.Property("IdNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumberSeri") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IdNumberSerial") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("NationalCode") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Phone") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("State") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)"); + + b.HasKey("id"); + + b.ToTable("ContractingPartyTemp", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.InstitutionContractTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractEndGr") + .HasColumnType("datetime2"); + + b.Property("ContractStartGr") + .HasColumnType("datetime2"); + + b.Property("ContractingPartyTempId") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("MessageId") + .HasColumnType("int"); + + b.Property("OfficialCompany") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("PaymentModel") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("PeriodModel") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("RegistrationStatus") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("SendVerifyCodeTime") + .HasColumnType("datetime2"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("ValueAddedTax") + .HasColumnType("float"); + + b.Property("VerifyCode") + .HasMaxLength(6) + .HasColumnType("nvarchar(6)"); + + b.Property("VerifyCodeEndTime") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.ToTable("InstitutionContractTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.WorkshopServicesTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CountPerson") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ServiceName") + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("WorkshopTempId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopTempId"); + + b.ToTable("WorkshopServicesTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.WorkshopTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractingPartyTempId") + .HasColumnType("bigint"); + + b.Property("CountPerson") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopServicesAmount") + .HasColumnType("float"); + + b.HasKey("id"); + + b.ToTable("WorkshopTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TextManagerAgg.EntityTextManager", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Chapter_Id") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateTextManager") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("NoteNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("NumberTextManager") + .HasColumnType("nvarchar(max)"); + + b.Property("OriginalTitle_Id") + .HasColumnType("bigint"); + + b.Property("Paragraph") + .HasColumnType("nvarchar(max)"); + + b.Property("SubjectTextManager") + .HasColumnType("nvarchar(max)"); + + b.Property("Subtitle_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("TextManager_TextManager", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkHistory.WorkHistory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("Petition_Id") + .HasColumnType("bigint"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.Property("WorkingHoursPerDay") + .HasColumnType("int"); + + b.Property("WorkingHoursPerWeek") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("Petition_Id"); + + b.ToTable("WorkHistories", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursAgg.WorkingHours", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("NumberOfFriday") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("NumberOfWorkingDays") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("OverNightWorkH") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OverNightWorkM") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("OverTimeWorkH") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("OverTimeWorkM") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("ShiftWork") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("TotalHoursesH") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("TotalHoursesM") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("WeeklyWorkingTime") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.HasIndex("ContractId"); + + b.ToTable("WorkingHours", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursItemsAgg.WorkingHoursItems", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ComplexEnd") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("ComplexStart") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DayOfWork") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("End1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("End2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("End3") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("RestTime") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start3") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("WeekNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkingHoursId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkingHoursId"); + + b.ToTable("WorkingHoursItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempAgg.WorkingHoursTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("ShiftWork") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("WorkShopAddress2") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("WorkingHoursTemp", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempItemAgg.WorkingHoursTempItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ComplexEnd") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("ComplexStart") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DayOfWork") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("End1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("End2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("RestTime") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("WeekNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkingHoursTempId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkingHoursTempId"); + + b.ToTable("WorkingHoursTempItem", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAccountAgg.WorkshopAccount", b => + { + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.Property("ContractAndCheckout") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Insurance") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsActiveSting") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Tax") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.HasKey("WorkshopId", "AccountId"); + + b.ToTable("WorkshopeAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAgg.Workshop", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AddBonusesPay") + .HasColumnType("bit"); + + b.Property("AddLeavePay") + .HasColumnType("bit"); + + b.Property("AddYearsPay") + .HasColumnType("bit"); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgentName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("AgentPhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("AgreementNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ArchiveCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("BonusesOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("City") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ComputeOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractTerm") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FixedSalary") + .HasColumnType("bit"); + + b.Property("HasRollCallFreeVip") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("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("Population") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("State") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TotalPaymentHide") + .HasColumnType("bit"); + + b.Property("TypeOfContract") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeOfInsuranceSend") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeOfOwnership") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("WorkshopFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopHolidayWorking") + .HasColumnType("bit"); + + b.Property("WorkshopName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopSureName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("YearsOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ZoneName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("Workshops", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopEmployerAgg.WorkshopEmployer", b => + { + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("EmployerId") + .HasColumnType("bigint"); + + b.HasKey("WorkshopId", "EmployerId"); + + b.HasIndex("EmployerId"); + + b.ToTable("WorkshopeEmployers", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanAgg.WorkshopPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Designer") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DesignerPhone") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ExecutionDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ExecutionDateGr") + .HasColumnType("datetime2"); + + b.Property("IncludingDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IncludingDateGr") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("WorkshopPlan", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanEmployeeAgg.WorkshopPlanEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopPlanId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopPlanId"); + + b.ToTable("WorkshopPlanEmployees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopSubAccountAgg.WorkshopSubAccount", b => + { + b.Property("SubAccountId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("int"); + + b.HasKey("SubAccountId", "WorkshopId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("WorkshopSubAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryAgg.YearlySalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ConnectionId") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.ToTable("YearlySalariess", (string)null); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryItemsAgg.YearlySalaryItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ItemName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ItemValue") + .HasColumnType("float"); + + b.Property("ParentConnectionId") + .HasColumnType("int"); + + b.Property("ValueType") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("YearlySalaryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("YearlySalaryId"); + + b.ToTable("YearlyItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.YearlysSalaryTitleAgg.YearlySalaryTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Title1") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title10") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title2") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title3") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title4") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title5") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title6") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title7") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title8") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title9") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.ToTable("YearlySalaryTitles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ZoneAgg.Zone", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CityId") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ZoneName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("Zones", (string)null); + }); + + modelBuilder.Entity("Company.Domain.empolyerAgg.Employer", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgentPhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("DateOfIssue") + .HasColumnType("datetime2"); + + b.Property("EmployerLName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployerNo") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FatherName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsLegal") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalId") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("Nationalcode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Nationality") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PlaceOfIssue") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RegisterId") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("ContractingPartyId"); + + b.ToTable("Employers", (string)null); + }); + + modelBuilder.Entity("EmployerWorkshop", b => + { + b.Property("EmployersListid") + .HasColumnType("bigint"); + + b.Property("WorkshopsListid") + .HasColumnType("bigint"); + + b.HasKey("EmployersListid", "WorkshopsListid"); + + b.HasIndex("WorkshopsListid"); + + b.ToTable("EmployerWorkshop"); + }); + + modelBuilder.Entity("Company.Domain.Board.Board", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("BoardsList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("BoardsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.ChapterAgg.EntityChapter", b => + { + b.HasOne("Company.Domain.SubtitleAgg.EntitySubtitle", "EntitySubtitle") + .WithMany("Chapters") + .HasForeignKey("Subtitle_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EntitySubtitle"); + }); + + modelBuilder.Entity("Company.Domain.CheckoutAgg.Checkout", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("Checkouts") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.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("LoanInstallments"); + + b.Navigation("SalaryAids"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.ClientEmployeeWorkshopAgg.ClientEmployeeWorkshop", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("ClientEmployeeWorkshopList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("ClientEmployeeWorkshopList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b => + { + b.HasOne("Company.Domain.RepresentativeAgg.Representative", "Representative") + .WithMany("ContractingParties") + .HasForeignKey("RepresentativeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Representative"); + }); + + modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("Contracts") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.empolyerAgg.Employer", "Employer") + .WithMany("Contracts") + .HasForeignKey("EmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.JobAgg.Job", "Job") + .WithMany("ContractsList") + .HasForeignKey("JobTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.MandatoryHoursAgg.MandatoryHours", null) + .WithMany("Contracts") + .HasForeignKey("MandatoryHoursid"); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("Contracts2") + .HasForeignKey("WorkshopIds") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Company.Domain.YearlySalaryAgg.YearlySalary", "YearlySalary") + .WithMany("Contracts") + .HasForeignKey("YearlySalaryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Employer"); + + b.Navigation("Job"); + + b.Navigation("Workshop"); + + b.Navigation("YearlySalary"); + }); + + modelBuilder.Entity("Company.Domain.ContractingPartyAccountAgg.ContractingPartyAccount", b => + { + b.HasOne("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", "PersonalContractingParty") + .WithMany() + .HasForeignKey("PersonalContractingPartyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PersonalContractingParty"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b => + { + b.HasOne("Company.Domain.CrossJobGuildAgg.CrossJobGuild", "CrossJobGuild") + .WithMany("CrossJobList") + .HasForeignKey("CrossJobGuildId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CrossJobGuild"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobItemsAgg.CrossJobItems", b => + { + b.HasOne("Company.Domain.CrossJobAgg.CrossJob", "CrossJob") + .WithMany("CrossJobItemsList") + .HasForeignKey("CrossJobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.JobAgg.Job", "Job") + .WithMany("CrossJobItemsList") + .HasForeignKey("JobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CrossJob"); + + b.Navigation("Job"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("CustomizeCheckouts") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("CustomizeCheckouts") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckouts_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.HasKey("CustomizeCheckoutid"); + + b1.ToTable("CustomizeCheckouts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutRegularShift", "RegularShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeCheckoutid"); + + b1.ToTable("CustomizeCheckouts_RegularShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutFine", "CheckoutFines", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("FineDateFa") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b1.Property("FineDateGr") + .HasColumnType("datetime2"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutFine"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutLoanInstallments", "CustomizeCheckoutLoanInstallments", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AmountForMonth") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("LoanAmount") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("LoanRemaining") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b1.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutLoanInstallments"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutReward", "CustomizeCheckoutRewards", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Description") + .HasColumnType("ntext"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("GrantDate") + .HasColumnType("datetime2"); + + b1.Property("GrantDateFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutReward"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutSalaryAid", "CustomizeCheckoutSalaryAids", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("CalculationDateTime") + .HasColumnType("datetime2"); + + b1.Property("CalculationDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("SalaryAidDateTime") + .HasColumnType("datetime2"); + + b1.Property("SalaryAidDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutSalaryAid"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.Navigation("CheckoutFines"); + + b.Navigation("CustomizeCheckoutLoanInstallments"); + + b.Navigation("CustomizeCheckoutRewards"); + + b.Navigation("CustomizeCheckoutSalaryAids"); + + b.Navigation("CustomizeRotatingShifts"); + + b.Navigation("Employee"); + + b.Navigation("IrregularShift"); + + b.Navigation("RegularShifts"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany() + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTemps_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.HasKey("CustomizeCheckoutTempid"); + + b1.ToTable("CustomizeCheckoutTemps"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutRegularShift", "RegularShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeCheckoutTempid"); + + b1.ToTable("CustomizeCheckoutTemps_RegularShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempFine", "CheckoutFines", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("FineDateFa") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b1.Property("FineDateGr") + .HasColumnType("datetime2"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempFine"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempLoanInstallments", "CustomizeCheckoutLoanInstallments", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AmountForMonth") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("LoanAmount") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("LoanRemaining") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b1.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempLoanInstallments"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempReward", "CustomizeCheckoutRewards", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Description") + .HasColumnType("ntext"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("GrantDate") + .HasColumnType("datetime2"); + + b1.Property("GrantDateFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempReward"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempSalaryAid", "CustomizeCheckoutSalaryAids", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("CalculationDateTime") + .HasColumnType("datetime2"); + + b1.Property("CalculationDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("EntityId") + .HasColumnType("bigint"); + + b1.Property("SalaryAidDateTime") + .HasColumnType("datetime2"); + + b1.Property("SalaryAidDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempSalaryAid"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.Navigation("CheckoutFines"); + + b.Navigation("CustomizeCheckoutLoanInstallments"); + + b.Navigation("CustomizeCheckoutRewards"); + + b.Navigation("CustomizeCheckoutSalaryAids"); + + b.Navigation("CustomizeRotatingShifts"); + + b.Navigation("Employee"); + + b.Navigation("IrregularShift"); + + b.Navigation("RegularShifts"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings", b => + { + b.HasOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", "CustomizeWorkshopGroupSettings") + .WithMany("CustomizeWorkshopEmployeeSettingsCollection") + .HasForeignKey("CustomizeWorkshopGroupSettingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettingsShift", "CustomizeWorkshopEmployeeSettingsShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("PreviousShiftThreshold") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeWorkshopEmployeeSettingsId"); + + b1.ToTable("CustomizeWorkshopEmployeeSettingsShifts", (string)null); + + b1.WithOwner("CustomizeWorkshopEmployeeSettings") + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + + b1.Navigation("CustomizeWorkshopEmployeeSettings"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("BaseYearsPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_BaseYearsPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BaseYearsPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("BonusesPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_BonusesPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BonusesPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BreakTime", "BreakTime", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("BreakTimeType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("BreakTimeValue") + .HasColumnType("time"); + + b1.Property("HasBreakTimeValue") + .HasColumnType("bit"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid", "Id"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("EarlyExitType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("EarlyExit_EarlyExitType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + { + b2.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("EarlyExitTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopEmployeeSettings_EarlyExitTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + }); + + b1.Navigation("EarlyExitTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("FamilyAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FamilyAllowance_FamilyAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FamilyAllowance_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("FineAbsenceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDeduction_FineAbsenceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FineAbsenceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + { + b2.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDayOfWeekCollection_DayOfWeek"); + + b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopEmployeeSettings_FineAbsenceDayOfWeekCollection"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + }); + + b1.Navigation("FineAbsenceDayOfWeekCollection"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("FridayPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FridayPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("InsuranceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("InsuranceDeduction_InsuranceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("InsuranceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("LateToWorkType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LateToWork_LateToWorkType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LateToWork_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + { + b2.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("LateToWorkTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("LateToWorkTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopEmployeeSettings_LateToWorkTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + }); + + b1.Navigation("LateToWorkTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("LeavePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LeavePay_LeavePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LeavePay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("MarriedAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("MarriedAllowance_MarriedAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("MarriedAllowance_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("NightWorkingType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("NightWorkPay_NightWorkingType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("NightWorkPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("OverTimePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("OverTimePay_OverTimePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("OverTimePay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("ShiftPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftPayType"); + + b1.Property("ShiftType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("ShiftPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.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.InstitutionContractContactInfoAgg.InstitutionContractContactInfo", b => + { + b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContract", "InstitutionContracts") + .WithMany("ContactInfoList") + .HasForeignKey("InstitutionContractId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InstitutionContracts"); + }); + + modelBuilder.Entity("Company.Domain.InsurancWorkshopInfoAgg.InsuranceWorkshopInfo", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithOne("InsuranceWorkshopInfo") + .HasForeignKey("Company.Domain.InsurancWorkshopInfoAgg.InsuranceWorkshopInfo", "WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceAgg.Insurance", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("Insurances") + .HasForeignKey("WorkShopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceEmployeeInfoAgg.InsuranceEmployeeInfo", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithOne("InsuranceEmployeeInfo") + .HasForeignKey("Company.Domain.InsuranceEmployeeInfoAgg.InsuranceEmployeeInfo", "EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobAndJobsAgg.InsuranceJobAndJobs", b => + { + b.HasOne("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", "InsuranceJobItem") + .WithMany("InsuranceJobAndJobs") + .HasForeignKey("InsuranceJobItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.JobAgg.Job", "Jobs") + .WithMany("InsuranceJobAndJobs") + .HasForeignKey("JobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InsuranceJobItem"); + + b.Navigation("Jobs"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", b => + { + b.HasOne("Company.Domain.InsurancJobAgg.InsuranceJob", "InsuranceJob") + .WithMany("InsuranceJobItemList") + .HasForeignKey("InsuranceJobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InsuranceJob"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceWorkshopAgg.InsuranceListWorkshop", b => + { + b.HasOne("Company.Domain.InsuranceListAgg.InsuranceList", "InsuranceList") + .WithMany("InsuranceListWorkshops") + .HasForeignKey("InsurancListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("InsuranceListWorkshops") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InsuranceList"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkAgg.LeftWork", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("LeftWorks") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("LeftWorks") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkInsuranceAgg.LeftWorkInsurance", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("LeftWorkInsurances") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("LeftWorkInsurances") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.LoanAgg.Entities.Loan", b => + { + b.OwnsMany("Company.Domain.LoanAgg.Entities.LoanInstallment", "LoanInstallments", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AmountForMonth") + .HasColumnType("float"); + + b1.Property("InstallmentDate") + .HasColumnType("datetime2"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("LoanId") + .HasColumnType("bigint"); + + b1.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b1.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b1.HasKey("Id"); + + b1.HasIndex("LoanId"); + + b1.ToTable("LoanInstallment"); + + b1.WithOwner() + .HasForeignKey("LoanId"); + }); + + b.Navigation("LoanInstallments"); + }); + + modelBuilder.Entity("Company.Domain.MasterPenaltyTitle.MasterPenaltyTitle", b => + { + b.HasOne("Company.Domain.MasterPetition.MasterPetition", "MasterPetition") + .WithMany("MasterPenaltyTitlesList") + .HasForeignKey("MasterPetition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MasterPetition"); + }); + + modelBuilder.Entity("Company.Domain.MasterPetition.MasterPetition", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("MasterPetitionsList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("MasterPetitionsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.MasterWorkHistory.MasterWorkHistory", b => + { + b.HasOne("Company.Domain.MasterPetition.MasterPetition", "MasterPetition") + .WithMany("MasterWorkHistoriesList") + .HasForeignKey("MasterPetition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MasterPetition"); + }); + + modelBuilder.Entity("Company.Domain.ModuleTextManagerAgg.EntityModuleTextManager", b => + { + b.HasOne("Company.Domain.ModuleAgg.EntityModule", "Module") + .WithMany("EntityModuleTextManagers") + .HasForeignKey("ModuleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.TextManagerAgg.EntityTextManager", "TextManager") + .WithMany("EntityModuleTextManagers") + .HasForeignKey("TextManagerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Module"); + + b.Navigation("TextManager"); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeItemAgg.PaymentToEmployeeItem", b => + { + b.HasOne("Company.Domain.PaymentToEmployeeAgg.PaymentToEmployee", "PaymentToEmployee") + .WithMany("PaymentToEmployeeItemList") + .HasForeignKey("PaymentToEmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentToEmployee"); + }); + + modelBuilder.Entity("Company.Domain.PenaltyTitle.PenaltyTitle", b => + { + b.HasOne("Company.Domain.Petition.Petition", "Petition") + .WithMany("PenaltyTitlesList") + .HasForeignKey("Petition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Petition"); + }); + + modelBuilder.Entity("Company.Domain.PersonnelCodeAgg.PersonnelCodeDomain", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("PersonnelCodeList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("PersonnelCodeList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.Petition.Petition", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("PetitionsList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("PetitionsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.ProceedingSession.ProceedingSession", b => + { + b.HasOne("Company.Domain.Board.Board", "Board") + .WithMany("ProceedingSessionsList") + .HasForeignKey("Board_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Board"); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeStatusAgg.RollCallEmployeeStatus", b => + { + b.HasOne("Company.Domain.RollCallEmployeeAgg.RollCallEmployee", "RollCallEmployee") + .WithMany("EmployeesStatus") + .HasForeignKey("RollCallEmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("RollCallEmployee"); + }); + + modelBuilder.Entity("Company.Domain.RollCallServiceAgg.RollCallService", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("RollCallServicesList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.SubtitleAgg.EntitySubtitle", b => + { + b.HasOne("Company.Domain.SubtitleAgg.EntitySubtitle", null) + .WithMany("Subtitles") + .HasForeignKey("EntitySubtitleid"); + + b.HasOne("Company.Domain.OriginalTitleAgg.EntityOriginalTitle", "EntityOriginalTitle") + .WithMany("Subtitles") + .HasForeignKey("OriginalTitle_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EntityOriginalTitle"); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("TaxLeftWorkCategoryList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkItemAgg.TaxLeftWorkItem", b => + { + b.HasOne("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", "TaxLeftWorkCategory") + .WithMany("TaxLeftWorkItemList") + .HasForeignKey("TaxLeftWorkCategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("TaxLeftWorkCategory"); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.WorkshopServicesTemp", b => + { + b.HasOne("Company.Domain.TemporaryClientRegistrationAgg.WorkshopTemp", "WorkshopTemp") + .WithMany("WorkshopServicesTemps") + .HasForeignKey("WorkshopTempId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkshopTemp"); + }); + + modelBuilder.Entity("Company.Domain.WorkHistory.WorkHistory", b => + { + b.HasOne("Company.Domain.Petition.Petition", "Petition") + .WithMany("WorkHistoriesList") + .HasForeignKey("Petition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Petition"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursAgg.WorkingHours", b => + { + b.HasOne("Company.Domain.ContractAgg.Contract", "Contracts") + .WithMany("WorkingHoursList") + .HasForeignKey("ContractId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Contracts"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursItemsAgg.WorkingHoursItems", b => + { + b.HasOne("Company.Domain.WorkingHoursAgg.WorkingHours", "WorkingHourses") + .WithMany("WorkingHoursItemsList") + .HasForeignKey("WorkingHoursId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkingHourses"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempItemAgg.WorkingHoursTempItem", b => + { + b.HasOne("Company.Domain.WorkingHoursTempAgg.WorkingHoursTemp", "WorkingHoursTemp") + .WithMany("WorkingHoursTempItemList") + .HasForeignKey("WorkingHoursTempId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkingHoursTemp"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAccountAgg.WorkshopAccount", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany() + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopEmployerAgg.WorkshopEmployer", b => + { + b.HasOne("Company.Domain.empolyerAgg.Employer", "Employer") + .WithMany("WorkshopEmployers") + .HasForeignKey("EmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("WorkshopEmployers") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employer"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanEmployeeAgg.WorkshopPlanEmployee", b => + { + b.HasOne("Company.Domain.WorkshopPlanAgg.WorkshopPlan", "WorkshopPlan") + .WithMany("WorkshopPlanEmployees") + .HasForeignKey("WorkshopPlanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkshopPlan"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopSubAccountAgg.WorkshopSubAccount", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("WorkshopSubAccounts") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryItemsAgg.YearlySalaryItem", b => + { + b.HasOne("Company.Domain.YearlySalaryAgg.YearlySalary", "YearlySalary") + .WithMany("YearlySalaryItemsList") + .HasForeignKey("YearlySalaryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("YearlySalary"); + }); + + modelBuilder.Entity("Company.Domain.empolyerAgg.Employer", b => + { + b.HasOne("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", "ContractingParty") + .WithMany("Employers") + .HasForeignKey("ContractingPartyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ContractingParty"); + }); + + modelBuilder.Entity("EmployerWorkshop", b => + { + b.HasOne("Company.Domain.empolyerAgg.Employer", null) + .WithMany() + .HasForeignKey("EmployersListid") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", null) + .WithMany() + .HasForeignKey("WorkshopsListid") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Company.Domain.Board.Board", b => + { + b.Navigation("ProceedingSessionsList"); + }); + + modelBuilder.Entity("Company.Domain.BoardType.BoardType", b => + { + b.Navigation("BoardsList"); + + b.Navigation("EvidencesList"); + + b.Navigation("MasterPetitionsList"); + + b.Navigation("PetitionsList"); + }); + + modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b => + { + b.Navigation("Employers"); + }); + + modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b => + { + b.Navigation("WorkingHoursList"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b => + { + b.Navigation("CrossJobItemsList"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobGuildAgg.CrossJobGuild", b => + { + b.Navigation("CrossJobList"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", b => + { + b.Navigation("CustomizeWorkshopEmployeeSettingsCollection"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", b => + { + b.Navigation("CustomizeWorkshopGroupSettingsCollection"); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryAgg.DateSalary", b => + { + b.Navigation("DateSalaryItemList"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAgg.Employee", b => + { + b.Navigation("ClientEmployeeWorkshopList"); + + b.Navigation("Contracts"); + + b.Navigation("CustomizeCheckouts"); + + b.Navigation("EmployeeBankInformationList"); + + b.Navigation("EmployeeChildrenList"); + + b.Navigation("EmployeeDocuments"); + + b.Navigation("EmployeeDocumentsAdminSelection"); + + b.Navigation("EmployeeInsuranceRecords"); + + b.Navigation("InsuranceEmployeeInfo"); + + b.Navigation("LeftWorkInsurances"); + + b.Navigation("LeftWorks"); + + b.Navigation("PersonnelCodeList"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.Navigation("SelectedEmployeeDocumentItems"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.Navigation("EmployeeDocumentItemCollection"); + }); + + modelBuilder.Entity("Company.Domain.Evidence.Evidence", b => + { + b.Navigation("EvidenceDetailsList"); + }); + + modelBuilder.Entity("Company.Domain.File1.File1", b => + { + b.Navigation("BoardsList"); + + b.Navigation("EvidencesList"); + + b.Navigation("FileAlertsList"); + + b.Navigation("FileAndFileEmployers"); + + b.Navigation("MasterPetitionsList"); + + b.Navigation("PetitionsList"); + }); + + modelBuilder.Entity("Company.Domain.FileEmployerAgg.FileEmployer", b => + { + b.Navigation("FileAndFileEmployers"); + }); + + modelBuilder.Entity("Company.Domain.FileState.FileState", b => + { + b.Navigation("FileAlertsList"); + }); + + modelBuilder.Entity("Company.Domain.FileTiming.FileTiming", b => + { + b.Navigation("FileStates"); + }); + + modelBuilder.Entity("Company.Domain.FinancialStatmentAgg.FinancialStatment", b => + { + b.Navigation("FinancialTransactionList"); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanAgg.GroupPlan", b => + { + b.Navigation("GroupPlanJobItems"); + }); + + modelBuilder.Entity("Company.Domain.HolidayAgg.Holiday", b => + { + b.Navigation("HolidayItems"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContract", b => + { + b.Navigation("ContactInfoList"); + }); + + modelBuilder.Entity("Company.Domain.InsurancJobAgg.InsuranceJob", b => + { + b.Navigation("InsuranceJobItemList"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", b => + { + b.Navigation("InsuranceJobAndJobs"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceListAgg.InsuranceList", b => + { + b.Navigation("InsuranceListWorkshops"); + }); + + modelBuilder.Entity("Company.Domain.JobAgg.Job", b => + { + b.Navigation("ContractsList"); + + b.Navigation("CrossJobItemsList"); + + b.Navigation("InsuranceJobAndJobs"); + }); + + modelBuilder.Entity("Company.Domain.MandatoryHoursAgg.MandatoryHours", b => + { + b.Navigation("Contracts"); + }); + + modelBuilder.Entity("Company.Domain.MasterPetition.MasterPetition", b => + { + b.Navigation("MasterPenaltyTitlesList"); + + b.Navigation("MasterWorkHistoriesList"); + }); + + modelBuilder.Entity("Company.Domain.ModuleAgg.EntityModule", b => + { + b.Navigation("EntityModuleTextManagers"); + }); + + modelBuilder.Entity("Company.Domain.OriginalTitleAgg.EntityOriginalTitle", b => + { + b.Navigation("Subtitles"); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeAgg.PaymentToEmployee", b => + { + b.Navigation("PaymentToEmployeeItemList"); + }); + + modelBuilder.Entity("Company.Domain.PercentageAgg.Percentage", b => + { + b.Navigation("DateSalaryItemList"); + }); + + modelBuilder.Entity("Company.Domain.Petition.Petition", b => + { + b.Navigation("PenaltyTitlesList"); + + b.Navigation("WorkHistoriesList"); + }); + + modelBuilder.Entity("Company.Domain.RepresentativeAgg.Representative", b => + { + b.Navigation("ContractingParties"); + + b.Navigation("FileEmployeeList"); + + b.Navigation("FileEmployerList"); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeAgg.RollCallEmployee", b => + { + b.Navigation("EmployeesStatus"); + }); + + modelBuilder.Entity("Company.Domain.SubtitleAgg.EntitySubtitle", b => + { + b.Navigation("Chapters"); + + b.Navigation("Subtitles"); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", b => + { + b.Navigation("TaxLeftWorkItemList"); + }); + + modelBuilder.Entity("Company.Domain.TemporaryClientRegistrationAgg.WorkshopTemp", b => + { + b.Navigation("WorkshopServicesTemps"); + }); + + modelBuilder.Entity("Company.Domain.TextManagerAgg.EntityTextManager", b => + { + b.Navigation("EntityModuleTextManagers"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursAgg.WorkingHours", b => + { + b.Navigation("WorkingHoursItemsList"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempAgg.WorkingHoursTemp", b => + { + b.Navigation("WorkingHoursTempItemList"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAgg.Workshop", b => + { + b.Navigation("Checkouts"); + + b.Navigation("ClientEmployeeWorkshopList"); + + b.Navigation("Contracts2"); + + b.Navigation("CustomizeCheckouts"); + + b.Navigation("CustomizeWorkshopSettings"); + + b.Navigation("EmployeeInsuranceRecords"); + + b.Navigation("InsuranceListWorkshops"); + + b.Navigation("InsuranceWorkshopInfo"); + + b.Navigation("Insurances"); + + b.Navigation("LeftWorkInsurances"); + + b.Navigation("LeftWorks"); + + b.Navigation("PersonnelCodeList"); + + b.Navigation("RollCallServicesList"); + + b.Navigation("TaxLeftWorkCategoryList"); + + b.Navigation("WorkshopEmployers"); + + b.Navigation("WorkshopSubAccounts"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanAgg.WorkshopPlan", b => + { + b.Navigation("GroupPlans"); + + b.Navigation("WorkshopPlanEmployees"); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryAgg.YearlySalary", b => + { + b.Navigation("Contracts"); + + b.Navigation("YearlySalaryItemsList"); + }); + + modelBuilder.Entity("Company.Domain.empolyerAgg.Employer", b => + { + b.Navigation("Contracts"); + + b.Navigation("WorkshopEmployers"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/CompanyManagment.EFCore/Migrations/20250602161025_add offDays to cws.cs b/CompanyManagment.EFCore/Migrations/20250602161025_add offDays to cws.cs new file mode 100644 index 00000000..8e499797 --- /dev/null +++ b/CompanyManagment.EFCore/Migrations/20250602161025_add offDays to cws.cs @@ -0,0 +1,180 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace CompanyManagment.EFCore.Migrations +{ + /// + public partial class addoffDaystocws : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "EndDate", + table: "InsuranceJobItems", + type: "datetime2", + nullable: true); + + migrationBuilder.AddColumn( + name: "StartDate", + table: "InsuranceJobItems", + type: "datetime2", + nullable: true); + + migrationBuilder.CreateTable( + name: "CheckoutLoanInstallment", + columns: table => new + { + Checkoutid = table.Column(type: "bigint", nullable: false), + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + AmountForMonth = table.Column(type: "nvarchar(25)", maxLength: 25, nullable: true), + Month = table.Column(type: "nvarchar(2)", maxLength: 2, nullable: true), + Year = table.Column(type: "nvarchar(4)", maxLength: 4, nullable: true), + LoanRemaining = table.Column(type: "nvarchar(25)", maxLength: 25, nullable: true), + IsActive = table.Column(type: "nvarchar(5)", maxLength: 5, nullable: false), + LoanAmount = table.Column(type: "nvarchar(30)", maxLength: 30, nullable: true), + EntityId = table.Column(type: "bigint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CheckoutLoanInstallment", x => new { x.Checkoutid, x.Id }); + table.ForeignKey( + name: "FK_CheckoutLoanInstallment_Checkouts_Checkoutid", + column: x => x.Checkoutid, + principalTable: "Checkouts", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CheckoutSalaryAid", + columns: table => new + { + Checkoutid = table.Column(type: "bigint", nullable: false), + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Amount = table.Column(type: "nvarchar(25)", maxLength: 25, nullable: true), + SalaryAidDateTime = table.Column(type: "datetime2", nullable: false), + SalaryAidDateTimeFa = table.Column(type: "nvarchar(15)", maxLength: 15, nullable: true), + CalculationDateTime = table.Column(type: "datetime2", nullable: false), + CalculationDateTimeFa = table.Column(type: "nvarchar(15)", maxLength: 15, nullable: true), + EntityId = table.Column(type: "bigint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CheckoutSalaryAid", x => new { x.Checkoutid, x.Id }); + table.ForeignKey( + name: "FK_CheckoutSalaryAid_Checkouts_Checkoutid", + column: x => x.Checkoutid, + principalTable: "Checkouts", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CustomizeWorkshopEmployeeSettings_WeeklyOffDays", + columns: table => new + { + Id = table.Column(type: "bigint", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + DayOfWeek = table.Column(type: "nvarchar(15)", maxLength: 15, nullable: false), + ParentId = table.Column(type: "bigint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomizeWorkshopEmployeeSettings_WeeklyOffDays", x => x.Id); + table.ForeignKey( + name: "FK_CustomizeWorkshopEmployeeSettings_WeeklyOffDays_CustomizeWorkshopEmployeeSettings_ParentId", + column: x => x.ParentId, + principalTable: "CustomizeWorkshopEmployeeSettings", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CustomizeWorkshopGroupSettings_WeeklyOffDays", + columns: table => new + { + Id = table.Column(type: "bigint", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + DayOfWeek = table.Column(type: "nvarchar(15)", maxLength: 15, nullable: false), + ParentId = table.Column(type: "bigint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomizeWorkshopGroupSettings_WeeklyOffDays", x => x.Id); + table.ForeignKey( + name: "FK_CustomizeWorkshopGroupSettings_WeeklyOffDays_CustomizeWorkshopGroupSettings_ParentId", + column: x => x.ParentId, + principalTable: "CustomizeWorkshopGroupSettings", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CustomizeWorkshopSettings_WeeklyOffDays", + columns: table => new + { + Id = table.Column(type: "bigint", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + DayOfWeek = table.Column(type: "nvarchar(15)", maxLength: 15, nullable: false), + ParentId = table.Column(type: "bigint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomizeWorkshopSettings_WeeklyOffDays", x => x.Id); + table.ForeignKey( + name: "FK_CustomizeWorkshopSettings_WeeklyOffDays_CustomizeWorkshopSettings_ParentId", + column: x => x.ParentId, + principalTable: "CustomizeWorkshopSettings", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_CustomizeWorkshopEmployeeSettings_WeeklyOffDays_ParentId", + table: "CustomizeWorkshopEmployeeSettings_WeeklyOffDays", + column: "ParentId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomizeWorkshopGroupSettings_WeeklyOffDays_ParentId", + table: "CustomizeWorkshopGroupSettings_WeeklyOffDays", + column: "ParentId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomizeWorkshopSettings_WeeklyOffDays_ParentId", + table: "CustomizeWorkshopSettings_WeeklyOffDays", + column: "ParentId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "CheckoutLoanInstallment"); + + migrationBuilder.DropTable( + name: "CheckoutSalaryAid"); + + migrationBuilder.DropTable( + name: "CustomizeWorkshopEmployeeSettings_WeeklyOffDays"); + + migrationBuilder.DropTable( + name: "CustomizeWorkshopGroupSettings_WeeklyOffDays"); + + migrationBuilder.DropTable( + name: "CustomizeWorkshopSettings_WeeklyOffDays"); + + migrationBuilder.DropColumn( + name: "EndDate", + table: "InsuranceJobItems"); + + migrationBuilder.DropColumn( + name: "StartDate", + table: "InsuranceJobItems"); + } + } +} diff --git a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs index d5a37514..a8956127 100644 --- a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs +++ b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs @@ -7433,6 +7433,32 @@ namespace CompanyManagment.EFCore.Migrations .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"); @@ -7468,6 +7494,8 @@ namespace CompanyManagment.EFCore.Migrations b.Navigation("OverTimePay"); b.Navigation("ShiftPay"); + + b.Navigation("WeeklyOffDays"); }); modelBuilder.Entity("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", b => @@ -7991,6 +8019,32 @@ namespace CompanyManagment.EFCore.Migrations .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"); @@ -8026,6 +8080,8 @@ namespace CompanyManagment.EFCore.Migrations b.Navigation("OverTimePay"); b.Navigation("ShiftPay"); + + b.Navigation("WeeklyOffDays"); }); modelBuilder.Entity("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", b => @@ -8476,6 +8532,32 @@ namespace CompanyManagment.EFCore.Migrations .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"); @@ -8504,6 +8586,8 @@ namespace CompanyManagment.EFCore.Migrations b.Navigation("ShiftPay"); + b.Navigation("WeeklyOffDays"); + b.Navigation("Workshop"); }); From aee7e5ce82f9d2d0084bbc747de8d9ac001d8d71 Mon Sep 17 00:00:00 2001 From: Mahan Ch Date: Mon, 2 Jun 2025 19:47:45 +0330 Subject: [PATCH 02/25] add migration --- .../20250602161025_add offDays to cws.cs | 76 +------------------ 1 file changed, 1 insertion(+), 75 deletions(-) diff --git a/CompanyManagment.EFCore/Migrations/20250602161025_add offDays to cws.cs b/CompanyManagment.EFCore/Migrations/20250602161025_add offDays to cws.cs index 8e499797..2ff8a540 100644 --- a/CompanyManagment.EFCore/Migrations/20250602161025_add offDays to cws.cs +++ b/CompanyManagment.EFCore/Migrations/20250602161025_add offDays to cws.cs @@ -11,68 +11,6 @@ namespace CompanyManagment.EFCore.Migrations /// protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "EndDate", - table: "InsuranceJobItems", - type: "datetime2", - nullable: true); - - migrationBuilder.AddColumn( - name: "StartDate", - table: "InsuranceJobItems", - type: "datetime2", - nullable: true); - - migrationBuilder.CreateTable( - name: "CheckoutLoanInstallment", - columns: table => new - { - Checkoutid = table.Column(type: "bigint", nullable: false), - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - AmountForMonth = table.Column(type: "nvarchar(25)", maxLength: 25, nullable: true), - Month = table.Column(type: "nvarchar(2)", maxLength: 2, nullable: true), - Year = table.Column(type: "nvarchar(4)", maxLength: 4, nullable: true), - LoanRemaining = table.Column(type: "nvarchar(25)", maxLength: 25, nullable: true), - IsActive = table.Column(type: "nvarchar(5)", maxLength: 5, nullable: false), - LoanAmount = table.Column(type: "nvarchar(30)", maxLength: 30, nullable: true), - EntityId = table.Column(type: "bigint", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CheckoutLoanInstallment", x => new { x.Checkoutid, x.Id }); - table.ForeignKey( - name: "FK_CheckoutLoanInstallment_Checkouts_Checkoutid", - column: x => x.Checkoutid, - principalTable: "Checkouts", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CheckoutSalaryAid", - columns: table => new - { - Checkoutid = table.Column(type: "bigint", nullable: false), - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Amount = table.Column(type: "nvarchar(25)", maxLength: 25, nullable: true), - SalaryAidDateTime = table.Column(type: "datetime2", nullable: false), - SalaryAidDateTimeFa = table.Column(type: "nvarchar(15)", maxLength: 15, nullable: true), - CalculationDateTime = table.Column(type: "datetime2", nullable: false), - CalculationDateTimeFa = table.Column(type: "nvarchar(15)", maxLength: 15, nullable: true), - EntityId = table.Column(type: "bigint", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CheckoutSalaryAid", x => new { x.Checkoutid, x.Id }); - table.ForeignKey( - name: "FK_CheckoutSalaryAid_Checkouts_Checkoutid", - column: x => x.Checkoutid, - principalTable: "Checkouts", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); migrationBuilder.CreateTable( name: "CustomizeWorkshopEmployeeSettings_WeeklyOffDays", @@ -153,12 +91,7 @@ namespace CompanyManagment.EFCore.Migrations /// protected override void Down(MigrationBuilder migrationBuilder) { - migrationBuilder.DropTable( - name: "CheckoutLoanInstallment"); - - migrationBuilder.DropTable( - name: "CheckoutSalaryAid"); - + migrationBuilder.DropTable( name: "CustomizeWorkshopEmployeeSettings_WeeklyOffDays"); @@ -168,13 +101,6 @@ namespace CompanyManagment.EFCore.Migrations migrationBuilder.DropTable( name: "CustomizeWorkshopSettings_WeeklyOffDays"); - migrationBuilder.DropColumn( - name: "EndDate", - table: "InsuranceJobItems"); - - migrationBuilder.DropColumn( - name: "StartDate", - table: "InsuranceJobItems"); } } } From 9271cb5c66009f7dfb6e9d50de721f1f308e40f8 Mon Sep 17 00:00:00 2001 From: Mahan Ch Date: Mon, 2 Jun 2025 20:14:49 +0330 Subject: [PATCH 03/25] test --- .../Mapping/CustomizeWorkshopGroupSettingsMapping.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/CompanyManagment.EFCore/Mapping/CustomizeWorkshopGroupSettingsMapping.cs b/CompanyManagment.EFCore/Mapping/CustomizeWorkshopGroupSettingsMapping.cs index 2bbc5ca6..54405e8a 100644 --- a/CompanyManagment.EFCore/Mapping/CustomizeWorkshopGroupSettingsMapping.cs +++ b/CompanyManagment.EFCore/Mapping/CustomizeWorkshopGroupSettingsMapping.cs @@ -227,6 +227,7 @@ public class CustomizeWorkshopGroupSettingsMapping : IEntityTypeConfiguration x.WeeklyOffDays, offDay => { offDay.HasKey(x => x.Id); From fb1db062f34b65245ac8fc6fb55518629fb5ce3f Mon Sep 17 00:00:00 2001 From: Mahan Ch Date: Sun, 15 Jun 2025 19:44:09 +0330 Subject: [PATCH 04/25] complete method for weeklyDayOfweek... --- .../Base/BaseCustomizeEntity.cs | 14 +- .../CustomizeWorkshopEmployeeSettings.cs | 19 +- .../CustomizeWorkshopGroupSettings.cs | 35 +- .../Entities/CustomizeWorkshopSettings.cs | 16 +- .../CreateCustomizeWorkshopGroupSettings.cs | 4 +- .../CreateCustomizeWorkshopSettings.cs | 8 +- ...tomizeWorkshopEmployeeSettingsViewModel.cs | 6 +- .../EditCustomizeEmployeeSettings.cs | 16 +- .../EditCustomizeWorkshopGroupSettings.cs | 14 +- .../ICustomizeWorkshopSettingsApplication.cs | 10 +- .../CustomizeWorkshopSettingsApplication.cs | 3426 +++++++++-------- ...omizeWorkshopEmployeeSettingsRepository.cs | 1 - ...ustomizeWorkshopGroupSettingsRepository.cs | 6 +- .../CustomizeWorkshopSettingsRepository.cs | 8 +- .../Pages/Company/RollCall/Options.cshtml.cs | 4 +- .../Salary.cshtml | 4 +- .../_ModalGroupSettingPartials/Salary.cshtml | 4 +- .../_ModalPartials/FridayAndHoliday.cshtml | 4 +- .../Pages/Company/RollCall/Grouping.cshtml.cs | 5 +- .../Pages/Company/RollCall/Index.cshtml.cs | 4 +- .../Company/RollCall/ModalCreateGroup.cshtml | 4 +- .../ModalEditEmployeeFromGroup.cshtml | 4 +- .../Company/RollCall/ModalEditGroup.cshtml | 4 +- .../RollCall/ModalSettingWorkTime.cshtml | 4 +- .../RollCall/WorkshopSetting/Index.cshtml.cs | 4 +- .../ModalCreateSettingWorkshop.cshtml | 4 +- .../_Partials/ModalSettingWorkTime.cshtml | 4 +- .../FridayAndHoliday.cshtml | 4 +- .../FridayAndHoliday.cshtml | 4 +- .../_ModalPartials/FridayAndHoliday.cshtml | 4 +- ServiceHost/Test/Tester.cs | 33 +- ServiceHost/appsettings.Development.json | 4 +- 32 files changed, 1875 insertions(+), 1810 deletions(-) diff --git a/0_Framework/Domain/CustomizeCheckoutShared/Base/BaseCustomizeEntity.cs b/0_Framework/Domain/CustomizeCheckoutShared/Base/BaseCustomizeEntity.cs index b315e609..a8522d14 100644 --- a/0_Framework/Domain/CustomizeCheckoutShared/Base/BaseCustomizeEntity.cs +++ b/0_Framework/Domain/CustomizeCheckoutShared/Base/BaseCustomizeEntity.cs @@ -14,8 +14,7 @@ public class BaseCustomizeEntity : EntityBase } public BaseCustomizeEntity(FridayPay fridayPay, OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay, - FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, - FridayWork fridayWork, HolidayWork holidayWork, BreakTime breakTime,int leavePermittedDays,List weeklyOffDays) + FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, HolidayWork holidayWork, BreakTime breakTime,int leavePermittedDays,List weeklyOffDays) { FridayPay = fridayPay; @@ -31,7 +30,6 @@ public class BaseCustomizeEntity : EntityBase FineAbsenceDeduction = fineAbsenceDeduction; LateToWork = lateToWork; EarlyExit = earlyExit; - FridayWork = fridayWork; HolidayWork = holidayWork; BreakTime = breakTime; LeavePermittedDays = leavePermittedDays; @@ -122,6 +120,16 @@ public class BaseCustomizeEntity : EntityBase public BreakTime BreakTime { get; protected set; } public List WeeklyOffDays { get; set; } + + public void FridayWorkToWeeklyDayOfWeek() + { + if (FridayWork == FridayWork.Default && !WeeklyOffDays.Any(x => x.DayOfWeek == DayOfWeek.Friday)) + { + WeeklyOffDays.Add(new WeeklyOffDay(DayOfWeek.Friday)); + } + + + } } public class WeeklyOffDay diff --git a/Company.Domain/CustomizeWorkshopEmployeeSettingsAgg/Entities/CustomizeWorkshopEmployeeSettings.cs b/Company.Domain/CustomizeWorkshopEmployeeSettingsAgg/Entities/CustomizeWorkshopEmployeeSettings.cs index f652ccd3..ecf628a0 100644 --- a/Company.Domain/CustomizeWorkshopEmployeeSettingsAgg/Entities/CustomizeWorkshopEmployeeSettings.cs +++ b/Company.Domain/CustomizeWorkshopEmployeeSettingsAgg/Entities/CustomizeWorkshopEmployeeSettings.cs @@ -27,13 +27,13 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, long employeeId, long workshopId, double salary, long customizeWorkshopGroupSettingId, ICollection customizeWorkshopEmployeeSettingsShifts, - FridayWork fridayWork, - HolidayWork holidayWork, IrregularShift irregularShift, WorkshopShiftStatus workshopShiftStatus, BreakTime breakTime, int leavePermittedDays, ICollection rotatingShifts + HolidayWork holidayWork, IrregularShift irregularShift, WorkshopShiftStatus workshopShiftStatus, BreakTime breakTime, + int leavePermittedDays, ICollection rotatingShifts , List weeklyOffDays) : base(fridayPay, overTimePay, baseYearsPay, bonusesPay, nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork, - earlyExit, fridayWork, holidayWork, breakTime, leavePermittedDays,weeklyOffDays) + earlyExit, holidayWork, breakTime, leavePermittedDays,weeklyOffDays) { CustomizeWorkshopGroupSettingId = customizeWorkshopGroupSettingId; IsSettingChanged = false; @@ -83,7 +83,6 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity /// جریمه غیبت /// تاخیر در ورود /// تعجیل درخروج - /// آیا در روز های جمعه موظف به کار است /// آیا در تعطیلات رسمی موظف به کار است /// نوع شیفت کاری /// آیا شیفت منظم است یا نا منظم @@ -92,7 +91,7 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay, FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, - FridayWork fridayWork, HolidayWork holidayWork, IrregularShift irregularShift, bool isSettingChange, int leavePermittedDays) + HolidayWork holidayWork, IrregularShift irregularShift, bool isSettingChange, int leavePermittedDays) { SetValueObjects(fridayPay, overTimePay, baseYearsPay, bonusesPay , nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, @@ -100,7 +99,6 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity Salary = salary; IsSettingChanged = isSettingChange; - FridayWork = fridayWork; HolidayWork = holidayWork; LeavePermittedDays = leavePermittedDays; } @@ -113,8 +111,8 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity public void SimpleEdit( ICollection employeeSettingsShift, IrregularShift irregularShift, - WorkshopShiftStatus workshopShiftStatus, BreakTime breakTime, bool isShiftChange, FridayWork fridayWork, HolidayWork holidayWork, - ICollection rotatingShifts) + WorkshopShiftStatus workshopShiftStatus, BreakTime breakTime, bool isShiftChange,HolidayWork holidayWork, + ICollection rotatingShifts,List weeklyOffDays) { BreakTime = new BreakTime(breakTime.HasBreakTimeValue, breakTime.BreakTimeValue); IsShiftChanged = isShiftChange; @@ -127,9 +125,8 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity : new IrregularShift(irregularShift.StartTime, irregularShift.EndTime, irregularShift.WorkshopIrregularShifts); CustomizeRotatingShifts = workshopShiftStatus == WorkshopShiftStatus.Rotating ? rotatingShifts : []; - - FridayWork = fridayWork; HolidayWork = holidayWork; + WeeklyOffDays = weeklyOffDays; } @@ -270,4 +267,6 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity IsShiftChanged = isShiftChange; } + + } \ No newline at end of file diff --git a/Company.Domain/CustomizeWorkshopGroupSettingsAgg/Entities/CustomizeWorkshopGroupSettings.cs b/Company.Domain/CustomizeWorkshopGroupSettingsAgg/Entities/CustomizeWorkshopGroupSettings.cs index 0a0cb34d..f6fb2e6f 100644 --- a/Company.Domain/CustomizeWorkshopGroupSettingsAgg/Entities/CustomizeWorkshopGroupSettings.cs +++ b/Company.Domain/CustomizeWorkshopGroupSettingsAgg/Entities/CustomizeWorkshopGroupSettings.cs @@ -27,12 +27,12 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity FridayPay fridayPay, OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay, FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction, - FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, FridayWork fridayWork, + FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, HolidayWork holidayWork, BreakTime breakTime, WorkshopShiftStatus workshopShiftStatus, IrregularShift irregularShift, int leavePermittedDays, ICollection rotatingShifts, List weeklyOffDays) : base(fridayPay, overTimePay, baseYearsPay, bonusesPay, nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork, - earlyExit, fridayWork, holidayWork, breakTime, leavePermittedDays,weeklyOffDays) + earlyExit, holidayWork, breakTime, leavePermittedDays,weeklyOffDays) { GroupName = groupName; Salary = salary; @@ -77,7 +77,7 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, - ICollection customizeWorkshopGroupSettingsShifts, FridayWork fridayWork, + ICollection customizeWorkshopGroupSettingsShifts, HolidayWork holidayWork, IrregularShift irregularShift, ICollection rotatingShifts, WorkshopShiftStatus workshopShiftStatus, long customizeWorkshopSettingId, BreakTime breakTime, int leavePermittedDays) { @@ -97,7 +97,6 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity FineAbsenceDeduction = fineAbsenceDeduction; LateToWork = lateToWork; EarlyExit = earlyExit; - FridayWork = fridayWork; HolidayWork = holidayWork; LeavePermittedDays = leavePermittedDays; CustomizeWorkshopGroupSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopGroupSettingsShifts : []; @@ -124,7 +123,7 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay, ShiftPay shiftPay, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction, - LateToWork lateToWork, EarlyExit earlyExit, FridayWork fridayWork, HolidayWork holidayWork, bool isSettingChange, int leavePermittedDays) + LateToWork lateToWork, EarlyExit earlyExit, HolidayWork holidayWork, bool isSettingChange, int leavePermittedDays) { GroupName = groupName; Salary = salary; @@ -141,7 +140,6 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity FineAbsenceDeduction = fineAbsenceDeduction; LateToWork = lateToWork; EarlyExit = earlyExit; - FridayWork = fridayWork; HolidayWork = holidayWork; IsSettingChange = isSettingChange; LeavePermittedDays = leavePermittedDays; @@ -155,7 +153,7 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity { item.EditEmployees(Salary, FridayPay, OverTimePay, BaseYearsPay, BonusesPay , NightWorkPay, MarriedAllowance, ShiftPay, FamilyAllowance, LeavePay, InsuranceDeduction, FineAbsenceDeduction, - LateToWork, EarlyExit, FridayWork, HolidayWork, IrregularShift, false, leavePermittedDays); + LateToWork, EarlyExit, HolidayWork, IrregularShift, false, leavePermittedDays); } } public void EditAndOverwriteOnAllEmployees(string groupName, double salary, @@ -163,14 +161,13 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay, ShiftPay shiftPay, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction, - LateToWork lateToWork, EarlyExit earlyExit, FridayWork fridayWork, HolidayWork holidayWork, bool isSettingChange, int leavePermittedDays) + LateToWork lateToWork, EarlyExit earlyExit, HolidayWork holidayWork, bool isSettingChange, int leavePermittedDays) { SetValueObjects(fridayPay, overTimePay, baseYearsPay, bonusesPay , nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork, earlyExit); GroupName = groupName; Salary = salary; - FridayWork = fridayWork; HolidayWork = holidayWork; IsSettingChange = isSettingChange; LeavePermittedDays = leavePermittedDays; @@ -183,7 +180,7 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity { item.EditEmployees(Salary, FridayPay, OverTimePay, BaseYearsPay, BonusesPay , NightWorkPay, MarriedAllowance, ShiftPay, FamilyAllowance, LeavePay, InsuranceDeduction, FineAbsenceDeduction, - LateToWork, EarlyExit, FridayWork, HolidayWork, IrregularShift, false, leavePermittedDays); + LateToWork, EarlyExit, HolidayWork, IrregularShift, false, leavePermittedDays); } } @@ -196,7 +193,7 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity public void EditSimpleAndOverwriteOnEmployee(string groupName, IEnumerable employeeIds, ICollection customizeWorkshopGroupSettingsShifts, WorkshopShiftStatus workshopShiftStatus, - IrregularShift irregularShift, BreakTime breakTime, bool isShiftChange, FridayWork fridayWork, HolidayWork holidayWork, ICollection rotatingShifts) + IrregularShift irregularShift, BreakTime breakTime, bool isShiftChange, HolidayWork holidayWork, ICollection rotatingShifts, List weeklyOffDays) { GroupName = groupName; CustomizeWorkshopGroupSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopGroupSettingsShifts : []; @@ -210,9 +207,11 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity BreakTime = new BreakTime(breakTime.HasBreakTimeValue, breakTime.BreakTimeValue); IsShiftChange = isShiftChange; - FridayWork = fridayWork; + HolidayWork = holidayWork; + WeeklyOffDays = weeklyOffDays; + //var employeeSettingsShift = customizeWorkshopGroupSettingsShifts // .Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(); if (isShiftChange) @@ -228,15 +227,15 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity .ToList(); item.SimpleEdit(customizeWorkshopGroupSettingsShifts .Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(), - IrregularShift, WorkshopShiftStatus, BreakTime, false, FridayWork, HolidayWork, newRotatingShifts); + IrregularShift, WorkshopShiftStatus, BreakTime, false, HolidayWork, newRotatingShifts,WeeklyOffDays.ToList()); } } public void EditSimpleAndOverwriteOnAllEmployees(string groupName, ICollection customizeWorkshopGroupSettingsShifts, - WorkshopShiftStatus workshopShiftStatus, IrregularShift irregularShift, BreakTime breakTime, bool isShiftChange, - FridayWork fridayWork, HolidayWork holidayWork, ICollection rotatingShifts) + WorkshopShiftStatus workshopShiftStatus, IrregularShift irregularShift, BreakTime breakTime, bool isShiftChange, + HolidayWork holidayWork, ICollection rotatingShifts ,List weeklyOffDays) { GroupName = groupName; CustomizeWorkshopGroupSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopGroupSettingsShifts : []; @@ -252,8 +251,8 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity BreakTime = new BreakTime(breakTime.HasBreakTimeValue, breakTime.BreakTimeValue); IsShiftChange = isShiftChange; HolidayWork = holidayWork; - FridayWork = fridayWork; + WeeklyOffDays = weeklyOffDays; //var employeeSettingsShift = customizeWorkshopGroupSettingsShifts // .Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(); @@ -263,7 +262,7 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity .ToList(); item.SimpleEdit(customizeWorkshopGroupSettingsShifts .Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(), - irregularShift, workshopShiftStatus, breakTime, false, FridayWork, HolidayWork, newRotatingShifts); + irregularShift, workshopShiftStatus, breakTime, false, HolidayWork, newRotatingShifts,WeeklyOffDays.ToList()); } } @@ -305,7 +304,7 @@ public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity var customizeWorkshopEmployeeSettings = new CustomizeWorkshopEmployeeSettings(fridayPay, overTimePay, baseYearsPay, bonusesPay, nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork, - earlyExit, employeeId, workshopId, Salary, id, shifts, FridayWork, HolidayWork, irregularShift, + earlyExit, employeeId, workshopId, Salary, id, shifts, HolidayWork, irregularShift, WorkshopShiftStatus, breakTime, LeavePermittedDays, rotatingShift, weeklyOffDays); CustomizeWorkshopEmployeeSettingsCollection.Add(customizeWorkshopEmployeeSettings); diff --git a/Company.Domain/CustomizeWorkshopSettingsAgg/Entities/CustomizeWorkshopSettings.cs b/Company.Domain/CustomizeWorkshopSettingsAgg/Entities/CustomizeWorkshopSettings.cs index 27da8b37..77c9fec2 100644 --- a/Company.Domain/CustomizeWorkshopSettingsAgg/Entities/CustomizeWorkshopSettings.cs +++ b/Company.Domain/CustomizeWorkshopSettingsAgg/Entities/CustomizeWorkshopSettings.cs @@ -17,7 +17,7 @@ public class CustomizeWorkshopSettings : BaseCustomizeEntity public CustomizeWorkshopSettings(long workshopId, ICollection customizeWorkshopSettingsShifts, int leavePermittedDays, - WorkshopShiftStatus workshopShiftStatus,FridayWork fridayWork,HolidayWork holidayWork, List weeklyOffDays) + WorkshopShiftStatus workshopShiftStatus,HolidayWork holidayWork, List weeklyOffDays) { FridayPay = new FridayPay(FridayPayType.None, 0); OverTimePay = new OverTimePay(OverTimePayType.None, 0); @@ -38,11 +38,10 @@ public class CustomizeWorkshopSettings : BaseCustomizeEntity OverTimeThresholdMinute = 0; Currency = Currency.Rial; MaxMonthDays = MaxMonthDays.Default; - FridayWork = fridayWork; - HolidayWork = holidayWork; BonusesPaysInEndOfMonth = BonusesPaysInEndOfYear.EndOfYear; WorkshopShiftStatus = workshopShiftStatus; WeeklyOffDays = weeklyOffDays; + HolidayWork = holidayWork; if (workshopShiftStatus == WorkshopShiftStatus.Irregular) return; @@ -92,8 +91,7 @@ public class CustomizeWorkshopSettings : BaseCustomizeEntity public void Edit(FridayPay fridayPay, OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay, FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction, - FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, - FridayWork fridayWork, HolidayWork holidayWork, BonusesPaysInEndOfYear bonusesPaysInEndOfYear, + FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, HolidayWork holidayWork, BonusesPaysInEndOfYear bonusesPaysInEndOfYear, int leavePermittedDays, BaseYearsPayInEndOfYear baseYearsPayInEndOfYear, int overTimeThresholdMinute) { FridayPay = fridayPay; @@ -109,7 +107,6 @@ public class CustomizeWorkshopSettings : BaseCustomizeEntity FineAbsenceDeduction = fineAbsenceDeduction; LateToWork = lateToWork; EarlyExit = earlyExit; - FridayWork = fridayWork; HolidayWork = holidayWork; BonusesPaysInEndOfMonth = bonusesPaysInEndOfYear; LeavePermittedDays = leavePermittedDays; @@ -127,19 +124,18 @@ public class CustomizeWorkshopSettings : BaseCustomizeEntity } public void ChangeWorkshopShifts(ICollection customizeWorkshopSettingsShifts, - WorkshopShiftStatus workshopShiftStatus,FridayWork fridayWork,HolidayWork holidayWork) + WorkshopShiftStatus workshopShiftStatus,HolidayWork holidayWork, List weeklyOffDays) { WorkshopShiftStatus = workshopShiftStatus; HolidayWork = holidayWork; - FridayWork = fridayWork; CustomizeWorkshopSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopSettingsShifts : new List(); + WeeklyOffDays = weeklyOffDays; + if (workshopShiftStatus == WorkshopShiftStatus.Regular) { var date = new DateOnly(); var firstStartShift = new DateTime(date, CustomizeWorkshopSettingsShifts.MinBy(x => x.Placement).StartTime); var lastEndShift = new DateTime(date, CustomizeWorkshopSettingsShifts.MaxBy(x => x.Placement).EndTime); - - if (lastEndShift > firstStartShift) firstStartShift = firstStartShift.AddDays(1); var offSet = (firstStartShift - lastEndShift).Divide(2); diff --git a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CreateCustomizeWorkshopGroupSettings.cs b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CreateCustomizeWorkshopGroupSettings.cs index b80062f9..9c26475f 100644 --- a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CreateCustomizeWorkshopGroupSettings.cs +++ b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CreateCustomizeWorkshopGroupSettings.cs @@ -1,4 +1,5 @@  +using System; using System.Collections.Generic; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; @@ -16,8 +17,9 @@ public class CreateCustomizeWorkshopGroupSettings public IrregularShift IrregularShift { get; set; } public BreakTime BreakTime { get; set; } public int LeavePermittedDays { get; set; } - public FridayWork FridayWork { get; set; } + //public FridayWork FridayWork { get; set; } public HolidayWork HolidayWork { get; set; } + public List OffDayOfWeeks { get; set; } public ICollection CustomizeRotatingShiftsViewModels { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CreateCustomizeWorkshopSettings.cs b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CreateCustomizeWorkshopSettings.cs index 960f7cd4..6ddd5ef0 100644 --- a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CreateCustomizeWorkshopSettings.cs +++ b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CreateCustomizeWorkshopSettings.cs @@ -21,10 +21,10 @@ public class CreateCustomizeWorkshopSettings public BreakTime BreakTime { get; set; } - /// - /// آیا جمعه کار میکند یا نه - /// - public FridayWork FridayWork { get; set; } + ///// + ///// آیا جمعه کار میکند یا نه + ///// + //public FridayWork FridayWork { get; set; } /// /// آیا در روز های تعطیل کار میکند diff --git a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CustomizeWorkshopEmployeeSettingsViewModel.cs b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CustomizeWorkshopEmployeeSettingsViewModel.cs index 5c130801..6ee51967 100644 --- a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CustomizeWorkshopEmployeeSettingsViewModel.cs +++ b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/CustomizeWorkshopEmployeeSettingsViewModel.cs @@ -1,4 +1,5 @@ -using _0_Framework.Domain.CustomizeCheckoutShared.Enums; +using System; +using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; using System.Collections.Generic; @@ -20,7 +21,8 @@ public class CustomizeWorkshopEmployeeSettingsViewModel public bool ChangeSettingEmployeeShiftIsChange { get; set; } public BreakTime BreakTime { get; set; } public HolidayWork HolidayWork { get; set; } - public FridayWork FridayWork { get; set; } + //public FridayWork FridayWork { get; set; } public int LeavePermittedDays { get; set; } public ICollection CustomizeRotatingShiftsViewModels { get; set; } + public List WeeklyOffDays { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/EditCustomizeEmployeeSettings.cs b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/EditCustomizeEmployeeSettings.cs index a29d491e..e5b94ea5 100644 --- a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/EditCustomizeEmployeeSettings.cs +++ b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/EditCustomizeEmployeeSettings.cs @@ -1,4 +1,5 @@ -using _0_Framework.Domain.CustomizeCheckoutShared.Enums; +using System; +using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using CompanyManagment.App.Contracts.CustomizeWorkshopSettings.ValueObjectsViewModel; using System.Collections.Generic; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; @@ -72,17 +73,19 @@ public class EditCustomizeEmployeeSettings:CreateCustomizeEmployeeSettings /// public EarlyExitViewModel EarlyExit { get; set; } - /// - /// آیا جمعه کار میکند یا نه - /// - public FridayWork FridayWork { get; set; } + ///// + ///// آیا جمعه کار میکند یا نه + ///// + //public FridayWork FridayWork { get; set; } /// /// آیا در روز های تعطیل کار میکند /// public HolidayWork HolidayWork { get; set; } - public long Id { get; set; } + public List WeeklyOffDays { get; set; } + + public long Id { get; set; } public string Salary { get; set; } public string NameGroup { get; set; } public string EmployeeFullName { get; set; } @@ -91,4 +94,5 @@ public class EditCustomizeEmployeeSettings:CreateCustomizeEmployeeSettings public IEnumerable ShiftViewModel { get; set; } public ICollection CustomizeRotatingShifts{ get; set; } public BreakTime BreakTime { get; set; } + } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/EditCustomizeWorkshopGroupSettings.cs b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/EditCustomizeWorkshopGroupSettings.cs index acb4683e..0f358acc 100644 --- a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/EditCustomizeWorkshopGroupSettings.cs +++ b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/EditCustomizeWorkshopGroupSettings.cs @@ -1,6 +1,8 @@ -using _0_Framework.Domain.CustomizeCheckoutShared.Enums; +using System; +using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using CompanyManagment.App.Contracts.CustomizeWorkshopSettings.ValueObjectsViewModel; using System.Collections.Generic; +using _0_Framework.Domain.CustomizeCheckoutShared.Base; namespace CompanyManagment.App.Contracts.CustomizeWorkshopSettings; @@ -75,16 +77,18 @@ public class EditCustomizeWorkshopGroupSettings : CreateCustomizeWorkshopGroupSe /// public EarlyExitViewModel EarlyExit { get; set; } - /// - /// آیا جمعه کار میکند یا نه - /// - public FridayWork FridayWork { get; set; } + ///// + ///// آیا جمعه کار میکند یا نه + ///// + //public FridayWork FridayWork { get; set; } /// /// آیا در روز های تعطیل کار میکند /// public HolidayWork HolidayWork { get; set; } + //public List WeeklyOffDays { get; set; } + public bool IsShiftChanged { get; set; } public bool IsSettingChanged { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/ICustomizeWorkshopSettingsApplication.cs b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/ICustomizeWorkshopSettingsApplication.cs index 46c5836e..65343eb0 100644 --- a/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/ICustomizeWorkshopSettingsApplication.cs +++ b/CompanyManagment.App.Contracts/CustomizeWorkshopSettings/ICustomizeWorkshopSettingsApplication.cs @@ -1,4 +1,5 @@ -using _0_Framework.Application; +using System; +using _0_Framework.Application; using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects; using CompanyManagment.App.Contracts.Employee; @@ -51,11 +52,14 @@ public interface ICustomizeWorkshopSettingsApplication /// /// شیفت هت /// آیدی تنظیمات کارگاه - /// /// + /// + /// + /// /// OperationResult EditWorkshopSettingShifts(List shiftViewModels, - long customizeWorkshopSettingsId,WorkshopShiftStatus workshopShiftStatus,FridayWork fridayWork,HolidayWork holidayWork); + long customizeWorkshopSettingsId, WorkshopShiftStatus workshopShiftStatus, + HolidayWork holidayWork, List weeklyOffDays); // It will Get the Workshop Settings with its groups and the employees of groups. CustomizeWorkshopSettingsViewModel GetWorkshopSettingsByWorkshopId(long workshopId, AuthViewModel auth); diff --git a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs index 5b4b6e3a..b9fe479d 100644 --- a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs +++ b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs @@ -31,1710 +31,1726 @@ using CompanyManagment.EFCore.Repository; namespace CompanyManagment.Application; public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepository customizeWorkshopSettingsRepository, - IAuthHelper authHelper, IPasswordHasher passwordHasher, ICameraAccountApplication cameraAccountApplication, - ICustomizeWorkshopGroupSettingsRepository customizeWorkshopGroupSettingsRepository, IEmployeeRepository employeeRepository, - ICustomizeWorkshopEmployeeSettingsRepository customizeWorkshopEmployeeSettingsRepository, - IRollCallEmployeeApplication rollCallEmployeeApplication, - IRollCallApplication rollCallAppllication, - ICheckoutRepository checkoutRepository, - ICustomizeCheckoutRepository customizeCheckoutRepository, - ICustomizeCheckoutTempRepository customizeCheckoutTempRepository) - : ICustomizeWorkshopSettingsApplication + IAuthHelper authHelper, IPasswordHasher passwordHasher, ICameraAccountApplication cameraAccountApplication, + ICustomizeWorkshopGroupSettingsRepository customizeWorkshopGroupSettingsRepository, IEmployeeRepository employeeRepository, + ICustomizeWorkshopEmployeeSettingsRepository customizeWorkshopEmployeeSettingsRepository, + IRollCallEmployeeApplication rollCallEmployeeApplication, + IRollCallApplication rollCallAppllication, + ICheckoutRepository checkoutRepository, + ICustomizeCheckoutRepository customizeCheckoutRepository, + ICustomizeCheckoutTempRepository customizeCheckoutTempRepository) + : ICustomizeWorkshopSettingsApplication { - private readonly ICustomizeWorkshopSettingsRepository _customizeWorkshopSettingsRepository = customizeWorkshopSettingsRepository; - private readonly ICustomizeWorkshopGroupSettingsRepository _customizeWorkshopGroupSettingsRepository = customizeWorkshopGroupSettingsRepository; - private readonly ICustomizeWorkshopEmployeeSettingsRepository _customizeWorkshopEmployeeSettingsRepository = customizeWorkshopEmployeeSettingsRepository; - private readonly IAuthHelper _authHelper = authHelper; - private readonly IEmployeeRepository _employeeRepository = employeeRepository; - private readonly IPasswordHasher _passwordHasher = passwordHasher; - private readonly ICameraAccountApplication _cameraAccountApplication = cameraAccountApplication; - private readonly IRollCallEmployeeApplication _rollCallEmployeeApplication = rollCallEmployeeApplication; - private readonly IRollCallApplication _rollCallApplication = rollCallAppllication; - private readonly ICheckoutRepository _checkoutRepository = checkoutRepository; - private readonly ICustomizeCheckoutRepository _customizeCheckoutRepository = customizeCheckoutRepository; - private readonly ICustomizeCheckoutTempRepository _customizeCheckoutTempRepository = customizeCheckoutTempRepository; - - #region RollCallShifts - - //Create workshop settings - public OperationResult CreateWorkshopSettings(CreateCustomizeWorkshopSettings command) - { - OperationResult op = new(); - var workshopId = _passwordHasher.SlugDecrypt(_authHelper.GetWorkshopSlug()); - //تبدیل شیفت های ویو مدل به انتیتی - List shiftCollection = new List(); - if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular) - { - #region Validation - if (command.ShiftsList.Any(x => string.IsNullOrWhiteSpace(x.StartTime) || string.IsNullOrWhiteSpace(x.EndTime))) - return op.Failed("ساعات کاری شروع و پایان نمیتواند خالی باشد"); - try - { - shiftCollection = - command.ShiftsList.Select(x => - { - var placement = x.Placement switch - { - ShiftPlacement.First => "اول", - ShiftPlacement.Second => "دوم", - ShiftPlacement.Third => "سوم" - }; - if (!TimeOnly.TryParseExact(x.StartTime, "HH:mm", out TimeOnly start)) - throw new InvalidDataException($"فرمت شروع نوبت{placement}نادرست است"); - if (!TimeOnly.TryParseExact(x.EndTime, "HH:mm", out TimeOnly end)) - throw new InvalidDataException($"فرمت پایان نوبت{placement}نادرست است"); - - - return new CustomizeWorkshopSettingsShift(start, end, x.Placement); - - }).ToList(); - } - catch (InvalidDataException e) - { - - return op.Failed(e.Message); - } - if (workshopId < 1) - { - return op.Failed("خطای سیستمی"); - } - DateTime day = DateTime.Now; - DateTime previousEnd = new DateTime(); - var finalShiftList = new List<(DateTime start, DateTime end, ShiftPlacement placement)>(); - - shiftCollection = shiftCollection.OrderBy(x => x.Placement).ToList(); - - foreach (var shift in shiftCollection) - { - (DateTime start, DateTime end, ShiftPlacement placement) newShift = - new() - { - placement = shift.Placement, - start = new DateTime(DateOnly.FromDateTime(day), shift.StartTime), - end = new DateTime(DateOnly.FromDateTime(day), shift.EndTime) - - - }; - - if (previousEnd != new DateTime()) - { - if (newShift.start == previousEnd) - { - return op.Failed("در شیفت منظم پایان شیفت نمیتواند با شروع شیفت بعدی برابر باشد"); - } - - if (newShift.start <= previousEnd) - { - newShift.start = newShift.start.AddDays(1); - } - } - while (newShift.start >= newShift.end) - { - newShift.end = newShift.end.AddDays(1); - } - finalShiftList.Add(newShift); - previousEnd = newShift.end; - } - - var firstShiftStart = finalShiftList.FirstOrDefault(x => x.placement == ShiftPlacement.First).start; - var lastShiftEnd = finalShiftList.OrderByDescending(x => x.placement).FirstOrDefault().end; - if (firstShiftStart.AddDays(1) < lastShiftEnd) - return op.Failed("بازه زمانی کارگاه نامعتبر است"); - var total = finalShiftList.Sum(x => (x.end - x.start).TotalHours); - if (total >= 24) - { - return op.Failed("بازه زمانی کارگاه نمیتواند بیشتر از 24 ساعت باشد"); - } - #endregion - } - else - { - command.ShiftsList = []; - shiftCollection = []; - - } - - var offDays = command.OffDays.Select(x => new WeeklyOffDay(x)).ToList(); - - var record = new CustomizeWorkshopSettings(workshopId, shiftCollection, command.LeavePermittedDays, - command.WorkshopShiftStatus, command.FridayWork, command.HolidayWork, offDays); - using (var transaction = new TransactionScope()) - { - - try - { - _customizeWorkshopSettingsRepository.Create(record); - _customizeWorkshopSettingsRepository.SaveChanges(); - - OperationResult result = new OperationResult(); - - result = command.WorkshopShiftStatus == WorkshopShiftStatus.Regular ? CreateGeneralGroup(record) : result.Succcedded(); - - if (result.IsSuccedded) - { - transaction.Complete(); - } - else - { - op = result; - transaction.Dispose(); - } - } - catch - { - transaction.Dispose(); - // ignored - } - } - - return string.IsNullOrWhiteSpace(op.Message) ? op.Succcedded() : op; - - } - - - //create group settings with workshopSettingsId. - public OperationResult CreateGroupSettingsByRollCallWorkshopSettingId(CreateCustomizeWorkshopGroupSettings command) - { - OperationResult op = new(); - CustomizeWorkshopSettings workshopSettings = - _customizeWorkshopSettingsRepository.Get(command.CustomizeWorkshopSettingId); - List shiftCollection = new List(); - - ICollection customizeRotatingShifts = []; - - #region validation - - if (workshopSettings == null) - return op.Failed("خطای سیستمی"); - - if (string.IsNullOrWhiteSpace(command.Name)) - return op.Failed("لطفا نام گروه را وارد کنید"); - - if (string.IsNullOrWhiteSpace(command.Salary)) - return op.Failed("لطفا حقوق مورد نظر خود را وارد کنید"); - - if (!_customizeWorkshopSettingsRepository.Exists(x => x.id == command.CustomizeWorkshopSettingId)) - return op.Failed("چنین ساعت کاری برای کارگاهی وجود ندارد"); - - if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular) - { - if (command.ShiftViewModel.Any(x => string.IsNullOrWhiteSpace(x.StartTime) || string.IsNullOrWhiteSpace(x.EndTime))) - return op.Failed("ساعات کاری شروع و پایان نمیتواند خالی باشد"); - try - { - shiftCollection = - command.ShiftViewModel.Select(x => - { - var placement = x.Placement switch - { - ShiftPlacement.First => "اول", - ShiftPlacement.Second => "دوم", - ShiftPlacement.Third => "سوم" - }; - if (!TimeOnly.TryParseExact(x.StartTime, "HH:mm", out TimeOnly start)) - throw new InvalidDataException($"فرمت شروع نوبت{placement}نادرست است"); - if (!TimeOnly.TryParseExact(x.EndTime, "HH:mm", out TimeOnly end)) - throw new InvalidDataException($"فرمت پایان نوبت{placement}نادرست است"); - - - return new CustomizeWorkshopGroupSettingsShift(start, end, x.Placement); - - }).ToList(); - } - catch (InvalidDataException e) - { - - return op.Failed(e.Message); - } - DateTime previousEnd = new DateTime(); - var finalShiftList = new List<(DateTime start, DateTime end, ShiftPlacement placement)>(); - - shiftCollection = shiftCollection.OrderBy(x => x.Placement).ToList(); - - foreach (var shift in shiftCollection) - { - (DateTime start, DateTime end, ShiftPlacement placement) newShift = - new() - { - placement = shift.Placement, - start = new DateTime(DateOnly.MinValue, shift.StartTime), - end = new DateTime(DateOnly.MinValue, shift.EndTime) - - - }; - - if (previousEnd != new DateTime()) - { - if (newShift.start == previousEnd) - { - return op.Failed("در شیفت منظم پایان شیفت نمیتواند با شروع شیفت بعدی برابر باشد"); - } - - if (newShift.start <= previousEnd) - { - newShift.start = newShift.start.AddDays(1); - } - } - while (newShift.start >= newShift.end) - { - newShift.end = newShift.end.AddDays(1); - } - finalShiftList.Add(newShift); - previousEnd = newShift.end; - } - //var firstWorkshopTimeShift = workshopSettings.CustomizeWorkshopSettingsShifts.MinBy(x => x.Placement).StartTime; - //var lastWorkshopTimeShift = workshopSettings.CustomizeWorkshopSettingsShifts.MaxBy(x => x.Placement).EndTime; - - //var startDateTime = new DateTime(DateOnly.MinValue, firstWorkshopTimeShift); - //var lastDateTime = new DateTime(DateOnly.MinValue, lastWorkshopTimeShift); - //if (lastDateTime < startDateTime) - //{ - // lastDateTime = lastDateTime.AddDays(1); - //} - - //var lastGroupShift = finalShiftList.MaxBy(x => x.placement).end; - //var firstGroupShift = finalShiftList.MinBy(x => x.placement).start; - //if (lastDateTime < lastGroupShift || firstGroupShift < startDateTime) - //{ - // return op.Failed("ساعت کاری گروه باید بین ساعت کاری کارگاه باشد"); - //} - } - else if (command.WorkshopShiftStatus == WorkshopShiftStatus.Irregular) - { - var irregularShiftStartTime = new DateTime(DateOnly.MinValue, command.IrregularShift.StartTime); - - var irregularShiftEndTime = new DateTime(DateOnly.MinValue, command.IrregularShift.EndTime); - - if (irregularShiftEndTime < irregularShiftStartTime) - { - irregularShiftEndTime = irregularShiftEndTime.AddDays(1); - } - - switch (command.IrregularShift.WorkshopIrregularShifts) - { - case WorkshopIrregularShifts.TwelveThirtySix: - - if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) - { - return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); - } - break; - case WorkshopIrregularShifts.TwelveTwentyFour: - if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) - { - return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); - } - break; - } - } - else - { - if (command.CustomizeRotatingShiftsViewModels.Count == 1) - { - return op.Failed("در نوع گردشی میبایست بیشتر از یک شیفت تعریف کنید"); - } - customizeRotatingShifts = command.CustomizeRotatingShiftsViewModels.Select(x => new CustomizeRotatingShift(TimeOnly.Parse(x.StartTime), TimeOnly.Parse(x.EndTime))).ToList(); - } - - #endregion - - var breakTime = new BreakTime(command.BreakTime.HasBreakTimeValue, command.BreakTime.BreakTimeValue); - - double salary = command.Salary.MoneyToDouble(); - - - var entity = new CustomizeWorkshopGroupSettings(command.Name, salary, command.CustomizeWorkshopSettingId, shiftCollection, workshopSettings.FridayPay, workshopSettings.OverTimePay, - workshopSettings.BaseYearsPay, workshopSettings.BonusesPay, workshopSettings.NightWorkPay, workshopSettings.MarriedAllowance, - workshopSettings.ShiftPay, workshopSettings.FamilyAllowance, workshopSettings.LeavePay, workshopSettings.InsuranceDeduction, workshopSettings.FineAbsenceDeduction, - workshopSettings.LateToWork, workshopSettings.EarlyExit, command.FridayWork, - command.HolidayWork, breakTime, command.WorkshopShiftStatus, command.IrregularShift, command.LeavePermittedDays, customizeRotatingShifts,workshopSettings.WeeklyOffDays); - - _customizeWorkshopGroupSettingsRepository.Create(entity); - - _customizeWorkshopGroupSettingsRepository.SaveChanges(); - return op.Succcedded(); - } - - //Create Employee Settings with Group data. It will Replace the Group data (such as salary, shifts and ...) on Employee settings On creation. - public OperationResult CreateEmployeesSettingsAndSetChanges(EditCustomizeEmployeeSettings command) - { - var op = new OperationResult(); - var customizeWorkshopGroupSettings = _customizeWorkshopGroupSettingsRepository.Get(command.GroupId); - if (customizeWorkshopGroupSettings == null) - { - return op.Failed("گروه انتخاب شده نا معتبر است"); - } - - if (_customizeWorkshopEmployeeSettingsRepository - .Exists(x => x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId))) - { - foreach (var employeeId in command.EmployeeIds) - { - _customizeWorkshopEmployeeSettingsRepository.RemoveByWorkshopIdAndEmployeeId(command.WorkshopId, employeeId); - } - } - - if (customizeWorkshopGroupSettings.MainGroup) - { - var createDefaultEmployee = CreateEmployeeSettings(command); - return createDefaultEmployee; - } - - - List shiftCollection = new List(); - List rotatingShift = []; - var isChanged = false; - #region validation - - - if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular) - { - if (command.ShiftViewModel.Any(x => string.IsNullOrWhiteSpace(x.StartTime) || string.IsNullOrWhiteSpace(x.EndTime))) - return op.Failed("ساعات کاری شروع و پایان نمیتواند خالی باشد"); - try - { - shiftCollection = - command.ShiftViewModel.Select(x => - { - var placement = x.Placement switch - { - ShiftPlacement.First => "اول", - ShiftPlacement.Second => "دوم", - ShiftPlacement.Third => "سوم" - }; - if (!TimeOnly.TryParseExact(x.StartTime, "HH:mm", out TimeOnly start)) - throw new InvalidDataException($"فرمت شروع نوبت{placement}نادرست است"); - if (!TimeOnly.TryParseExact(x.EndTime, "HH:mm", out TimeOnly end)) - throw new InvalidDataException($"فرمت پایان نوبت{placement}نادرست است"); - - - return new CustomizeWorkshopEmployeeSettingsShift(start, end, x.Placement); - - }).ToList(); - } - catch (InvalidDataException e) - { - - return op.Failed(e.Message); - } - DateTime previousEnd = new DateTime(); - var finalShiftList = new List<(DateTime start, DateTime end, ShiftPlacement placement)>(); - - shiftCollection = shiftCollection.OrderBy(x => x.Placement).ToList(); - - foreach (var shift in shiftCollection) - { - (DateTime start, DateTime end, ShiftPlacement placement) newShift = - new() - { - placement = shift.Placement, - start = new DateTime(DateOnly.MinValue, shift.StartTime), - end = new DateTime(DateOnly.MinValue, shift.EndTime) - - - }; - - if (previousEnd != new DateTime()) - { - if (newShift.start == previousEnd) - { - return op.Failed("در شیفت منظم پایان شیفت نمیتواند با شروع شیفت بعدی برابر باشد"); - } - - if (newShift.start <= previousEnd) - { - newShift.start = newShift.start.AddDays(1); - } - } - while (newShift.start >= newShift.end) - { - newShift.end = newShift.end.AddDays(1); - } - finalShiftList.Add(newShift); - previousEnd = newShift.end; - } - //var firstWorkshopTimeShift = workshopSettings.CustomizeWorkshopSettingsShifts.MinBy(x => x.Placement).StartTime; - //var lastWorkshopTimeShift = workshopSettings.CustomizeWorkshopSettingsShifts.MaxBy(x => x.Placement).EndTime; - - //var startDateTime = new DateTime(DateOnly.MinValue, firstWorkshopTimeShift); - //var lastDateTime = new DateTime(DateOnly.MinValue, lastWorkshopTimeShift); - //if (lastDateTime < startDateTime) - //{ - // lastDateTime = lastDateTime.AddDays(1); - //} - - //var lastGroupShift = finalShiftList.MaxBy(x => x.placement).end; - //var firstGroupShift = finalShiftList.MinBy(x => x.placement).start; - //if (lastDateTime < lastGroupShift || firstGroupShift < startDateTime) - //{ - // return op.Failed("ساعت کاری گروه باید بین ساعت کاری کارگاه باشد"); - //} - - - if (shiftCollection.All(x => customizeWorkshopGroupSettings.CustomizeWorkshopGroupSettingsShifts.Any(y => x.Equals(y))) - && command.WorkshopShiftStatus == customizeWorkshopGroupSettings.WorkshopShiftStatus && command.FridayWork == customizeWorkshopGroupSettings.FridayWork && - command.HolidayWork == customizeWorkshopGroupSettings.HolidayWork && command.BreakTime == customizeWorkshopGroupSettings.BreakTime) - { - isChanged = false; - } - - else - { - isChanged = true; - } - } - else if (command.WorkshopShiftStatus == WorkshopShiftStatus.Irregular) - { - var irregularShiftStartTime = new DateTime(DateOnly.MinValue, command.IrregularShift.StartTime); - - var irregularShiftEndTime = new DateTime(DateOnly.MinValue, command.IrregularShift.EndTime); - - if (irregularShiftEndTime < irregularShiftStartTime) - { - irregularShiftEndTime = irregularShiftEndTime.AddDays(1); - } - - switch (command.IrregularShift.WorkshopIrregularShifts) - { - case WorkshopIrregularShifts.TwelveThirtySix: - - if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) - { - return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); - } - break; - case WorkshopIrregularShifts.TwelveTwentyFour: - if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) - { - return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); - } - break; - } - if (command.WorkshopShiftStatus == customizeWorkshopGroupSettings.WorkshopShiftStatus && command.BreakTime == customizeWorkshopGroupSettings.BreakTime && - command.IrregularShift == customizeWorkshopGroupSettings.IrregularShift && command.FridayWork == customizeWorkshopGroupSettings.FridayWork && - command.HolidayWork == customizeWorkshopGroupSettings.HolidayWork) - { - isChanged = false; - } - else - { - isChanged = true; - } - } - else - { - if (command.CustomizeRotatingShifts.Count == 1) - { - return op.Failed("در نوع گردشی میبایست بیشتر از یک شیفت تعریف کنید"); - } - rotatingShift = command.CustomizeRotatingShifts - .Select(x => new CustomizeRotatingShift(TimeOnly.Parse(x.StartTime), TimeOnly.Parse(x.EndTime))) - .ToList(); - - if (rotatingShift.All(x => customizeWorkshopGroupSettings.CustomizeRotatingShifts.Any(y => x.Equals(y))) - && command.WorkshopShiftStatus == customizeWorkshopGroupSettings.WorkshopShiftStatus && - command.FridayWork == customizeWorkshopGroupSettings.FridayWork && - command.HolidayWork == customizeWorkshopGroupSettings.HolidayWork && command.BreakTime == customizeWorkshopGroupSettings.BreakTime) - { - isChanged = false; - } - - else - { - isChanged = true; - } - } - - #endregion - - var breakTime = new BreakTime(command.BreakTime.HasBreakTimeValue, command.BreakTime.BreakTimeValue); - - - - - var entity = new CustomizeWorkshopEmployeeSettings(customizeWorkshopGroupSettings.FridayPay, customizeWorkshopGroupSettings.OverTimePay, - customizeWorkshopGroupSettings.BaseYearsPay, customizeWorkshopGroupSettings.BonusesPay, customizeWorkshopGroupSettings.NightWorkPay, customizeWorkshopGroupSettings.MarriedAllowance, - customizeWorkshopGroupSettings.ShiftPay, customizeWorkshopGroupSettings.FamilyAllowance, customizeWorkshopGroupSettings.LeavePay, customizeWorkshopGroupSettings.InsuranceDeduction, customizeWorkshopGroupSettings.FineAbsenceDeduction, - customizeWorkshopGroupSettings.LateToWork, customizeWorkshopGroupSettings.EarlyExit, command.EmployeeIds.First(), command.WorkshopId, customizeWorkshopGroupSettings.Salary, command.GroupId, - shiftCollection, command.FridayWork, command.HolidayWork, command.IrregularShift, command.WorkshopShiftStatus, breakTime, command.LeavePermittedDays, rotatingShift,customizeWorkshopGroupSettings.WeeklyOffDays); - - _customizeWorkshopEmployeeSettingsRepository.Create(entity); - - entity.SimpleEdit(shiftCollection, command.IrregularShift, command.WorkshopShiftStatus, command.BreakTime, isChanged, command.FridayWork, command.HolidayWork, rotatingShift); - - _customizeWorkshopGroupSettingsRepository.SaveChanges(); - return op.Succcedded(); - - - - - } - - public OperationResult EditWorkshopSettingShifts(List shiftViewModels, long customizeWorkshopSettingsId, - WorkshopShiftStatus workshopShiftStatus, FridayWork fridayWork, HolidayWork holidayWork) - { - OperationResult op = new OperationResult(); - var entity = _customizeWorkshopSettingsRepository.Get(customizeWorkshopSettingsId); - if (entity == null) - return op.Failed("چنین آیتمی وجود ندارد"); - - //تبدیل شیفت های ویو مدل به انتیتی - List shiftCollection = []; - - #region Validation - if (workshopShiftStatus == WorkshopShiftStatus.Regular) - { - try - { - shiftCollection = - shiftViewModels.Select(x => - { - var placement = x.Placement switch - { - ShiftPlacement.First => "اول", - ShiftPlacement.Second => "دوم", - ShiftPlacement.Third => "سوم", - _ => throw new ArgumentOutOfRangeException() - }; - if (!TimeOnly.TryParseExact(x.StartTime, "HH:mm", out TimeOnly start)) - throw new InvalidDataException($"فرمت شروع نوبت{placement}نادرست است"); - if (!TimeOnly.TryParseExact(x.EndTime, "HH:mm", out TimeOnly end)) - throw new InvalidDataException($"فرمت پایان نوبت{placement}نادرست است"); - - - return new CustomizeWorkshopSettingsShift(start, end, x.Placement); - - }).ToList(); - } - catch (InvalidDataException e) - { - - return op.Failed(e.Message); - } - - DateTime day = DateTime.Now; - DateTime previousEnd = new DateTime(); - var finalShiftList = new List<(DateTime start, DateTime end, ShiftPlacement placement)>(); - - shiftCollection = shiftCollection.OrderBy(x => x.Placement).ToList(); - - foreach (var shift in shiftCollection) - { - (DateTime start, DateTime end, ShiftPlacement placement) newShift = - new() - { - placement = shift.Placement, - start = new DateTime(DateOnly.FromDateTime(day), shift.StartTime), - end = new DateTime(DateOnly.FromDateTime(day), shift.EndTime) - - - }; - - if (previousEnd != new DateTime()) - { - if (newShift.start == previousEnd) - { - return op.Failed("در شیفت منظم پایان شیفت نمیتواند با شروع شیفت بعدی برابر باشد"); - } - - if (newShift.start <= previousEnd) - { - newShift.start = newShift.start.AddDays(1); - } - } - while (newShift.start >= newShift.end) - { - newShift.end = newShift.end.AddDays(1); - } - finalShiftList.Add(newShift); - previousEnd = newShift.end; - } - - var firstShiftStart = finalShiftList.FirstOrDefault(x => x.placement == ShiftPlacement.First).start; - var lastShiftEnd = finalShiftList.OrderByDescending(x => x.placement).FirstOrDefault().end; - if (firstShiftStart.AddDays(1) < lastShiftEnd) - return op.Failed("بازه زمانی کارگاه نامعتبر است"); - var total = finalShiftList.Sum(x => (x.end - x.start).TotalHours); - if (total >= 24) - { - return op.Failed("بازه زمانی کارگاه نمیتواند بیشتر از 24 ساعت باشد"); - } - } - - #endregion - - using var transActionScope = new TransactionScope(); - entity.ChangeWorkshopShifts(shiftCollection, workshopShiftStatus, fridayWork, holidayWork); - - - //op = ChangeAllGroupsShiftsWithEmployees(entity, replaceChangedGroups); - //if (!op.IsSuccedded) - //{ - // return op; - //} - _customizeWorkshopSettingsRepository.SaveChanges(); - - if (!(_customizeWorkshopGroupSettingsRepository.Exists(x => x.CustomizeWorkshopSettingId == entity.id && x.MainGroup)) && entity.WorkshopShiftStatus == WorkshopShiftStatus.Regular) - { - var operationResult = CreateGeneralGroup(entity); - if (!operationResult.IsSuccedded) - return operationResult; - } - transActionScope.Complete(); - return op.Succcedded(); - } - public OperationResult EditSimpleRollCallGroupSetting(EditCustomizeWorkshopGroupSettings command, - List reCalculateCommand) - { - OperationResult op = new(); - - #region Validation - - if (string.IsNullOrWhiteSpace(command.Name)) - return op.Failed("لطفا نام گروه را وارد کنید"); - - if (!_customizeWorkshopGroupSettingsRepository.Exists(x => x.id == command.Id)) - return op.Failed("چنین ساعت کاری برای گروه وجود ندارد"); - - #endregion - - - var entity = _customizeWorkshopGroupSettingsRepository.GetWithEmployees(command.Id); - - var workshopSettings = _customizeWorkshopSettingsRepository.Get(entity.CustomizeWorkshopSettingId); - - //var employeeIds = command.IsShiftChanged ? entity.CustomizeWorkshopEmployeeSettingsCollection - // .Select(x => x.id).ToList() : entity.CustomizeWorkshopEmployeeSettingsCollection.Where(x => !x.IsShiftChanged) - // .Select(x => x.id).ToList(); - - - var groupSettingsShifts = new List(); - ICollection rotatingShift = []; - bool isChanged; - if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular) - { - - groupSettingsShifts = command.ShiftViewModel.Select(x => - { - if (!TimeOnly.TryParseExact(x.StartTime, "HH:mm", out TimeOnly start)) - throw new InvalidDataException(); - if (!TimeOnly.TryParseExact(x.EndTime, "HH:mm", out TimeOnly end)) - throw new InvalidDataException(); - - return new CustomizeWorkshopGroupSettingsShift(start, end, x.Placement); - - }).ToList(); - - if (groupSettingsShifts.All(x => workshopSettings.CustomizeWorkshopSettingsShifts.Any(y => x.Equals(y))) - && command.WorkshopShiftStatus == workshopSettings.WorkshopShiftStatus && command.FridayWork == workshopSettings.FridayWork && - command.HolidayWork == workshopSettings.HolidayWork && - command.BreakTime == workshopSettings.BreakTime) - { - isChanged = false; - } - else - { - isChanged = true; - } - } - else if (command.WorkshopShiftStatus == WorkshopShiftStatus.Irregular) - { - var irregularShiftStartTime = new DateTime(DateOnly.MinValue, command.IrregularShift.StartTime); - - var irregularShiftEndTime = new DateTime(DateOnly.MinValue, command.IrregularShift.EndTime); - - if (irregularShiftEndTime < irregularShiftStartTime) - { - irregularShiftEndTime = irregularShiftEndTime.AddDays(1); - } - - switch (command.IrregularShift.WorkshopIrregularShifts) - { - case WorkshopIrregularShifts.TwelveThirtySix: - - if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) - { - return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); - } - break; - case WorkshopIrregularShifts.TwelveTwentyFour: - if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) - { - return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); - } - break; - } - if (command.WorkshopShiftStatus == workshopSettings.WorkshopShiftStatus && command.BreakTime == workshopSettings.BreakTime - && command.FridayWork == workshopSettings.FridayWork && - command.HolidayWork == workshopSettings.HolidayWork) - { - isChanged = false; - } - else - { - isChanged = true; - } - } - else - { - if (command.CustomizeRotatingShiftsViewModels.Count == 1) - { - return op.Failed("در نوع گردشی میبایست بیشتر از یک شیفت تعریف کنید"); - } - - rotatingShift = command.CustomizeRotatingShiftsViewModels - .Select(x => new CustomizeRotatingShift(TimeOnly.Parse(x.StartTime), TimeOnly.Parse(x.EndTime))).ToList(); - if (command.WorkshopShiftStatus == workshopSettings.WorkshopShiftStatus && command.BreakTime == workshopSettings.BreakTime - && command.FridayWork == workshopSettings.FridayWork && - command.HolidayWork == workshopSettings.HolidayWork) - { - isChanged = false; - } - else - { - isChanged = true; - } - } - - var breakTime = new BreakTime(command.BreakTime.HasBreakTimeValue, command.BreakTime.BreakTimeValue); - - var employeeSettings = entity.CustomizeWorkshopEmployeeSettingsCollection; - - var employeeSettingIds = employeeSettings.Select(x => x.EmployeeId).ToList(); - - reCalculateCommand = reCalculateCommand.Where(x => employeeSettingIds.Contains(x.EmployeeId)).ToList(); - - var selectedEmployeesIds = reCalculateCommand.Select(x => x.EmployeeId).ToList(); - - var notSelectedEmployeeSettings = employeeSettings.Where(x => !selectedEmployeesIds.Contains(x.EmployeeId)); - - using var transaction = new TransactionScope(); - - entity.EditSimpleAndOverwriteOnEmployee(command.Name, selectedEmployeesIds, groupSettingsShifts, command.WorkshopShiftStatus, - command.IrregularShift, breakTime, isChanged, command.FridayWork, command.HolidayWork, rotatingShift); - if (reCalculateCommand.Count > 0) - { - var result = _rollCallApplication.RecalculateValues(workshopSettings.WorkshopId, reCalculateCommand); - - if (result.IsSuccedded == false) - { - return result; - } - } - - foreach (var notSelectedEmployeeSetting in notSelectedEmployeeSettings) - { - notSelectedEmployeeSetting.UpdateIsShiftChange(); - } - - _customizeWorkshopGroupSettingsRepository.SaveChanges(); - - transaction.Complete(); - return op.Succcedded(); - } - public OperationResult EditSimpleRollCallEmployeeSetting(EditCustomizeEmployeeSettings command, - List reCalculateCommand) - { - OperationResult op = new(); - - var entity = _customizeWorkshopEmployeeSettingsRepository.Get(command.Id); - - #region Validation - - if (entity == null) - return op.Failed("چنین پرسنلی وجود ندارد"); - - #endregion - - var groupSettings = - _customizeWorkshopGroupSettingsRepository.GetIncludeWorkshopSettings( - entity.CustomizeWorkshopGroupSettingId); - - List employeesShifts = []; - - ICollection rotatingShift = []; - bool isChanged = false; - if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular) - { - - #region Validation - if (command.ShiftViewModel.Any(x => string.IsNullOrWhiteSpace(x.StartTime) || string.IsNullOrWhiteSpace(x.EndTime))) - return op.Failed("ساعات کاری شروع و پایان نمیتواند خالی باشد"); - try - { - employeesShifts = - command.ShiftViewModel.Select(x => - { - var placement = x.Placement switch - { - ShiftPlacement.First => "اول", - ShiftPlacement.Second => "دوم", - ShiftPlacement.Third => "سوم" - }; - if (!TimeOnly.TryParseExact(x.StartTime, "HH:mm", out TimeOnly start)) - throw new InvalidDataException($"فرمت شروع نوبت{placement}نادرست است"); - if (!TimeOnly.TryParseExact(x.EndTime, "HH:mm", out TimeOnly end)) - throw new InvalidDataException($"فرمت پایان نوبت{placement}نادرست است"); - - - return new CustomizeWorkshopEmployeeSettingsShift(start, end, x.Placement); - - }).ToList(); - } - catch (InvalidDataException e) - { - - return op.Failed(e.Message); - } - if (command.WorkshopId < 1) - { - return op.Failed("خطای سیستمی"); - } - DateTime day = DateTime.Now; - DateTime previousEnd = new DateTime(); - var finalShiftList = new List<(DateTime start, DateTime end, ShiftPlacement placement)>(); - - employeesShifts = employeesShifts.OrderBy(x => x.Placement).ToList(); - - foreach (var shift in employeesShifts) - { - (DateTime start, DateTime end, ShiftPlacement placement) newShift = - new() - { - placement = shift.Placement, - start = new DateTime(DateOnly.FromDateTime(day), shift.StartTime), - end = new DateTime(DateOnly.FromDateTime(day), shift.EndTime) - - - }; - - if (previousEnd != new DateTime()) - { - if (newShift.start == previousEnd) - { - return op.Failed("در شیفت منظم پایان شیفت نمیتواند با شروع شیفت بعدی برابر باشد"); - } - - if (newShift.start <= previousEnd) - { - newShift.start = newShift.start.AddDays(1); - } - } - while (newShift.start >= newShift.end) - { - newShift.end = newShift.end.AddDays(1); - } - finalShiftList.Add(newShift); - previousEnd = newShift.end; - } - - var firstShiftStart = finalShiftList.FirstOrDefault(x => x.placement == ShiftPlacement.First).start; - var lastShiftEnd = finalShiftList.OrderByDescending(x => x.placement).FirstOrDefault().end; - if (firstShiftStart.AddDays(1) < lastShiftEnd) - return op.Failed("بازه زمانی کارگاه نامعتبر است"); - var total = finalShiftList.Sum(x => (x.end - x.start).TotalHours); - if (total >= 24) - { - return op.Failed("بازه زمانی کارگاه نمیتواند بیشتر از 24 ساعت باشد"); - } - #endregion - - - if (employeesShifts.All(x => groupSettings.CustomizeWorkshopGroupSettingsShifts.Any(y => x.Equals(y))) - && command.WorkshopShiftStatus == groupSettings.WorkshopShiftStatus && command.FridayWork == groupSettings.FridayWork && - command.HolidayWork == groupSettings.HolidayWork && command.BreakTime == groupSettings.BreakTime) - { - isChanged = false; - } - - else - { - isChanged = true; - } - } - else if (command.WorkshopShiftStatus == WorkshopShiftStatus.Irregular) - { - var irregularShiftStartTime = new DateTime(DateOnly.MinValue, command.IrregularShift.StartTime); - - var irregularShiftEndTime = new DateTime(DateOnly.MinValue, command.IrregularShift.EndTime); - - if (irregularShiftEndTime < irregularShiftStartTime) - { - irregularShiftEndTime = irregularShiftEndTime.AddDays(1); - } - - switch (command.IrregularShift.WorkshopIrregularShifts) - { - case WorkshopIrregularShifts.TwelveThirtySix: - - if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) - { - return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); - } - break; - case WorkshopIrregularShifts.TwelveTwentyFour: - if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) - { - return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); - } - break; - } - - if (command.WorkshopShiftStatus == groupSettings.WorkshopShiftStatus && command.BreakTime == groupSettings.BreakTime && - command.IrregularShift == groupSettings.IrregularShift && command.FridayWork == groupSettings.FridayWork && - command.HolidayWork == groupSettings.HolidayWork) - { - isChanged = false; - } - else - { - isChanged = true; - } - } - else - { - if (command.CustomizeRotatingShifts.Count == 1) - { - return op.Failed("در نوع گردشی میبایست بیشتر از یک شیفت تعریف کنید"); - } - - rotatingShift = command.CustomizeRotatingShifts - .Select(x => new CustomizeRotatingShift(TimeOnly.Parse(x.StartTime), TimeOnly.Parse(x.EndTime))).ToList(); - - if (rotatingShift.All(x => groupSettings.CustomizeRotatingShifts.Any(y => x.Equals(y))) - && command.WorkshopShiftStatus == groupSettings.WorkshopShiftStatus && command.FridayWork == groupSettings.FridayWork && - command.HolidayWork == groupSettings.HolidayWork && command.BreakTime == groupSettings.BreakTime) - { - isChanged = false; - } - - else - { - isChanged = true; - } - - } - - using var transaction = new TransactionScope(); - - entity.SimpleEdit(employeesShifts, command.IrregularShift, command.WorkshopShiftStatus, command.BreakTime, - isChanged, command.FridayWork, command.HolidayWork, rotatingShift); - - _customizeWorkshopGroupSettingsRepository.SaveChanges(); - if (reCalculateCommand.Count > 0) - { - var result = _rollCallApplication.RecalculateValues(command.WorkshopId, reCalculateCommand); - - if (result.IsSuccedded == false) - { - return result; - } - } - - - transaction.Complete(); - - return op.Succcedded(); - } - - //Remove the Employee From the Group Settings - public OperationResult RemoveEmployeeFromRollCallWorkshopGroup(long employeeId, long groupId, long workshopId) - { - OperationResult op = new(); - var groupEntity = _customizeWorkshopGroupSettingsRepository.GetWithEmployees(groupId); - - #region Validation - - if (groupEntity == null) - { - return op.Failed("چنین گروهی وجود ندارد"); - } - - #endregion - - using var transaction = new TransactionScope(); - groupEntity.RemoveEmployeeFromGroup(employeeId); - _customizeWorkshopGroupSettingsRepository.SaveChanges(); - var res = AddEmployeeToMainGroupSettings(workshopId, employeeId); - if (res.IsSuccedded) - { - transaction.Complete(); - return op.Succcedded(); - - } - - return res; - - } - - public OperationResult AddEmployeeToMainGroupSettings(long workshopId, long employeeId) - { - var op = new OperationResult(); - - var mainGroup = _customizeWorkshopGroupSettingsRepository.GetWorkshopMainGroup(workshopId); - if (mainGroup == null) - return op.Succcedded(); - mainGroup.AddEmployeeSettingToGroupWithGroupData(employeeId, workshopId); - - _customizeWorkshopEmployeeSettingsRepository.SaveChanges(); - - return op.Succcedded(); - } - - #endregion - - #region CustomizeCheckoutSettings - public OperationResult CreateEmployeeSettings(CreateCustomizeEmployeeSettings command) - { - OperationResult op = new(); - CustomizeWorkshopGroupSettings mainGroup = new CustomizeWorkshopGroupSettings(); - - #region Validation - - //if (!_customizeWorkshopGroupSettingsRepository.Exists(x => x.id == command.GroupId)) - // return op.Failed("چنین گروهی وجود ندارد"); - - if (!_employeeRepository.ExistsIgnoreQueryFilter(x => command.EmployeeIds.Any(y => x.id == y))) - return op.Failed("چنین پرسنلی وجود ندارد"); - - #endregion - - var groupData = _customizeWorkshopGroupSettingsRepository.GetIncludeWorkshopSettings(command.GroupId); - if (groupData == null) - return op.Failed("خطای سیستمی"); - var workshopSettings = _customizeWorkshopSettingsRepository.Get(groupData.CustomizeWorkshopSettingId); - var employeesInMainGroup = new List(); - - mainGroup = _customizeWorkshopGroupSettingsRepository.GetWorkshopMainGroup(command.WorkshopId); - - if (workshopSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular) - { - if (mainGroup != null) - { - - employeesInMainGroup = _customizeWorkshopEmployeeSettingsRepository.GetBy(mainGroup.id); - if (_customizeWorkshopEmployeeSettingsRepository.Exists(x => x.WorkshopId == command.WorkshopId - && command.EmployeeIds.Contains(x.EmployeeId) && x.CustomizeWorkshopGroupSettingId != mainGroup.id)) - { - return op.Failed("این پرسنل در گروه دیگری وجود دارد"); - } - } - else - { - if (_customizeWorkshopEmployeeSettingsRepository.Exists(x => x.WorkshopId == command.WorkshopId - && command.EmployeeIds.Contains(x.EmployeeId))) - { - return op.Failed("این پرسنل در گروه دیگری وجود دارد"); - } - } - } - else - { - if (mainGroup != null) - { - employeesInMainGroup = _customizeWorkshopEmployeeSettingsRepository.GetBy(mainGroup.id); - if (_customizeWorkshopEmployeeSettingsRepository.Exists(x => x.WorkshopId == command.WorkshopId - && command.EmployeeIds.Contains( - x.EmployeeId) && - x.CustomizeWorkshopGroupSettingId != - mainGroup.id)) - { - return op.Failed("این پرسنل در گروه دیگری وجود دارد"); - } - } - else - { - if (_customizeWorkshopEmployeeSettingsRepository.Exists(x => x.WorkshopId == command.WorkshopId - && command.EmployeeIds.Contains(x.EmployeeId))) - { - return op.Failed("این پرسنل در گروه دیگری وجود دارد"); - } - } - } - - - - var shifts = groupData.CustomizeWorkshopGroupSettingsShifts - .Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(); - - - foreach (var id in command.EmployeeIds) - { - var employeeSettings = employeesInMainGroup.FirstOrDefault(x => x.EmployeeId == id); - if (employeeSettings != null) - { - _customizeWorkshopEmployeeSettingsRepository.Remove(employeeSettings.id); - } - var entity = new CustomizeWorkshopEmployeeSettings( - new(groupData.FridayPay.FridayPayType, groupData.FridayPay.Value), - new(groupData.OverTimePay.OverTimePayType, groupData.OverTimePay.Value), - new(groupData.BaseYearsPay.BaseYearsPayType, groupData.BaseYearsPay.Value, groupData.BaseYearsPay.PaymentType), - new(groupData.BonusesPay.BonusesPayType, groupData.BonusesPay.Value, groupData.BonusesPay.PaymentType), - new(groupData.NightWorkPay.NightWorkingType, groupData.NightWorkPay.Value), - new(groupData.MarriedAllowance.MarriedAllowanceType, groupData.MarriedAllowance.Value), - new(groupData.ShiftPay.ShiftType, groupData.ShiftPay.ShiftPayType, groupData.ShiftPay.Value), - new(groupData.FamilyAllowance.FamilyAllowanceType, groupData.FamilyAllowance.Value), - new(groupData.LeavePay.LeavePayType, groupData.LeavePay.Value), - new(groupData.InsuranceDeduction.InsuranceDeductionType, groupData.InsuranceDeduction.Value), - new(groupData.FineAbsenceDeduction.FineAbsenceDeductionType, groupData.FineAbsenceDeduction.Value, - groupData.FineAbsenceDeduction.FineAbsenceDayOfWeekCollection - .Select(x => new FineAbsenceDayOfWeek(x.DayOfWeek)).ToList()), - new(groupData.LateToWork.LateToWorkType, - groupData.LateToWork.LateToWorkTimeFines.Select(x => new LateToWorkTimeFine(x.Minute, x.FineMoney)) - .ToList(), groupData.LateToWork.Value), - new(groupData.EarlyExit.EarlyExitType, - groupData.EarlyExit.EarlyExitTimeFines.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney)) - .ToList(), groupData.EarlyExit.Value), - id, - groupData.CustomizeWorkshopSettings.WorkshopId, - groupData.Salary, - groupData.id, - shifts.Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)) - .ToList(), - groupData.FridayWork, - groupData.HolidayWork, - groupData.IrregularShift, - groupData.WorkshopShiftStatus, - new(groupData.BreakTime.HasBreakTimeValue, groupData.BreakTime.BreakTimeValue), - command.LeavePermittedDays, - groupData.CustomizeRotatingShifts.Select(x => new CustomizeRotatingShift(x.StartTime, x.EndTime)).ToList(), - groupData.WeeklyOffDays - ); - - _customizeWorkshopEmployeeSettingsRepository.Create(entity); - - } - _customizeWorkshopEmployeeSettingsRepository.SaveChanges(); - - - return op.Succcedded(); - } - - //Edit the Workshop Settings Data - public OperationResult EditWorkshopSetting(EditCustomizeWorkshopSettings command, bool replaceInAllGroups) - { - OperationResult op = new(); - - #region Validation - - if (!_customizeWorkshopSettingsRepository.Exists(x => x.id == command.Id)) - return op.Failed("خطای سیستمی"); - - #endregion - - - var entity = _customizeWorkshopSettingsRepository.Get(command.Id); - if (entity == null) - return op.Failed("چنین آیتمی وجود ندارد"); - - - FridayPay fridayPay = new(command.FridayPay.FridayPayType, command.FridayPay.Value); - OverTimePay overTimePay = new(command.OverTimePay.OverTimePayType, command.OverTimePay.Value); - BaseYearsPay baseYearsPay = new(command.BaseYearsPay.BaseYearsPayType, command.BaseYearsPay.Value, command.BaseYearsPay.PaymentType); - BonusesPay bonusesPay = new(command.BonusesPay.BonusesPayType, command.BonusesPay.Value, command.BonusesPay.PaymentType); - NightWorkPay nightWorkPay = new(command.NightWorkPay.NightWorkingType, command.NightWorkPay.Value); - MarriedAllowance marriedAllowance = new(command.MarriedAllowance.MarriedAllowanceType, command.MarriedAllowance.Value); - ShiftPay shiftPay = new(ShiftType.None, ShiftPayType.None, 0); - FamilyAllowance familyAllowance = new(command.FamilyAllowance.FamilyAllowanceType, command.FamilyAllowance.Value); - LeavePay leavePay = new(command.LeavePay.LeavePayType, command.LeavePay.Value); - InsuranceDeduction insuranceDeduction = new(command.InsuranceDeduction.InsuranceDeductionType, command.InsuranceDeduction.Value); - FineAbsenceDeduction fineAbsenceDeduction = new( - command.FineAbsenceDeduction.FineAbsenceDeductionType, - command.FineAbsenceDeduction.Value, - command.FineAbsenceDeduction.FineAbsenceDayOfWeekViewModels?.Select(x => new FineAbsenceDayOfWeek(x.DayOfWeek)).ToList() ?? new List() - ); - LateToWork lateToWork = new( - command.LateToWork.LateToWorkType, - command.LateToWork.LateToWorkTimeFinesVewModels?.Select(x => new LateToWorkTimeFine(x.Minute, x.FineMoney)) - .ToList() ?? new List() - , command.LateToWork.Value - ); - - EarlyExit earlyExit = new(command.EarlyExit.EarlyExitType, - command.EarlyExit.EarlyExitTimeFinesViewModels?.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney)).ToList() ?? new List() - , command.EarlyExit.Value); - - - var groups = _customizeWorkshopGroupSettingsRepository.GetAllGroupsIncludeEmployeeSettingsByWorkshopSettingsId(entity.id); - - using (var transaction = new TransactionScope()) - { - - try - { - entity.Edit(fridayPay, overTimePay, baseYearsPay, bonusesPay, nightWorkPay, marriedAllowance, shiftPay, - familyAllowance, leavePay, insuranceDeduction, - fineAbsenceDeduction, lateToWork, earlyExit, command.FridayWork, command.HolidayWork, - command.BonusesPaysInEndOfMonth, command.LeavePermittedDays, command.BaseYearsPayInEndOfYear, - command.OverTimeThresholdMinute); - - _customizeWorkshopSettingsRepository.SaveChanges(); - var editViewModel = new EditCustomizeWorkshopGroupSettings() - { - - }; - OperationResult result = new OperationResult(); - if (entity.WorkshopShiftStatus == WorkshopShiftStatus.Regular) - { - //foreach (var group in groups) - //{ - // var employeeIds = group.CustomizeWorkshopEmployeeSettingsCollection.Select(x => x.EmployeeId) - // .ToList(); - // group.EditAndOverwriteOnEmployees(group.GroupName,group.Salary,employeeIds,group.FridayPay,group.OverTimePay,group.BaseYearsPay,group.BonusesPay, - // group.ShiftPay,group.NightWorkPay,group.MarriedAllowance,group.FamilyAllowance,group.LeavePay,group.InsuranceDeduction, - // group.FineAbsenceDeduction,); - //} - } - else - { - result = result.Succcedded(); - } - - ChangeAllSettingsGroups(entity, replaceInAllGroups); - - result.Succcedded(); - - - transaction.Complete(); - - } - catch - { - // ignored - } - } - - return string.IsNullOrWhiteSpace(op.Message) ? op.Succcedded() : op; - } - - - - //Edit the Group Settings Data - public OperationResult EditRollCallGroupSetting(EditCustomizeWorkshopGroupSettings command) - { - OperationResult op = new(); - - #region Validation - - if (string.IsNullOrWhiteSpace(command.Name)) - return op.Failed("لطفا نام گروه را وارد کنید"); - - if (string.IsNullOrWhiteSpace(command.Salary)) - return op.Failed("لطفا حقوق مورد نظر خود را وارد کنید"); - - if (!_customizeWorkshopGroupSettingsRepository.Exists(x => x.id == command.Id)) - return op.Failed("چنین ساعت کاری برای گروه وجود ندارد"); - - #endregion - - - var entity = _customizeWorkshopGroupSettingsRepository.GetWithEmployees(command.Id); - - FridayPay fridayPay = new(command.FridayPay.FridayPayType, command.FridayPay.Value); - OverTimePay overTimePay = new(command.OverTimePay.OverTimePayType, command.OverTimePay.Value); - BaseYearsPay baseYearsPay = new(command.BaseYearsPay.BaseYearsPayType, command.BaseYearsPay.Value, command.BaseYearsPay.PaymentType); - BonusesPay bonusesPay = new(command.BonusesPay.BonusesPayType, command.BonusesPay.Value, command.BonusesPay.PaymentType); - NightWorkPay nightWorkPay = new(command.NightWorkPay.NightWorkingType, command.NightWorkPay.Value); - MarriedAllowance marriedAllowance = new(command.MarriedAllowance.MarriedAllowanceType, command.MarriedAllowance.Value); - //ShiftPay shiftPay = new(command.ShiftPay.ShiftType, command.ShiftPay.ShiftPayType, command.ShiftPay.Value); - ShiftPay shiftPay = new(ShiftType.None, ShiftPayType.None, 0); - FamilyAllowance familyAllowance = new(command.FamilyAllowance.FamilyAllowanceType, command.FamilyAllowance.Value); - LeavePay leavePay = new(command.LeavePay.LeavePayType, command.LeavePay.Value); - InsuranceDeduction insuranceDeduction = new(command.InsuranceDeduction.InsuranceDeductionType, command.InsuranceDeduction.Value); - FineAbsenceDeduction fineAbsenceDeduction = new( - command.FineAbsenceDeduction.FineAbsenceDeductionType, command.FineAbsenceDeduction.Value, - command.FineAbsenceDeduction.FineAbsenceDayOfWeekViewModels - .Select(x => new FineAbsenceDayOfWeek(x.DayOfWeek)).ToList() - ); - LateToWork lateToWork = new( - command.LateToWork.LateToWorkType, - command.LateToWork.LateToWorkTimeFinesVewModels.Select(x => new LateToWorkTimeFine(x.Minute, x.FineMoney)) - .ToList(), command.LateToWork.Value - ); - EarlyExit earlyExit = new(command.EarlyExit.EarlyExitType, - command.EarlyExit.EarlyExitTimeFinesViewModels.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney)) - .ToList(), command.EarlyExit.Value); - - double salary = command.Salary.MoneyToDouble(); - - - bool isChanged; - if (fridayPay == entity.FridayPay && overTimePay == entity.OverTimePay && baseYearsPay == entity.BaseYearsPay && bonusesPay == entity.BonusesPay - && shiftPay == entity.ShiftPay && nightWorkPay == entity.NightWorkPay && marriedAllowance == entity.MarriedAllowance - && familyAllowance == entity.FamilyAllowance && leavePay == entity.LeavePay && insuranceDeduction == entity.InsuranceDeduction - && fineAbsenceDeduction == entity.FineAbsenceDeduction && lateToWork == entity.LateToWork && earlyExit == entity.EarlyExit && command.FridayWork == entity.FridayWork - && command.HolidayWork == entity.HolidayWork && command.IrregularShift == entity.IrregularShift && command.WorkshopShiftStatus == entity.WorkshopShiftStatus) - { - isChanged = false; - } - else - { - isChanged = true; - } - entity.EditAndOverwriteOnEmployees(command.Name, salary, command.EmployeeIds, fridayPay, overTimePay, - baseYearsPay, bonusesPay, shiftPay, nightWorkPay, marriedAllowance, familyAllowance, - leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork, earlyExit, - command.FridayWork, command.HolidayWork, isChanged, command.LeavePermittedDays); - - _customizeWorkshopGroupSettingsRepository.SaveChanges(); - - return op.Succcedded(); - } - - //Edit the Employee settings and change the 'IsChanged' bool to true. - public OperationResult EditRollCallEmployeeSettings(EditCustomizeEmployeeSettings command) - { - OperationResult op = new(); - var entity = _customizeWorkshopEmployeeSettingsRepository.Get(command.Id); - - #region Validation - - if (entity == null) - return op.Failed("چنین پرسنلی وجود ندارد"); - - #endregion - - FridayPay fridayPay = new(command.FridayPay.FridayPayType, command.FridayPay.Value); - OverTimePay overTimePay = new(command.OverTimePay.OverTimePayType, command.OverTimePay.Value); - BaseYearsPay baseYearsPay = new(command.BaseYearsPay.BaseYearsPayType, command.BaseYearsPay.Value, command.BaseYearsPay.PaymentType); - BonusesPay bonusesPay = new(command.BonusesPay.BonusesPayType, command.BonusesPay.Value, command.BonusesPay.PaymentType); - NightWorkPay nightWorkPay = new(command.NightWorkPay.NightWorkingType, command.NightWorkPay.Value); - MarriedAllowance marriedAllowance = new(command.MarriedAllowance.MarriedAllowanceType, command.MarriedAllowance.Value); - // ShiftPay shiftPay = new(command.ShiftPay.ShiftType, command.ShiftPay.ShiftPayType, command.ShiftPay.Value); - ShiftPay shiftPay = new(ShiftType.None, ShiftPayType.None, 0); - FamilyAllowance familyAllowance = new(command.FamilyAllowance.FamilyAllowanceType, command.FamilyAllowance.Value); - LeavePay leavePay = new(command.LeavePay.LeavePayType, command.LeavePay.Value); - InsuranceDeduction insuranceDeduction = new(command.InsuranceDeduction.InsuranceDeductionType, command.InsuranceDeduction.Value); - FineAbsenceDeduction fineAbsenceDeduction = new( - command.FineAbsenceDeduction.FineAbsenceDeductionType, command.FineAbsenceDeduction.Value, - command.FineAbsenceDeduction.FineAbsenceDayOfWeekViewModels - .Select(x => new FineAbsenceDayOfWeek(x.DayOfWeek)).ToList() - ); - LateToWork lateToWork = new( - command.LateToWork.LateToWorkType, - command.LateToWork.LateToWorkTimeFinesVewModels.Select(x => new LateToWorkTimeFine(x.Minute, x.FineMoney)) - .ToList(), command.LateToWork.Value - ); - EarlyExit earlyExit = new(command.EarlyExit.EarlyExitType, - command.EarlyExit.EarlyExitTimeFinesViewModels.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney)) - .ToList(), command.EarlyExit.Value); - - - double salary = command.Salary.MoneyToDouble(); - - - bool isChanged; - if (fridayPay == entity.FridayPay && overTimePay == entity.OverTimePay && baseYearsPay == entity.BaseYearsPay && bonusesPay == entity.BonusesPay - && shiftPay == entity.ShiftPay && nightWorkPay == entity.NightWorkPay && marriedAllowance == entity.MarriedAllowance - && familyAllowance == entity.FamilyAllowance && leavePay == entity.LeavePay && insuranceDeduction == entity.InsuranceDeduction - && fineAbsenceDeduction == entity.FineAbsenceDeduction && lateToWork == entity.LateToWork && earlyExit == entity.EarlyExit && command.FridayWork == entity.FridayWork - && command.HolidayWork == entity.HolidayWork) - { - isChanged = false; - } - else - { - isChanged = true; - } - - //change employee data manually. It changes the 'IsChanged' property to true. - entity.EditEmployees(salary, fridayPay, overTimePay, baseYearsPay, - bonusesPay, nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, - insuranceDeduction, fineAbsenceDeduction, lateToWork, earlyExit, command.FridayWork, command.HolidayWork, command.IrregularShift, isChanged, command.LeavePermittedDays); - - - _customizeWorkshopEmployeeSettingsRepository.SaveChanges(); - return op.Succcedded(); - } - - public OperationResult RemoveGroupSettings(long groupSettingsId) - { - OperationResult op = new OperationResult(); - var entity = _customizeWorkshopGroupSettingsRepository.GetWithEmployees(groupSettingsId); - if (entity.CustomizeWorkshopEmployeeSettingsCollection.Any()) - return op.Failed("نمیتوانید گروهی که پرسنل در آن وجود دارد را حذف کنید"); - - _customizeWorkshopGroupSettingsRepository.Remove(entity.id); - return op.Succcedded(); - } - #endregion - - #region Queries - - - public List GetChangedEmployeeSettingsByGroupSettingsId(long groupSettingsId) - { - return _customizeWorkshopGroupSettingsRepository.GetShiftChangedEmployeeSettingsByGroupSettingsId( - groupSettingsId); - } - - - // It will Get the Workshop Settings with its groups and the employees of groups. - public CustomizeWorkshopSettingsViewModel GetWorkshopSettingsByWorkshopId(long workshopId, AuthViewModel auth) - { - - - #region Validation - - if (workshopId is < 1) - return new(); - - #endregion - - var record = _customizeWorkshopSettingsRepository.GetWorkshopSettingsByWorkshopId(workshopId, auth); - - return record; - } - - public CustomizeWorkshopEmployeeSettingsViewModel GetByEmployeeIdAndWorkshopIdIncludeGroupSettings(long workshopId, long employeeId) - { - var entity = - _customizeWorkshopEmployeeSettingsRepository.GetByEmployeeIdAndWorkshopIdIncludeGroupSettings(workshopId, employeeId); - if (entity == null) - return null; - - string employeeFullName = _employeeRepository.GetIgnoreQueryFilter(entity.EmployeeId).FullName; - return new CustomizeWorkshopEmployeeSettingsViewModel() - { - EmployeeId = entity.EmployeeId, - Id = entity.id, - IsSettingChanged = entity.IsSettingChanged, - IsShiftChanged = entity.IsShiftChanged, - Name = entity.CustomizeWorkshopGroupSettings.GroupName, - EmployeeFullName = employeeFullName, - Salary = entity.Salary, - BreakTime = entity.BreakTime, - WorkshopShiftStatus = entity.WorkshopShiftStatus, - IrregularShift = entity.IrregularShift, - RollCallWorkshopShifts = entity.CustomizeWorkshopEmployeeSettingsShifts.Select(x => - new CustomizeWorkshopShiftViewModel() - { - EndTime = x.EndTime.ToString("HH:mm"), - Placement = x.Placement, - StartTime = x.StartTime.ToString("HH:mm") - }).ToList(), - FridayWork = entity.FridayWork, - HolidayWork = entity.HolidayWork, - CustomizeRotatingShiftsViewModels = entity.CustomizeRotatingShifts.Select(x => new CustomizeRotatingShiftsViewModel() - { - StartTime = x.StartTime.ToString("HH:mm"), - EndTime = x.EndTime.ToString("HH:mm") - }).ToList() - - }; - } - - public List GetEmployeeSettingsByGroupSettingsId(long groupSettingsId) - { - - List result = _customizeWorkshopGroupSettingsRepository.GetEmployeeSettingsByGroupSettingsId(groupSettingsId); - - if (result == null) - return new(); - - return result; - - } - - public CustomizeWorkshopSettingsViewModel GetWorkshopIncludeGroupsByWorkshopId(long workshopId) - { - return _customizeWorkshopSettingsRepository.GetWorkshopIncludeGroupsByWorkshopId(workshopId); - } - - - public List GetEmployeesWithoutGroup(long rollCallWorkshopSettingId) - { - return _customizeWorkshopGroupSettingsRepository.GetEmployeesWithoutGroup(rollCallWorkshopSettingId); - } - public List GetEmployeesWithoutGroupByWorkshopId(long workshopId) - { - return _customizeWorkshopGroupSettingsRepository.GetEmployeesWithoutGroupByWorkshopId(workshopId); - } - - - - public CustomizeWorkshopSettingsViewModel GetWorkshopSettingsByWorkshopIdForAdmin(long workshopId) - { - return _customizeWorkshopSettingsRepository.GetWorkshopSettingsByWorkshopIdForAdmin(workshopId); - - } - public EditCustomizeWorkshopSettings GetWorkshopSettingsDetails(long workshopId) - { - return _customizeWorkshopSettingsRepository.GetWorkshopSettingsDetails(workshopId); - } - - public EditCustomizeWorkshopGroupSettings GetCustomizeWorkshopGroupSettingsDetails(long groupId) - { - return _customizeWorkshopGroupSettingsRepository.GetCustomizeWorkshopGroupSettingsDetails(groupId); - } - - public EditCustomizeWorkshopSettings GetSimpleWorkshopSettings(long workshopId) - { - return _customizeWorkshopSettingsRepository.GetSimpleWorkshopSettings(workshopId); - } - - public EditCustomizeEmployeeSettings GetCustomizeEmployeeSettingsDetails(long customizeEmployeeId) - { - return _customizeWorkshopEmployeeSettingsRepository.GetCustomizeEmployeeSettingsDetails(customizeEmployeeId); - } - - public List GetShiftChangesGroupAndEmployees(long customizeWorkshopSettingsId) - { - return _customizeWorkshopSettingsRepository.GetShiftChangesGroupAndEmployees(customizeWorkshopSettingsId); - } - - public List GetEmployeeSettingsByWorkshopId(long workshopId) - { - return _customizeWorkshopEmployeeSettingsRepository.GetEmployeeSettingsByWorkshopId(workshopId); - } - - public CustomizeWorkshopGroupSettingsViewModel GetEmployeesGroupSettingsByEmployeeId(long employeeId, long workshopId) - { - return _customizeWorkshopGroupSettingsRepository.GetEmployeesGroupSettingsByEmployeeId(employeeId, workshopId); - } - - public bool HasAnyEmployeeWithoutGroup(long workshopId) - { - return _customizeWorkshopGroupSettingsRepository.HasAnyEmployeeWithoutGroup(workshopId); - } - public OperationResult> ValidateReCalculateValueForGroupEdit(List commands, - long workshopId) - { - var operationResult = new OperationResult>(); - bool isSuccess = true; - List employeeIdsHasCheckout = []; - foreach (var command in commands) - { - var fromDateGr = command.FromDate.ToGeorgianDateTime(); - if (_checkoutRepository.Exists(x => x.WorkshopId == workshopId && x.EmployeeId == command.EmployeeId && fromDateGr <= x.ContractEnd)) - { - isSuccess = false; - employeeIdsHasCheckout.Add(command.EmployeeId); - } - - if (_customizeCheckoutRepository.Exists(x => x.WorkshopId == workshopId && x.EmployeeId == command.EmployeeId && fromDateGr <= x.ContractEnd)) - { - isSuccess = false; - employeeIdsHasCheckout.Add(command.EmployeeId); - } - - if (_customizeCheckoutTempRepository.Exists(x => x.WorkshopId == workshopId && x.EmployeeId == command.EmployeeId && fromDateGr <= x.ContractEnd)) - { - isSuccess = false; - employeeIdsHasCheckout.Add(command.EmployeeId); - } - } - - employeeIdsHasCheckout = employeeIdsHasCheckout.Distinct().ToList(); - return isSuccess ? - operationResult.Succcedded(employeeIdsHasCheckout) - : - operationResult.Failed("پرسنل هایی دارای فیش هستند لطفا نسبت به تعیین تکلیف این ها اقدام نمایید", employeeIdsHasCheckout); - } - public bool CheckEmployeeShiftHasChanged(EditCustomizeEmployeeSettings command) - { - return _customizeWorkshopEmployeeSettingsRepository.CheckEmployeeShiftHasChanged(command); - } - - private OperationResult CreateGeneralGroup(CustomizeWorkshopSettings entity) - { - var op = new OperationResult(); - - if (_customizeWorkshopGroupSettingsRepository.Exists(x => x.CustomizeWorkshopSettingId == entity.id && x.MainGroup)) - { - return op.Succcedded(); - } - - try - { - var shifts = - entity.CustomizeWorkshopSettingsShifts.Select(x => - new CustomizeWorkshopGroupSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(); - var irregularShift = new IrregularShift(new TimeOnly(), new TimeOnly(), WorkshopIrregularShifts.None); - - var customizeWorkshopGroupSettings = new CustomizeWorkshopGroupSettings().CreateMainGroup(entity.FridayPay, entity.OverTimePay, - entity.BaseYearsPay, entity.BonusesPay, entity.ShiftPay, entity.NightWorkPay, entity.MarriedAllowance, - entity.FamilyAllowance, entity.LeavePay, entity.InsuranceDeduction, entity.FineAbsenceDeduction, - entity.LateToWork, entity.EarlyExit, shifts, entity.FridayWork, entity.HolidayWork, - irregularShift, [], entity.WorkshopShiftStatus, entity.id, new BreakTime(false, new TimeOnly()), entity.LeavePermittedDays); - - _customizeWorkshopGroupSettingsRepository.Create(customizeWorkshopGroupSettings); - - _customizeWorkshopGroupSettingsRepository.SaveChanges(); - - var employeesHasSettings = _customizeWorkshopEmployeeSettingsRepository - .GetEmployeeSettingNotInMainGroup(entity.WorkshopId).Select(x => x.EmployeeId); - - var rollCallEmployeeViewModels = _rollCallEmployeeApplication.GetByWorkshopId(entity.WorkshopId).Where(x => !employeesHasSettings.Contains(x.EmployeeId)); - - foreach (var rollCallEmployeeViewModel in rollCallEmployeeViewModels) - { - customizeWorkshopGroupSettings.AddEmployeeSettingToGroupWithGroupData( - rollCallEmployeeViewModel.EmployeeId, entity.WorkshopId); - } - _customizeWorkshopGroupSettingsRepository.SaveChanges(); - return op.Succcedded(); - } - catch (Exception e) - { - return op.Failed(e.Message); - } - - - } - - private OperationResult ChangeAllGroupsShiftsWithEmployees(CustomizeWorkshopSettings entity, bool replaceChangedGroups) - { - var op = new OperationResult(); - var groupSettings = _customizeWorkshopGroupSettingsRepository.GetAllGroupsIncludeEmployeeSettingsByWorkshopSettingsId(entity.id); - - if (!replaceChangedGroups) - { - groupSettings = groupSettings.Where(x => !x.IsShiftChange).ToList(); - } - - var groupShifts = entity.CustomizeWorkshopSettingsShifts - .Select(x => new CustomizeWorkshopGroupSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(); - - - - var irregularShift = new IrregularShift(new TimeOnly(), new TimeOnly(), WorkshopIrregularShifts.None); - foreach (var customizeWorkshopGroupSettings in groupSettings) - { - customizeWorkshopGroupSettings.EditSimpleAndOverwriteOnAllEmployees(customizeWorkshopGroupSettings.GroupName, - groupShifts, entity.WorkshopShiftStatus, irregularShift, new BreakTime(false, new TimeOnly()), - false, entity.FridayWork, entity.HolidayWork, []); - } - _customizeWorkshopGroupSettingsRepository.SaveChanges(); - return op.Succcedded(); - } - private void ChangeAllSettingsGroups(CustomizeWorkshopSettings customizeWorkshopSettings, bool replaceInAllGroups) - { - var op = new OperationResult(); - var groupSettings = _customizeWorkshopGroupSettingsRepository.GetAllGroupsIncludeEmployeeSettingsByWorkshopSettingsId(customizeWorkshopSettings.id); - - if (!replaceInAllGroups) - { - groupSettings = groupSettings.Where(x => !x.IsSettingChange).ToList(); - } - - - - foreach (var groupSetting in groupSettings) - { - groupSetting.EditAndOverwriteOnAllEmployees(groupSetting.GroupName, groupSetting.Salary, - customizeWorkshopSettings.FridayPay, - customizeWorkshopSettings.OverTimePay, customizeWorkshopSettings.BaseYearsPay, - customizeWorkshopSettings.BonusesPay, customizeWorkshopSettings.ShiftPay, - customizeWorkshopSettings.NightWorkPay, customizeWorkshopSettings.MarriedAllowance, - customizeWorkshopSettings.FamilyAllowance, customizeWorkshopSettings.LeavePay, - customizeWorkshopSettings.InsuranceDeduction, customizeWorkshopSettings.FineAbsenceDeduction, - customizeWorkshopSettings.LateToWork, customizeWorkshopSettings.EarlyExit, - customizeWorkshopSettings.FridayWork, customizeWorkshopSettings.HolidayWork, replaceInAllGroups, - customizeWorkshopSettings.LeavePermittedDays); - } - _customizeWorkshopSettingsRepository.SaveChanges(); - } - - #endregion + private readonly ICustomizeWorkshopSettingsRepository _customizeWorkshopSettingsRepository = customizeWorkshopSettingsRepository; + private readonly ICustomizeWorkshopGroupSettingsRepository _customizeWorkshopGroupSettingsRepository = customizeWorkshopGroupSettingsRepository; + private readonly ICustomizeWorkshopEmployeeSettingsRepository _customizeWorkshopEmployeeSettingsRepository = customizeWorkshopEmployeeSettingsRepository; + private readonly IAuthHelper _authHelper = authHelper; + private readonly IEmployeeRepository _employeeRepository = employeeRepository; + private readonly IPasswordHasher _passwordHasher = passwordHasher; + private readonly ICameraAccountApplication _cameraAccountApplication = cameraAccountApplication; + private readonly IRollCallEmployeeApplication _rollCallEmployeeApplication = rollCallEmployeeApplication; + private readonly IRollCallApplication _rollCallApplication = rollCallAppllication; + private readonly ICheckoutRepository _checkoutRepository = checkoutRepository; + private readonly ICustomizeCheckoutRepository _customizeCheckoutRepository = customizeCheckoutRepository; + private readonly ICustomizeCheckoutTempRepository _customizeCheckoutTempRepository = customizeCheckoutTempRepository; + + #region RollCallShifts + + //Create workshop settings + public OperationResult CreateWorkshopSettings(CreateCustomizeWorkshopSettings command) + { + OperationResult op = new(); + var workshopId = _passwordHasher.SlugDecrypt(_authHelper.GetWorkshopSlug()); + //تبدیل شیفت های ویو مدل به انتیتی + List shiftCollection = new List(); + if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular) + { + #region Validation + if (command.ShiftsList.Any(x => string.IsNullOrWhiteSpace(x.StartTime) || string.IsNullOrWhiteSpace(x.EndTime))) + return op.Failed("ساعات کاری شروع و پایان نمیتواند خالی باشد"); + try + { + shiftCollection = + command.ShiftsList.Select(x => + { + var placement = x.Placement switch + { + ShiftPlacement.First => "اول", + ShiftPlacement.Second => "دوم", + ShiftPlacement.Third => "سوم" + }; + if (!TimeOnly.TryParseExact(x.StartTime, "HH:mm", out TimeOnly start)) + throw new InvalidDataException($"فرمت شروع نوبت{placement}نادرست است"); + if (!TimeOnly.TryParseExact(x.EndTime, "HH:mm", out TimeOnly end)) + throw new InvalidDataException($"فرمت پایان نوبت{placement}نادرست است"); + + + return new CustomizeWorkshopSettingsShift(start, end, x.Placement); + + }).ToList(); + } + catch (InvalidDataException e) + { + + return op.Failed(e.Message); + } + if (workshopId < 1) + { + return op.Failed("خطای سیستمی"); + } + DateTime day = DateTime.Now; + DateTime previousEnd = new DateTime(); + var finalShiftList = new List<(DateTime start, DateTime end, ShiftPlacement placement)>(); + + shiftCollection = shiftCollection.OrderBy(x => x.Placement).ToList(); + + foreach (var shift in shiftCollection) + { + (DateTime start, DateTime end, ShiftPlacement placement) newShift = + new() + { + placement = shift.Placement, + start = new DateTime(DateOnly.FromDateTime(day), shift.StartTime), + end = new DateTime(DateOnly.FromDateTime(day), shift.EndTime) + + + }; + + if (previousEnd != new DateTime()) + { + if (newShift.start == previousEnd) + { + return op.Failed("در شیفت منظم پایان شیفت نمیتواند با شروع شیفت بعدی برابر باشد"); + } + + if (newShift.start <= previousEnd) + { + newShift.start = newShift.start.AddDays(1); + } + } + while (newShift.start >= newShift.end) + { + newShift.end = newShift.end.AddDays(1); + } + finalShiftList.Add(newShift); + previousEnd = newShift.end; + } + + var firstShiftStart = finalShiftList.FirstOrDefault(x => x.placement == ShiftPlacement.First).start; + var lastShiftEnd = finalShiftList.OrderByDescending(x => x.placement).FirstOrDefault().end; + if (firstShiftStart.AddDays(1) < lastShiftEnd) + return op.Failed("بازه زمانی کارگاه نامعتبر است"); + var total = finalShiftList.Sum(x => (x.end - x.start).TotalHours); + if (total >= 24) + { + return op.Failed("بازه زمانی کارگاه نمیتواند بیشتر از 24 ساعت باشد"); + } + #endregion + } + else + { + command.ShiftsList = []; + shiftCollection = []; + + } + + var offDays = command.OffDays.Select(x => new WeeklyOffDay(x)).ToList(); + + var record = new CustomizeWorkshopSettings(workshopId, shiftCollection, command.LeavePermittedDays, + command.WorkshopShiftStatus, command.HolidayWork, offDays); + using (var transaction = new TransactionScope()) + { + + try + { + _customizeWorkshopSettingsRepository.Create(record); + _customizeWorkshopSettingsRepository.SaveChanges(); + + OperationResult result = new OperationResult(); + + result = command.WorkshopShiftStatus == WorkshopShiftStatus.Regular ? CreateGeneralGroup(record) : result.Succcedded(); + + if (result.IsSuccedded) + { + transaction.Complete(); + } + else + { + op = result; + transaction.Dispose(); + } + } + catch + { + transaction.Dispose(); + // ignored + } + } + + return string.IsNullOrWhiteSpace(op.Message) ? op.Succcedded() : op; + + } + + + //create group settings with workshopSettingsId. + public OperationResult CreateGroupSettingsByRollCallWorkshopSettingId(CreateCustomizeWorkshopGroupSettings command) + { + OperationResult op = new(); + CustomizeWorkshopSettings workshopSettings = + _customizeWorkshopSettingsRepository.Get(command.CustomizeWorkshopSettingId); + List shiftCollection = new List(); + + ICollection customizeRotatingShifts = []; + + #region validation + + if (workshopSettings == null) + return op.Failed("خطای سیستمی"); + + if (string.IsNullOrWhiteSpace(command.Name)) + return op.Failed("لطفا نام گروه را وارد کنید"); + + if (string.IsNullOrWhiteSpace(command.Salary)) + return op.Failed("لطفا حقوق مورد نظر خود را وارد کنید"); + + if (!_customizeWorkshopSettingsRepository.Exists(x => x.id == command.CustomizeWorkshopSettingId)) + return op.Failed("چنین ساعت کاری برای کارگاهی وجود ندارد"); + + if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular) + { + if (command.ShiftViewModel.Any(x => string.IsNullOrWhiteSpace(x.StartTime) || string.IsNullOrWhiteSpace(x.EndTime))) + return op.Failed("ساعات کاری شروع و پایان نمیتواند خالی باشد"); + try + { + shiftCollection = + command.ShiftViewModel.Select(x => + { + var placement = x.Placement switch + { + ShiftPlacement.First => "اول", + ShiftPlacement.Second => "دوم", + ShiftPlacement.Third => "سوم" + }; + if (!TimeOnly.TryParseExact(x.StartTime, "HH:mm", out TimeOnly start)) + throw new InvalidDataException($"فرمت شروع نوبت{placement}نادرست است"); + if (!TimeOnly.TryParseExact(x.EndTime, "HH:mm", out TimeOnly end)) + throw new InvalidDataException($"فرمت پایان نوبت{placement}نادرست است"); + + + return new CustomizeWorkshopGroupSettingsShift(start, end, x.Placement); + + }).ToList(); + } + catch (InvalidDataException e) + { + + return op.Failed(e.Message); + } + DateTime previousEnd = new DateTime(); + var finalShiftList = new List<(DateTime start, DateTime end, ShiftPlacement placement)>(); + + shiftCollection = shiftCollection.OrderBy(x => x.Placement).ToList(); + + foreach (var shift in shiftCollection) + { + (DateTime start, DateTime end, ShiftPlacement placement) newShift = + new() + { + placement = shift.Placement, + start = new DateTime(DateOnly.MinValue, shift.StartTime), + end = new DateTime(DateOnly.MinValue, shift.EndTime) + + + }; + + if (previousEnd != new DateTime()) + { + if (newShift.start == previousEnd) + { + return op.Failed("در شیفت منظم پایان شیفت نمیتواند با شروع شیفت بعدی برابر باشد"); + } + + if (newShift.start <= previousEnd) + { + newShift.start = newShift.start.AddDays(1); + } + } + while (newShift.start >= newShift.end) + { + newShift.end = newShift.end.AddDays(1); + } + finalShiftList.Add(newShift); + previousEnd = newShift.end; + } + //var firstWorkshopTimeShift = workshopSettings.CustomizeWorkshopSettingsShifts.MinBy(x => x.Placement).StartTime; + //var lastWorkshopTimeShift = workshopSettings.CustomizeWorkshopSettingsShifts.MaxBy(x => x.Placement).EndTime; + + //var startDateTime = new DateTime(DateOnly.MinValue, firstWorkshopTimeShift); + //var lastDateTime = new DateTime(DateOnly.MinValue, lastWorkshopTimeShift); + //if (lastDateTime < startDateTime) + //{ + // lastDateTime = lastDateTime.AddDays(1); + //} + + //var lastGroupShift = finalShiftList.MaxBy(x => x.placement).end; + //var firstGroupShift = finalShiftList.MinBy(x => x.placement).start; + //if (lastDateTime < lastGroupShift || firstGroupShift < startDateTime) + //{ + // return op.Failed("ساعت کاری گروه باید بین ساعت کاری کارگاه باشد"); + //} + } + else if (command.WorkshopShiftStatus == WorkshopShiftStatus.Irregular) + { + var irregularShiftStartTime = new DateTime(DateOnly.MinValue, command.IrregularShift.StartTime); + + var irregularShiftEndTime = new DateTime(DateOnly.MinValue, command.IrregularShift.EndTime); + + if (irregularShiftEndTime < irregularShiftStartTime) + { + irregularShiftEndTime = irregularShiftEndTime.AddDays(1); + } + + switch (command.IrregularShift.WorkshopIrregularShifts) + { + case WorkshopIrregularShifts.TwelveThirtySix: + + if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) + { + return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); + } + break; + case WorkshopIrregularShifts.TwelveTwentyFour: + if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) + { + return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); + } + break; + } + } + else + { + if (command.CustomizeRotatingShiftsViewModels.Count == 1) + { + return op.Failed("در نوع گردشی میبایست بیشتر از یک شیفت تعریف کنید"); + } + customizeRotatingShifts = command.CustomizeRotatingShiftsViewModels.Select(x => new CustomizeRotatingShift(TimeOnly.Parse(x.StartTime), TimeOnly.Parse(x.EndTime))).ToList(); + } + + #endregion + + var breakTime = new BreakTime(command.BreakTime.HasBreakTimeValue, command.BreakTime.BreakTimeValue); + + double salary = command.Salary.MoneyToDouble(); + + var weeklyOffDays = command.OffDayOfWeeks.Select(x => new WeeklyOffDay(x)).ToList(); + + var entity = new CustomizeWorkshopGroupSettings(command.Name, salary, command.CustomizeWorkshopSettingId, shiftCollection, workshopSettings.FridayPay, workshopSettings.OverTimePay, + workshopSettings.BaseYearsPay, workshopSettings.BonusesPay, workshopSettings.NightWorkPay, workshopSettings.MarriedAllowance, + workshopSettings.ShiftPay, workshopSettings.FamilyAllowance, workshopSettings.LeavePay, workshopSettings.InsuranceDeduction, workshopSettings.FineAbsenceDeduction, + workshopSettings.LateToWork, workshopSettings.EarlyExit, + command.HolidayWork, breakTime, command.WorkshopShiftStatus, command.IrregularShift, command.LeavePermittedDays, customizeRotatingShifts, workshopSettings.WeeklyOffDays); + + _customizeWorkshopGroupSettingsRepository.Create(entity); + + _customizeWorkshopGroupSettingsRepository.SaveChanges(); + return op.Succcedded(); + } + + //Create Employee Settings with Group data. It will Replace the Group data (such as salary, shifts and ...) on Employee settings On creation. + public OperationResult CreateEmployeesSettingsAndSetChanges(EditCustomizeEmployeeSettings command) + { + var op = new OperationResult(); + var customizeWorkshopGroupSettings = _customizeWorkshopGroupSettingsRepository.Get(command.GroupId); + if (customizeWorkshopGroupSettings == null) + { + return op.Failed("گروه انتخاب شده نا معتبر است"); + } + + if (_customizeWorkshopEmployeeSettingsRepository + .Exists(x => x.WorkshopId == command.WorkshopId && command.EmployeeIds.Contains(x.EmployeeId))) + { + foreach (var employeeId in command.EmployeeIds) + { + _customizeWorkshopEmployeeSettingsRepository.RemoveByWorkshopIdAndEmployeeId(command.WorkshopId, employeeId); + } + } + + if (customizeWorkshopGroupSettings.MainGroup) + { + var createDefaultEmployee = CreateEmployeeSettings(command); + return createDefaultEmployee; + } + + + List shiftCollection = new List(); + List rotatingShift = []; + var isChanged = false; + #region validation + + var commandOffDayHashSet = command.WeeklyOffDays.ToHashSet(); + var groupOffDayHashSet = customizeWorkshopGroupSettings.WeeklyOffDays.Select(x => x.DayOfWeek).ToHashSet(); + + if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular) + { + if (command.ShiftViewModel.Any(x => string.IsNullOrWhiteSpace(x.StartTime) || string.IsNullOrWhiteSpace(x.EndTime))) + return op.Failed("ساعات کاری شروع و پایان نمیتواند خالی باشد"); + try + { + shiftCollection = + command.ShiftViewModel.Select(x => + { + var placement = x.Placement switch + { + ShiftPlacement.First => "اول", + ShiftPlacement.Second => "دوم", + ShiftPlacement.Third => "سوم" + }; + if (!TimeOnly.TryParseExact(x.StartTime, "HH:mm", out TimeOnly start)) + throw new InvalidDataException($"فرمت شروع نوبت{placement}نادرست است"); + if (!TimeOnly.TryParseExact(x.EndTime, "HH:mm", out TimeOnly end)) + throw new InvalidDataException($"فرمت پایان نوبت{placement}نادرست است"); + + + return new CustomizeWorkshopEmployeeSettingsShift(start, end, x.Placement); + + }).ToList(); + } + catch (InvalidDataException e) + { + + return op.Failed(e.Message); + } + DateTime previousEnd = new DateTime(); + var finalShiftList = new List<(DateTime start, DateTime end, ShiftPlacement placement)>(); + + shiftCollection = shiftCollection.OrderBy(x => x.Placement).ToList(); + + foreach (var shift in shiftCollection) + { + (DateTime start, DateTime end, ShiftPlacement placement) newShift = + new() + { + placement = shift.Placement, + start = new DateTime(DateOnly.MinValue, shift.StartTime), + end = new DateTime(DateOnly.MinValue, shift.EndTime) + + + }; + + if (previousEnd != new DateTime()) + { + if (newShift.start == previousEnd) + { + return op.Failed("در شیفت منظم پایان شیفت نمیتواند با شروع شیفت بعدی برابر باشد"); + } + + if (newShift.start <= previousEnd) + { + newShift.start = newShift.start.AddDays(1); + } + } + while (newShift.start >= newShift.end) + { + newShift.end = newShift.end.AddDays(1); + } + finalShiftList.Add(newShift); + previousEnd = newShift.end; + } + //var firstWorkshopTimeShift = workshopSettings.CustomizeWorkshopSettingsShifts.MinBy(x => x.Placement).StartTime; + //var lastWorkshopTimeShift = workshopSettings.CustomizeWorkshopSettingsShifts.MaxBy(x => x.Placement).EndTime; + + //var startDateTime = new DateTime(DateOnly.MinValue, firstWorkshopTimeShift); + //var lastDateTime = new DateTime(DateOnly.MinValue, lastWorkshopTimeShift); + //if (lastDateTime < startDateTime) + //{ + // lastDateTime = lastDateTime.AddDays(1); + //} + + //var lastGroupShift = finalShiftList.MaxBy(x => x.placement).end; + //var firstGroupShift = finalShiftList.MinBy(x => x.placement).start; + //if (lastDateTime < lastGroupShift || firstGroupShift < startDateTime) + //{ + // return op.Failed("ساعت کاری گروه باید بین ساعت کاری کارگاه باشد"); + //} + + + + if (shiftCollection.All(x => customizeWorkshopGroupSettings.CustomizeWorkshopGroupSettingsShifts.Any(y => x.Equals(y))) + && command.WorkshopShiftStatus == customizeWorkshopGroupSettings.WorkshopShiftStatus && command.HolidayWork == customizeWorkshopGroupSettings.HolidayWork && + command.BreakTime == customizeWorkshopGroupSettings.BreakTime &&commandOffDayHashSet.SetEquals(groupOffDayHashSet)) + { + isChanged = false; + } + + else + { + isChanged = true; + } + } + else if (command.WorkshopShiftStatus == WorkshopShiftStatus.Irregular) + { + var irregularShiftStartTime = new DateTime(DateOnly.MinValue, command.IrregularShift.StartTime); + + var irregularShiftEndTime = new DateTime(DateOnly.MinValue, command.IrregularShift.EndTime); + + if (irregularShiftEndTime < irregularShiftStartTime) + { + irregularShiftEndTime = irregularShiftEndTime.AddDays(1); + } + + switch (command.IrregularShift.WorkshopIrregularShifts) + { + case WorkshopIrregularShifts.TwelveThirtySix: + + if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) + { + return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); + } + break; + case WorkshopIrregularShifts.TwelveTwentyFour: + if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) + { + return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); + } + break; + } + if (command.WorkshopShiftStatus == customizeWorkshopGroupSettings.WorkshopShiftStatus && command.BreakTime == customizeWorkshopGroupSettings.BreakTime && + command.IrregularShift == customizeWorkshopGroupSettings.IrregularShift && commandOffDayHashSet.SetEquals(groupOffDayHashSet) && + command.HolidayWork == customizeWorkshopGroupSettings.HolidayWork) + { + isChanged = false; + } + else + { + isChanged = true; + } + } + else + { + if (command.CustomizeRotatingShifts.Count == 1) + { + return op.Failed("در نوع گردشی میبایست بیشتر از یک شیفت تعریف کنید"); + } + rotatingShift = command.CustomizeRotatingShifts + .Select(x => new CustomizeRotatingShift(TimeOnly.Parse(x.StartTime), TimeOnly.Parse(x.EndTime))) + .ToList(); + + if (rotatingShift.All(x => customizeWorkshopGroupSettings.CustomizeRotatingShifts.Any(y => x.Equals(y))) + && command.WorkshopShiftStatus == customizeWorkshopGroupSettings.WorkshopShiftStatus && + commandOffDayHashSet.SetEquals(groupOffDayHashSet) && + command.HolidayWork == customizeWorkshopGroupSettings.HolidayWork && command.BreakTime == customizeWorkshopGroupSettings.BreakTime) + { + isChanged = false; + } + + else + { + isChanged = true; + } + } + + #endregion + + var breakTime = new BreakTime(command.BreakTime.HasBreakTimeValue, command.BreakTime.BreakTimeValue); + + + + + var entity = new CustomizeWorkshopEmployeeSettings(customizeWorkshopGroupSettings.FridayPay, customizeWorkshopGroupSettings.OverTimePay, + customizeWorkshopGroupSettings.BaseYearsPay, customizeWorkshopGroupSettings.BonusesPay, customizeWorkshopGroupSettings.NightWorkPay, customizeWorkshopGroupSettings.MarriedAllowance, + customizeWorkshopGroupSettings.ShiftPay, customizeWorkshopGroupSettings.FamilyAllowance, customizeWorkshopGroupSettings.LeavePay, customizeWorkshopGroupSettings.InsuranceDeduction, customizeWorkshopGroupSettings.FineAbsenceDeduction, + customizeWorkshopGroupSettings.LateToWork, customizeWorkshopGroupSettings.EarlyExit, command.EmployeeIds.First(), command.WorkshopId, customizeWorkshopGroupSettings.Salary, command.GroupId, + shiftCollection, command.HolidayWork, command.IrregularShift, command.WorkshopShiftStatus, breakTime, command.LeavePermittedDays, rotatingShift, customizeWorkshopGroupSettings.WeeklyOffDays); + + _customizeWorkshopEmployeeSettingsRepository.Create(entity); + + entity.SimpleEdit(shiftCollection, command.IrregularShift, command.WorkshopShiftStatus, command.BreakTime, isChanged, command.HolidayWork, rotatingShift, customizeWorkshopGroupSettings.WeeklyOffDays.ToList()); + + _customizeWorkshopGroupSettingsRepository.SaveChanges(); + return op.Succcedded(); + + + + + } + + public OperationResult EditWorkshopSettingShifts(List shiftViewModels, long customizeWorkshopSettingsId, + WorkshopShiftStatus workshopShiftStatus, HolidayWork holidayWork, List weeklyOffDays) + { + OperationResult op = new OperationResult(); + var entity = _customizeWorkshopSettingsRepository.Get(customizeWorkshopSettingsId); + if (entity == null) + return op.Failed("چنین آیتمی وجود ندارد"); + + //تبدیل شیفت های ویو مدل به انتیتی + List shiftCollection = []; + + #region Validation + if (workshopShiftStatus == WorkshopShiftStatus.Regular) + { + try + { + shiftCollection = + shiftViewModels.Select(x => + { + var placement = x.Placement switch + { + ShiftPlacement.First => "اول", + ShiftPlacement.Second => "دوم", + ShiftPlacement.Third => "سوم", + _ => throw new ArgumentOutOfRangeException() + }; + if (!TimeOnly.TryParseExact(x.StartTime, "HH:mm", out TimeOnly start)) + throw new InvalidDataException($"فرمت شروع نوبت{placement}نادرست است"); + if (!TimeOnly.TryParseExact(x.EndTime, "HH:mm", out TimeOnly end)) + throw new InvalidDataException($"فرمت پایان نوبت{placement}نادرست است"); + + + return new CustomizeWorkshopSettingsShift(start, end, x.Placement); + + }).ToList(); + } + catch (InvalidDataException e) + { + + return op.Failed(e.Message); + } + + DateTime day = DateTime.Now; + DateTime previousEnd = new DateTime(); + var finalShiftList = new List<(DateTime start, DateTime end, ShiftPlacement placement)>(); + + shiftCollection = shiftCollection.OrderBy(x => x.Placement).ToList(); + + foreach (var shift in shiftCollection) + { + (DateTime start, DateTime end, ShiftPlacement placement) newShift = + new() + { + placement = shift.Placement, + start = new DateTime(DateOnly.FromDateTime(day), shift.StartTime), + end = new DateTime(DateOnly.FromDateTime(day), shift.EndTime) + + + }; + + if (previousEnd != new DateTime()) + { + if (newShift.start == previousEnd) + { + return op.Failed("در شیفت منظم پایان شیفت نمیتواند با شروع شیفت بعدی برابر باشد"); + } + + if (newShift.start <= previousEnd) + { + newShift.start = newShift.start.AddDays(1); + } + } + while (newShift.start >= newShift.end) + { + newShift.end = newShift.end.AddDays(1); + } + finalShiftList.Add(newShift); + previousEnd = newShift.end; + } + + var firstShiftStart = finalShiftList.FirstOrDefault(x => x.placement == ShiftPlacement.First).start; + var lastShiftEnd = finalShiftList.OrderByDescending(x => x.placement).FirstOrDefault().end; + if (firstShiftStart.AddDays(1) < lastShiftEnd) + return op.Failed("بازه زمانی کارگاه نامعتبر است"); + var total = finalShiftList.Sum(x => (x.end - x.start).TotalHours); + if (total >= 24) + { + return op.Failed("بازه زمانی کارگاه نمیتواند بیشتر از 24 ساعت باشد"); + } + } + + #endregion + + var offDays = weeklyOffDays.Select(x => new WeeklyOffDay(x)).ToList(); + + using var transActionScope = new TransactionScope(); + entity.ChangeWorkshopShifts(shiftCollection, workshopShiftStatus, holidayWork, offDays); + + + //op = ChangeAllGroupsShiftsWithEmployees(entity, replaceChangedGroups); + //if (!op.IsSuccedded) + //{ + // return op; + //} + _customizeWorkshopSettingsRepository.SaveChanges(); + + if (!(_customizeWorkshopGroupSettingsRepository.Exists(x => x.CustomizeWorkshopSettingId == entity.id && x.MainGroup)) && entity.WorkshopShiftStatus == WorkshopShiftStatus.Regular) + { + var operationResult = CreateGeneralGroup(entity); + if (!operationResult.IsSuccedded) + return operationResult; + } + transActionScope.Complete(); + return op.Succcedded(); + } + public OperationResult EditSimpleRollCallGroupSetting(EditCustomizeWorkshopGroupSettings command, + List reCalculateCommand) + { + OperationResult op = new(); + + #region Validation + + if (string.IsNullOrWhiteSpace(command.Name)) + return op.Failed("لطفا نام گروه را وارد کنید"); + + if (!_customizeWorkshopGroupSettingsRepository.Exists(x => x.id == command.Id)) + return op.Failed("چنین ساعت کاری برای گروه وجود ندارد"); + + #endregion + + + var entity = _customizeWorkshopGroupSettingsRepository.GetWithEmployees(command.Id); + + var workshopSettings = _customizeWorkshopSettingsRepository.Get(entity.CustomizeWorkshopSettingId); + + //var employeeIds = command.IsShiftChanged ? entity.CustomizeWorkshopEmployeeSettingsCollection + // .Select(x => x.id).ToList() : entity.CustomizeWorkshopEmployeeSettingsCollection.Where(x => !x.IsShiftChanged) + // .Select(x => x.id).ToList(); + + + var groupSettingsShifts = new List(); + ICollection rotatingShift = []; + bool isChanged; + + var commandOffDayHashSet = command.OffDayOfWeeks.ToHashSet(); + var workshopOffDayHashSet = workshopSettings.WeeklyOffDays.Select(x => x.DayOfWeek).ToHashSet(); + + if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular) + { + + groupSettingsShifts = command.ShiftViewModel.Select(x => + { + if (!TimeOnly.TryParseExact(x.StartTime, "HH:mm", out TimeOnly start)) + throw new InvalidDataException(); + if (!TimeOnly.TryParseExact(x.EndTime, "HH:mm", out TimeOnly end)) + throw new InvalidDataException(); + + return new CustomizeWorkshopGroupSettingsShift(start, end, x.Placement); + + }).ToList(); + + if (groupSettingsShifts.All(x => workshopSettings.CustomizeWorkshopSettingsShifts.Any(y => x.Equals(y))) + && command.WorkshopShiftStatus == workshopSettings.WorkshopShiftStatus && commandOffDayHashSet.SetEquals(workshopOffDayHashSet) && + command.HolidayWork == workshopSettings.HolidayWork && + command.BreakTime == workshopSettings.BreakTime) + { + isChanged = false; + } + else + { + isChanged = true; + } + } + else if (command.WorkshopShiftStatus == WorkshopShiftStatus.Irregular) + { + var irregularShiftStartTime = new DateTime(DateOnly.MinValue, command.IrregularShift.StartTime); + + var irregularShiftEndTime = new DateTime(DateOnly.MinValue, command.IrregularShift.EndTime); + + if (irregularShiftEndTime < irregularShiftStartTime) + { + irregularShiftEndTime = irregularShiftEndTime.AddDays(1); + } + + switch (command.IrregularShift.WorkshopIrregularShifts) + { + case WorkshopIrregularShifts.TwelveThirtySix: + + if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) + { + return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); + } + break; + case WorkshopIrregularShifts.TwelveTwentyFour: + if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) + { + return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); + } + break; + } + if (command.WorkshopShiftStatus == workshopSettings.WorkshopShiftStatus && command.BreakTime == workshopSettings.BreakTime + && commandOffDayHashSet.SetEquals(workshopOffDayHashSet) && + command.HolidayWork == workshopSettings.HolidayWork) + { + isChanged = false; + } + else + { + isChanged = true; + } + } + else + { + if (command.CustomizeRotatingShiftsViewModels.Count == 1) + { + return op.Failed("در نوع گردشی میبایست بیشتر از یک شیفت تعریف کنید"); + } + + rotatingShift = command.CustomizeRotatingShiftsViewModels + .Select(x => new CustomizeRotatingShift(TimeOnly.Parse(x.StartTime), TimeOnly.Parse(x.EndTime))).ToList(); + if (command.WorkshopShiftStatus == workshopSettings.WorkshopShiftStatus && command.BreakTime == workshopSettings.BreakTime + && commandOffDayHashSet.SetEquals(workshopOffDayHashSet) && + command.HolidayWork == workshopSettings.HolidayWork) + { + isChanged = false; + } + else + { + isChanged = true; + } + } + + var breakTime = new BreakTime(command.BreakTime.HasBreakTimeValue, command.BreakTime.BreakTimeValue); + + var employeeSettings = entity.CustomizeWorkshopEmployeeSettingsCollection; + + var employeeSettingIds = employeeSettings.Select(x => x.EmployeeId).ToList(); + + reCalculateCommand = reCalculateCommand.Where(x => employeeSettingIds.Contains(x.EmployeeId)).ToList(); + + var selectedEmployeesIds = reCalculateCommand.Select(x => x.EmployeeId).ToList(); + + var notSelectedEmployeeSettings = employeeSettings.Where(x => !selectedEmployeesIds.Contains(x.EmployeeId)); + + var weeklyOffDays = command.OffDayOfWeeks.Select(x => new WeeklyOffDay(x)).ToList(); + using var transaction = new TransactionScope(); + + entity.EditSimpleAndOverwriteOnEmployee(command.Name, selectedEmployeesIds, groupSettingsShifts, command.WorkshopShiftStatus, + command.IrregularShift, breakTime, isChanged, command.HolidayWork, rotatingShift, weeklyOffDays); + if (reCalculateCommand.Count > 0) + { + var result = _rollCallApplication.RecalculateValues(workshopSettings.WorkshopId, reCalculateCommand); + + if (result.IsSuccedded == false) + { + return result; + } + } + + foreach (var notSelectedEmployeeSetting in notSelectedEmployeeSettings) + { + notSelectedEmployeeSetting.UpdateIsShiftChange(); + } + + _customizeWorkshopGroupSettingsRepository.SaveChanges(); + + transaction.Complete(); + return op.Succcedded(); + } + public OperationResult EditSimpleRollCallEmployeeSetting(EditCustomizeEmployeeSettings command, + List reCalculateCommand) + { + OperationResult op = new(); + + var entity = _customizeWorkshopEmployeeSettingsRepository.Get(command.Id); + + #region Validation + + if (entity == null) + return op.Failed("چنین پرسنلی وجود ندارد"); + + #endregion + + var groupSettings = + _customizeWorkshopGroupSettingsRepository.GetIncludeWorkshopSettings( + entity.CustomizeWorkshopGroupSettingId); + + List employeesShifts = []; + + ICollection rotatingShift = []; + bool isChanged = false; + + var commandOffDayHashSet = command.WeeklyOffDays.ToHashSet(); + var groupOffDayHashSet = groupSettings.WeeklyOffDays.Select(x => x.DayOfWeek).ToHashSet(); + + if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular) + { + + #region Validation + if (command.ShiftViewModel.Any(x => string.IsNullOrWhiteSpace(x.StartTime) || string.IsNullOrWhiteSpace(x.EndTime))) + return op.Failed("ساعات کاری شروع و پایان نمیتواند خالی باشد"); + try + { + employeesShifts = + command.ShiftViewModel.Select(x => + { + var placement = x.Placement switch + { + ShiftPlacement.First => "اول", + ShiftPlacement.Second => "دوم", + ShiftPlacement.Third => "سوم" + }; + if (!TimeOnly.TryParseExact(x.StartTime, "HH:mm", out TimeOnly start)) + throw new InvalidDataException($"فرمت شروع نوبت{placement}نادرست است"); + if (!TimeOnly.TryParseExact(x.EndTime, "HH:mm", out TimeOnly end)) + throw new InvalidDataException($"فرمت پایان نوبت{placement}نادرست است"); + + + return new CustomizeWorkshopEmployeeSettingsShift(start, end, x.Placement); + + }).ToList(); + } + catch (InvalidDataException e) + { + + return op.Failed(e.Message); + } + if (command.WorkshopId < 1) + { + return op.Failed("خطای سیستمی"); + } + DateTime day = DateTime.Now; + DateTime previousEnd = new DateTime(); + var finalShiftList = new List<(DateTime start, DateTime end, ShiftPlacement placement)>(); + + employeesShifts = employeesShifts.OrderBy(x => x.Placement).ToList(); + + foreach (var shift in employeesShifts) + { + (DateTime start, DateTime end, ShiftPlacement placement) newShift = + new() + { + placement = shift.Placement, + start = new DateTime(DateOnly.FromDateTime(day), shift.StartTime), + end = new DateTime(DateOnly.FromDateTime(day), shift.EndTime) + + + }; + + if (previousEnd != new DateTime()) + { + if (newShift.start == previousEnd) + { + return op.Failed("در شیفت منظم پایان شیفت نمیتواند با شروع شیفت بعدی برابر باشد"); + } + + if (newShift.start <= previousEnd) + { + newShift.start = newShift.start.AddDays(1); + } + } + while (newShift.start >= newShift.end) + { + newShift.end = newShift.end.AddDays(1); + } + finalShiftList.Add(newShift); + previousEnd = newShift.end; + } + + var firstShiftStart = finalShiftList.FirstOrDefault(x => x.placement == ShiftPlacement.First).start; + var lastShiftEnd = finalShiftList.OrderByDescending(x => x.placement).FirstOrDefault().end; + if (firstShiftStart.AddDays(1) < lastShiftEnd) + return op.Failed("بازه زمانی کارگاه نامعتبر است"); + var total = finalShiftList.Sum(x => (x.end - x.start).TotalHours); + if (total >= 24) + { + return op.Failed("بازه زمانی کارگاه نمیتواند بیشتر از 24 ساعت باشد"); + } + #endregion + + + if (employeesShifts.All(x => groupSettings.CustomizeWorkshopGroupSettingsShifts.Any(y => x.Equals(y))) + && command.WorkshopShiftStatus == groupSettings.WorkshopShiftStatus && commandOffDayHashSet.SetEquals(groupOffDayHashSet) && + command.HolidayWork == groupSettings.HolidayWork && command.BreakTime == groupSettings.BreakTime) + { + isChanged = false; + } + + else + { + isChanged = true; + } + } + else if (command.WorkshopShiftStatus == WorkshopShiftStatus.Irregular) + { + var irregularShiftStartTime = new DateTime(DateOnly.MinValue, command.IrregularShift.StartTime); + + var irregularShiftEndTime = new DateTime(DateOnly.MinValue, command.IrregularShift.EndTime); + + if (irregularShiftEndTime < irregularShiftStartTime) + { + irregularShiftEndTime = irregularShiftEndTime.AddDays(1); + } + + switch (command.IrregularShift.WorkshopIrregularShifts) + { + case WorkshopIrregularShifts.TwelveThirtySix: + + if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) + { + return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); + } + break; + case WorkshopIrregularShifts.TwelveTwentyFour: + if ((irregularShiftEndTime - irregularShiftStartTime).TotalHours > 12) + { + return op.Failed("ساعت کاری شما نمیتواند بیشتر از 12 ساعت باشد"); + } + break; + } + + if (command.WorkshopShiftStatus == groupSettings.WorkshopShiftStatus && command.BreakTime == groupSettings.BreakTime && + command.IrregularShift == groupSettings.IrregularShift && commandOffDayHashSet.SetEquals(groupOffDayHashSet) && + command.HolidayWork == groupSettings.HolidayWork) + { + isChanged = false; + } + else + { + isChanged = true; + } + } + else + { + if (command.CustomizeRotatingShifts.Count == 1) + { + return op.Failed("در نوع گردشی میبایست بیشتر از یک شیفت تعریف کنید"); + } + + rotatingShift = command.CustomizeRotatingShifts + .Select(x => new CustomizeRotatingShift(TimeOnly.Parse(x.StartTime), TimeOnly.Parse(x.EndTime))).ToList(); + + if (rotatingShift.All(x => groupSettings.CustomizeRotatingShifts.Any(y => x.Equals(y))) + && command.WorkshopShiftStatus == groupSettings.WorkshopShiftStatus && commandOffDayHashSet.SetEquals(groupOffDayHashSet) && + command.HolidayWork == groupSettings.HolidayWork && command.BreakTime == groupSettings.BreakTime) + { + isChanged = false; + } + + else + { + isChanged = true; + } + + } + + var weeklyOffDays = command.WeeklyOffDays.Select(x => new WeeklyOffDay(x)).ToList(); + using var transaction = new TransactionScope(); + + entity.SimpleEdit(employeesShifts, command.IrregularShift, command.WorkshopShiftStatus, command.BreakTime, + isChanged, command.HolidayWork, rotatingShift, weeklyOffDays); + + _customizeWorkshopGroupSettingsRepository.SaveChanges(); + if (reCalculateCommand.Count > 0) + { + var result = _rollCallApplication.RecalculateValues(command.WorkshopId, reCalculateCommand); + + if (result.IsSuccedded == false) + { + return result; + } + } + + + transaction.Complete(); + + return op.Succcedded(); + } + + //Remove the Employee From the Group Settings + public OperationResult RemoveEmployeeFromRollCallWorkshopGroup(long employeeId, long groupId, long workshopId) + { + OperationResult op = new(); + var groupEntity = _customizeWorkshopGroupSettingsRepository.GetWithEmployees(groupId); + + #region Validation + + if (groupEntity == null) + { + return op.Failed("چنین گروهی وجود ندارد"); + } + + #endregion + + using var transaction = new TransactionScope(); + groupEntity.RemoveEmployeeFromGroup(employeeId); + _customizeWorkshopGroupSettingsRepository.SaveChanges(); + var res = AddEmployeeToMainGroupSettings(workshopId, employeeId); + if (res.IsSuccedded) + { + transaction.Complete(); + return op.Succcedded(); + + } + + return res; + + } + + public OperationResult AddEmployeeToMainGroupSettings(long workshopId, long employeeId) + { + var op = new OperationResult(); + + var mainGroup = _customizeWorkshopGroupSettingsRepository.GetWorkshopMainGroup(workshopId); + if (mainGroup == null) + return op.Succcedded(); + mainGroup.AddEmployeeSettingToGroupWithGroupData(employeeId, workshopId); + + _customizeWorkshopEmployeeSettingsRepository.SaveChanges(); + + return op.Succcedded(); + } + + #endregion + + #region CustomizeCheckoutSettings + public OperationResult CreateEmployeeSettings(CreateCustomizeEmployeeSettings command) + { + OperationResult op = new(); + CustomizeWorkshopGroupSettings mainGroup = new CustomizeWorkshopGroupSettings(); + + #region Validation + + //if (!_customizeWorkshopGroupSettingsRepository.Exists(x => x.id == command.GroupId)) + // return op.Failed("چنین گروهی وجود ندارد"); + + if (!_employeeRepository.ExistsIgnoreQueryFilter(x => command.EmployeeIds.Any(y => x.id == y))) + return op.Failed("چنین پرسنلی وجود ندارد"); + + #endregion + + var groupData = _customizeWorkshopGroupSettingsRepository.GetIncludeWorkshopSettings(command.GroupId); + if (groupData == null) + return op.Failed("خطای سیستمی"); + var workshopSettings = _customizeWorkshopSettingsRepository.Get(groupData.CustomizeWorkshopSettingId); + var employeesInMainGroup = new List(); + + mainGroup = _customizeWorkshopGroupSettingsRepository.GetWorkshopMainGroup(command.WorkshopId); + + if (workshopSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular) + { + if (mainGroup != null) + { + + employeesInMainGroup = _customizeWorkshopEmployeeSettingsRepository.GetBy(mainGroup.id); + if (_customizeWorkshopEmployeeSettingsRepository.Exists(x => x.WorkshopId == command.WorkshopId + && command.EmployeeIds.Contains(x.EmployeeId) && x.CustomizeWorkshopGroupSettingId != mainGroup.id)) + { + return op.Failed("این پرسنل در گروه دیگری وجود دارد"); + } + } + else + { + if (_customizeWorkshopEmployeeSettingsRepository.Exists(x => x.WorkshopId == command.WorkshopId + && command.EmployeeIds.Contains(x.EmployeeId))) + { + return op.Failed("این پرسنل در گروه دیگری وجود دارد"); + } + } + } + else + { + if (mainGroup != null) + { + employeesInMainGroup = _customizeWorkshopEmployeeSettingsRepository.GetBy(mainGroup.id); + if (_customizeWorkshopEmployeeSettingsRepository.Exists(x => x.WorkshopId == command.WorkshopId + && command.EmployeeIds.Contains( + x.EmployeeId) && + x.CustomizeWorkshopGroupSettingId != + mainGroup.id)) + { + return op.Failed("این پرسنل در گروه دیگری وجود دارد"); + } + } + else + { + if (_customizeWorkshopEmployeeSettingsRepository.Exists(x => x.WorkshopId == command.WorkshopId + && command.EmployeeIds.Contains(x.EmployeeId))) + { + return op.Failed("این پرسنل در گروه دیگری وجود دارد"); + } + } + } + + + + var shifts = groupData.CustomizeWorkshopGroupSettingsShifts + .Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(); + + + foreach (var id in command.EmployeeIds) + { + var employeeSettings = employeesInMainGroup.FirstOrDefault(x => x.EmployeeId == id); + if (employeeSettings != null) + { + _customizeWorkshopEmployeeSettingsRepository.Remove(employeeSettings.id); + } + var entity = new CustomizeWorkshopEmployeeSettings( + new(groupData.FridayPay.FridayPayType, groupData.FridayPay.Value), + new(groupData.OverTimePay.OverTimePayType, groupData.OverTimePay.Value), + new(groupData.BaseYearsPay.BaseYearsPayType, groupData.BaseYearsPay.Value, groupData.BaseYearsPay.PaymentType), + new(groupData.BonusesPay.BonusesPayType, groupData.BonusesPay.Value, groupData.BonusesPay.PaymentType), + new(groupData.NightWorkPay.NightWorkingType, groupData.NightWorkPay.Value), + new(groupData.MarriedAllowance.MarriedAllowanceType, groupData.MarriedAllowance.Value), + new(groupData.ShiftPay.ShiftType, groupData.ShiftPay.ShiftPayType, groupData.ShiftPay.Value), + new(groupData.FamilyAllowance.FamilyAllowanceType, groupData.FamilyAllowance.Value), + new(groupData.LeavePay.LeavePayType, groupData.LeavePay.Value), + new(groupData.InsuranceDeduction.InsuranceDeductionType, groupData.InsuranceDeduction.Value), + new(groupData.FineAbsenceDeduction.FineAbsenceDeductionType, groupData.FineAbsenceDeduction.Value, + groupData.FineAbsenceDeduction.FineAbsenceDayOfWeekCollection + .Select(x => new FineAbsenceDayOfWeek(x.DayOfWeek)).ToList()), + new(groupData.LateToWork.LateToWorkType, + groupData.LateToWork.LateToWorkTimeFines.Select(x => new LateToWorkTimeFine(x.Minute, x.FineMoney)) + .ToList(), groupData.LateToWork.Value), + new(groupData.EarlyExit.EarlyExitType, + groupData.EarlyExit.EarlyExitTimeFines.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney)) + .ToList(), groupData.EarlyExit.Value), + id, + groupData.CustomizeWorkshopSettings.WorkshopId, + groupData.Salary, + groupData.id, + shifts.Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)) + .ToList(), + groupData.HolidayWork, + groupData.IrregularShift, + groupData.WorkshopShiftStatus, + new(groupData.BreakTime.HasBreakTimeValue, groupData.BreakTime.BreakTimeValue), + command.LeavePermittedDays, + groupData.CustomizeRotatingShifts.Select(x => new CustomizeRotatingShift(x.StartTime, x.EndTime)).ToList(), + groupData.WeeklyOffDays + ); + + _customizeWorkshopEmployeeSettingsRepository.Create(entity); + + } + _customizeWorkshopEmployeeSettingsRepository.SaveChanges(); + + + return op.Succcedded(); + } + + //Edit the Workshop Settings Data + public OperationResult EditWorkshopSetting(EditCustomizeWorkshopSettings command, bool replaceInAllGroups) + { + OperationResult op = new(); + + #region Validation + + if (!_customizeWorkshopSettingsRepository.Exists(x => x.id == command.Id)) + return op.Failed("خطای سیستمی"); + + #endregion + + + var entity = _customizeWorkshopSettingsRepository.Get(command.Id); + if (entity == null) + return op.Failed("چنین آیتمی وجود ندارد"); + + + FridayPay fridayPay = new(command.FridayPay.FridayPayType, command.FridayPay.Value); + OverTimePay overTimePay = new(command.OverTimePay.OverTimePayType, command.OverTimePay.Value); + BaseYearsPay baseYearsPay = new(command.BaseYearsPay.BaseYearsPayType, command.BaseYearsPay.Value, command.BaseYearsPay.PaymentType); + BonusesPay bonusesPay = new(command.BonusesPay.BonusesPayType, command.BonusesPay.Value, command.BonusesPay.PaymentType); + NightWorkPay nightWorkPay = new(command.NightWorkPay.NightWorkingType, command.NightWorkPay.Value); + MarriedAllowance marriedAllowance = new(command.MarriedAllowance.MarriedAllowanceType, command.MarriedAllowance.Value); + ShiftPay shiftPay = new(ShiftType.None, ShiftPayType.None, 0); + FamilyAllowance familyAllowance = new(command.FamilyAllowance.FamilyAllowanceType, command.FamilyAllowance.Value); + LeavePay leavePay = new(command.LeavePay.LeavePayType, command.LeavePay.Value); + InsuranceDeduction insuranceDeduction = new(command.InsuranceDeduction.InsuranceDeductionType, command.InsuranceDeduction.Value); + FineAbsenceDeduction fineAbsenceDeduction = new( + command.FineAbsenceDeduction.FineAbsenceDeductionType, + command.FineAbsenceDeduction.Value, + command.FineAbsenceDeduction.FineAbsenceDayOfWeekViewModels?.Select(x => new FineAbsenceDayOfWeek(x.DayOfWeek)).ToList() ?? new List() + ); + LateToWork lateToWork = new( + command.LateToWork.LateToWorkType, + command.LateToWork.LateToWorkTimeFinesVewModels?.Select(x => new LateToWorkTimeFine(x.Minute, x.FineMoney)) + .ToList() ?? new List() + , command.LateToWork.Value + ); + + EarlyExit earlyExit = new(command.EarlyExit.EarlyExitType, + command.EarlyExit.EarlyExitTimeFinesViewModels?.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney)).ToList() ?? new List() + , command.EarlyExit.Value); + + + var groups = _customizeWorkshopGroupSettingsRepository.GetAllGroupsIncludeEmployeeSettingsByWorkshopSettingsId(entity.id); + + using (var transaction = new TransactionScope()) + { + + try + { + entity.Edit(fridayPay, overTimePay, baseYearsPay, bonusesPay, nightWorkPay, marriedAllowance, shiftPay, + familyAllowance, leavePay, insuranceDeduction, + fineAbsenceDeduction, lateToWork, earlyExit, command.HolidayWork, + command.BonusesPaysInEndOfMonth, command.LeavePermittedDays, command.BaseYearsPayInEndOfYear, + command.OverTimeThresholdMinute); + + _customizeWorkshopSettingsRepository.SaveChanges(); + var editViewModel = new EditCustomizeWorkshopGroupSettings() + { + + }; + OperationResult result = new OperationResult(); + if (entity.WorkshopShiftStatus == WorkshopShiftStatus.Regular) + { + //foreach (var group in groups) + //{ + // var employeeIds = group.CustomizeWorkshopEmployeeSettingsCollection.Select(x => x.EmployeeId) + // .ToList(); + // group.EditAndOverwriteOnEmployees(group.GroupName,group.Salary,employeeIds,group.FridayPay,group.OverTimePay,group.BaseYearsPay,group.BonusesPay, + // group.ShiftPay,group.NightWorkPay,group.MarriedAllowance,group.FamilyAllowance,group.LeavePay,group.InsuranceDeduction, + // group.FineAbsenceDeduction,); + //} + } + else + { + result = result.Succcedded(); + } + + ChangeAllSettingsGroups(entity, replaceInAllGroups); + + result.Succcedded(); + + + transaction.Complete(); + + } + catch + { + // ignored + } + } + + return string.IsNullOrWhiteSpace(op.Message) ? op.Succcedded() : op; + } + + + + //Edit the Group Settings Data + public OperationResult EditRollCallGroupSetting(EditCustomizeWorkshopGroupSettings command) + { + OperationResult op = new(); + + #region Validation + + if (string.IsNullOrWhiteSpace(command.Name)) + return op.Failed("لطفا نام گروه را وارد کنید"); + + if (string.IsNullOrWhiteSpace(command.Salary)) + return op.Failed("لطفا حقوق مورد نظر خود را وارد کنید"); + + if (!_customizeWorkshopGroupSettingsRepository.Exists(x => x.id == command.Id)) + return op.Failed("چنین ساعت کاری برای گروه وجود ندارد"); + + #endregion + + + var entity = _customizeWorkshopGroupSettingsRepository.GetWithEmployees(command.Id); + + FridayPay fridayPay = new(command.FridayPay.FridayPayType, command.FridayPay.Value); + OverTimePay overTimePay = new(command.OverTimePay.OverTimePayType, command.OverTimePay.Value); + BaseYearsPay baseYearsPay = new(command.BaseYearsPay.BaseYearsPayType, command.BaseYearsPay.Value, command.BaseYearsPay.PaymentType); + BonusesPay bonusesPay = new(command.BonusesPay.BonusesPayType, command.BonusesPay.Value, command.BonusesPay.PaymentType); + NightWorkPay nightWorkPay = new(command.NightWorkPay.NightWorkingType, command.NightWorkPay.Value); + MarriedAllowance marriedAllowance = new(command.MarriedAllowance.MarriedAllowanceType, command.MarriedAllowance.Value); + //ShiftPay shiftPay = new(command.ShiftPay.ShiftType, command.ShiftPay.ShiftPayType, command.ShiftPay.Value); + ShiftPay shiftPay = new(ShiftType.None, ShiftPayType.None, 0); + FamilyAllowance familyAllowance = new(command.FamilyAllowance.FamilyAllowanceType, command.FamilyAllowance.Value); + LeavePay leavePay = new(command.LeavePay.LeavePayType, command.LeavePay.Value); + InsuranceDeduction insuranceDeduction = new(command.InsuranceDeduction.InsuranceDeductionType, command.InsuranceDeduction.Value); + FineAbsenceDeduction fineAbsenceDeduction = new( + command.FineAbsenceDeduction.FineAbsenceDeductionType, command.FineAbsenceDeduction.Value, + command.FineAbsenceDeduction.FineAbsenceDayOfWeekViewModels + .Select(x => new FineAbsenceDayOfWeek(x.DayOfWeek)).ToList() + ); + LateToWork lateToWork = new( + command.LateToWork.LateToWorkType, + command.LateToWork.LateToWorkTimeFinesVewModels.Select(x => new LateToWorkTimeFine(x.Minute, x.FineMoney)) + .ToList(), command.LateToWork.Value + ); + EarlyExit earlyExit = new(command.EarlyExit.EarlyExitType, + command.EarlyExit.EarlyExitTimeFinesViewModels.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney)) + .ToList(), command.EarlyExit.Value); + + double salary = command.Salary.MoneyToDouble(); + + + bool isChanged; + if (fridayPay == entity.FridayPay && overTimePay == entity.OverTimePay && baseYearsPay == entity.BaseYearsPay && bonusesPay == entity.BonusesPay + && shiftPay == entity.ShiftPay && nightWorkPay == entity.NightWorkPay && marriedAllowance == entity.MarriedAllowance + && familyAllowance == entity.FamilyAllowance && leavePay == entity.LeavePay && insuranceDeduction == entity.InsuranceDeduction + && fineAbsenceDeduction == entity.FineAbsenceDeduction && lateToWork == entity.LateToWork && earlyExit == entity.EarlyExit + && command.HolidayWork == entity.HolidayWork && command.IrregularShift == entity.IrregularShift && command.WorkshopShiftStatus == entity.WorkshopShiftStatus) + { + isChanged = false; + } + else + { + isChanged = true; + } + entity.EditAndOverwriteOnEmployees(command.Name, salary, command.EmployeeIds, fridayPay, overTimePay, + baseYearsPay, bonusesPay, shiftPay, nightWorkPay, marriedAllowance, familyAllowance, + leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork, earlyExit, command.HolidayWork, isChanged, command.LeavePermittedDays); + + _customizeWorkshopGroupSettingsRepository.SaveChanges(); + + return op.Succcedded(); + } + + //Edit the Employee settings and change the 'IsChanged' bool to true. + public OperationResult EditRollCallEmployeeSettings(EditCustomizeEmployeeSettings command) + { + OperationResult op = new(); + var entity = _customizeWorkshopEmployeeSettingsRepository.Get(command.Id); + + #region Validation + + if (entity == null) + return op.Failed("چنین پرسنلی وجود ندارد"); + + #endregion + + FridayPay fridayPay = new(command.FridayPay.FridayPayType, command.FridayPay.Value); + OverTimePay overTimePay = new(command.OverTimePay.OverTimePayType, command.OverTimePay.Value); + BaseYearsPay baseYearsPay = new(command.BaseYearsPay.BaseYearsPayType, command.BaseYearsPay.Value, command.BaseYearsPay.PaymentType); + BonusesPay bonusesPay = new(command.BonusesPay.BonusesPayType, command.BonusesPay.Value, command.BonusesPay.PaymentType); + NightWorkPay nightWorkPay = new(command.NightWorkPay.NightWorkingType, command.NightWorkPay.Value); + MarriedAllowance marriedAllowance = new(command.MarriedAllowance.MarriedAllowanceType, command.MarriedAllowance.Value); + // ShiftPay shiftPay = new(command.ShiftPay.ShiftType, command.ShiftPay.ShiftPayType, command.ShiftPay.Value); + ShiftPay shiftPay = new(ShiftType.None, ShiftPayType.None, 0); + FamilyAllowance familyAllowance = new(command.FamilyAllowance.FamilyAllowanceType, command.FamilyAllowance.Value); + LeavePay leavePay = new(command.LeavePay.LeavePayType, command.LeavePay.Value); + InsuranceDeduction insuranceDeduction = new(command.InsuranceDeduction.InsuranceDeductionType, command.InsuranceDeduction.Value); + FineAbsenceDeduction fineAbsenceDeduction = new( + command.FineAbsenceDeduction.FineAbsenceDeductionType, command.FineAbsenceDeduction.Value, + command.FineAbsenceDeduction.FineAbsenceDayOfWeekViewModels + .Select(x => new FineAbsenceDayOfWeek(x.DayOfWeek)).ToList() + ); + LateToWork lateToWork = new( + command.LateToWork.LateToWorkType, + command.LateToWork.LateToWorkTimeFinesVewModels.Select(x => new LateToWorkTimeFine(x.Minute, x.FineMoney)) + .ToList(), command.LateToWork.Value + ); + EarlyExit earlyExit = new(command.EarlyExit.EarlyExitType, + command.EarlyExit.EarlyExitTimeFinesViewModels.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney)) + .ToList(), command.EarlyExit.Value); + + + double salary = command.Salary.MoneyToDouble(); + + var commandOffDayHashSet = command.WeeklyOffDays.ToHashSet(); + var entityOffDayHashSet = entity.WeeklyOffDays.Select(x => x.DayOfWeek).ToHashSet(); + + bool isChanged; + if (fridayPay == entity.FridayPay && overTimePay == entity.OverTimePay && baseYearsPay == entity.BaseYearsPay && bonusesPay == entity.BonusesPay + && shiftPay == entity.ShiftPay && nightWorkPay == entity.NightWorkPay && marriedAllowance == entity.MarriedAllowance + && familyAllowance == entity.FamilyAllowance && leavePay == entity.LeavePay && insuranceDeduction == entity.InsuranceDeduction + && fineAbsenceDeduction == entity.FineAbsenceDeduction && lateToWork == entity.LateToWork && earlyExit == entity.EarlyExit && commandOffDayHashSet.SetEquals(entityOffDayHashSet) + && command.HolidayWork == entity.HolidayWork) + { + isChanged = false; + } + else + { + isChanged = true; + } + + //change employee data manually. It changes the 'IsChanged' property to true. + entity.EditEmployees(salary, fridayPay, overTimePay, baseYearsPay, + bonusesPay, nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, + insuranceDeduction, fineAbsenceDeduction, lateToWork, earlyExit, command.HolidayWork, command.IrregularShift, isChanged, command.LeavePermittedDays); + + + _customizeWorkshopEmployeeSettingsRepository.SaveChanges(); + return op.Succcedded(); + } + + public OperationResult RemoveGroupSettings(long groupSettingsId) + { + OperationResult op = new OperationResult(); + var entity = _customizeWorkshopGroupSettingsRepository.GetWithEmployees(groupSettingsId); + if (entity.CustomizeWorkshopEmployeeSettingsCollection.Any()) + return op.Failed("نمیتوانید گروهی که پرسنل در آن وجود دارد را حذف کنید"); + + _customizeWorkshopGroupSettingsRepository.Remove(entity.id); + return op.Succcedded(); + } + #endregion + + #region Queries + + + public List GetChangedEmployeeSettingsByGroupSettingsId(long groupSettingsId) + { + return _customizeWorkshopGroupSettingsRepository.GetShiftChangedEmployeeSettingsByGroupSettingsId( + groupSettingsId); + } + + + // It will Get the Workshop Settings with its groups and the employees of groups. + public CustomizeWorkshopSettingsViewModel GetWorkshopSettingsByWorkshopId(long workshopId, AuthViewModel auth) + { + + + #region Validation + + if (workshopId is < 1) + return new(); + + #endregion + + var record = _customizeWorkshopSettingsRepository.GetWorkshopSettingsByWorkshopId(workshopId, auth); + + return record; + } + + public CustomizeWorkshopEmployeeSettingsViewModel GetByEmployeeIdAndWorkshopIdIncludeGroupSettings(long workshopId, long employeeId) + { + var entity = + _customizeWorkshopEmployeeSettingsRepository.GetByEmployeeIdAndWorkshopIdIncludeGroupSettings(workshopId, employeeId); + if (entity == null) + return null; + + string employeeFullName = _employeeRepository.GetIgnoreQueryFilter(entity.EmployeeId).FullName; + return new CustomizeWorkshopEmployeeSettingsViewModel() + { + EmployeeId = entity.EmployeeId, + Id = entity.id, + IsSettingChanged = entity.IsSettingChanged, + IsShiftChanged = entity.IsShiftChanged, + Name = entity.CustomizeWorkshopGroupSettings.GroupName, + EmployeeFullName = employeeFullName, + Salary = entity.Salary, + BreakTime = entity.BreakTime, + WorkshopShiftStatus = entity.WorkshopShiftStatus, + IrregularShift = entity.IrregularShift, + RollCallWorkshopShifts = entity.CustomizeWorkshopEmployeeSettingsShifts.Select(x => + new CustomizeWorkshopShiftViewModel() + { + EndTime = x.EndTime.ToString("HH:mm"), + Placement = x.Placement, + StartTime = x.StartTime.ToString("HH:mm") + }).ToList(), + //FridayWork = entity.FridayWork, + HolidayWork = entity.HolidayWork, + WeeklyOffDays = entity.WeeklyOffDays.Select(x=>x.DayOfWeek).ToList(), + CustomizeRotatingShiftsViewModels = entity.CustomizeRotatingShifts.Select(x => new CustomizeRotatingShiftsViewModel() + { + StartTime = x.StartTime.ToString("HH:mm"), + EndTime = x.EndTime.ToString("HH:mm") + }).ToList() + + }; + } + + public List GetEmployeeSettingsByGroupSettingsId(long groupSettingsId) + { + + List result = _customizeWorkshopGroupSettingsRepository.GetEmployeeSettingsByGroupSettingsId(groupSettingsId); + + if (result == null) + return new(); + + return result; + + } + + public CustomizeWorkshopSettingsViewModel GetWorkshopIncludeGroupsByWorkshopId(long workshopId) + { + return _customizeWorkshopSettingsRepository.GetWorkshopIncludeGroupsByWorkshopId(workshopId); + } + + + public List GetEmployeesWithoutGroup(long rollCallWorkshopSettingId) + { + return _customizeWorkshopGroupSettingsRepository.GetEmployeesWithoutGroup(rollCallWorkshopSettingId); + } + public List GetEmployeesWithoutGroupByWorkshopId(long workshopId) + { + return _customizeWorkshopGroupSettingsRepository.GetEmployeesWithoutGroupByWorkshopId(workshopId); + } + + + + public CustomizeWorkshopSettingsViewModel GetWorkshopSettingsByWorkshopIdForAdmin(long workshopId) + { + return _customizeWorkshopSettingsRepository.GetWorkshopSettingsByWorkshopIdForAdmin(workshopId); + + } + public EditCustomizeWorkshopSettings GetWorkshopSettingsDetails(long workshopId) + { + return _customizeWorkshopSettingsRepository.GetWorkshopSettingsDetails(workshopId); + } + + public EditCustomizeWorkshopGroupSettings GetCustomizeWorkshopGroupSettingsDetails(long groupId) + { + return _customizeWorkshopGroupSettingsRepository.GetCustomizeWorkshopGroupSettingsDetails(groupId); + } + + public EditCustomizeWorkshopSettings GetSimpleWorkshopSettings(long workshopId) + { + return _customizeWorkshopSettingsRepository.GetSimpleWorkshopSettings(workshopId); + } + + public EditCustomizeEmployeeSettings GetCustomizeEmployeeSettingsDetails(long customizeEmployeeId) + { + return _customizeWorkshopEmployeeSettingsRepository.GetCustomizeEmployeeSettingsDetails(customizeEmployeeId); + } + + public List GetShiftChangesGroupAndEmployees(long customizeWorkshopSettingsId) + { + return _customizeWorkshopSettingsRepository.GetShiftChangesGroupAndEmployees(customizeWorkshopSettingsId); + } + + public List GetEmployeeSettingsByWorkshopId(long workshopId) + { + return _customizeWorkshopEmployeeSettingsRepository.GetEmployeeSettingsByWorkshopId(workshopId); + } + + public CustomizeWorkshopGroupSettingsViewModel GetEmployeesGroupSettingsByEmployeeId(long employeeId, long workshopId) + { + return _customizeWorkshopGroupSettingsRepository.GetEmployeesGroupSettingsByEmployeeId(employeeId, workshopId); + } + + public bool HasAnyEmployeeWithoutGroup(long workshopId) + { + return _customizeWorkshopGroupSettingsRepository.HasAnyEmployeeWithoutGroup(workshopId); + } + public OperationResult> ValidateReCalculateValueForGroupEdit(List commands, + long workshopId) + { + var operationResult = new OperationResult>(); + bool isSuccess = true; + List employeeIdsHasCheckout = []; + foreach (var command in commands) + { + var fromDateGr = command.FromDate.ToGeorgianDateTime(); + if (_checkoutRepository.Exists(x => x.WorkshopId == workshopId && x.EmployeeId == command.EmployeeId && fromDateGr <= x.ContractEnd)) + { + isSuccess = false; + employeeIdsHasCheckout.Add(command.EmployeeId); + } + + if (_customizeCheckoutRepository.Exists(x => x.WorkshopId == workshopId && x.EmployeeId == command.EmployeeId && fromDateGr <= x.ContractEnd)) + { + isSuccess = false; + employeeIdsHasCheckout.Add(command.EmployeeId); + } + + if (_customizeCheckoutTempRepository.Exists(x => x.WorkshopId == workshopId && x.EmployeeId == command.EmployeeId && fromDateGr <= x.ContractEnd)) + { + isSuccess = false; + employeeIdsHasCheckout.Add(command.EmployeeId); + } + } + + employeeIdsHasCheckout = employeeIdsHasCheckout.Distinct().ToList(); + return isSuccess ? + operationResult.Succcedded(employeeIdsHasCheckout) + : + operationResult.Failed("پرسنل هایی دارای فیش هستند لطفا نسبت به تعیین تکلیف این ها اقدام نمایید", employeeIdsHasCheckout); + } + public bool CheckEmployeeShiftHasChanged(EditCustomizeEmployeeSettings command) + { + return _customizeWorkshopEmployeeSettingsRepository.CheckEmployeeShiftHasChanged(command); + } + + private OperationResult CreateGeneralGroup(CustomizeWorkshopSettings entity) + { + var op = new OperationResult(); + + if (_customizeWorkshopGroupSettingsRepository.Exists(x => x.CustomizeWorkshopSettingId == entity.id && x.MainGroup)) + { + return op.Succcedded(); + } + + try + { + var shifts = + entity.CustomizeWorkshopSettingsShifts.Select(x => + new CustomizeWorkshopGroupSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(); + var irregularShift = new IrregularShift(new TimeOnly(), new TimeOnly(), WorkshopIrregularShifts.None); + + var customizeWorkshopGroupSettings = new CustomizeWorkshopGroupSettings().CreateMainGroup(entity.FridayPay, entity.OverTimePay, + entity.BaseYearsPay, entity.BonusesPay, entity.ShiftPay, entity.NightWorkPay, entity.MarriedAllowance, + entity.FamilyAllowance, entity.LeavePay, entity.InsuranceDeduction, entity.FineAbsenceDeduction, + entity.LateToWork, entity.EarlyExit, shifts, entity.HolidayWork, + irregularShift, [], entity.WorkshopShiftStatus, entity.id, new BreakTime(false, new TimeOnly()), entity.LeavePermittedDays); + + _customizeWorkshopGroupSettingsRepository.Create(customizeWorkshopGroupSettings); + + _customizeWorkshopGroupSettingsRepository.SaveChanges(); + + var employeesHasSettings = _customizeWorkshopEmployeeSettingsRepository + .GetEmployeeSettingNotInMainGroup(entity.WorkshopId).Select(x => x.EmployeeId); + + var rollCallEmployeeViewModels = _rollCallEmployeeApplication.GetByWorkshopId(entity.WorkshopId).Where(x => !employeesHasSettings.Contains(x.EmployeeId)); + + foreach (var rollCallEmployeeViewModel in rollCallEmployeeViewModels) + { + customizeWorkshopGroupSettings.AddEmployeeSettingToGroupWithGroupData( + rollCallEmployeeViewModel.EmployeeId, entity.WorkshopId); + } + _customizeWorkshopGroupSettingsRepository.SaveChanges(); + return op.Succcedded(); + } + catch (Exception e) + { + return op.Failed(e.Message); + } + + + } + + private OperationResult ChangeAllGroupsShiftsWithEmployees(CustomizeWorkshopSettings entity, bool replaceChangedGroups) + { + var op = new OperationResult(); + var groupSettings = _customizeWorkshopGroupSettingsRepository.GetAllGroupsIncludeEmployeeSettingsByWorkshopSettingsId(entity.id); + + if (!replaceChangedGroups) + { + groupSettings = groupSettings.Where(x => !x.IsShiftChange).ToList(); + } + + var groupShifts = entity.CustomizeWorkshopSettingsShifts + .Select(x => new CustomizeWorkshopGroupSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(); + + + + var irregularShift = new IrregularShift(new TimeOnly(), new TimeOnly(), WorkshopIrregularShifts.None); + foreach (var customizeWorkshopGroupSettings in groupSettings) + { + customizeWorkshopGroupSettings.EditSimpleAndOverwriteOnAllEmployees(customizeWorkshopGroupSettings.GroupName, + groupShifts, entity.WorkshopShiftStatus, irregularShift, new BreakTime(false, new TimeOnly()), + false, entity.HolidayWork, [], []); + } + _customizeWorkshopGroupSettingsRepository.SaveChanges(); + return op.Succcedded(); + } + private void ChangeAllSettingsGroups(CustomizeWorkshopSettings customizeWorkshopSettings, bool replaceInAllGroups) + { + var op = new OperationResult(); + var groupSettings = _customizeWorkshopGroupSettingsRepository.GetAllGroupsIncludeEmployeeSettingsByWorkshopSettingsId(customizeWorkshopSettings.id); + + if (!replaceInAllGroups) + { + groupSettings = groupSettings.Where(x => !x.IsSettingChange).ToList(); + } + + + + foreach (var groupSetting in groupSettings) + { + groupSetting.EditAndOverwriteOnAllEmployees(groupSetting.GroupName, groupSetting.Salary, + customizeWorkshopSettings.FridayPay, + customizeWorkshopSettings.OverTimePay, customizeWorkshopSettings.BaseYearsPay, + customizeWorkshopSettings.BonusesPay, customizeWorkshopSettings.ShiftPay, + customizeWorkshopSettings.NightWorkPay, customizeWorkshopSettings.MarriedAllowance, + customizeWorkshopSettings.FamilyAllowance, customizeWorkshopSettings.LeavePay, + customizeWorkshopSettings.InsuranceDeduction, customizeWorkshopSettings.FineAbsenceDeduction, + customizeWorkshopSettings.LateToWork, customizeWorkshopSettings.EarlyExit, customizeWorkshopSettings.HolidayWork, replaceInAllGroups, + customizeWorkshopSettings.LeavePermittedDays); + } + _customizeWorkshopSettingsRepository.SaveChanges(); + } + + #endregion } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/CustomizeWorkshopEmployeeSettingsRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeWorkshopEmployeeSettingsRepository.cs index ad761f28..34cd8bee 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeWorkshopEmployeeSettingsRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeWorkshopEmployeeSettingsRepository.cs @@ -26,7 +26,6 @@ public class CustomizeWorkshopEmployeeSettingsRepository(CompanyContext companyC return new(); return new EditCustomizeEmployeeSettings() { - FridayWork = entity.FridayWork, FridayPay = new() { FridayPayType = entity.FridayPay.FridayPayType, Value = entity.FridayPay.Value }, LateToWork = new() { diff --git a/CompanyManagment.EFCore/Repository/CustomizeWorkshopGroupSettingsRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeWorkshopGroupSettingsRepository.cs index a986ba2c..462284ff 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeWorkshopGroupSettingsRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeWorkshopGroupSettingsRepository.cs @@ -265,7 +265,7 @@ public class CustomizeWorkshopGroupSettingsRepository(CompanyContext companyCont var entity = _companyContext.CustomizeWorkshopGroupSettings.AsSplitQuery().FirstOrDefault(x => x.id == groupId); return new EditCustomizeWorkshopGroupSettings() { - FridayWork = entity.FridayWork, + //FridayWork = entity.FridayWork, FridayPay = new (){ FridayPayType = entity.FridayPay.FridayPayType, Value = entity.FridayPay.Value }, LateToWork = new() { @@ -338,8 +338,8 @@ public class CustomizeWorkshopGroupSettingsRepository(CompanyContext companyCont { EndTime = x.EndTime.ToString("HH:mm"), StartTime = x.StartTime.ToString("HH:mm") - }).ToList() - + }).ToList(), + OffDayOfWeeks = entity.WeeklyOffDays.Select(x=>x.DayOfWeek).ToList() }; } diff --git a/CompanyManagment.EFCore/Repository/CustomizeWorkshopSettingsRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeWorkshopSettingsRepository.cs index 5652d774..51d02eb7 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeWorkshopSettingsRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeWorkshopSettingsRepository.cs @@ -159,7 +159,6 @@ public class CustomizeWorkshopSettingsRepository(CompanyContext companyContext, return new(); var viewModel = new EditCustomizeWorkshopSettings() { - FridayWork = entity.FridayWork, FridayPay = new() { FridayPayType = entity.FridayPay.FridayPayType, Value = entity.FridayPay.Value }, LateToWork = new() { @@ -234,7 +233,8 @@ public class CustomizeWorkshopSettingsRepository(CompanyContext companyContext, LeavePermittedDays = entity.LeavePermittedDays, BaseYearsPayInEndOfYear = entity.BaseYearsPayInEndOfYear, WorkshopId = entity.WorkshopId, - WorkshopShiftStatus = entity.WorkshopShiftStatus + WorkshopShiftStatus = entity.WorkshopShiftStatus, + OffDays = entity.WeeklyOffDays.Select(x=>x.DayOfWeek).ToList() }; return viewModel; @@ -261,8 +261,8 @@ public class CustomizeWorkshopSettingsRepository(CompanyContext companyContext, Id = entity.id, WorkshopId = entity.WorkshopId, WorkshopShiftStatus = entity.WorkshopShiftStatus, - FridayWork = entity.FridayWork, - HolidayWork = entity.HolidayWork + HolidayWork = entity.HolidayWork, + OffDays = entity.WeeklyOffDays.Select(x=>x.DayOfWeek).ToList() }; } diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Options.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Options.cshtml.cs index 98bda2a4..62a6481e 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Options.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Options.cshtml.cs @@ -228,7 +228,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.RollCall } public IActionResult OnPostEditSettingWorkTime(List shiftViewModels, - long customizeWorkshopSettingsId, WorkshopShiftStatus workshopShiftStatus, long workshopId,FridayWork fridayWork,HolidayWork holidayWork) + long customizeWorkshopSettingsId, WorkshopShiftStatus workshopShiftStatus, long workshopId,FridayWork fridayWork,HolidayWork holidayWork,List offDayOfWeeks) { if (workshopId < 1) return new JsonResult(new @@ -240,7 +240,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.RollCall //Todo:Vafa!! //Todo: Vafa : to in ja bool replaceChange group ro ezafe kon. hatman ham workshopShiftStatus az front pas bede be in. var result = _customizeWorkshopSettingsApplication - .EditWorkshopSettingShifts(shiftViewModels, customizeWorkshopSettingsId, workshopShiftStatus, fridayWork, holidayWork); + .EditWorkshopSettingShifts(shiftViewModels, customizeWorkshopSettingsId, workshopShiftStatus, holidayWork, offDayOfWeeks); return new JsonResult(new { diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_ModalEmployeeSettingPartials/Salary.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_ModalEmployeeSettingPartials/Salary.cshtml index 2c6919f0..44ba7e9e 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_ModalEmployeeSettingPartials/Salary.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_ModalEmployeeSettingPartials/Salary.cshtml @@ -58,14 +58,14 @@
وضعیت فعالیت مجموعه در روز های جمعه
-
+ @*
-
+
*@
diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_ModalGroupSettingPartials/Salary.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_ModalGroupSettingPartials/Salary.cshtml index 0034927e..2d556b42 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_ModalGroupSettingPartials/Salary.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_ModalGroupSettingPartials/Salary.cshtml @@ -56,14 +56,14 @@
وضعیت فعالیت مجموعه در روز های جمعه
-
+ @*
-
+
*@
diff --git a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_ModalPartials/FridayAndHoliday.cshtml b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_ModalPartials/FridayAndHoliday.cshtml index 68387937..4a5c83be 100644 --- a/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_ModalPartials/FridayAndHoliday.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/CustomizeCheckout/_ModalPartials/FridayAndHoliday.cshtml @@ -29,14 +29,14 @@
وضعیت فعالیت مجموعه در روز های جمعه
-
+@*
-
+
*@
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs index 012db567..781d76b8 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs @@ -240,9 +240,10 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall BreakTime = employee.BreakTime, WorkshopShiftStatus = employee.WorkshopShiftStatus, IrregularShift = employee.IrregularShift, - FridayWork = employee.FridayWork, + //FridayWork = employee.FridayWork, HolidayWork = employee.HolidayWork, - CustomizeRotatingShifts = employee.CustomizeRotatingShiftsViewModels + CustomizeRotatingShifts = employee.CustomizeRotatingShiftsViewModels, + WeeklyOffDays = employee.WeeklyOffDays }; return Partial("ModalEditEmployeeFromGroup", command); } diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/Index.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/Index.cshtml.cs index 65c2f5cd..2e067189 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/Index.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/Index.cshtml.cs @@ -310,7 +310,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall } public IActionResult OnPostEditSettingWorkTime(List shiftViewModels, - long customizeWorkshopSettingsId, WorkshopShiftStatus workshopShiftStatus,FridayWork fridayWork,HolidayWork holidayWork) + long customizeWorkshopSettingsId, WorkshopShiftStatus workshopShiftStatus,FridayWork fridayWork,HolidayWork holidayWork,List offDayOfWeeks) { var workshopHash = User.FindFirstValue("WorkshopSlug"); var workshopId = _passwordHasher.SlugDecrypt(workshopHash); @@ -324,7 +324,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall //Todo:Vafa!! //Todo: Vafa : to in ja bool replaceChange group ro ezafe kon. hatman ham workshopShiftStatus az front pas bede be in. var result = _customizeWorkshopSettingsApplication - .EditWorkshopSettingShifts(shiftViewModels, customizeWorkshopSettingsId, workshopShiftStatus,fridayWork, holidayWork); + .EditWorkshopSettingShifts(shiftViewModels, customizeWorkshopSettingsId, workshopShiftStatus, holidayWork, offDayOfWeeks); return new JsonResult(new { diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalCreateGroup.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalCreateGroup.cshtml index b4c8ea5b..c34c2aaa 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalCreateGroup.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalCreateGroup.cshtml @@ -230,14 +230,14 @@
@*
وضعیت فعالیت مجموعه در روز های جمعه
*@ -
+ @*
-
+
*@
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditEmployeeFromGroup.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditEmployeeFromGroup.cshtml index ca2f96cf..684c25a3 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditEmployeeFromGroup.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditEmployeeFromGroup.cshtml @@ -389,14 +389,14 @@
@*
وضعیت فعالیت مجموعه در روز های جمعه
*@ -
+ @*
-
+
*@
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditGroup.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditGroup.cshtml index 47606ccf..642b43fc 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditGroup.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditGroup.cshtml @@ -400,14 +400,14 @@
@*
وضعیت فعالیت مجموعه در روز های جمعه
*@ -
+ @*
-
+
*@
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalSettingWorkTime.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalSettingWorkTime.cshtml index 08a631b9..0af5a7c8 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalSettingWorkTime.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalSettingWorkTime.cshtml @@ -162,14 +162,14 @@
@*
وضعیت فعالیت مجموعه در روز های جمعه
*@ -
+ @*
-
+
*@
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/Index.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/Index.cshtml.cs index 2fd4e3df..e8ce8022 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/Index.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/Index.cshtml.cs @@ -103,7 +103,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall._WorkshopSetting } public IActionResult OnPostEditSettingWorkTime(List shiftViewModels, - long customizeWorkshopSettingsId, WorkshopShiftStatus workshopShiftStatus, FridayWork fridayWork, HolidayWork holidayWork) + long customizeWorkshopSettingsId, WorkshopShiftStatus workshopShiftStatus, FridayWork fridayWork, HolidayWork holidayWork,List offDayOfWeeks) { var workshopHash = User.FindFirstValue("WorkshopSlug"); var workshopId = _passwordHasher.SlugDecrypt(workshopHash); @@ -115,7 +115,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall._WorkshopSetting }); var result = _customizeWorkshopSettingsApplication - .EditWorkshopSettingShifts(shiftViewModels, customizeWorkshopSettingsId, workshopShiftStatus, fridayWork, holidayWork); + .EditWorkshopSettingShifts(shiftViewModels, customizeWorkshopSettingsId, workshopShiftStatus, holidayWork, offDayOfWeeks); return new JsonResult(new { diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/_Partials/ModalCreateSettingWorkshop.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/_Partials/ModalCreateSettingWorkshop.cshtml index e408acd7..de2d4228 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/_Partials/ModalCreateSettingWorkshop.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/_Partials/ModalCreateSettingWorkshop.cshtml @@ -98,14 +98,14 @@
@*
وضعیت فعالیت مجموعه در روز های جمعه
*@ -
+ @*
-
+
*@
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/_Partials/ModalSettingWorkTime.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/_Partials/ModalSettingWorkTime.cshtml index 483e4132..3f57dddb 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/_Partials/ModalSettingWorkTime.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/_Partials/ModalSettingWorkTime.cshtml @@ -162,14 +162,14 @@
@*
وضعیت فعالیت مجموعه در روز های جمعه
*@ -
+ @*
-
+
*@
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/_ModalEmployeeSettingPartials/FridayAndHoliday.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/_ModalEmployeeSettingPartials/FridayAndHoliday.cshtml index 6df058d2..76fed328 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/_ModalEmployeeSettingPartials/FridayAndHoliday.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/_ModalEmployeeSettingPartials/FridayAndHoliday.cshtml @@ -15,14 +15,14 @@
تعطیلات جمعه
-
+ @*
-
+
*@
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/_ModalGroupSettingPartials/FridayAndHoliday.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/_ModalGroupSettingPartials/FridayAndHoliday.cshtml index 5e1ce2c1..4e9c3905 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/_ModalGroupSettingPartials/FridayAndHoliday.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/_ModalGroupSettingPartials/FridayAndHoliday.cshtml @@ -16,14 +16,14 @@
تعطیلات جمعه
-
+ @*
-
+
*@
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/_ModalPartials/FridayAndHoliday.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/_ModalPartials/FridayAndHoliday.cshtml index 2c0d988c..af6e2dc1 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/_ModalPartials/FridayAndHoliday.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/_ModalPartials/FridayAndHoliday.cshtml @@ -14,14 +14,14 @@
تعطیلات جمعه
-
+ @*
-
+
*@
diff --git a/ServiceHost/Test/Tester.cs b/ServiceHost/Test/Tester.cs index 95dcab26..49749c46 100644 --- a/ServiceHost/Test/Tester.cs +++ b/ServiceHost/Test/Tester.cs @@ -1,6 +1,8 @@ using System.Diagnostics; +using _0_Framework.Domain.CustomizeCheckoutShared.Enums; using CompanyManagment.App.Contracts.AdminMonthlyOverview; using CompanyManagment.EFCore; +using Microsoft.EntityFrameworkCore; using ServiceHost.Areas.AdminNew.Pages.Company.RollCall; namespace ServiceHost.Test; @@ -18,9 +20,38 @@ public class Tester public async Task Test() { - // await AdminMonthlyOverviewTest(); + // await AdminMonthlyOverviewTest(); + //await ChangeFridayWorkToWeeklyDayOfWeek(); } + + private async Task ChangeFridayWorkToWeeklyDayOfWeek() + { + var employeeSettingsEnumerable =await _companyContext.CustomizeWorkshopEmployeeSettings.Where(x=>x.FridayWork ==FridayWork.Default).ToListAsync(); + foreach (var employeeSetting in employeeSettingsEnumerable) + { + employeeSetting.FridayWorkToWeeklyDayOfWeek(); + } + + var groupSettings = await _companyContext.CustomizeWorkshopGroupSettings + .Where(x => x.FridayWork == FridayWork.Default).ToListAsync(); + + foreach (var groupSetting in groupSettings) + { + groupSetting.FridayWorkToWeeklyDayOfWeek(); + } + + var workshopSettings = await _companyContext.CustomizeWorkshopSettings + .Where(x => x.FridayWork == FridayWork.Default).ToListAsync(); + foreach (var workshopSetting in workshopSettings) + { + workshopSetting.FridayWorkToWeeklyDayOfWeek(); + } + + await _companyContext.SaveChangesAsync(); + + } + private async Task AdminMonthlyOverviewTest() { var acc = _companyContext.WorkshopAccounts.FirstOrDefault(x => x.AccountId == 322); diff --git a/ServiceHost/appsettings.Development.json b/ServiceHost/appsettings.Development.json index df354fd1..6c608398 100644 --- a/ServiceHost/appsettings.Development.json +++ b/ServiceHost/appsettings.Development.json @@ -12,8 +12,8 @@ //"MesbahDb": "Data Source=DESKTOP-NUE119G\\MSNEW;Initial Catalog=Mesbah_db;Integrated Security=True" //server - //"MesbahDb": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]is[3019]#@ATt;TrustServerCertificate=true;", - + //"MesbahDb": "Data Source=171.22.24.15;Initial Catalog=mesbah_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]18[3019]#@ATt;TrustServerCertificate=true;", + //local "MesbahDb": "Data Source=.;Initial Catalog=mesbah_db;Integrated Security=True;TrustServerCertificate=true;", From fcfe7c7e58860ae0152c0072e365b0838ec049ad Mon Sep 17 00:00:00 2001 From: MahanCh Date: Tue, 24 Jun 2025 10:45:41 +0330 Subject: [PATCH 05/25] delete friday work --- .../Pages/Company/RollCall/WorkshopSetting/Index.cshtml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/Index.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/Index.cshtml.cs index e8ce8022..00a3bfb2 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/Index.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/Index.cshtml.cs @@ -103,7 +103,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall._WorkshopSetting } public IActionResult OnPostEditSettingWorkTime(List shiftViewModels, - long customizeWorkshopSettingsId, WorkshopShiftStatus workshopShiftStatus, FridayWork fridayWork, HolidayWork holidayWork,List offDayOfWeeks) + long customizeWorkshopSettingsId, WorkshopShiftStatus workshopShiftStatus, HolidayWork holidayWork,List offDayOfWeeks) { var workshopHash = User.FindFirstValue("WorkshopSlug"); var workshopId = _passwordHasher.SlugDecrypt(workshopHash); From b15c34373bce2b2219d416ac53b0a349baddbf87 Mon Sep 17 00:00:00 2001 From: SamSys Date: Tue, 24 Jun 2025 14:04:27 +0330 Subject: [PATCH 06/25] checkout sign --- .../CheckoutAgg/ICheckoutRepository.cs | 10 + .../Checkout/CheckoutViewModel.cs | 3 + .../Checkout/ICheckoutApplication.cs | 8 + .../CheckoutApplication.cs | 44 +- .../Repository/CheckoutRepository.cs | 4570 +++++++++-------- .../Pages/Company/Checkouts/Index.cshtml.cs | 8 +- .../Pages/Company/Checkouts/MainSearch.cshtml | 28 +- 7 files changed, 2535 insertions(+), 2136 deletions(-) diff --git a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs index 6828fe80..90d2f576 100644 --- a/Company.Domain/CheckoutAgg/ICheckoutRepository.cs +++ b/Company.Domain/CheckoutAgg/ICheckoutRepository.cs @@ -59,6 +59,16 @@ public interface ICheckoutRepository : IRepository OperationResult DeleteAllCheckouts(List ids); OperationResult DeleteCheckout(long id); List CheckHasSignature(List ids); + + /// + /// لیست تصفیه حساب + /// جدید + /// + /// + /// + /// + Task> SearchCheckoutOptimized(CheckoutSearchModel searchModel); + Task> SearchForMainCheckout(CheckoutSearchModel searchModel); #endregion diff --git a/CompanyManagment.App.Contracts/Checkout/CheckoutViewModel.cs b/CompanyManagment.App.Contracts/Checkout/CheckoutViewModel.cs index 8f8065c3..2dea371f 100644 --- a/CompanyManagment.App.Contracts/Checkout/CheckoutViewModel.cs +++ b/CompanyManagment.App.Contracts/Checkout/CheckoutViewModel.cs @@ -133,6 +133,9 @@ public class CheckoutViewModel /// public string TotalPaidLeave { get; set; } + + public bool HasSignCheckout { get; set; } + public TimeSpan TotalHourlyLeave { get; set; } public List MonthlyRollCall { get; set; } public List InstallmentViewModels { get; set; } diff --git a/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs b/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs index 40321f83..74f5cccb 100644 --- a/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs +++ b/CompanyManagment.App.Contracts/Checkout/ICheckoutApplication.cs @@ -27,6 +27,14 @@ public interface ICheckoutApplication Task GetContractResultToCreateCheckout(long workshopId, long employeeId, string year, string month, string contractStart, string contractEnd); + /// + /// لیست تصفیه حساب + /// جدید + /// + /// + /// + /// + Task> SearchCheckoutOptimized(CheckoutSearchModel searchModel); Task> Search(CheckoutSearchModel searchModel); List SimpleSearch(CheckoutSearchModel searchModel); List PrintAll(List id); diff --git a/CompanyManagment.Application/CheckoutApplication.cs b/CompanyManagment.Application/CheckoutApplication.cs index cc61fed1..7f6e34a5 100644 --- a/CompanyManagment.Application/CheckoutApplication.cs +++ b/CompanyManagment.Application/CheckoutApplication.cs @@ -386,9 +386,17 @@ public class CheckoutApplication : ICheckoutApplication contractEnd); } - public async Task> Search(CheckoutSearchModel searchModel) - { - var result = new List(); + + public Task> SearchCheckoutOptimized(CheckoutSearchModel searchModel) + { + return _checkoutRepository.SearchCheckoutOptimized(searchModel); + } + + public async Task> Search(CheckoutSearchModel searchModel) + { + var watch = System.Diagnostics.Stopwatch.StartNew(); + watch.Start(); + var result = new List(); var query = await _checkoutRepository.SearchForMainCheckout(searchModel); query = query.Select(x => new CheckoutViewModel() { @@ -415,22 +423,22 @@ public class CheckoutApplication : ICheckoutApplication EmployerName = _employerRepository.GetEmployerByWorkshopId(x.WorkshopId).FirstOrDefault()?.EmployerFullName, IsBlockCantracingParty = _employerRepository.GetEmployerByWorkshopId(x.WorkshopId).FirstOrDefault()?.IsBlockContractingParty, }).ToList(); - //foreach (var items in query) - //{ - // var s = _employerRepository.GetEmployerByWorkshopId(items.WorkshopId); - // if (s != null) - // { - // items.EmployerName = s.FirstOrDefault().EmployerFullName; - // } - // result.Add(items); - // //var employeId = _context.WorkshopEmployers?.Where(x => x.WorkshopId == items.WorkshopId) - // // .Select(x => x.EmployerId).FirstOrDefault(); - // //var employerName = _context.Employers?.FirstOrDefault(x => x.id == employeId).FullName; - // // = employerName; + //foreach (var items in query) + //{ + // var s = _employerRepository.GetEmployerByWorkshopId(items.WorkshopId); + // if (s != null) + // { + // items.EmployerName = s.FirstOrDefault().EmployerFullName; + // } + // result.Add(items); + // //var employeId = _context.WorkshopEmployers?.Where(x => x.WorkshopId == items.WorkshopId) + // // .Select(x => x.EmployerId).FirstOrDefault(); + // //var employerName = _context.Employers?.FirstOrDefault(x => x.id == employeId).FullName; + // // = employerName; - //} - - return query; + //} + Console.WriteLine("old : " + watch.Elapsed); + return query; } diff --git a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs index 162eaec7..67f63b7f 100644 --- a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs @@ -12,6 +12,7 @@ using Company.Domain.CheckoutAgg; using Company.Domain.LeftWorkAgg; using Company.Domain.RollCallAgg; using Company.Domain.RollCallEmployeeAgg; +using Company.Domain.WorkshopEmployerAgg; using CompanyManagment.App.Contracts.Checkout; using CompanyManagment.App.Contracts.Contract; using CompanyManagment.App.Contracts.Employee; @@ -30,193 +31,194 @@ using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using PersianTools.Core; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory; namespace CompanyManagment.EFCore.Repository; public class CheckoutRepository : RepositoryBase, ICheckoutRepository { - private readonly CompanyContext _context; + private readonly CompanyContext _context; - private readonly IWorkingHoursTempApplication _workingHoursTempApplication; + private readonly IWorkingHoursTempApplication _workingHoursTempApplication; - private readonly IAuthHelper _authHelper; - private readonly IConfiguration _configuration; - private readonly ILeftWorkRepository _leftWorkRepository; - private readonly IRollCallRepository _rollCallRepository; - private readonly IRollCallMandatoryRepository _rollCallMandatoryRepository; - private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository; + private readonly IAuthHelper _authHelper; + private readonly IConfiguration _configuration; + private readonly ILeftWorkRepository _leftWorkRepository; + private readonly IRollCallRepository _rollCallRepository; + private readonly IRollCallMandatoryRepository _rollCallMandatoryRepository; + private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository; - public CheckoutRepository(IAuthHelper authHelper, CompanyContext context, IConfiguration configuration, ILeftWorkRepository leftWorkRepository, IWorkingHoursTempApplication workingHoursTempApplication, IRollCallRepository rollCallRepository, IRollCallMandatoryRepository rollCallMandatoryRepository, IRollCallEmployeeRepository rollCallEmployeeRepository) : base(context) - { + public CheckoutRepository(IAuthHelper authHelper, CompanyContext context, IConfiguration configuration, ILeftWorkRepository leftWorkRepository, IWorkingHoursTempApplication workingHoursTempApplication, IRollCallRepository rollCallRepository, IRollCallMandatoryRepository rollCallMandatoryRepository, IRollCallEmployeeRepository rollCallEmployeeRepository) : base(context) + { - _authHelper = authHelper; - _context = context; - _configuration = configuration; - _leftWorkRepository = leftWorkRepository; - _workingHoursTempApplication = workingHoursTempApplication; - _rollCallRepository = rollCallRepository; - _rollCallMandatoryRepository = rollCallMandatoryRepository; - _rollCallEmployeeRepository = rollCallEmployeeRepository; - } + _authHelper = authHelper; + _context = context; + _configuration = configuration; + _leftWorkRepository = leftWorkRepository; + _workingHoursTempApplication = workingHoursTempApplication; + _rollCallRepository = rollCallRepository; + _rollCallMandatoryRepository = rollCallMandatoryRepository; + _rollCallEmployeeRepository = rollCallEmployeeRepository; + } - /// - /// چیک میکند که آیا پرسنل در سال و ماه درخواستی در این کارگاه فیش حقوقی دارد یا خیر - /// - /// - /// - /// - /// - /// - public (bool hasChekout, double FamilyAlloance, double OverTimePay) HasCheckout(long workshopId, long employeId, string year, string month) - { - var farisMonthName = Tools.ToFarsiMonthByNumber(month); + /// + /// چیک میکند که آیا پرسنل در سال و ماه درخواستی در این کارگاه فیش حقوقی دارد یا خیر + /// + /// + /// + /// + /// + /// + public (bool hasChekout, double FamilyAlloance, double OverTimePay) HasCheckout(long workshopId, long employeId, string year, string month) + { + var farisMonthName = Tools.ToFarsiMonthByNumber(month); - var res = _context.CheckoutSet.FirstOrDefault(x => - x.WorkshopId == workshopId && x.EmployeeId == employeId && x.Year == year && x.Month == farisMonthName && - x.IsActiveString == "true"); - if (res == null) - return (false, 0, 0); + var res = _context.CheckoutSet.FirstOrDefault(x => + x.WorkshopId == workshopId && x.EmployeeId == employeId && x.Year == year && x.Month == farisMonthName && + x.IsActiveString == "true"); + if (res == null) + return (false, 0, 0); - return (true, res.FamilyAllowance, res.OvertimePay); - } + return (true, res.FamilyAllowance, res.OvertimePay); + } - public EditCheckout GetDetails(long id) - { - return _context.CheckoutSet.Select(x => new EditCheckout() - { - Id = x.id, - EmployeeFullName = x.EmployeeFullName, - FathersName = x.FathersName, - NationalCode = x.NationalCode, - DateOfBirth = x.DateOfBirth, - WorkshopName = x.WorkshopName, - Month = x.Month, - Year = x.Year, - ContractNo = x.ContractNo, - MonthlySalary = x.MonthlySalary, - BaseYearsPay = x.BaseYearsPay, - ConsumableItems = x.ConsumableItems.ToMoney(), - HousingAllowance = x.HousingAllowance.ToMoney(), - OvertimePay = x.OvertimePay, - NightworkPay = x.NightworkPay, - FridayPay = x.FridayPay, - MissionPay = x.MissionPay, - ShiftPay = x.ShiftPay, - FamilyAllowance = x.FamilyAllowance.ToMoney(), - BonusesPay = x.BonusesPay, - YearsPay = x.YearsPay, - LeavePay = x.LeavePay, - InsuranceDeduction = x.InsuranceDeduction, - TaxDeducation = x.TaxDeducation, - InstallmentDeduction = x.InstallmentDeduction, - SalaryAidDeduction = x.SalaryAidDeduction, - AbsenceDeduction = x.AbsenceDeduction, - TotalClaims = x.TotalClaims, - TotalDeductions = x.TotalDeductions, - TotalPayment = x.TotalPayment, - RewardPay = x.RewardPay, - HasRollCall = x.HasRollCall, - EmployeeId = x.EmployeeId, - WorkshopId = x.WorkshopId, - ContractId = x.ContractId, - ContractStartGr = x.ContractStart, - ContractEndGr = x.ContractEnd, - ContractStart = x.ContractStart.ToFarsi(), - ContractEnd = x.ContractEnd.ToFarsi() + public EditCheckout GetDetails(long id) + { + return _context.CheckoutSet.Select(x => new EditCheckout() + { + Id = x.id, + EmployeeFullName = x.EmployeeFullName, + FathersName = x.FathersName, + NationalCode = x.NationalCode, + DateOfBirth = x.DateOfBirth, + WorkshopName = x.WorkshopName, + Month = x.Month, + Year = x.Year, + ContractNo = x.ContractNo, + MonthlySalary = x.MonthlySalary, + BaseYearsPay = x.BaseYearsPay, + ConsumableItems = x.ConsumableItems.ToMoney(), + HousingAllowance = x.HousingAllowance.ToMoney(), + OvertimePay = x.OvertimePay, + NightworkPay = x.NightworkPay, + FridayPay = x.FridayPay, + MissionPay = x.MissionPay, + ShiftPay = x.ShiftPay, + FamilyAllowance = x.FamilyAllowance.ToMoney(), + BonusesPay = x.BonusesPay, + YearsPay = x.YearsPay, + LeavePay = x.LeavePay, + InsuranceDeduction = x.InsuranceDeduction, + TaxDeducation = x.TaxDeducation, + InstallmentDeduction = x.InstallmentDeduction, + SalaryAidDeduction = x.SalaryAidDeduction, + AbsenceDeduction = x.AbsenceDeduction, + TotalClaims = x.TotalClaims, + TotalDeductions = x.TotalDeductions, + TotalPayment = x.TotalPayment, + RewardPay = x.RewardPay, + HasRollCall = x.HasRollCall, + EmployeeId = x.EmployeeId, + WorkshopId = x.WorkshopId, + ContractId = x.ContractId, + ContractStartGr = x.ContractStart, + ContractEndGr = x.ContractEnd, + ContractStart = x.ContractStart.ToFarsi(), + ContractEnd = x.ContractEnd.ToFarsi() - }) - .FirstOrDefault(x => x.Id == id); - } + }) + .FirstOrDefault(x => x.Id == id); + } - /// - /// لود لیست اولیه جهت ایجاد فیش حقوقی - /// - /// - /// - /// - /// - /// - /// - /// - /// - public async Task GetContractResultToCreateCheckout(long workshopId, long employeeId, string year, string month, string contractStart, - string contractEnd) - { - DateTime startSreach; - DateTime endSearch; + /// + /// لود لیست اولیه جهت ایجاد فیش حقوقی + /// + /// + /// + /// + /// + /// + /// + /// + /// + public async Task GetContractResultToCreateCheckout(long workshopId, long employeeId, string year, string month, string contractStart, + string contractEnd) + { + DateTime startSreach; + DateTime endSearch; - if (!string.IsNullOrWhiteSpace(contractStart) && !string.IsNullOrWhiteSpace(contractEnd)) - { - startSreach = contractStart.ToGeorgianDateTime(); - endSearch = contractEnd.ToGeorgianDateTime(); - } - else - { + if (!string.IsNullOrWhiteSpace(contractStart) && !string.IsNullOrWhiteSpace(contractEnd)) + { + startSreach = contractStart.ToGeorgianDateTime(); + endSearch = contractEnd.ToGeorgianDateTime(); + } + else + { - if (month == "0" && year == "0") - { - DateTime now = DateTime.Now; - string startStr = $"{now.ToFarsi().Substring(0, 8)}01"; - startSreach = startStr.ToGeorgianDateTime(); - endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime(); - } - else if (month == "0" && year != "0") - { - DateTime now = DateTime.Now; + if (month == "0" && year == "0") + { + DateTime now = DateTime.Now; + string startStr = $"{now.ToFarsi().Substring(0, 8)}01"; + startSreach = startStr.ToGeorgianDateTime(); + endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime(); + } + else if (month == "0" && year != "0") + { + DateTime now = DateTime.Now; - string startStr = $"{year}/{now.ToFarsi().Substring(5, 2)}/01"; - startSreach = startStr.ToGeorgianDateTime(); - endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime(); - } - else if (month != "0" && year == "0") - { - DateTime now = DateTime.Now; + string startStr = $"{year}/{now.ToFarsi().Substring(5, 2)}/01"; + startSreach = startStr.ToGeorgianDateTime(); + endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime(); + } + else if (month != "0" && year == "0") + { + DateTime now = DateTime.Now; - string startStr = $"{now.ToFarsi().Substring(0, 4)}/{month}/01"; - startSreach = startStr.ToGeorgianDateTime(); - endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime(); - } - else - { - string startStr = $"{year}/{month}/01"; - startSreach = startStr.ToGeorgianDateTime(); - endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime(); - } + string startStr = $"{now.ToFarsi().Substring(0, 4)}/{month}/01"; + startSreach = startStr.ToGeorgianDateTime(); + endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime(); + } + else + { + string startStr = $"{year}/{month}/01"; + startSreach = startStr.ToGeorgianDateTime(); + endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime(); + } - } - var timer = new Stopwatch(); - timer.Start(); + } + var timer = new Stopwatch(); + timer.Start(); - var contracts = _context.Contracts.AsSplitQuery() - .Where(x => x.WorkshopIds == workshopId && x.IsActiveString == "true" && startSreach < x.ContractEnd && - endSearch > x.ContarctStart) - .Join(_context.Workshops.AsSplitQuery(), - contract => contract.WorkshopIds, - workshop => workshop.id, - (contract, workshop) => new { contract, workshop }) - .Join(_context.Employees.AsSplitQuery(), - contractWorkshop => contractWorkshop.contract.EmployeeId, - employee => employee.id, - (contractWorkshop, employee) => new { contractWorkshop, employee }) - .Join(_context.LeftWorkList.AsSplitQuery().Where(l => l.WorkshopId == workshopId && l.StartWorkDate < endSearch && l.LeftWorkDate > startSreach), - contractWorkshopEmployee => contractWorkshopEmployee.contractWorkshop.contract.EmployeeId, - leftwork => leftwork.EmployeeId, - (contractWorkshopEmployee, leftwork) => new { contractWorkshopEmployee, leftwork }) - .Join(_context.PersonnelCodeSet.AsSplitQuery().Where(p => p.WorkshopId == workshopId), - contractWorkshopEmployeeleftWork => contractWorkshopEmployeeleftWork.contractWorkshopEmployee - .contractWorkshop.contract.EmployeeId, - personnelCode => personnelCode.EmployeeId, - (contractWorkshopEmployeeleftWork, personnelCode) => - new { contractWorkshopEmployeeleftWork, personnelCode }) + var contracts = _context.Contracts.AsSplitQuery() + .Where(x => x.WorkshopIds == workshopId && x.IsActiveString == "true" && startSreach < x.ContractEnd && + endSearch > x.ContarctStart) + .Join(_context.Workshops.AsSplitQuery(), + contract => contract.WorkshopIds, + workshop => workshop.id, + (contract, workshop) => new { contract, workshop }) + .Join(_context.Employees.AsSplitQuery(), + contractWorkshop => contractWorkshop.contract.EmployeeId, + employee => employee.id, + (contractWorkshop, employee) => new { contractWorkshop, employee }) + .Join(_context.LeftWorkList.AsSplitQuery().Where(l => l.WorkshopId == workshopId && l.StartWorkDate < endSearch && l.LeftWorkDate > startSreach), + contractWorkshopEmployee => contractWorkshopEmployee.contractWorkshop.contract.EmployeeId, + leftwork => leftwork.EmployeeId, + (contractWorkshopEmployee, leftwork) => new { contractWorkshopEmployee, leftwork }) + .Join(_context.PersonnelCodeSet.AsSplitQuery().Where(p => p.WorkshopId == workshopId), + contractWorkshopEmployeeleftWork => contractWorkshopEmployeeleftWork.contractWorkshopEmployee + .contractWorkshop.contract.EmployeeId, + personnelCode => personnelCode.EmployeeId, + (contractWorkshopEmployeeleftWork, personnelCode) => + new { contractWorkshopEmployeeleftWork, personnelCode }) - .GroupJoin(_context.CheckoutSet.AsSplitQuery(), - contractWorkshopEmployeeleftWorkPersonnelCode => contractWorkshopEmployeeleftWorkPersonnelCode - .contractWorkshopEmployeeleftWork.contractWorkshopEmployee.contractWorkshop.contract.id, - checkout => checkout.ContractId, - (contractWorkshopEmployeeleftWorkPersonnelCode, checkout) => - new { contractWorkshopEmployeeleftWorkPersonnelCode, checkout }) + .GroupJoin(_context.CheckoutSet.AsSplitQuery(), + contractWorkshopEmployeeleftWorkPersonnelCode => contractWorkshopEmployeeleftWorkPersonnelCode + .contractWorkshopEmployeeleftWork.contractWorkshopEmployee.contractWorkshop.contract.id, + checkout => checkout.ContractId, + (contractWorkshopEmployeeleftWorkPersonnelCode, checkout) => + new { contractWorkshopEmployeeleftWorkPersonnelCode, checkout }) .GroupJoin(_context.EmployeeComputeOptionsSet.Where(o => o.WorkshopId == workshopId), x => x.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork.leftwork.EmployeeId, @@ -224,1989 +226,2341 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos (x, options) => new { x.checkout, x.contractWorkshopEmployeeleftWorkPersonnelCode, options }) .SelectMany( x => x.options.DefaultIfEmpty(), - (x, option) => new { x.checkout, x.contractWorkshopEmployeeleftWorkPersonnelCode, option }) + (x, option) => new { x.checkout, x.contractWorkshopEmployeeleftWorkPersonnelCode, option }) .ToList(); - Console.WriteLine("query : " + timer.Elapsed); - timer.Reset(); - timer.Start(); - if (employeeId > 0) - contracts = contracts.Where(x => - x.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.contractWorkshop.contract.EmployeeId == employeeId).ToList(); - var finalResult = contracts.Select(result => - { - var now = DateTime.Now; - DateTime currentStart = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime(); - DateTime currentEnd = ($"{DateTime.Now.ToFarsi().FindeEndOfMonth()}").ToGeorgianDateTime(); - var chekoutCreated = result.checkout.FirstOrDefault(x => x.ContractStart < endSearch && x.ContractEnd > startSreach && x.IsActiveString == "true"); + Console.WriteLine("query : " + timer.Elapsed); + timer.Reset(); + timer.Start(); + if (employeeId > 0) + contracts = contracts.Where(x => + x.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork + .contractWorkshopEmployee.contractWorkshop.contract.EmployeeId == employeeId).ToList(); + var finalResult = contracts.Select(result => + { + var now = DateTime.Now; + DateTime currentStart = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime(); + DateTime currentEnd = ($"{DateTime.Now.ToFarsi().FindeEndOfMonth()}").ToGeorgianDateTime(); + var chekoutCreated = result.checkout.FirstOrDefault(x => x.ContractStart < endSearch && x.ContractEnd > startSreach && x.IsActiveString == "true"); - if (chekoutCreated != null) - { + if (chekoutCreated != null) + { - return new CreateCheckoutListViewModel - { - Id = chekoutCreated.ContractId, + return new CreateCheckoutListViewModel + { + Id = chekoutCreated.ContractId, - EmployeeId = chekoutCreated.EmployeeId, - ContractNo = chekoutCreated.ContractNo, - WorkshopName = chekoutCreated.WorkshopName, - EmployeeName = chekoutCreated.EmployeeFullName, - ContractStart = chekoutCreated.ContractStart.ToFarsi(), - ContractEnd = chekoutCreated.ContractEnd.ToFarsi(), - PersonnelCode = Convert.ToInt64(chekoutCreated.PersonnelCode), - LaterThanEnd = false, - Extension = false, - Description = "دارای فیش حقوقی", - HasCheckout = true, + EmployeeId = chekoutCreated.EmployeeId, + ContractNo = chekoutCreated.ContractNo, + WorkshopName = chekoutCreated.WorkshopName, + EmployeeName = chekoutCreated.EmployeeFullName, + ContractStart = chekoutCreated.ContractStart.ToFarsi(), + ContractEnd = chekoutCreated.ContractEnd.ToFarsi(), + PersonnelCode = Convert.ToInt64(chekoutCreated.PersonnelCode), + LaterThanEnd = false, + Extension = false, + Description = "دارای فیش حقوقی", + HasCheckout = true, EmployeeHasCreateCheckout = true }; - } - var employeeJoin = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.employee.id; + } + var employeeJoin = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork + .contractWorkshopEmployee.employee.id; - bool hasRollCall = - _rollCallEmployeeRepository.HasRollCallRecord(employeeJoin, workshopId, startSreach, endSearch); + bool hasRollCall = + _rollCallEmployeeRepository.HasRollCallRecord(employeeJoin, workshopId, startSreach, endSearch); - var leftWork = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .leftwork; + var leftWork = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork + .leftwork; - bool extension = true; - bool laterThanEnd = false; - string description = ""; - string leftWorkDate = ""; - string contractStart = ""; - string contractEnd = ""; + bool extension = true; + bool laterThanEnd = false; + string description = ""; + string leftWorkDate = ""; + string contractStart = ""; + string contractEnd = ""; - var contractStartGr = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.contractWorkshop.contract.ContarctStart; - var contractEndGr = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.contractWorkshop.contract.ContractEnd; - #region HasRollCall + var contractStartGr = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork + .contractWorkshopEmployee.contractWorkshop.contract.ContarctStart; + var contractEndGr = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork + .contractWorkshopEmployee.contractWorkshop.contract.ContractEnd; + #region HasRollCall - if (hasRollCall) - { + if (hasRollCall) + { - // اگر ترک کار کرده بود - // اگر ترک کارش در بازه انتخاب شده بود - if (leftWork.HasLeft && leftWork.LeftWorkDate > startSreach && leftWork.LeftWorkDate <= endSearch) - { - //اگر بازه انتخاب شده در تاریخ جاری بود - if (startSreach == currentStart && endSearch == currentEnd) - { - //اگر ترک کارش قبل یا مساوی تاریخ جاری بود - if (leftWork.LeftWorkDate <= now) - { - //مجاز به ایجاد تصفیه - extension = true; - leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); - contractStart = leftWork.StartWorkDate > startSreach - ? leftWork.StartWorkDate.ToFarsi() - : startSreach.ToFarsi(); - contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); + // اگر ترک کار کرده بود + // اگر ترک کارش در بازه انتخاب شده بود + if (leftWork.HasLeft && leftWork.LeftWorkDate > startSreach && leftWork.LeftWorkDate <= endSearch) + { + //اگر بازه انتخاب شده در تاریخ جاری بود + if (startSreach == currentStart && endSearch == currentEnd) + { + //اگر ترک کارش قبل یا مساوی تاریخ جاری بود + if (leftWork.LeftWorkDate <= now) + { + //مجاز به ایجاد تصفیه + extension = true; + leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); - } - else - { - // مجاز نیست - extension = false; - description = "بعد از تاریخ ترک کار می توانید فیش صادر کنید"; - leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); - contractStart = leftWork.StartWorkDate > startSreach - ? leftWork.StartWorkDate.ToFarsi() - : startSreach.ToFarsi(); - contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); + } + else + { + // مجاز نیست + extension = false; + description = "بعد از تاریخ ترک کار می توانید فیش صادر کنید"; + leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); - } - } - else if (endSearch < currentStart) - { - extension = true; - leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); - contractStart = leftWork.StartWorkDate > startSreach - ? leftWork.StartWorkDate.ToFarsi() - : startSreach.ToFarsi(); - contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); - } - else if (startSreach > currentEnd) - { - // مجاز نیست - extension = false; - description = "بعد از تاریخ ترک کار می توانید فیش صادر کنید"; - leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); - contractStart = leftWork.StartWorkDate > startSreach - ? leftWork.StartWorkDate.ToFarsi() - : startSreach.ToFarsi(); - contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); - } + } + } + else if (endSearch < currentStart) + { + extension = true; + leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); + } + else if (startSreach > currentEnd) + { + // مجاز نیست + extension = false; + description = "بعد از تاریخ ترک کار می توانید فیش صادر کنید"; + leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); + } - } - else if (leftWork.HasLeft && leftWork.LeftWorkDate <= startSreach) - { - // مجاز نیست - extension = false; - description = "به دلیل ترک کار پیش از تاریخ انتخاب شده مجاز به ایجاد فیش نمی باشید"; - leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); + } + else if (leftWork.HasLeft && leftWork.LeftWorkDate <= startSreach) + { + // مجاز نیست + extension = false; + description = "به دلیل ترک کار پیش از تاریخ انتخاب شده مجاز به ایجاد فیش نمی باشید"; + leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); - } - else if (!leftWork.HasLeft && startSreach == currentStart) - { - // مجاز نیست - extension = false; - description = "به دلیل داشتن حضورغیاب تا پایان ماه مجاز به ایجاد فیش نمی باشید"; - contractStart = leftWork.StartWorkDate > startSreach - ? leftWork.StartWorkDate.ToFarsi() - : startSreach.ToFarsi(); - contractEnd = endSearch.ToFarsi(); + } + else if (!leftWork.HasLeft && startSreach == currentStart) + { + // مجاز نیست + extension = false; + description = "به دلیل داشتن حضورغیاب تا پایان ماه مجاز به ایجاد فیش نمی باشید"; + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = endSearch.ToFarsi(); - } - else if (!leftWork.HasLeft && startSreach < currentStart) - { + } + else if (!leftWork.HasLeft && startSreach < currentStart) + { - if (contractStartGr <= startSreach && contractStartGr > endSearch) - { - laterThanEnd = true; - extension = true; - contractStart = startSreach.ToFarsi(); - contractEnd = endSearch.ToFarsi(); - } - else - { - laterThanEnd = false; - extension = true; - contractStart = leftWork.StartWorkDate > startSreach - ? leftWork.StartWorkDate.ToFarsi() - : startSreach.ToFarsi(); - contractEnd = (leftWork.LeftWorkDate > startSreach && leftWork.LeftWorkDate <= endSearch) ? leftWork.LeftWorkDate.AddDays(-1).ToFarsi() : endSearch.ToFarsi(); + if (contractStartGr <= startSreach && contractStartGr > endSearch) + { + laterThanEnd = true; + extension = true; + contractStart = startSreach.ToFarsi(); + contractEnd = endSearch.ToFarsi(); + } + else + { + laterThanEnd = false; + extension = true; + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = (leftWork.LeftWorkDate > startSreach && leftWork.LeftWorkDate <= endSearch) ? leftWork.LeftWorkDate.AddDays(-1).ToFarsi() : endSearch.ToFarsi(); - } + } - } + } - } + } - #endregion + #endregion - #region Static + #region Static - if (!hasRollCall) - { - if (leftWork.HasLeft) - { - if (leftWork.LeftWorkDate > startSreach && leftWork.LeftWorkDate <= endSearch) - { - extension = true; - contractStart = leftWork.StartWorkDate > startSreach - ? leftWork.StartWorkDate.ToFarsi() - : startSreach.ToFarsi(); - contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); - leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); - } - else if (leftWork.LeftWorkDate <= startSreach) - { - // مجاز نیست - extension = false; - description = "به دلیل ترک کار پیش از تاریخ انتخاب شده مجاز به ایجاد فیش نمی باشید"; - leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); - } - else if (leftWork.LeftWorkDate > endSearch) - { - extension = true; + if (!hasRollCall) + { + if (leftWork.HasLeft) + { + if (leftWork.LeftWorkDate > startSreach && leftWork.LeftWorkDate <= endSearch) + { + extension = true; + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); + leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); + } + else if (leftWork.LeftWorkDate <= startSreach) + { + // مجاز نیست + extension = false; + description = "به دلیل ترک کار پیش از تاریخ انتخاب شده مجاز به ایجاد فیش نمی باشید"; + leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); + } + else if (leftWork.LeftWorkDate > endSearch) + { + extension = true; - if (contractStartGr <= startSreach && contractStartGr > endSearch) - { - laterThanEnd = true; + if (contractStartGr <= startSreach && contractStartGr > endSearch) + { + laterThanEnd = true; - contractStart = startSreach.ToFarsi(); - contractEnd = endSearch.ToFarsi(); - } - else - { - contractStart = leftWork.StartWorkDate > startSreach - ? leftWork.StartWorkDate.ToFarsi() - : startSreach.ToFarsi(); - contractEnd = endSearch.ToFarsi(); - } - } - } - else - { - extension = true; + contractStart = startSreach.ToFarsi(); + contractEnd = endSearch.ToFarsi(); + } + else + { + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = endSearch.ToFarsi(); + } + } + } + else + { + extension = true; - if (contractStartGr <= startSreach && contractStartGr > endSearch) - { - laterThanEnd = true; + if (contractStartGr <= startSreach && contractStartGr > endSearch) + { + laterThanEnd = true; - contractStart = startSreach.ToFarsi(); - contractEnd = endSearch.ToFarsi(); - } - else - { - contractStart = leftWork.StartWorkDate > startSreach - ? leftWork.StartWorkDate.ToFarsi() - : startSreach.ToFarsi(); - contractEnd = endSearch.ToFarsi(); - } - } + contractStart = startSreach.ToFarsi(); + contractEnd = endSearch.ToFarsi(); + } + else + { + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = endSearch.ToFarsi(); + } + } - } + } - #endregion + #endregion - return new CreateCheckoutListViewModel - { - Id = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.contractWorkshop.contract.id, + return new CreateCheckoutListViewModel + { + Id = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork + .contractWorkshopEmployee.contractWorkshop.contract.id, - EmployeeId = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.employee.id, - ContractNo = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.contractWorkshop.contract.ContractNo, - //EmployerName = result.contract.EmployerName, - WorkshopName = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.contractWorkshop.workshop.WorkshopFullName, - EmployeeName = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.employee.FullName, + EmployeeId = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork + .contractWorkshopEmployee.employee.id, + ContractNo = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork + .contractWorkshopEmployee.contractWorkshop.contract.ContractNo, + //EmployerName = result.contract.EmployerName, + WorkshopName = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork + .contractWorkshopEmployee.contractWorkshop.workshop.WorkshopFullName, + EmployeeName = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork + .contractWorkshopEmployee.employee.FullName, - PersonnelCode = result.contractWorkshopEmployeeleftWorkPersonnelCode.personnelCode.PersonnelCode, - //PersonnelCodeInt = Convert.ToInt32(result.contract.PersonnelCode), - LaterThanEnd = laterThanEnd, - Extension = extension, - Description = description, - ContractStart = contractStart, - ContractEnd = contractEnd, - LeftWorkDate = leftWorkDate, - EmployeeHasCreateCheckout = result.option != null ? result.option.CreateCheckout : result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork.contractWorkshopEmployee.contractWorkshop.workshop.CreateCheckout + PersonnelCode = result.contractWorkshopEmployeeleftWorkPersonnelCode.personnelCode.PersonnelCode, + //PersonnelCodeInt = Convert.ToInt32(result.contract.PersonnelCode), + LaterThanEnd = laterThanEnd, + Extension = extension, + Description = description, + ContractStart = contractStart, + ContractEnd = contractEnd, + LeftWorkDate = leftWorkDate, + EmployeeHasCreateCheckout = result.option != null ? result.option.CreateCheckout : result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork.contractWorkshopEmployee.contractWorkshop.workshop.CreateCheckout }; - }).Where(x=>x.EmployeeHasCreateCheckout).OrderByDescending(x => x.Extension).ToList(); - - - - - Console.WriteLine("process : " + timer.Elapsed); - - return new CreateCheckoutListViewModel() - { - CreateCheckoutList = finalResult - }; - } - - public async Task CreateCkeckout(Checkout command) - { - - var creationDates = DateTime.Now; - - //var result = await _context.Database.ExecuteSqlInterpolatedAsync($"EXEC InsertQuery_Checkout {id},{employeeFullName},{isActiveString},{signature},{fathersName},{nationalCode},{dateOfBirth},{employeeId},{workshopName},{workshopId},{contractNo},{contractStart},{contractEnd},{month},{year},{contractId},{workingHoursId},{monthlySalary},{baseYearsPay},{consumableItems},{housingAllowance},{overtimePay},{nightworkPay},{fridayPay},{missionPay},{shiftPay},{familyAllowance},{bonusesPay},{yearsPay},{leavePay},{insuranceDeduction},{taxDeducation},{installmentDeduction},{salaryAidDeduction},{absenceDeduction},{creationDate},{archiveCode},{personnelCode},{sumOfWorkingDays},{totalClaims},{taxDeducation},{totalPayment}"); - var result = (_context.Database - .SqlQuery( - $"EXEC InsertQuery_CreateChekoute {command.EmployeeFullName},{"true"},{command.Signature},{command.FathersName},{command.NationalCode},{command.DateOfBirth},{command.EmployeeId},{command.WorkshopName},{command.WorkshopId},{command.ContractNo},{command.ContractStart},{command.ContractEnd},{command.Month},{command.Year},{command.ContractId},{command.WorkingHoursId},{command.MonthlySalary},{command.BaseYearsPay},{command.ConsumableItems},{command.HousingAllowance},{command.OvertimePay},{command.NightworkPay},{command.FridayPay},{command.MissionPay},{command.ShiftPay},{command.FamilyAllowance},{command.BonusesPay},{command.YearsPay},{command.LeavePay},{command.InsuranceDeduction},{command.TaxDeducation},{command.InstallmentDeduction},{command.SalaryAidDeduction},{command.AbsenceDeduction},{creationDates},{command.ArchiveCode},{command.PersonnelCode},{command.SumOfWorkingDays},{command.TotalClaims},{command.TotalDeductions},{command.TotalPayment},{0},{command.MarriedAllowance},{command.AbsencePeriod},{command.AverageHoursPerDay},{command.CreditLeaves},{command.LeaveCheckout},{command.HasRollCall},{command.OverTimeWorkValue},{command.OverNightWorkValue},{command.FridayWorkValue},{command.RotatingShiftValue},{command.AbsenceValue}, {command.TotalDayOfLeaveCompute},{command.TotalDayOfYearsCompute},{command.TotalDayOfBunosesCompute}") - .AsEnumerable())// این قسمت مهمه! - .FirstOrDefault(); - - var entity = await _context.CheckoutSet.FirstOrDefaultAsync(x => x.id == result); - - entity.SetSalaryAid(command.SalaryAids, command.SalaryAidDeduction); - entity.SetLoanInstallment(command.LoanInstallments, command.InstallmentDeduction); - entity.SetCheckoutRollCall(command.CheckoutRollCall); - await _context.SaveChangesAsync(); - - } - - - public async Task> Search(CheckoutSearchModel searchModel) - { - List query = null; - var connection = _configuration.GetConnectionString("MesbahDb"); - //var watch = System.Diagnostics.Stopwatch.StartNew(); - var AcountID = _authHelper.CurrentAccountId(); - var workshopAcounts = _context.WorkshopAccounts.Where(x => x.AccountId == AcountID) - .Select(x => x.WorkshopId).ToList(); - //Console.WriteLine("acID.. " + watch.Elapsed); - - //var watchmp = System.Diagnostics.Stopwatch.StartNew(); - var emp = _context.WorkshopEmployers.Where(x => workshopAcounts.Contains(x.WorkshopId)) - .Select(x => x.EmployerId); - var emp2 = _context.WorkshopEmployers.Where(x => x.EmployerId == searchModel.EmployerId) - .Select(x => x.WorkshopId).ToList(); - - //Console.WriteLine("emp.. " + watchmp.Elapsed); - //var employerlist = _context.Employers.Where(x => emp.Contains(x.id)).ToList(); - - - //var stored = _context.CheckoutSet.FromSqlInterpolated($"SelectQuery_AllChekouts2").AsNoTracking() - // .ToList(); - //var watchusing = System.Diagnostics.Stopwatch.StartNew(); - using (var conn = new SqlConnection(connection)) - { - await conn.OpenAsync(); - - var command = new SqlCommand("ChekoutMainList", conn); - command.CommandType = CommandType.StoredProcedure; - - - using (var reader = await command.ExecuteReaderAsync()) - { - query = new List(); - - while (await reader.ReadAsync()) - { - var item = new CheckoutViewModel(); - - item.Id = (long)reader["Id"]; - item.EmployeeFullName = (string)reader?["EmployeeFullName"]; - var start = (DateTime)reader["ContractStart"]; - item.ContractStart = start.ToFarsi(); - var end = (DateTime)reader["ContractEnd"]; - item.ContractEnd = end.ToFarsi(); - item.ContractStartGr = start; - item.ContractEndGr = end; - item.PersonnelCode = (string)reader?["PersonnelCode"]; - item.PersonnelCodeInt = item.PersonnelCode.ConvertToInt(); - item.ArchiveCode = (string)reader?["ArchiveCode"]; - item.SumOfWorkingDays = (string)reader?["SumOfWorkingDays"]; - item.WorkshopName = (string)reader?["WorkshopName"]; - item.Month = reader["Month"] != DBNull.Value ? (string)reader["Month"] : null; - item.Year = reader["Year"] != DBNull.Value ? (string)reader["Year"] : null; - item.ContractNo = (string)reader?["ContractNo"]; - item.ContractId = (long)reader["ContractId"]; - item.WorkshopId = (long)reader["WorkshopId"]; - item.EmployeeId = (long)reader["EmployeeId"]; - item.IsActiveString = (string)reader["IsActiveString"]; - item.Signature = (string)reader["Signature"]; - item.CreationDate = (DateTime)reader["CreationDate"]; - - - query.Add(item); - } - } - } - //Console.WriteLine("using.. " + watchusing.Elapsed); - //var query = stored.Select(x => new CheckoutViewModel() - //{ - // Id = x.id, - // EmployeeFullName = x.EmployeeFullName, - // ContractStart = x.ContractStart.ToFarsi(), - // ContractEnd = x.ContractEnd.ToFarsi(), - // ContractStartGr = x.ContractStart, - // ContractEndGr = x.ContractEnd, - // PersonnelCode = x.PersonnelCode, - // ArchiveCode = x.ArchiveCode, - // SumOfWorkingDays = x.SumOfWorkingDays, - // WorkshopName = x.WorkshopName, - // Month = x.Month, - // Year = x.Year, - // ContractNo = x.ContractNo, - // ContractId = x.ContractId, - // WorkshopId = x.WorkshopId, - // EmployeeId = x.EmployeeId, - - // IsActiveString = x.IsActiveString, - // Signature = x.Signature, - // CreationDate = x.CreationDate - //}); - - //var watchif = System.Diagnostics.Stopwatch.StartNew(); - if (!string.IsNullOrWhiteSpace(searchModel.ContractNo) && searchModel.ContractId != 0) - query = query.Where(x => - x.ContractNo == searchModel.ContractNo && x.ContractId == searchModel.ContractId).ToList(); - if (searchModel.WorkshopId != 0) - query = query.Where(x => x.WorkshopId == searchModel.WorkshopId).ToList(); - if (searchModel.EmployeeId != 0) - query = query.Where(x => x.EmployeeId == searchModel.EmployeeId).ToList(); - if (searchModel.EmployerId != 0) - { - query = query.Where(x => emp2.Contains(x.WorkshopId)).ToList(); - } - - if (!string.IsNullOrWhiteSpace(searchModel.ContractNo)) - query = query.Where(x => x.ContractNo == searchModel.ContractNo).ToList(); - - - if (searchModel.IsActiveString == null) - { - query = query.Where(x => x.IsActiveString == "true").ToList(); - } - - if (searchModel.IsActiveString == "false") - { - query = query.Where(x => x.IsActiveString == "false").ToList(); - } - else if (searchModel.IsActiveString == "both") - { - query = query.Where(x => x.IsActiveString == "false" || x.IsActiveString == "true").ToList(); - } - - query = query.Where(e => workshopAcounts.Contains(e.WorkshopId)).ToList(); - //سرچ سال - if (!string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month) && - (string.IsNullOrWhiteSpace(searchModel.ContractStart) || - string.IsNullOrWhiteSpace(searchModel.ContractEnd))) - { - var startYear = searchModel.Year + "/01/01"; - var startyearGr = startYear.ToGeorgianDateTime(); - var endYear = $"{searchModel.Year}/12/01".FindeEndOfMonth(); - var endYearGr = endYear.ToGeorgianDateTime(); - - - query = query.Where(x => x.ContractStartGr >= startyearGr && x.ContractEndGr <= endYearGr).ToList(); - if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) - return query.OrderByDescending(x => x.ContractEndGr).ThenBy(x => x.PersonnelCodeInt).ToList(); - - - - } - else if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month) && - string.IsNullOrWhiteSpace(searchModel.ContractStart) && - string.IsNullOrWhiteSpace(searchModel.ContractEnd)) - { - //سرچ سال و ماه - string y1 = $"{searchModel.Year}/{searchModel.Month}/01"; - var startDate = y1.ToGeorgianDateTime(); - string y2 = string.Empty; - int month = Convert.ToInt32(searchModel.Month); - int year = Convert.ToInt32(searchModel.Year); - - if (month <= 6) - { - y2 = $"{searchModel.Year}/{searchModel.Month}/31"; - } - else if (month > 6 && month < 12) - { - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - } - else if (month == 12) - { - switch (year) - { - case 1346: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1350: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1354: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1358: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1362: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1366: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1370: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1375: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1379: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1383: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1387: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1391: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1395: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1399: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1403: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1408: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1412: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1416: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1420: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1424: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1428: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1432: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1436: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1441: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1445: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - - default: - y2 = $"{searchModel.Year}/{searchModel.Month}/29"; - break; - } - } - - - var endDate = y2.ToGeorgianDateTime(); - - //query = query.Where(x => x.ContractEndGr >= start && x.ContractEndGr <= end).ToList(); - query = query.Where(x => - x.ContractStartGr >= startDate && x.ContractStartGr < endDate && x.ContractEndGr > startDate && - x.ContractEndGr <= endDate || - x.ContractStartGr <= startDate && x.ContractEndGr >= endDate || - startDate <= x.ContractStartGr && endDate > x.ContractStartGr || - endDate >= x.ContractEndGr && startDate < x.ContractEndGr).ToList(); - if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) - return query.OrderBy(x => x.PersonnelCodeInt).ToList(); - - } - else if (!string.IsNullOrWhiteSpace(searchModel.ContractStart) && - !string.IsNullOrWhiteSpace(searchModel.ContractEnd) && - string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month)) - { - //سرچ تاریخ - var start = searchModel.ContractStart.ToGeorgianDateTime(); - var endd = searchModel.ContractEnd.ToGeorgianDateTime(); - query = query.Where(x => - x.ContractStartGr >= start && x.ContractEndGr <= endd).ToList(); - - if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) - return query.OrderByDescending(x => x.ContractEndGr).ThenBy(x => x.PersonnelCodeInt).ToList(); - - } - - return query.OrderByDescending(x => x.Id) - .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).Take(100).ToList(); - - - - - - - //foreach(var items in query) - //{ - // var employeId = _context.WorkshopEmployers?.Where(x => x.WorkshopId == items.WorkshopId) - // .Select(x => x.EmployerId).FirstOrDefault(); - // var employerName = _context.Employers?.FirstOrDefault(x => x.id == employeId).FullName; - // items.EmployerName = employerName; - //} - //Console.WriteLine("SearchModel.. " + watchif.Elapsed); - //if (searchModel.EmployeeId != 0 || !string.IsNullOrWhiteSpace(searchModel.Year) && searchModel.WorkshopId != 0) - //{ - // if (!string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month)) - // { - // var startOfYear = searchModel.Year + "/01/01"; - // var startOfyearGr = startOfYear.ToGeorgianDateTime(); - // var endOfYear = $"{searchModel.Year}/12/01".FindeEndOfMonth(); - // var endOfYearGr = endOfYear.ToGeorgianDateTime(); - - - // query = query.Where(x => x.ContractStartGr >= startOfyearGr && x.ContractEndGr <= endOfYearGr).ToList(); - // } - // return query.OrderBy(x => x.PersonnelCode).ToList(); - //} - } - - public List SimpleSearch(CheckoutSearchModel searchModel) - { - var query = _context.CheckoutSet.Select(x => new CheckoutViewModel() - { - Id = x.id, - EmployeeId = x.EmployeeId, - WorkshopId = x.WorkshopId, - ContractStartGr = x.ContractStart, - ContractEndGr = x.ContractEnd, - ContractStart = x.ContractStart.ToFarsi(), - ContractEnd = x.ContractEnd.ToFarsi(), - Signature = x.Signature, - Year = x.Year, - Month = x.Month, - ContractNo = x.ContractNo, - ContractId = x.ContractId, - HasRollCall = x.HasRollCall - - }); - - if (searchModel.EmployeeId != 0 && searchModel.WorkshopId != 0) - query = query.Where(x => - x.EmployeeId == searchModel.EmployeeId && x.WorkshopId == searchModel.WorkshopId); - if (searchModel.EmployeeId == 0 && searchModel.WorkshopId != 0) - query = query.Where(x => x.WorkshopId == searchModel.WorkshopId); - if (searchModel.EmployeeId != 0 && searchModel.WorkshopId == 0) - query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); - if (!string.IsNullOrWhiteSpace(searchModel.ContractNo) && searchModel.ContractId > 0) - query = query.Where(x => x.ContractNo == searchModel.ContractNo); - - if (!string.IsNullOrWhiteSpace(searchModel.ContractStart) && - !string.IsNullOrWhiteSpace(searchModel.ContractEnd) && - (searchModel.EmployeeId != 0 && searchModel.WorkshopId != 0)) - { - var start = searchModel.ContractStart.ToGeorgianDateTime(); - var end = searchModel.ContractEnd.ToGeorgianDateTime(); - query = query.Where(x => x.ContractStartGr == start && x.ContractEndGr == end && x.EmployeeId == searchModel.EmployeeId && x.WorkshopId == searchModel.WorkshopId); - } - - return query.OrderBy(x => x.ContractStartGr).ToList(); - - } - - public List PrintAll(List id) - { - var query = new List(); - foreach (var item in id) - { - var ch = _context.CheckoutSet - .AsSplitQuery().Select(x => new CheckoutViewModel() - { - Id = x.id, - WorkshopId = x.WorkshopId, - ContractId = x.ContractId, - EmployeeId = x.EmployeeId, - EmployeeFullName = x.EmployeeFullName, - FathersName = x.FathersName, - NationalCode = x.NationalCode, - DateOfBirth = x.DateOfBirth, - WorkshopName = x.WorkshopName, - Month = x.Month, - Year = x.Year, - PersonnelCode = x.PersonnelCode, - PersonnelCodeInt = Convert.ToInt32(x.PersonnelCode), - ContractNo = x.ContractNo, - MonthlySalary = x.MonthlySalary.ToMoney(), - BaseYearsPay = x.BaseYearsPay.ToMoney(), - ConsumableItems = x.ConsumableItems.ToMoney(), - HousingAllowance = x.HousingAllowance.ToMoney(), - OvertimePay = x.OvertimePay.ToMoney(), - NightworkPay = x.NightworkPay.ToMoney(), - FridayPay = x.FridayPay.ToMoney(), - MissionPay = x.MissionPay.ToMoney(), - ShiftPay = x.ShiftPay.ToMoney(), - FamilyAllowance = x.FamilyAllowance.ToMoney(), - BonusesPay = x.BonusesPay.ToMoney(), - YearsPay = x.YearsPay.ToMoney(), - LeavePay = x.LeavePay.ToMoney(), - InsuranceDeduction = x.InsuranceDeduction.ToMoney(), - TaxDeducation = x.TaxDeducation.ToMoney(), - InstallmentDeduction = x.InstallmentDeduction.ToMoney(), - SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(), - AbsenceDeduction = x.AbsenceDeduction.ToMoney(), - TotalClaims = x.TotalClaims, - TotalDeductions = x.TotalDeductions, - TotalPayment = x.TotalPayment.ToMoney(), - RewardPay = x.RewardPay.ToMoneyNullable(), - ContractStartGr = x.ContractStart, - ContractEndGr = x.ContractEnd, - IsLeft = false, - LeftWorkDate = "", - LastDayOfWork = "", - MarriedAllowance = x.MarriedAllowance.ToMoney(), - HasRollCall = x.HasRollCall, - SumOfWorkingDays = "-", - OverTimeWorkValue = x.OverTimeWorkValue, - OverNightWorkValue = x.OverNightWorkValue, - FridayWorkValue = x.FridayWorkValue, - RotatingShiftValue = x.RotatingShiftValue, - AbsenceValue = x.AbsenceValue, - MaritalStatus = "", - TotalDayOfLeaveCompute = "-", - TotalDayOfYearsCompute = "-", - TotalDayOfBunosesCompute = "-", - InstallmentViewModels = x.LoanInstallments.Select(i => new LoanInstallmentViewModel() - { - Amount = i.AmountForMonth, - AmountDouble = i.AmountForMonth.MoneyToDouble(), - Year = i.Year, - Month = i.Month, - IsActive = i.IsActive, - RemainingAmount = i.LoanRemaining, - LoanAmount = i.LoanAmount - }).ToList(), - SalaryAidViewModels = x.SalaryAids.Select(s => new SalaryAidViewModel() - { - Amount = s.Amount, - AmountDouble = s.Amount.MoneyToDouble(), - SalaryAidDateTimeFa = s.SalaryAidDateTimeFa, - SalaryAidDateTimeGe = s.SalaryAidDateTime - }).ToList(), - CheckoutRollCall = x.CheckoutRollCall != null ? new CheckoutRollCallViewModel() - { - TotalPresentTimeSpan = x.CheckoutRollCall.TotalPresentTimeSpan, - TotalBreakTimeSpan = x.CheckoutRollCall.TotalBreakTimeSpan, - TotalWorkingTimeSpan = x.CheckoutRollCall.TotalWorkingTimeSpan, - TotalPaidLeaveTmeSpan = x.CheckoutRollCall.TotalPaidLeaveTmeSpan, - TotalMandatoryTimeSpan = x.CheckoutRollCall.TotalMandatoryTimeSpan, - TotalSickLeaveTimeSpan = x.CheckoutRollCall.TotalSickLeaveTimeSpan, - RollCallDaysCollection = x.CheckoutRollCall.RollCallDaysCollection.Select(d => new CheckoutRollCallDayViewModel() - { - WorkingTimeSpan = d.WorkingTimeSpan, - BreakTimeSpan = d.BreakTimeSpan, - IsSliced = d.IsSliced, - IsAbsent = d.IsAbsent, - IsFriday = d.IsFriday, - IsHoliday = d.IsHoliday, - LeaveType = d.LeaveType, - CheckoutId = d.CheckoutId, - Date = d.Date, - FirstEndDate = d.FirstEndDate, - FirstStartDate = d.FirstStartDate, - Id = d.Id, - SecondEndDate = d.SecondEndDate, - SecondStartDate = d.SecondStartDate - }).ToList() - - } : null, - }).SingleOrDefault(x => x.Id == item); - var workshopName = _context.Workshops.FirstOrDefault(x => x.id == ch.WorkshopId); - ch.WorkshopName = workshopName.WorkshopName; - ch.TotalPaymentHide = workshopName.TotalPaymentHide; - var emp = _context.WorkshopEmployers.Where(x => x.WorkshopId == ch.WorkshopId) - .Select(x => x.EmployerId); - var employerlist = _context.Employers.Where(x => emp.Contains(x.id)); - var employers = new List(); - - foreach (var em in employerlist) - { - var employer = new EmprViewModel() - { - EmployerFullName = em.FName + " " + em.LName, - IsLegal = em.IsLegal, - }; - employers.Add(employer); - } - - ch.MaritalStatus = _context.Employees.Find(ch.EmployeeId)?.MaritalStatus; - ch.EmployerList = employers; - var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(ch.ContractId); - ch.CreateWorkingHoursTemp = workingHours; - var AbsenceDeduction = ch.AbsenceDeduction.MoneyToDouble(); - var InstallmentDeduction = ch.InstallmentDeduction.MoneyToDouble(); - var InsuranceDeduction = ch.InsuranceDeduction.MoneyToDouble(); - var SalaryAidDeduction = ch.SalaryAidDeduction.MoneyToDouble(); - var TaxDeducation = ch.TaxDeducation.MoneyToDouble(); - var TotalDeduction = AbsenceDeduction + InsuranceDeduction + InstallmentDeduction + SalaryAidDeduction + - TaxDeducation; - ch.TotalDeductions = TotalDeduction.ToMoney(); - - - var leftWorkSearch = new LeftWorkSearchModel() { WorkshopId = ch.WorkshopId, EmployeeId = ch.EmployeeId }; - var leftworkResult = _leftWorkRepository.search(leftWorkSearch).FirstOrDefault(); - var leftCheck = _leftWorkRepository.CheckoutleftWorkCheck(ch.ContractStartGr, ch.WorkshopId, ch.EmployeeId); - var contractLeftWorkDate = ch.ContractEndGr.AddDays(1); - if (leftCheck != null && leftCheck.LeftWorkDateGr == contractLeftWorkDate) - { - ch.IsLeft = true; - ch.LeftWorkDate = leftCheck.LeftWorkDate; - ch.LastDayOfWork = ch.ContractEndGr.ToFarsi(); - } - //var checkBonusesPay = leftworkResult != null && leftworkResult.AddBonusesPay; - //var checkYearsPay = leftworkResult != null && leftworkResult.AddYearsPay; - //var checkLeavePay = leftworkResult != null && leftworkResult.AddLeavePay; - - //if (!checkBonusesPay || !checkYearsPay || !checkLeavePay) - //{ - // double sumOfBonusAndYearsPay = 0; - // if (!checkBonusesPay) - // { - // var bonusesPay = ch.BonusesPay.MoneyToDouble(); - // sumOfBonusAndYearsPay += bonusesPay; - // ch.BonusesPay = "0"; - - // } - - // if (!checkYearsPay) - // { - // var yearsPay = ch.YearsPay.MoneyToDouble(); - // sumOfBonusAndYearsPay += yearsPay; - // ch.YearsPay = "0"; - // } - - // if (!checkLeavePay) - // { - // var leavePay = ch.LeavePay.MoneyToDouble(); - // sumOfBonusAndYearsPay += leavePay; - // ch.LeavePay = "0"; - // } - // var totalClaimsDouble = ch.TotalClaims.MoneyToDouble(); - // var totalClaims = totalClaimsDouble - sumOfBonusAndYearsPay; - // ch.TotalClaims = totalClaims.ToMoney(); - - // var totalPayment = totalClaims - TotalDeduction; - // ch.TotalPayment = totalPayment.ToMoney(); - - - //} - - //if (ch.WorkshopId == 40 || ch.WorkshopId == 68 || ch.WorkshopId == 44 || ch.WorkshopId == 45 || ch.WorkshopId == 280) - //{ - // ch.TotalClaims = ""; - // ch.TotalDeductions = ""; - // ch.TotalPayment = ""; - //} - - #region Leave - - var leavesQuery = _context.LeaveList - .Where(x => x.EmployeeId == ch.EmployeeId && x.WorkshopId == ch.WorkshopId && - x.StartLeave <= ch.ContractEndGr && x.EndLeave >= ch.ContractStartGr) - .AsNoTracking(); - - var paidLeave = leavesQuery.Where(x => x.LeaveType == "استحقاقی"); - var sickLeave = leavesQuery.Where(x => x.LeaveType == "استعلاجی").ToList(); - - - var dailyPaidLeave = paidLeave.Where(x => x.PaidLeaveType == "روزانه").ToList(); - var hourlyPaidLeave = paidLeave.Where(x => x.PaidLeaveType == "ساعتی").ToList(); - - var sickLeaveTimeSpans = sickLeave.Select(x => - { - var startLeave = ch.ContractStartGr > x.StartLeave ? ch.ContractStartGr : x.StartLeave; - var endLeave = ch.ContractEndGr < x.EndLeave ? ch.ContractEndGr : x.EndLeave; - - return (endLeave - startLeave).Add(TimeSpan.FromDays(1)); - }); - - ch.TotalSickLeave = new TimeSpan(sickLeaveTimeSpans.Sum(x => x.Ticks)).ToFarsiDaysAndHoursAndMinutes("-"); - - var hourlyPaidLeaveTimeSpans = hourlyPaidLeave.Select(x => TimeOnly.Parse(x.LeaveHourses).ToTimeSpan()); - - var dailyPaidLeaveTimeSpans = dailyPaidLeave.Select(x => - { - var startLeave = ch.ContractStartGr > x.StartLeave ? ch.ContractStartGr : x.StartLeave; - var endLeave = ch.ContractEndGr < x.EndLeave ? ch.ContractEndGr : x.EndLeave; - return (endLeave - startLeave).Add(TimeSpan.FromDays(1)); - }); - - var totalPaidLeaveTimeSpans = hourlyPaidLeaveTimeSpans.Concat(dailyPaidLeaveTimeSpans); - ch.TotalHourlyLeave = new TimeSpan(hourlyPaidLeaveTimeSpans.Sum(x => x.Ticks)); - ch.TotalPaidLeave = new TimeSpan(totalPaidLeaveTimeSpans.Sum(x => x.Ticks)).ToFarsiDaysAndHoursAndMinutes("-"); - - - - #endregion - - - if (ch.TotalPaymentHide == false) - { - ch.TotalClaims = ""; - ch.TotalDeductions = ""; - ch.TotalPayment = ""; - } - - if (ch.CheckoutRollCall != null) - { - ch.TotalWorkingTimeStr = ch.CheckoutRollCall.TotalWorkingTimeSpan.ToFarsiHoursAndMinutes("-"); - ch.TotalBreakTimeStr = ch.CheckoutRollCall.TotalBreakTimeSpan.ToFarsiHoursAndMinutes("-"); - ch.TotalPresentTimeStr = ch.CheckoutRollCall.TotalPresentTimeSpan.ToFarsiHoursAndMinutes("-"); - ch.TotalMandatoryTimeStr = ch.CheckoutRollCall.TotalMandatoryTimeSpan.ToFarsiHoursAndMinutes("-"); - - ch.MonthlyRollCall = ch.CheckoutRollCall.RollCallDaysCollection - .Select(x => new CheckoutDailyRollCallViewModel - { - DayOfWeek = x.Date.DayOfWeek.DayOfWeeKToPersian(), - StartDate1 = x.FirstStartDate, - EndDate1 = x.FirstEndDate, - StartDate2 = x.SecondStartDate, - EndDate2 = x.SecondEndDate, - TotalhourseSpan = x.WorkingTimeSpan, - IsSliced = x.IsSliced, - BreakTimeTimeSpan = x.BreakTimeSpan, - LeaveType = x.LeaveType, - IsAbsent = x.IsAbsent, - IsFriday = x.IsFriday, - IsHoliday = x.IsHoliday, - DateTimeGr = x.Date, - TotalWorkingHours = $"{(int)(x.WorkingTimeSpan.TotalHours)}:{x.WorkingTimeSpan.Minutes:00}", - BreakTimeString = $"{(int)(x.BreakTimeSpan.TotalHours)}:{x.BreakTimeSpan.Minutes:00}", - RollCallDateFa = x.Date.ToFarsi() - }).ToList(); - - } - else - { - - if (ch.HasRollCall) - ch.MonthlyRollCall = _rollCallRepository.GetEmployeeRollCallsForMonth(ch.EmployeeId, ch.WorkshopId, ch.ContractStartGr, ch.ContractEndGr); - else - { - ch.CreateWorkingHoursTemp.ContractStartGr = ch.ContractStartGr; - ch.CreateWorkingHoursTemp.ContractEndGr = ch.ContractEndGr; - ch.CreateWorkingHoursTemp.ContarctStart = ch.ContractStartGr.ToFarsi(); - ch.CreateWorkingHoursTemp.ContractEnd = ch.ContractEndGr.ToFarsi(); - ch.CreateWorkingHoursTemp.EmployeeId = ch.EmployeeId; - ch.CreateWorkingHoursTemp.WorkshopId = ch.WorkshopId; - ch.MonthlyRollCall = ConvertStaticToRollCall(ch.CreateWorkingHoursTemp, workshopName.WorkshopHolidayWorking); - } - } - query.Add(ch); - } - - query = query.OrderBy(x => x.PersonnelCodeInt).ToList(); - int printNumer = 0; - foreach (var rec in query) - { - printNumer += 1; - rec.PrintCounter = printNumer; - } - return query; - } - - public CheckoutLeavePrintViewModel PrintLeave(long id) - { - var ch = _context.CheckoutSet.Select(x => new CheckoutLeavePrintViewModel() - { - Id = x.id, - EmployeeId = x.EmployeeId, - ContractNo = x.ContractNo, - EmployeeFullName = x.EmployeeFullName, - NationalCode = x.NationalCode, - WorkshopId = x.WorkshopId, - WorkshopName = x.WorkshopName, - LeaveList = new List(), - EmployerList = new List(), - }).SingleOrDefault(x => x.Id == id); - - var emp = _context.WorkshopEmployers.Where(x => x.WorkshopId == ch.WorkshopId) - .Select(x => x.EmployerId).ToList(); - var employerlist = _context.Employers.Select(x => new EmprViewModel() - { - Id = x.id, - EmployerFullName = x.FName + " " + x.LName, - IsLegal = x.IsLegal, - - }).Where(x => emp.Contains(x.Id)).ToList(); - if (employerlist.Count > 0) - { - ch.EmployerList = employerlist; - } - else - { - ch.EmployerList = new List(); - } - - - //var leaveList = _context.LeaveList.Select(x => new LeaveViewModel() - //{ - // Id = x.id, - // StartLeave = x.StartLeave.ToFarsi(), - // EndLeave = x.EndLeave.ToFarsi(), - // LeaveHourses = x.LeaveHourses, - // WorkshopId = x.WorkshopId, - // EmployeeId = x.EmployeeId, - // PaidLeaveType = x.PaidLeaveType, - // LeaveType = x.LeaveType, - //}).Where(x => x.WorkshopId == ch.WorkshopId && x.EmployeeId == ch.EmployeeId && x.LeaveType == "استحقاقی").ToList(); - //if (leaveList.Count > 0) - //{ - // ch.LeaveList = leaveList; - //} - - - var leaveList = _context.LeaveList.Where(x => x.WorkshopId == ch.WorkshopId && x.EmployeeId == ch.EmployeeId && x.LeaveType == "استحقاقی"); - var leaveViewModel = new List(); - - foreach (var list in leaveList) - { - var StartTime = Convert.ToDateTime(list.StartLeave); - var EndTime = Convert.ToDateTime(list.EndLeave); - if (StartTime > EndTime || StartTime == EndTime) - { - EndTime = EndTime.AddDays(1); - } - - var ConvertTime = (Convert.ToDateTime(EndTime) - Convert.ToDateTime(StartTime)); - var hours = (int)ConvertTime.TotalHours; - var minutes = ConvertTime.TotalMinutes % 60; - - var LeaveHourses = ""; - if (hours > 0 && minutes > 0) - { - LeaveHourses = hours + " " + "ساعت و" + " " + minutes + " " + "دقیقه"; - } - else if (hours > 0 && minutes == 0) - { - LeaveHourses = hours + " " + "ساعت"; - } - else if (hours == 0 && minutes > 0) - { - LeaveHourses = minutes + " " + "دقیقه"; - } - - var leave = new LeaveViewModel() - { - Id = list.id, - StartLeave = list.StartLeave.ToFarsi(), - EndLeave = list.EndLeave.ToFarsi(), - StartLeaveGr = list.StartLeave, - EndLeaveGr = list.EndLeave, - LeaveHourses = LeaveHourses, - WorkshopId = list.WorkshopId, - EmployeeId = list.EmployeeId, - PaidLeaveType = list.PaidLeaveType, - LeaveType = list.LeaveType, - }; - leaveViewModel.Add(leave); - } - - ch.LeaveList = leaveViewModel; - - - return ch; - } - - public CheckoutViewModel PrintOne(long id) - { - var ch = _context.CheckoutSet - .AsSplitQuery().Select(x => new CheckoutViewModel() - { - Id = x.id, - WorkshopId = x.WorkshopId, - ContractId = x.ContractId, - EmployeeId = x.EmployeeId, - EmployeeFullName = x.EmployeeFullName, - FathersName = x.FathersName, - NationalCode = x.NationalCode, - DateOfBirth = x.DateOfBirth, - WorkshopName = x.WorkshopName, - Month = x.Month, - Year = x.Year, - ContractNo = x.ContractNo, - MonthlySalary = x.MonthlySalary.ToMoney(), - BaseYearsPay = x.BaseYearsPay.ToMoney(), - ConsumableItems = x.ConsumableItems.ToMoney(), - HousingAllowance = x.HousingAllowance.ToMoney(), - OvertimePay = x.OvertimePay.ToMoney(), - NightworkPay = x.NightworkPay.ToMoney(), - FridayPay = x.FridayPay.ToMoney(), - MissionPay = x.MissionPay.ToMoney(), - ShiftPay = x.ShiftPay.ToMoney(), - FamilyAllowance = x.FamilyAllowance.ToMoney(), - BonusesPay = x.BonusesPay.ToMoney(), - YearsPay = x.YearsPay.ToMoney(), - LeavePay = x.LeavePay.ToMoney(), - InsuranceDeduction = x.InsuranceDeduction.ToMoney(), - TaxDeducation = x.TaxDeducation.ToMoney(), - InstallmentDeduction = x.InstallmentDeduction.ToMoney(), - SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(), - AbsenceDeduction = x.AbsenceDeduction.ToMoney(), - TotalClaims = x.TotalClaims, - TotalDeductions = x.TotalDeductions, - TotalPayment = x.TotalPayment.ToMoney(), - RewardPay = x.RewardPay.ToMoneyNullable(), - ContractStartGr = x.ContractStart, - ContractEndGr = x.ContractEnd, - IsLeft = false, - LeftWorkDate = "", - LastDayOfWork = "", - MarriedAllowance = x.MarriedAllowance.ToMoney(), - HasRollCall = x.HasRollCall, - SumOfWorkingDays = "-", - OverTimeWorkValue = x.OverTimeWorkValue, - OverNightWorkValue = x.OverNightWorkValue, - FridayWorkValue = x.FridayWorkValue, - RotatingShiftValue = x.RotatingShiftValue, - AbsenceValue = x.AbsenceValue, - MaritalStatus = "", - TotalDayOfLeaveCompute = "-", - TotalDayOfYearsCompute = "-", - TotalDayOfBunosesCompute = "-", - InstallmentViewModels = x.LoanInstallments.Select(i => new LoanInstallmentViewModel() - { - Amount = i.AmountForMonth, - AmountDouble = i.AmountForMonth.MoneyToDouble(), - Year = i.Year, - Month = i.Month, - IsActive = i.IsActive, - RemainingAmount = i.LoanRemaining, - LoanAmount = i.LoanAmount - }).ToList(), - SalaryAidViewModels = x.SalaryAids.Select(s => new SalaryAidViewModel() - { - Amount = s.Amount, - AmountDouble = s.Amount.MoneyToDouble(), - SalaryAidDateTimeFa = s.SalaryAidDateTimeFa, - SalaryAidDateTimeGe = s.SalaryAidDateTime - }).ToList(), - - }).SingleOrDefault(x => x.Id == id); - - var workshopName = _context.Workshops.FirstOrDefault(x => x.id == ch.WorkshopId); - ch.WorkshopName = workshopName.WorkshopName; - ch.TotalPaymentHide = workshopName.TotalPaymentHide; - var emp = _context.WorkshopEmployers.Where(x => x.WorkshopId == ch.WorkshopId) - .Select(x => x.EmployerId); - var employerlist = _context.Employers.Where(x => emp.Contains(x.id)); - var employers = new List(); - - foreach (var em in employerlist) - { - var employer = new EmprViewModel() - { - EmployerFullName = em.FName + " " + em.LName, - IsLegal = em.IsLegal, - }; - employers.Add(employer); - } - ch.MaritalStatus = _context.Employees.Find(ch.EmployeeId)?.MaritalStatus; - ch.EmployerList = employers; - var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(ch.ContractId); - ch.CreateWorkingHoursTemp = workingHours; - var AbsenceDeduction = ch.AbsenceDeduction.MoneyToDouble(); - var InstallmentDeduction = ch.InstallmentDeduction.MoneyToDouble(); - var InsuranceDeduction = ch.InsuranceDeduction.MoneyToDouble(); - var SalaryAidDeduction = ch.SalaryAidDeduction.MoneyToDouble(); - var TaxDeducation = ch.TaxDeducation.MoneyToDouble(); - - var TotalDeduction = AbsenceDeduction + InsuranceDeduction + InstallmentDeduction + SalaryAidDeduction + - TaxDeducation; - ch.TotalDeductions = TotalDeduction.ToMoney(); - - - var leftWorkSearch = new LeftWorkSearchModel() { WorkshopId = ch.WorkshopId, EmployeeId = ch.EmployeeId }; - var leftworkResult = _leftWorkRepository.search(leftWorkSearch).FirstOrDefault(); - var leftCheck = _leftWorkRepository.CheckoutleftWorkCheck(ch.ContractStartGr, ch.WorkshopId, ch.EmployeeId); - var contractLeftWorkDate = ch.ContractEndGr.AddDays(1); - if (leftCheck != null && leftCheck.LeftWorkDateGr == contractLeftWorkDate) - { - ch.IsLeft = true; - ch.LeftWorkDate = leftCheck.LeftWorkDate; - ch.LastDayOfWork = ch.ContractEndGr.ToFarsi(); - } - - //var checkBonusesPay = leftworkResult != null && leftworkResult.AddBonusesPay; - //var checkYearsPay = leftworkResult != null && leftworkResult.AddYearsPay; - //var checkLeavePay = leftworkResult != null && leftworkResult.AddLeavePay; - - //if (!checkBonusesPay || !checkYearsPay || !checkLeavePay) - //{ - // double sumOfBonusAndYearsPay = 0; - // if (!checkBonusesPay) - // { - // var bonusesPay = ch.BonusesPay.MoneyToDouble(); - // sumOfBonusAndYearsPay += bonusesPay; - // ch.BonusesPay = "0"; - - // } - - // if (!checkYearsPay) - // { - // var yearsPay = ch.YearsPay.MoneyToDouble(); - // sumOfBonusAndYearsPay += yearsPay; - // ch.YearsPay = "0"; - // } - - // if (!checkLeavePay) - // { - // var leavePay = ch.LeavePay.MoneyToDouble(); - // sumOfBonusAndYearsPay += leavePay; - // ch.LeavePay = "0"; - // } - // var totalClaimsDouble = ch.TotalClaims.MoneyToDouble(); - // var totalClaims = totalClaimsDouble - sumOfBonusAndYearsPay; - // ch.TotalClaims = totalClaims.ToMoney(); - - // var totalPayment = totalClaims - TotalDeduction; - // ch.TotalPayment = totalPayment.ToMoney(); - - //} - - //if (ch.WorkshopId == 40 || ch.WorkshopId == 68 || ch.WorkshopId == 44 || ch.WorkshopId == 45 || ch.WorkshopId == 280) - //{ - // ch.TotalClaims = ""; - // ch.TotalDeductions = ""; - // ch.TotalPayment = ""; - //} - - #region Leave - - var leavesQuery = _context.LeaveList - .Where(x => x.EmployeeId == ch.EmployeeId && x.WorkshopId == ch.WorkshopId && - x.StartLeave <= ch.ContractEndGr && x.EndLeave >= ch.ContractStartGr) - .AsNoTracking(); - - var paidLeave = leavesQuery.Where(x => x.LeaveType == "استحقاقی"); - var sickLeave = leavesQuery.Where(x => x.LeaveType == "استعلاجی").ToList(); - - - var dailyPaidLeave = paidLeave.Where(x => x.PaidLeaveType == "روزانه").ToList(); - var hourlyPaidLeave = paidLeave.Where(x => x.PaidLeaveType == "ساعتی").ToList(); - - var sickLeaveTimeSpans = sickLeave.Select(x => - { - var startLeave = ch.ContractStartGr > x.StartLeave ? ch.ContractStartGr : x.StartLeave; - var endLeave = ch.ContractEndGr < x.EndLeave ? ch.ContractEndGr : x.EndLeave; - - return (endLeave - startLeave).Add(TimeSpan.FromDays(1)); - }); - - ch.TotalSickLeave = new TimeSpan(sickLeaveTimeSpans.Sum(x => x.Ticks)).ToFarsiDaysAndHoursAndMinutes("-"); - - var hourlyPaidLeaveTimeSpans = hourlyPaidLeave.Select(x => TimeOnly.Parse(x.LeaveHourses).ToTimeSpan()).ToList(); - - var dailyPaidLeaveTimeSpans = dailyPaidLeave.Select(x => - { - var startLeave = ch.ContractStartGr > x.StartLeave ? ch.ContractStartGr : x.StartLeave; - var endLeave = ch.ContractEndGr < x.EndLeave ? ch.ContractEndGr : x.EndLeave; - return (endLeave - startLeave).Add(TimeSpan.FromDays(1)); - }); - - var totalPaidLeaveTimeSpans = hourlyPaidLeaveTimeSpans.Concat(dailyPaidLeaveTimeSpans); - ch.TotalHourlyLeave = new TimeSpan(hourlyPaidLeaveTimeSpans.Sum(x => x.Ticks)); - ch.TotalPaidLeave = new TimeSpan(totalPaidLeaveTimeSpans.Sum(x => x.Ticks)).ToFarsiDaysAndHoursAndMinutes("-"); - - - - #endregion - - - - if (ch.TotalPaymentHide == false) - { - ch.TotalClaims = ""; - ch.TotalDeductions = ""; - ch.TotalPayment = ""; - } - if (ch.HasRollCall) - ch.MonthlyRollCall = _rollCallRepository.GetEmployeeRollCallsForMonth(ch.EmployeeId, ch.WorkshopId, ch.ContractStartGr, ch.ContractEndGr); - else - { - ch.CreateWorkingHoursTemp.ContractStartGr = ch.ContractStartGr; - ch.CreateWorkingHoursTemp.ContractEndGr = ch.ContractEndGr; - ch.CreateWorkingHoursTemp.ContarctStart = ch.ContractStartGr.ToFarsi(); - ch.CreateWorkingHoursTemp.ContractEnd = ch.ContractEndGr.ToFarsi(); - ch.CreateWorkingHoursTemp.EmployeeId = ch.EmployeeId; - ch.CreateWorkingHoursTemp.WorkshopId = ch.WorkshopId; - ch.MonthlyRollCall = ConvertStaticToRollCall(ch.CreateWorkingHoursTemp, workshopName.WorkshopHolidayWorking); - } - return ch; - } - - private List ConvertStaticToRollCall(CreateWorkingHoursTemp workingHours, bool workshopHolidayWorking) - { - var rollCalls = _rollCallMandatoryRepository.ConvertStaticHoursToRollCall(workingHours, - workshopHolidayWorking); - var workshopId = workingHours.WorkshopId; - var employeeId = workingHours.EmployeeId; - var year = Convert.ToInt32(workingHours.ContarctStart.Substring(0, 4)); - var month = Convert.ToInt32(workingHours.ContarctStart.Substring(5, 2)); - var startMonthDay = $"{year:0000}/{month:00}/01".ToGeorgianDateTime(); - var endMonthDay = workingHours.ContractEndGr; - - var leaves = _context.LeaveList.Where(x => - x.WorkshopId == workshopId && x.EmployeeId == employeeId && x.EndLeave.Date >= startMonthDay.Date && - x.StartLeave.Date <= endMonthDay.Date).ToList(); - - var firstDayOfCurrentMonth = new DateTime(year, month, 1, new PersianCalendar()); - - - if (month == 12) - { - year += 1; - month = 1; - } - else - month += 1; - - var nextMonthDate = new DateTime(year, month, 1, new PersianCalendar()); - - var lastDayOfCurrentMonth = nextMonthDate.AddDays(-1); - - int dateRange = (int)(lastDayOfCurrentMonth - firstDayOfCurrentMonth).TotalDays + 1; - - - var holidays = _context.HolidayItems.Where(x => x.HolidayYear.Contains(year.ToString())).Select(x => new HolidayItemViewModel - { - Id = x.id, - Holidaydate = x.Holidaydate.ToFarsi(), - HolidayId = x.HolidayId, - HolidayYear = x.HolidayYear, - HolidaydateGr = x.Holidaydate - }).ToList(); - - if (workshopHolidayWorking) - holidays = []; - - //all the dates from start to end, to be compared with present days to get absent dates - var completeDaysList = Enumerable.Range(0, dateRange).Select(offset => startMonthDay.AddDays(offset).Date).ToList(); - - var absentRecords = completeDaysList - .ExceptBy(rollCalls.Select(x => x.ShiftDate.Date), y => y.Date) - .Select(x => - { - var leave = leaves.FirstOrDefault(y => - y.EmployeeId == employeeId && y.EndLeave.Date >= x.Date && y.StartLeave.Date <= x.Date); - var isHoliday = false; - var isFriday = x.Date.DayOfWeek == DayOfWeek.Friday; - var isNormalWorkingDay = isHoliday == false && isFriday == false; - return new CheckoutDailyRollCallViewModel() - { - StartDate1 = null, - EndDate1 = null, - DateTimeGr = x.Date, - DayOfWeek = x.Date.DayOfWeek.DayOfWeeKToPersian(), - RollCallDateFa = x.Date.ToFarsi(), - LeaveType = leave != null ? leave.LeaveType : "", - IsAbsent = leave == null && isNormalWorkingDay - }; - }); - - - var presentDays = rollCalls.GroupBy(x => x.ShiftDate.Date).Select(x => - { - - var orderedRollcalls = x.OrderBy(y => y.ShiftDate).ToList(); - - var rollCallTimeSpanPerDay = - new TimeSpan(x.Where(y => y.EndDate != null).Sum(y => y.ShiftEndWithoutRest == null ? (y.EndDate - y.StartDate).Value!.Ticks : (y.ShiftEndWithoutRest - y.StartDate)!.Value.Ticks)); - var breakTimePerDay = new TimeSpan(x.Sum(r => r.BreakTimeSpan.Ticks)); - - var firstRollCall = orderedRollcalls.FirstOrDefault(); - var secondRollCall = orderedRollcalls.Skip(1).FirstOrDefault(); - DateTime? secondRCEndDate = null; - DateTime? firstRCEndDate = null; - - if (firstRollCall != null) - firstRCEndDate = firstRollCall.ShiftEndWithoutRest ?? firstRollCall.EndDate; - if (secondRollCall != null) - secondRCEndDate = secondRollCall.ShiftEndWithoutRest ?? secondRollCall.EndDate; - - - - return new CheckoutDailyRollCallViewModel() - { - StartDate1 = firstRollCall?.StartDate?.ToString("HH:mm") ?? "", - EndDate1 = firstRCEndDate?.ToString("HH:mm") ?? "", - - StartDate2 = secondRollCall?.StartDate?.ToString("HH:mm") ?? "", - EndDate2 = secondRCEndDate?.ToString("HH:mm") ?? "", - - TotalhourseSpan = rollCallTimeSpanPerDay - breakTimePerDay, - - BreakTimeTimeSpan = breakTimePerDay, - - DayOfWeek = x.Key.DayOfWeek.DayOfWeeKToPersian(), - RollCallDateFa = x.Key.Date.ToFarsi(), - DateTimeGr = x.Key.Date, - IsSliced = x.Count() > 2, - IsAbsent = false - }; - }); - - - presentDays = presentDays.Select(x => new CheckoutDailyRollCallViewModel - { - StartDate1 = x.StartDate1, - EndDate1 = x.EndDate1, - EndDate2 = x.EndDate2, - StartDate2 = x.StartDate2, - TotalWorkingHours = $"{(int)(x.TotalhourseSpan.TotalHours)}:{x.TotalhourseSpan.Minutes:00}", - BreakTimeString = $"{(int)(x.BreakTimeTimeSpan.TotalHours)}:{x.BreakTimeTimeSpan.Minutes:00}", - TotalhourseSpan = x.TotalhourseSpan, - BreakTimeTimeSpan = x.BreakTimeTimeSpan, - DayOfWeek = x.DayOfWeek, - RollCallDateFa = x.RollCallDateFa, - DateTimeGr = x.DateTimeGr, - IsSliced = x.IsSliced, - IsAbsent = false - }); - - var result = presentDays.Concat(absentRecords).OrderBy(x => x.DateTimeGr).ToList(); - result.ForEach(x => - { - x.IsHoliday = holidays.Any(y => x.DateTimeGr.Date == y.HolidaydateGr.Date); - x.IsFriday = x.DateTimeGr.DayOfWeek == DayOfWeek.Friday; - }); - - return result; - } - - public OperationResult RemoveCheckout(long id) - { - var op = new OperationResult(); - var item = _context.CheckoutSet.FirstOrDefault(x => x.id == id); - if (item != null) - _context.CheckoutSet.Remove(item); - - _context.SaveChanges(); - return op.Succcedded(); - } - - #region Client - - public List SearchForClient(CheckoutSearchModel searchModel) - { - #region CheckValidtWorkshop - - var accountId = _authHelper.CurrentAccountId(); - var contracingPartyAcc = _context.ContractingPartyAccounts.FirstOrDefault(x => x.AccountId == accountId); - if (contracingPartyAcc == null) - { - return new List(); - } - var employers = - _context.Employers.Where(x => x.ContractingPartyId == contracingPartyAcc.PersonalContractingPartyId).Select(x => x.id).ToList(); - if (employers.Count < 1) - { - return new List(); - } - var workshopIds = _context.WorkshopEmployers.Where(x => employers.Contains(x.EmployerId)) - .Select(x => x.WorkshopId).ToList(); - var checkValid = workshopIds.Any(x => x == searchModel.WorkshopId); - if (!checkValid) - { - return new List(); - } - #endregion - var query = _context.CheckoutSet - .AsSplitQuery().Select(x => new CheckoutViewModel() - { - Id = x.id, - EmployeeId = x.EmployeeId, - WorkshopId = x.WorkshopId, - ContractStartGr = x.ContractStart, - ContractEndGr = x.ContractEnd, - ContractStart = x.ContractStart.ToFarsi(), - ContractEnd = x.ContractEnd.ToFarsi(), - Signature = x.Signature, - Year = x.Year, - Month = x.Month, - ContractNo = x.ContractNo, - ContractId = x.ContractId, - EmployeeFullName = x.EmployeeFullName, - PersonnelCode = x.PersonnelCode, - PersonnelCodeInt = Convert.ToInt32(x.PersonnelCode), - InstallmentViewModels = x.LoanInstallments.Select(i => new LoanInstallmentViewModel() - { - Amount = i.AmountForMonth, - AmountDouble = i.AmountForMonth.MoneyToDouble(), - Year = i.Year, - Month = i.Month, - IsActive = i.IsActive, - RemainingAmount = i.LoanRemaining, - LoanAmount = i.LoanAmount - }).ToList(), - SalaryAidViewModels = x.SalaryAids.Select(s => new SalaryAidViewModel() - { - Amount = s.Amount, - AmountDouble = s.Amount.MoneyToDouble(), - SalaryAidDateTimeFa = s.SalaryAidDateTimeFa, - SalaryAidDateTimeGe = s.SalaryAidDateTime - }).ToList(), - - }).Where(x => x.WorkshopId == searchModel.WorkshopId); - if (searchModel.EmployeeId > 0) - { - query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); - searchModel.Sorting = "ContractStart-Max"; - } - - if (!string.IsNullOrWhiteSpace(searchModel.ContractStart) && - !string.IsNullOrWhiteSpace(searchModel.ContractEnd)) - { - var start = searchModel.ContractStart.ToGeorgianDateTime(); - var endd = searchModel.ContractEnd.ToGeorgianDateTime(); - query = query.Where(x => - x.ContractStartGr >= start && x.ContractEndGr <= endd); - } - else if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month)) - { - var y = searchModel.Year + "/" + searchModel.Month + "/01"; - string y2 = string.Empty; - int month = Convert.ToInt32(searchModel.Month); - int year = Convert.ToInt32(searchModel.Year); - - if (month <= 6) - { - y2 = $"{searchModel.Year}/{searchModel.Month}/31"; - } - else if (month > 6 && month < 12) - { - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - } - else if (month == 12) - { - switch (year) - { - case 1346: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1350: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1354: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1358: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1362: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1366: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1370: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1375: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1379: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1383: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1387: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1391: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1395: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1399: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1403: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1408: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1412: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1416: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1420: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1424: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1428: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1432: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1436: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1441: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1445: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - - default: - y2 = $"{searchModel.Year}/{searchModel.Month}/29"; - break; - - } - } - - var start = y.ToGeorgianDateTime(); - var end = y2.ToGeorgianDateTime(); - - query = query.Where(x => x.ContractStartGr >= start && x.ContractStartGr < end && x.ContractEndGr > start && x.ContractEndGr <= end || - x.ContractStartGr <= start && x.ContractEndGr >= end || start <= x.ContractStartGr && end > x.ContractStartGr || end >= x.ContractEndGr && start < x.ContractEndGr); - } - if (searchModel.SearchAll) - return query.OrderByDescending(x => x.Id).ToList(); - switch (searchModel.Sorting) - { - case "CreationDate-Max": - return query.OrderByDescending(x => x.Id).Skip(searchModel.PageIndex).Take(30).ToList(); - break; - case "CreationDate-Min": - return query.OrderBy(x => x.Id).Skip(searchModel.PageIndex).Take(30).ToList(); - break; - case "PersonelCode-Max": - return query.OrderByDescending(x => x.PersonnelCodeInt).Skip(searchModel.PageIndex).Take(30).ToList(); - break; - case "PersonelCode-Min": - return query.OrderBy(x => x.PersonnelCodeInt).Skip(searchModel.PageIndex).Take(30).ToList(); - break; - case "ContractStart-Min": - return query.OrderBy(x => x.ContractStartGr).Skip(searchModel.PageIndex).Take(30).ToList(); - break; - case "ContractStart-Max": - return query.OrderByDescending(x => x.ContractStartGr).Skip(searchModel.PageIndex).Take(30).ToList(); - break; - case "Signature-Min": - return query.OrderByDescending(x => x.Signature == "0").Skip(searchModel.PageIndex).Take(30).ToList(); - break; - case "Signature-Max": - return query.OrderByDescending(x => x.Signature == "1").Skip(searchModel.PageIndex).Take(30).ToList(); - break; - default: return query.OrderByDescending(x => x.Id).Skip(searchModel.PageIndex).Take(30).ToList(); - } - - - } - - #endregion - - #region NewChangeByHeydari - - public OperationResult DeleteAllCheckouts(List ids) - { - var op = new OperationResult(); - - try - { - var contracts = _context.CheckoutSet.Where(x => ids.Contains(x.id)).ToList(); - _context.CheckoutSet.RemoveRange(contracts); - _context.SaveChanges(); - return op.Succcedded(-1, "حذف با موفقیت شد."); - } - catch (Exception) - { - return op.Failed("حذف با خطا مواجه شد."); - } - } - - public OperationResult DeleteCheckout(long id) - { - var op = new OperationResult(); - - try - { - - var checkout = _context.CheckoutSet.Where(x => x.id == id)?.FirstOrDefault(); - _context.CheckoutSet.Remove(checkout); - _context.SaveChanges(); - return op.Succcedded(-1, "حذف با موفقیت انجام شد."); - - } - catch (Exception) - { - return op.Failed("حذف با خطا مواجه شد."); - } - } - - public List CheckHasSignature(List ids) - { - List notRemoveList = new List(); - foreach (var item in ids) - { - if (_context.CheckoutSet.Any(x => x.id == item && x.Signature == "1")) - { - notRemoveList.Add(item); - } - } - return notRemoveList; - } - - public async Task> SearchForMainCheckout(CheckoutSearchModel searchModel) - { - - bool hasSearch = false; - bool hasEmployeeOrWorkshpSearch = false; - //List query = null; - var connection = _configuration.GetConnectionString("MesbahDb"); - //var watch = System.Diagnostics.Stopwatch.StartNew(); - var AcountID = _authHelper.CurrentAccountId(); - var workshopAcounts = _context.WorkshopAccounts.Where(x => x.AccountId == AcountID) - .Select(x => x.WorkshopId).ToList(); - //Console.WriteLine("acID.. " + watch.Elapsed); - - //var watchmp = System.Diagnostics.Stopwatch.StartNew(); - var emp = _context.WorkshopEmployers.Where(x => workshopAcounts.Contains(x.WorkshopId)) - .Select(x => x.EmployerId).FirstOrDefault(); - var emp2 = _context.WorkshopEmployers.Where(x => x.EmployerId == searchModel.EmployerId) - .Select(x => x.WorkshopId).ToList(); - - var watch = System.Diagnostics.Stopwatch.StartNew(); - - - var query = _context.CheckoutSet.Select(x => new CheckoutViewModel() - { - Id = x.id, - EmployeeFullName = x.EmployeeFullName, - //var start = ; - ContractStart = x.ContractStart.ToFarsi(), - // var end = (DateTime)reader["ContractEnd"]; - ContractEnd = x.ContractEnd.ToFarsi(), - ContractStartGr = x.ContractStart, - ContractEndGr = x.ContractEnd, - PersonnelCode = x.PersonnelCode, - PersonnelCodeInt = Convert.ToInt32(x.PersonnelCode), - ArchiveCode = x.ArchiveCode, - SumOfWorkingDays = x.SumOfWorkingDays, - WorkshopName = x.WorkshopName, - Month = x.Month, - Year = x.Year, - ContractNo = x.ContractNo, - ContractId = x.ContractId, - WorkshopId = x.WorkshopId, - EmployeeId = x.EmployeeId, - IsActiveString = x.IsActiveString, - Signature = x.Signature, - CreationDate = x.CreationDate, - - - }); - - - Console.WriteLine("storedProc" + watch.Elapsed); - - if (!string.IsNullOrWhiteSpace(searchModel.ContractNo) && searchModel.ContractId != 0) - query = query.Where(x => - x.ContractNo == searchModel.ContractNo && x.ContractId == searchModel.ContractId); - if (searchModel.WorkshopId != 0) - { - hasEmployeeOrWorkshpSearch = true; - query = query.Where(x => x.WorkshopId == searchModel.WorkshopId); - } - if (searchModel.EmployeeId != 0) - { - hasEmployeeOrWorkshpSearch = true; - query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); - } - if (searchModel.EmployerId != 0) - { - hasEmployeeOrWorkshpSearch = true; - query = query.Where(x => emp2.Contains(x.WorkshopId)); - } - - if (!string.IsNullOrWhiteSpace(searchModel.ContractNo)) - query = query.Where(x => x.ContractNo == searchModel.ContractNo); - - - if (searchModel.IsActiveString == null) - { - query = query.Where(x => x.IsActiveString == "true"); - } - - if (searchModel.IsActiveString == "false") - { - query = query.Where(x => x.IsActiveString == "false"); - } - else if (searchModel.IsActiveString == "both") - { - query = query.Where(x => x.IsActiveString == "false" || x.IsActiveString == "true"); - } - - query = query.Where(e => workshopAcounts.Contains(e.WorkshopId)); - //var resultList = new List(); - //resultList = query; - //سرچ سال - - if (!string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month) && - (string.IsNullOrWhiteSpace(searchModel.ContractStart) || - string.IsNullOrWhiteSpace(searchModel.ContractEnd))) - { - hasSearch = true; - var startYear = searchModel.Year + "/01/01"; - var startyearGr = startYear.ToGeorgianDateTime(); - var endYear = $"{searchModel.Year}/12/01".FindeEndOfMonth(); - var endYearGr = endYear.ToGeorgianDateTime(); - - - query = query.Where(x => x.ContractStartGr >= startyearGr && x.ContractEndGr <= endYearGr); - if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) - query = query.OrderByDescending(x => x.ContractEndGr).ThenBy(x => x.PersonnelCodeInt); - - } - else if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month) && - string.IsNullOrWhiteSpace(searchModel.ContractStart) && - string.IsNullOrWhiteSpace(searchModel.ContractEnd)) - { - hasSearch = true; - //سرچ سال و ماه - string y1 = $"{searchModel.Year}/{searchModel.Month}/01"; - var startDate = y1.ToGeorgianDateTime(); - string y2 = string.Empty; - int month = Convert.ToInt32(searchModel.Month); - int year = Convert.ToInt32(searchModel.Year); - - if (month <= 6) - { - y2 = $"{searchModel.Year}/{searchModel.Month}/31"; - } - else if (month > 6 && month < 12) - { - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - } - else if (month == 12) - { - switch (year) - { - case 1346: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1350: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1354: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1358: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1362: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1366: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1370: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1375: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1379: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1383: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1387: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1391: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1395: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1399: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1403: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1408: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1412: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1416: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1420: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1424: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1428: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1432: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1436: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1441: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - case 1445: - y2 = $"{searchModel.Year}/{searchModel.Month}/30"; - break; - - default: - y2 = $"{searchModel.Year}/{searchModel.Month}/29"; - break; - } - } - - - var endDate = y2.ToGeorgianDateTime(); - - //query = query.Where(x => x.ContractEndGr >= start && x.ContractEndGr <= end).ToList(); - query = query.Where(x => - x.ContractStartGr >= startDate && x.ContractStartGr < endDate && x.ContractEndGr > startDate && - x.ContractEndGr <= endDate || - x.ContractStartGr <= startDate && x.ContractEndGr >= endDate || - startDate <= x.ContractStartGr && endDate > x.ContractStartGr || - endDate >= x.ContractEndGr && startDate < x.ContractEndGr); - if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) - query = query.OrderBy(x => x.PersonnelCodeInt); - - } - else if (!string.IsNullOrWhiteSpace(searchModel.ContractStart) && - !string.IsNullOrWhiteSpace(searchModel.ContractEnd) && - string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month)) - { - hasSearch = true; - //سرچ تاریخ - var start = searchModel.ContractStart.ToGeorgianDateTime(); - var endd = searchModel.ContractEnd.ToGeorgianDateTime(); - query = query.Where(x => - x.ContractStartGr >= start && x.ContractEndGr <= endd); - - if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) - query = query.OrderByDescending(x => x.ContractEndGr).ThenBy(x => x.PersonnelCodeInt); - - } - - if (!string.IsNullOrEmpty(searchModel.EmployeeName)) - { - hasSearch = true; - var employeeList = _context.Employees.Where(x => (!string.IsNullOrEmpty(x.FName) && x.FName.StartsWith(searchModel.EmployeeName)) || - (!string.IsNullOrEmpty(x.LName) && x.LName.StartsWith(searchModel.EmployeeName))).Select(x => x.id).ToList(); - query = query.Where(x => employeeList.Contains(x.EmployeeId)); - } - if (hasSearch) - return query.OrderByDescending(x => x.Id) - .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).ToList(); - else if (hasEmployeeOrWorkshpSearch && !hasSearch) - return query.OrderByDescending(x => x.ContractStartGr).ToList(); - else - return query.OrderByDescending(x => x.Id) - .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).Take(50).ToList(); - - // Console.WriteLine("return" + watch.Elapsed); - - - - } - - #endregion - - #region Pooya - - - public List<(long EmployeeId, DateTime CheckoutStart, DateTime CheckoutEnd)> GetLastCheckoutsByWorkshopIdForWorkFlow(long workshopId, DateTime start, DateTime end) - { - - - - return _context.CheckoutSet.AsSplitQuery().Where(x => x.ContractEnd.Date >= start && x.ContractStart.Date <= end && x.WorkshopId == workshopId).Select(x => new - { - EmployeeId = x.EmployeeId, - CheckoutEnd = x.ContractEnd, - CheckoutStart = x.ContractStart - }).AsEnumerable().Select(x => (x.EmployeeId, x.CheckoutStart, x.CheckoutEnd)).ToList(); - } - - #endregion + }).Where(x => x.EmployeeHasCreateCheckout).OrderByDescending(x => x.Extension).ToList(); + + + + + Console.WriteLine("process : " + timer.Elapsed); + + return new CreateCheckoutListViewModel() + { + CreateCheckoutList = finalResult + }; + } + + public async Task CreateCkeckout(Checkout command) + { + + var creationDates = DateTime.Now; + + //var result = await _context.Database.ExecuteSqlInterpolatedAsync($"EXEC InsertQuery_Checkout {id},{employeeFullName},{isActiveString},{signature},{fathersName},{nationalCode},{dateOfBirth},{employeeId},{workshopName},{workshopId},{contractNo},{contractStart},{contractEnd},{month},{year},{contractId},{workingHoursId},{monthlySalary},{baseYearsPay},{consumableItems},{housingAllowance},{overtimePay},{nightworkPay},{fridayPay},{missionPay},{shiftPay},{familyAllowance},{bonusesPay},{yearsPay},{leavePay},{insuranceDeduction},{taxDeducation},{installmentDeduction},{salaryAidDeduction},{absenceDeduction},{creationDate},{archiveCode},{personnelCode},{sumOfWorkingDays},{totalClaims},{taxDeducation},{totalPayment}"); + var result = (_context.Database + .SqlQuery( + $"EXEC InsertQuery_CreateChekoute {command.EmployeeFullName},{"true"},{command.Signature},{command.FathersName},{command.NationalCode},{command.DateOfBirth},{command.EmployeeId},{command.WorkshopName},{command.WorkshopId},{command.ContractNo},{command.ContractStart},{command.ContractEnd},{command.Month},{command.Year},{command.ContractId},{command.WorkingHoursId},{command.MonthlySalary},{command.BaseYearsPay},{command.ConsumableItems},{command.HousingAllowance},{command.OvertimePay},{command.NightworkPay},{command.FridayPay},{command.MissionPay},{command.ShiftPay},{command.FamilyAllowance},{command.BonusesPay},{command.YearsPay},{command.LeavePay},{command.InsuranceDeduction},{command.TaxDeducation},{command.InstallmentDeduction},{command.SalaryAidDeduction},{command.AbsenceDeduction},{creationDates},{command.ArchiveCode},{command.PersonnelCode},{command.SumOfWorkingDays},{command.TotalClaims},{command.TotalDeductions},{command.TotalPayment},{0},{command.MarriedAllowance},{command.AbsencePeriod},{command.AverageHoursPerDay},{command.CreditLeaves},{command.LeaveCheckout},{command.HasRollCall},{command.OverTimeWorkValue},{command.OverNightWorkValue},{command.FridayWorkValue},{command.RotatingShiftValue},{command.AbsenceValue}, {command.TotalDayOfLeaveCompute},{command.TotalDayOfYearsCompute},{command.TotalDayOfBunosesCompute}") + .AsEnumerable())// این قسمت مهمه! + .FirstOrDefault(); + + var entity = await _context.CheckoutSet.FirstOrDefaultAsync(x => x.id == result); + + entity.SetSalaryAid(command.SalaryAids, command.SalaryAidDeduction); + entity.SetLoanInstallment(command.LoanInstallments, command.InstallmentDeduction); + entity.SetCheckoutRollCall(command.CheckoutRollCall); + await _context.SaveChangesAsync(); + + } + + + public async Task> Search(CheckoutSearchModel searchModel) + { + List query = null; + var connection = _configuration.GetConnectionString("MesbahDb"); + //var watch = System.Diagnostics.Stopwatch.StartNew(); + var AcountID = _authHelper.CurrentAccountId(); + var workshopAcounts = _context.WorkshopAccounts.Where(x => x.AccountId == AcountID) + .Select(x => x.WorkshopId).ToList(); + //Console.WriteLine("acID.. " + watch.Elapsed); + + //var watchmp = System.Diagnostics.Stopwatch.StartNew(); + var emp = _context.WorkshopEmployers.Where(x => workshopAcounts.Contains(x.WorkshopId)) + .Select(x => x.EmployerId); + var emp2 = _context.WorkshopEmployers.Where(x => x.EmployerId == searchModel.EmployerId) + .Select(x => x.WorkshopId).ToList(); + + //Console.WriteLine("emp.. " + watchmp.Elapsed); + //var employerlist = _context.Employers.Where(x => emp.Contains(x.id)).ToList(); + + + //var stored = _context.CheckoutSet.FromSqlInterpolated($"SelectQuery_AllChekouts2").AsNoTracking() + // .ToList(); + //var watchusing = System.Diagnostics.Stopwatch.StartNew(); + using (var conn = new SqlConnection(connection)) + { + await conn.OpenAsync(); + + var command = new SqlCommand("ChekoutMainList", conn); + command.CommandType = CommandType.StoredProcedure; + + + using (var reader = await command.ExecuteReaderAsync()) + { + query = new List(); + + while (await reader.ReadAsync()) + { + var item = new CheckoutViewModel(); + + item.Id = (long)reader["Id"]; + item.EmployeeFullName = (string)reader?["EmployeeFullName"]; + var start = (DateTime)reader["ContractStart"]; + item.ContractStart = start.ToFarsi(); + var end = (DateTime)reader["ContractEnd"]; + item.ContractEnd = end.ToFarsi(); + item.ContractStartGr = start; + item.ContractEndGr = end; + item.PersonnelCode = (string)reader?["PersonnelCode"]; + item.PersonnelCodeInt = item.PersonnelCode.ConvertToInt(); + item.ArchiveCode = (string)reader?["ArchiveCode"]; + item.SumOfWorkingDays = (string)reader?["SumOfWorkingDays"]; + item.WorkshopName = (string)reader?["WorkshopName"]; + item.Month = reader["Month"] != DBNull.Value ? (string)reader["Month"] : null; + item.Year = reader["Year"] != DBNull.Value ? (string)reader["Year"] : null; + item.ContractNo = (string)reader?["ContractNo"]; + item.ContractId = (long)reader["ContractId"]; + item.WorkshopId = (long)reader["WorkshopId"]; + item.EmployeeId = (long)reader["EmployeeId"]; + item.IsActiveString = (string)reader["IsActiveString"]; + item.Signature = (string)reader["Signature"]; + item.CreationDate = (DateTime)reader["CreationDate"]; + + + query.Add(item); + } + } + } + //Console.WriteLine("using.. " + watchusing.Elapsed); + //var query = stored.Select(x => new CheckoutViewModel() + //{ + // Id = x.id, + // EmployeeFullName = x.EmployeeFullName, + // ContractStart = x.ContractStart.ToFarsi(), + // ContractEnd = x.ContractEnd.ToFarsi(), + // ContractStartGr = x.ContractStart, + // ContractEndGr = x.ContractEnd, + // PersonnelCode = x.PersonnelCode, + // ArchiveCode = x.ArchiveCode, + // SumOfWorkingDays = x.SumOfWorkingDays, + // WorkshopName = x.WorkshopName, + // Month = x.Month, + // Year = x.Year, + // ContractNo = x.ContractNo, + // ContractId = x.ContractId, + // WorkshopId = x.WorkshopId, + // EmployeeId = x.EmployeeId, + + // IsActiveString = x.IsActiveString, + // Signature = x.Signature, + // CreationDate = x.CreationDate + //}); + + //var watchif = System.Diagnostics.Stopwatch.StartNew(); + if (!string.IsNullOrWhiteSpace(searchModel.ContractNo) && searchModel.ContractId != 0) + query = query.Where(x => + x.ContractNo == searchModel.ContractNo && x.ContractId == searchModel.ContractId).ToList(); + if (searchModel.WorkshopId != 0) + query = query.Where(x => x.WorkshopId == searchModel.WorkshopId).ToList(); + if (searchModel.EmployeeId != 0) + query = query.Where(x => x.EmployeeId == searchModel.EmployeeId).ToList(); + if (searchModel.EmployerId != 0) + { + query = query.Where(x => emp2.Contains(x.WorkshopId)).ToList(); + } + + if (!string.IsNullOrWhiteSpace(searchModel.ContractNo)) + query = query.Where(x => x.ContractNo == searchModel.ContractNo).ToList(); + + + if (searchModel.IsActiveString == null) + { + query = query.Where(x => x.IsActiveString == "true").ToList(); + } + + if (searchModel.IsActiveString == "false") + { + query = query.Where(x => x.IsActiveString == "false").ToList(); + } + else if (searchModel.IsActiveString == "both") + { + query = query.Where(x => x.IsActiveString == "false" || x.IsActiveString == "true").ToList(); + } + + query = query.Where(e => workshopAcounts.Contains(e.WorkshopId)).ToList(); + //سرچ سال + if (!string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month) && + (string.IsNullOrWhiteSpace(searchModel.ContractStart) || + string.IsNullOrWhiteSpace(searchModel.ContractEnd))) + { + var startYear = searchModel.Year + "/01/01"; + var startyearGr = startYear.ToGeorgianDateTime(); + var endYear = $"{searchModel.Year}/12/01".FindeEndOfMonth(); + var endYearGr = endYear.ToGeorgianDateTime(); + + + query = query.Where(x => x.ContractStartGr >= startyearGr && x.ContractEndGr <= endYearGr).ToList(); + if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) + return query.OrderByDescending(x => x.ContractEndGr).ThenBy(x => x.PersonnelCodeInt).ToList(); + + + + } + else if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month) && + string.IsNullOrWhiteSpace(searchModel.ContractStart) && + string.IsNullOrWhiteSpace(searchModel.ContractEnd)) + { + //سرچ سال و ماه + string y1 = $"{searchModel.Year}/{searchModel.Month}/01"; + var startDate = y1.ToGeorgianDateTime(); + string y2 = string.Empty; + int month = Convert.ToInt32(searchModel.Month); + int year = Convert.ToInt32(searchModel.Year); + + if (month <= 6) + { + y2 = $"{searchModel.Year}/{searchModel.Month}/31"; + } + else if (month > 6 && month < 12) + { + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + } + else if (month == 12) + { + switch (year) + { + case 1346: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1350: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1354: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1358: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1362: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1366: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1370: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1375: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1379: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1383: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1387: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1391: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1395: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1399: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1403: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1408: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1412: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1416: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1420: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1424: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1428: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1432: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1436: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1441: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1445: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + + default: + y2 = $"{searchModel.Year}/{searchModel.Month}/29"; + break; + } + } + + + var endDate = y2.ToGeorgianDateTime(); + + //query = query.Where(x => x.ContractEndGr >= start && x.ContractEndGr <= end).ToList(); + query = query.Where(x => + x.ContractStartGr >= startDate && x.ContractStartGr < endDate && x.ContractEndGr > startDate && + x.ContractEndGr <= endDate || + x.ContractStartGr <= startDate && x.ContractEndGr >= endDate || + startDate <= x.ContractStartGr && endDate > x.ContractStartGr || + endDate >= x.ContractEndGr && startDate < x.ContractEndGr).ToList(); + if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) + return query.OrderBy(x => x.PersonnelCodeInt).ToList(); + + } + else if (!string.IsNullOrWhiteSpace(searchModel.ContractStart) && + !string.IsNullOrWhiteSpace(searchModel.ContractEnd) && + string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month)) + { + //سرچ تاریخ + var start = searchModel.ContractStart.ToGeorgianDateTime(); + var endd = searchModel.ContractEnd.ToGeorgianDateTime(); + query = query.Where(x => + x.ContractStartGr >= start && x.ContractEndGr <= endd).ToList(); + + if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) + return query.OrderByDescending(x => x.ContractEndGr).ThenBy(x => x.PersonnelCodeInt).ToList(); + + } + + return query.OrderByDescending(x => x.Id) + .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).Take(100).ToList(); + + + + + + + //foreach(var items in query) + //{ + // var employeId = _context.WorkshopEmployers?.Where(x => x.WorkshopId == items.WorkshopId) + // .Select(x => x.EmployerId).FirstOrDefault(); + // var employerName = _context.Employers?.FirstOrDefault(x => x.id == employeId).FullName; + // items.EmployerName = employerName; + //} + //Console.WriteLine("SearchModel.. " + watchif.Elapsed); + //if (searchModel.EmployeeId != 0 || !string.IsNullOrWhiteSpace(searchModel.Year) && searchModel.WorkshopId != 0) + //{ + // if (!string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month)) + // { + // var startOfYear = searchModel.Year + "/01/01"; + // var startOfyearGr = startOfYear.ToGeorgianDateTime(); + // var endOfYear = $"{searchModel.Year}/12/01".FindeEndOfMonth(); + // var endOfYearGr = endOfYear.ToGeorgianDateTime(); + + + // query = query.Where(x => x.ContractStartGr >= startOfyearGr && x.ContractEndGr <= endOfYearGr).ToList(); + // } + // return query.OrderBy(x => x.PersonnelCode).ToList(); + //} + } + + public List SimpleSearch(CheckoutSearchModel searchModel) + { + var query = _context.CheckoutSet.Select(x => new CheckoutViewModel() + { + Id = x.id, + EmployeeId = x.EmployeeId, + WorkshopId = x.WorkshopId, + ContractStartGr = x.ContractStart, + ContractEndGr = x.ContractEnd, + ContractStart = x.ContractStart.ToFarsi(), + ContractEnd = x.ContractEnd.ToFarsi(), + Signature = x.Signature, + Year = x.Year, + Month = x.Month, + ContractNo = x.ContractNo, + ContractId = x.ContractId, + HasRollCall = x.HasRollCall + + }); + + if (searchModel.EmployeeId != 0 && searchModel.WorkshopId != 0) + query = query.Where(x => + x.EmployeeId == searchModel.EmployeeId && x.WorkshopId == searchModel.WorkshopId); + if (searchModel.EmployeeId == 0 && searchModel.WorkshopId != 0) + query = query.Where(x => x.WorkshopId == searchModel.WorkshopId); + if (searchModel.EmployeeId != 0 && searchModel.WorkshopId == 0) + query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); + if (!string.IsNullOrWhiteSpace(searchModel.ContractNo) && searchModel.ContractId > 0) + query = query.Where(x => x.ContractNo == searchModel.ContractNo); + + if (!string.IsNullOrWhiteSpace(searchModel.ContractStart) && + !string.IsNullOrWhiteSpace(searchModel.ContractEnd) && + (searchModel.EmployeeId != 0 && searchModel.WorkshopId != 0)) + { + var start = searchModel.ContractStart.ToGeorgianDateTime(); + var end = searchModel.ContractEnd.ToGeorgianDateTime(); + query = query.Where(x => x.ContractStartGr == start && x.ContractEndGr == end && x.EmployeeId == searchModel.EmployeeId && x.WorkshopId == searchModel.WorkshopId); + } + + return query.OrderBy(x => x.ContractStartGr).ToList(); + + } + + public List PrintAll(List id) + { + var query = new List(); + foreach (var item in id) + { + var ch = _context.CheckoutSet + .AsSplitQuery().Select(x => new CheckoutViewModel() + { + Id = x.id, + WorkshopId = x.WorkshopId, + ContractId = x.ContractId, + EmployeeId = x.EmployeeId, + EmployeeFullName = x.EmployeeFullName, + FathersName = x.FathersName, + NationalCode = x.NationalCode, + DateOfBirth = x.DateOfBirth, + WorkshopName = x.WorkshopName, + Month = x.Month, + Year = x.Year, + PersonnelCode = x.PersonnelCode, + PersonnelCodeInt = Convert.ToInt32(x.PersonnelCode), + ContractNo = x.ContractNo, + MonthlySalary = x.MonthlySalary.ToMoney(), + BaseYearsPay = x.BaseYearsPay.ToMoney(), + ConsumableItems = x.ConsumableItems.ToMoney(), + HousingAllowance = x.HousingAllowance.ToMoney(), + OvertimePay = x.OvertimePay.ToMoney(), + NightworkPay = x.NightworkPay.ToMoney(), + FridayPay = x.FridayPay.ToMoney(), + MissionPay = x.MissionPay.ToMoney(), + ShiftPay = x.ShiftPay.ToMoney(), + FamilyAllowance = x.FamilyAllowance.ToMoney(), + BonusesPay = x.BonusesPay.ToMoney(), + YearsPay = x.YearsPay.ToMoney(), + LeavePay = x.LeavePay.ToMoney(), + InsuranceDeduction = x.InsuranceDeduction.ToMoney(), + TaxDeducation = x.TaxDeducation.ToMoney(), + InstallmentDeduction = x.InstallmentDeduction.ToMoney(), + SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(), + AbsenceDeduction = x.AbsenceDeduction.ToMoney(), + TotalClaims = x.TotalClaims, + TotalDeductions = x.TotalDeductions, + TotalPayment = x.TotalPayment.ToMoney(), + RewardPay = x.RewardPay.ToMoneyNullable(), + ContractStartGr = x.ContractStart, + ContractEndGr = x.ContractEnd, + IsLeft = false, + LeftWorkDate = "", + LastDayOfWork = "", + MarriedAllowance = x.MarriedAllowance.ToMoney(), + HasRollCall = x.HasRollCall, + SumOfWorkingDays = "-", + OverTimeWorkValue = x.OverTimeWorkValue, + OverNightWorkValue = x.OverNightWorkValue, + FridayWorkValue = x.FridayWorkValue, + RotatingShiftValue = x.RotatingShiftValue, + AbsenceValue = x.AbsenceValue, + MaritalStatus = "", + TotalDayOfLeaveCompute = "-", + TotalDayOfYearsCompute = "-", + TotalDayOfBunosesCompute = "-", + InstallmentViewModels = x.LoanInstallments.Select(i => new LoanInstallmentViewModel() + { + Amount = i.AmountForMonth, + AmountDouble = i.AmountForMonth.MoneyToDouble(), + Year = i.Year, + Month = i.Month, + IsActive = i.IsActive, + RemainingAmount = i.LoanRemaining, + LoanAmount = i.LoanAmount + }).ToList(), + SalaryAidViewModels = x.SalaryAids.Select(s => new SalaryAidViewModel() + { + Amount = s.Amount, + AmountDouble = s.Amount.MoneyToDouble(), + SalaryAidDateTimeFa = s.SalaryAidDateTimeFa, + SalaryAidDateTimeGe = s.SalaryAidDateTime + }).ToList(), + CheckoutRollCall = x.CheckoutRollCall != null ? new CheckoutRollCallViewModel() + { + TotalPresentTimeSpan = x.CheckoutRollCall.TotalPresentTimeSpan, + TotalBreakTimeSpan = x.CheckoutRollCall.TotalBreakTimeSpan, + TotalWorkingTimeSpan = x.CheckoutRollCall.TotalWorkingTimeSpan, + TotalPaidLeaveTmeSpan = x.CheckoutRollCall.TotalPaidLeaveTmeSpan, + TotalMandatoryTimeSpan = x.CheckoutRollCall.TotalMandatoryTimeSpan, + TotalSickLeaveTimeSpan = x.CheckoutRollCall.TotalSickLeaveTimeSpan, + RollCallDaysCollection = x.CheckoutRollCall.RollCallDaysCollection.Select(d => new CheckoutRollCallDayViewModel() + { + WorkingTimeSpan = d.WorkingTimeSpan, + BreakTimeSpan = d.BreakTimeSpan, + IsSliced = d.IsSliced, + IsAbsent = d.IsAbsent, + IsFriday = d.IsFriday, + IsHoliday = d.IsHoliday, + LeaveType = d.LeaveType, + CheckoutId = d.CheckoutId, + Date = d.Date, + FirstEndDate = d.FirstEndDate, + FirstStartDate = d.FirstStartDate, + Id = d.Id, + SecondEndDate = d.SecondEndDate, + SecondStartDate = d.SecondStartDate + }).ToList() + + } : null, + }).SingleOrDefault(x => x.Id == item); + var workshopName = _context.Workshops.FirstOrDefault(x => x.id == ch.WorkshopId); + ch.WorkshopName = workshopName.WorkshopName; + ch.TotalPaymentHide = workshopName.TotalPaymentHide; + var emp = _context.WorkshopEmployers.Where(x => x.WorkshopId == ch.WorkshopId) + .Select(x => x.EmployerId); + var employerlist = _context.Employers.Where(x => emp.Contains(x.id)); + var employers = new List(); + + foreach (var em in employerlist) + { + var employer = new EmprViewModel() + { + EmployerFullName = em.FName + " " + em.LName, + IsLegal = em.IsLegal, + }; + employers.Add(employer); + } + + ch.MaritalStatus = _context.Employees.Find(ch.EmployeeId)?.MaritalStatus; + ch.EmployerList = employers; + var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(ch.ContractId); + ch.CreateWorkingHoursTemp = workingHours; + var AbsenceDeduction = ch.AbsenceDeduction.MoneyToDouble(); + var InstallmentDeduction = ch.InstallmentDeduction.MoneyToDouble(); + var InsuranceDeduction = ch.InsuranceDeduction.MoneyToDouble(); + var SalaryAidDeduction = ch.SalaryAidDeduction.MoneyToDouble(); + var TaxDeducation = ch.TaxDeducation.MoneyToDouble(); + var TotalDeduction = AbsenceDeduction + InsuranceDeduction + InstallmentDeduction + SalaryAidDeduction + + TaxDeducation; + ch.TotalDeductions = TotalDeduction.ToMoney(); + + + var leftWorkSearch = new LeftWorkSearchModel() { WorkshopId = ch.WorkshopId, EmployeeId = ch.EmployeeId }; + var leftworkResult = _leftWorkRepository.search(leftWorkSearch).FirstOrDefault(); + var leftCheck = _leftWorkRepository.CheckoutleftWorkCheck(ch.ContractStartGr, ch.WorkshopId, ch.EmployeeId); + var contractLeftWorkDate = ch.ContractEndGr.AddDays(1); + if (leftCheck != null && leftCheck.LeftWorkDateGr == contractLeftWorkDate) + { + ch.IsLeft = true; + ch.LeftWorkDate = leftCheck.LeftWorkDate; + ch.LastDayOfWork = ch.ContractEndGr.ToFarsi(); + } + //var checkBonusesPay = leftworkResult != null && leftworkResult.AddBonusesPay; + //var checkYearsPay = leftworkResult != null && leftworkResult.AddYearsPay; + //var checkLeavePay = leftworkResult != null && leftworkResult.AddLeavePay; + + //if (!checkBonusesPay || !checkYearsPay || !checkLeavePay) + //{ + // double sumOfBonusAndYearsPay = 0; + // if (!checkBonusesPay) + // { + // var bonusesPay = ch.BonusesPay.MoneyToDouble(); + // sumOfBonusAndYearsPay += bonusesPay; + // ch.BonusesPay = "0"; + + // } + + // if (!checkYearsPay) + // { + // var yearsPay = ch.YearsPay.MoneyToDouble(); + // sumOfBonusAndYearsPay += yearsPay; + // ch.YearsPay = "0"; + // } + + // if (!checkLeavePay) + // { + // var leavePay = ch.LeavePay.MoneyToDouble(); + // sumOfBonusAndYearsPay += leavePay; + // ch.LeavePay = "0"; + // } + // var totalClaimsDouble = ch.TotalClaims.MoneyToDouble(); + // var totalClaims = totalClaimsDouble - sumOfBonusAndYearsPay; + // ch.TotalClaims = totalClaims.ToMoney(); + + // var totalPayment = totalClaims - TotalDeduction; + // ch.TotalPayment = totalPayment.ToMoney(); + + + //} + + //if (ch.WorkshopId == 40 || ch.WorkshopId == 68 || ch.WorkshopId == 44 || ch.WorkshopId == 45 || ch.WorkshopId == 280) + //{ + // ch.TotalClaims = ""; + // ch.TotalDeductions = ""; + // ch.TotalPayment = ""; + //} + + #region Leave + + var leavesQuery = _context.LeaveList + .Where(x => x.EmployeeId == ch.EmployeeId && x.WorkshopId == ch.WorkshopId && + x.StartLeave <= ch.ContractEndGr && x.EndLeave >= ch.ContractStartGr) + .AsNoTracking(); + + var paidLeave = leavesQuery.Where(x => x.LeaveType == "استحقاقی"); + var sickLeave = leavesQuery.Where(x => x.LeaveType == "استعلاجی").ToList(); + + + var dailyPaidLeave = paidLeave.Where(x => x.PaidLeaveType == "روزانه").ToList(); + var hourlyPaidLeave = paidLeave.Where(x => x.PaidLeaveType == "ساعتی").ToList(); + + var sickLeaveTimeSpans = sickLeave.Select(x => + { + var startLeave = ch.ContractStartGr > x.StartLeave ? ch.ContractStartGr : x.StartLeave; + var endLeave = ch.ContractEndGr < x.EndLeave ? ch.ContractEndGr : x.EndLeave; + + return (endLeave - startLeave).Add(TimeSpan.FromDays(1)); + }); + + ch.TotalSickLeave = new TimeSpan(sickLeaveTimeSpans.Sum(x => x.Ticks)).ToFarsiDaysAndHoursAndMinutes("-"); + + var hourlyPaidLeaveTimeSpans = hourlyPaidLeave.Select(x => TimeOnly.Parse(x.LeaveHourses).ToTimeSpan()); + + var dailyPaidLeaveTimeSpans = dailyPaidLeave.Select(x => + { + var startLeave = ch.ContractStartGr > x.StartLeave ? ch.ContractStartGr : x.StartLeave; + var endLeave = ch.ContractEndGr < x.EndLeave ? ch.ContractEndGr : x.EndLeave; + return (endLeave - startLeave).Add(TimeSpan.FromDays(1)); + }); + + var totalPaidLeaveTimeSpans = hourlyPaidLeaveTimeSpans.Concat(dailyPaidLeaveTimeSpans); + ch.TotalHourlyLeave = new TimeSpan(hourlyPaidLeaveTimeSpans.Sum(x => x.Ticks)); + ch.TotalPaidLeave = new TimeSpan(totalPaidLeaveTimeSpans.Sum(x => x.Ticks)).ToFarsiDaysAndHoursAndMinutes("-"); + + + + #endregion + + + if (ch.TotalPaymentHide == false) + { + ch.TotalClaims = ""; + ch.TotalDeductions = ""; + ch.TotalPayment = ""; + } + + if (ch.CheckoutRollCall != null) + { + ch.TotalWorkingTimeStr = ch.CheckoutRollCall.TotalWorkingTimeSpan.ToFarsiHoursAndMinutes("-"); + ch.TotalBreakTimeStr = ch.CheckoutRollCall.TotalBreakTimeSpan.ToFarsiHoursAndMinutes("-"); + ch.TotalPresentTimeStr = ch.CheckoutRollCall.TotalPresentTimeSpan.ToFarsiHoursAndMinutes("-"); + ch.TotalMandatoryTimeStr = ch.CheckoutRollCall.TotalMandatoryTimeSpan.ToFarsiHoursAndMinutes("-"); + + ch.MonthlyRollCall = ch.CheckoutRollCall.RollCallDaysCollection + .Select(x => new CheckoutDailyRollCallViewModel + { + DayOfWeek = x.Date.DayOfWeek.DayOfWeeKToPersian(), + StartDate1 = x.FirstStartDate, + EndDate1 = x.FirstEndDate, + StartDate2 = x.SecondStartDate, + EndDate2 = x.SecondEndDate, + TotalhourseSpan = x.WorkingTimeSpan, + IsSliced = x.IsSliced, + BreakTimeTimeSpan = x.BreakTimeSpan, + LeaveType = x.LeaveType, + IsAbsent = x.IsAbsent, + IsFriday = x.IsFriday, + IsHoliday = x.IsHoliday, + DateTimeGr = x.Date, + TotalWorkingHours = $"{(int)(x.WorkingTimeSpan.TotalHours)}:{x.WorkingTimeSpan.Minutes:00}", + BreakTimeString = $"{(int)(x.BreakTimeSpan.TotalHours)}:{x.BreakTimeSpan.Minutes:00}", + RollCallDateFa = x.Date.ToFarsi() + }).ToList(); + + } + else + { + + if (ch.HasRollCall) + ch.MonthlyRollCall = _rollCallRepository.GetEmployeeRollCallsForMonth(ch.EmployeeId, ch.WorkshopId, ch.ContractStartGr, ch.ContractEndGr); + else + { + ch.CreateWorkingHoursTemp.ContractStartGr = ch.ContractStartGr; + ch.CreateWorkingHoursTemp.ContractEndGr = ch.ContractEndGr; + ch.CreateWorkingHoursTemp.ContarctStart = ch.ContractStartGr.ToFarsi(); + ch.CreateWorkingHoursTemp.ContractEnd = ch.ContractEndGr.ToFarsi(); + ch.CreateWorkingHoursTemp.EmployeeId = ch.EmployeeId; + ch.CreateWorkingHoursTemp.WorkshopId = ch.WorkshopId; + ch.MonthlyRollCall = ConvertStaticToRollCall(ch.CreateWorkingHoursTemp, workshopName.WorkshopHolidayWorking); + } + } + query.Add(ch); + } + + query = query.OrderBy(x => x.PersonnelCodeInt).ToList(); + int printNumer = 0; + foreach (var rec in query) + { + printNumer += 1; + rec.PrintCounter = printNumer; + } + return query; + } + + public CheckoutLeavePrintViewModel PrintLeave(long id) + { + var ch = _context.CheckoutSet.Select(x => new CheckoutLeavePrintViewModel() + { + Id = x.id, + EmployeeId = x.EmployeeId, + ContractNo = x.ContractNo, + EmployeeFullName = x.EmployeeFullName, + NationalCode = x.NationalCode, + WorkshopId = x.WorkshopId, + WorkshopName = x.WorkshopName, + LeaveList = new List(), + EmployerList = new List(), + }).SingleOrDefault(x => x.Id == id); + + var emp = _context.WorkshopEmployers.Where(x => x.WorkshopId == ch.WorkshopId) + .Select(x => x.EmployerId).ToList(); + var employerlist = _context.Employers.Select(x => new EmprViewModel() + { + Id = x.id, + EmployerFullName = x.FName + " " + x.LName, + IsLegal = x.IsLegal, + + }).Where(x => emp.Contains(x.Id)).ToList(); + if (employerlist.Count > 0) + { + ch.EmployerList = employerlist; + } + else + { + ch.EmployerList = new List(); + } + + + //var leaveList = _context.LeaveList.Select(x => new LeaveViewModel() + //{ + // Id = x.id, + // StartLeave = x.StartLeave.ToFarsi(), + // EndLeave = x.EndLeave.ToFarsi(), + // LeaveHourses = x.LeaveHourses, + // WorkshopId = x.WorkshopId, + // EmployeeId = x.EmployeeId, + // PaidLeaveType = x.PaidLeaveType, + // LeaveType = x.LeaveType, + //}).Where(x => x.WorkshopId == ch.WorkshopId && x.EmployeeId == ch.EmployeeId && x.LeaveType == "استحقاقی").ToList(); + //if (leaveList.Count > 0) + //{ + // ch.LeaveList = leaveList; + //} + + + var leaveList = _context.LeaveList.Where(x => x.WorkshopId == ch.WorkshopId && x.EmployeeId == ch.EmployeeId && x.LeaveType == "استحقاقی"); + var leaveViewModel = new List(); + + foreach (var list in leaveList) + { + var StartTime = Convert.ToDateTime(list.StartLeave); + var EndTime = Convert.ToDateTime(list.EndLeave); + if (StartTime > EndTime || StartTime == EndTime) + { + EndTime = EndTime.AddDays(1); + } + + var ConvertTime = (Convert.ToDateTime(EndTime) - Convert.ToDateTime(StartTime)); + var hours = (int)ConvertTime.TotalHours; + var minutes = ConvertTime.TotalMinutes % 60; + + var LeaveHourses = ""; + if (hours > 0 && minutes > 0) + { + LeaveHourses = hours + " " + "ساعت و" + " " + minutes + " " + "دقیقه"; + } + else if (hours > 0 && minutes == 0) + { + LeaveHourses = hours + " " + "ساعت"; + } + else if (hours == 0 && minutes > 0) + { + LeaveHourses = minutes + " " + "دقیقه"; + } + + var leave = new LeaveViewModel() + { + Id = list.id, + StartLeave = list.StartLeave.ToFarsi(), + EndLeave = list.EndLeave.ToFarsi(), + StartLeaveGr = list.StartLeave, + EndLeaveGr = list.EndLeave, + LeaveHourses = LeaveHourses, + WorkshopId = list.WorkshopId, + EmployeeId = list.EmployeeId, + PaidLeaveType = list.PaidLeaveType, + LeaveType = list.LeaveType, + }; + leaveViewModel.Add(leave); + } + + ch.LeaveList = leaveViewModel; + + + return ch; + } + + public CheckoutViewModel PrintOne(long id) + { + var ch = _context.CheckoutSet + .AsSplitQuery().Select(x => new CheckoutViewModel() + { + Id = x.id, + WorkshopId = x.WorkshopId, + ContractId = x.ContractId, + EmployeeId = x.EmployeeId, + EmployeeFullName = x.EmployeeFullName, + FathersName = x.FathersName, + NationalCode = x.NationalCode, + DateOfBirth = x.DateOfBirth, + WorkshopName = x.WorkshopName, + Month = x.Month, + Year = x.Year, + ContractNo = x.ContractNo, + MonthlySalary = x.MonthlySalary.ToMoney(), + BaseYearsPay = x.BaseYearsPay.ToMoney(), + ConsumableItems = x.ConsumableItems.ToMoney(), + HousingAllowance = x.HousingAllowance.ToMoney(), + OvertimePay = x.OvertimePay.ToMoney(), + NightworkPay = x.NightworkPay.ToMoney(), + FridayPay = x.FridayPay.ToMoney(), + MissionPay = x.MissionPay.ToMoney(), + ShiftPay = x.ShiftPay.ToMoney(), + FamilyAllowance = x.FamilyAllowance.ToMoney(), + BonusesPay = x.BonusesPay.ToMoney(), + YearsPay = x.YearsPay.ToMoney(), + LeavePay = x.LeavePay.ToMoney(), + InsuranceDeduction = x.InsuranceDeduction.ToMoney(), + TaxDeducation = x.TaxDeducation.ToMoney(), + InstallmentDeduction = x.InstallmentDeduction.ToMoney(), + SalaryAidDeduction = x.SalaryAidDeduction.ToMoney(), + AbsenceDeduction = x.AbsenceDeduction.ToMoney(), + TotalClaims = x.TotalClaims, + TotalDeductions = x.TotalDeductions, + TotalPayment = x.TotalPayment.ToMoney(), + RewardPay = x.RewardPay.ToMoneyNullable(), + ContractStartGr = x.ContractStart, + ContractEndGr = x.ContractEnd, + IsLeft = false, + LeftWorkDate = "", + LastDayOfWork = "", + MarriedAllowance = x.MarriedAllowance.ToMoney(), + HasRollCall = x.HasRollCall, + SumOfWorkingDays = "-", + OverTimeWorkValue = x.OverTimeWorkValue, + OverNightWorkValue = x.OverNightWorkValue, + FridayWorkValue = x.FridayWorkValue, + RotatingShiftValue = x.RotatingShiftValue, + AbsenceValue = x.AbsenceValue, + MaritalStatus = "", + TotalDayOfLeaveCompute = "-", + TotalDayOfYearsCompute = "-", + TotalDayOfBunosesCompute = "-", + InstallmentViewModels = x.LoanInstallments.Select(i => new LoanInstallmentViewModel() + { + Amount = i.AmountForMonth, + AmountDouble = i.AmountForMonth.MoneyToDouble(), + Year = i.Year, + Month = i.Month, + IsActive = i.IsActive, + RemainingAmount = i.LoanRemaining, + LoanAmount = i.LoanAmount + }).ToList(), + SalaryAidViewModels = x.SalaryAids.Select(s => new SalaryAidViewModel() + { + Amount = s.Amount, + AmountDouble = s.Amount.MoneyToDouble(), + SalaryAidDateTimeFa = s.SalaryAidDateTimeFa, + SalaryAidDateTimeGe = s.SalaryAidDateTime + }).ToList(), + + }).SingleOrDefault(x => x.Id == id); + + var workshopName = _context.Workshops.FirstOrDefault(x => x.id == ch.WorkshopId); + ch.WorkshopName = workshopName.WorkshopName; + ch.TotalPaymentHide = workshopName.TotalPaymentHide; + var emp = _context.WorkshopEmployers.Where(x => x.WorkshopId == ch.WorkshopId) + .Select(x => x.EmployerId); + var employerlist = _context.Employers.Where(x => emp.Contains(x.id)); + var employers = new List(); + + foreach (var em in employerlist) + { + var employer = new EmprViewModel() + { + EmployerFullName = em.FName + " " + em.LName, + IsLegal = em.IsLegal, + }; + employers.Add(employer); + } + ch.MaritalStatus = _context.Employees.Find(ch.EmployeeId)?.MaritalStatus; + ch.EmployerList = employers; + var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(ch.ContractId); + ch.CreateWorkingHoursTemp = workingHours; + var AbsenceDeduction = ch.AbsenceDeduction.MoneyToDouble(); + var InstallmentDeduction = ch.InstallmentDeduction.MoneyToDouble(); + var InsuranceDeduction = ch.InsuranceDeduction.MoneyToDouble(); + var SalaryAidDeduction = ch.SalaryAidDeduction.MoneyToDouble(); + var TaxDeducation = ch.TaxDeducation.MoneyToDouble(); + + var TotalDeduction = AbsenceDeduction + InsuranceDeduction + InstallmentDeduction + SalaryAidDeduction + + TaxDeducation; + ch.TotalDeductions = TotalDeduction.ToMoney(); + + + var leftWorkSearch = new LeftWorkSearchModel() { WorkshopId = ch.WorkshopId, EmployeeId = ch.EmployeeId }; + var leftworkResult = _leftWorkRepository.search(leftWorkSearch).FirstOrDefault(); + var leftCheck = _leftWorkRepository.CheckoutleftWorkCheck(ch.ContractStartGr, ch.WorkshopId, ch.EmployeeId); + var contractLeftWorkDate = ch.ContractEndGr.AddDays(1); + if (leftCheck != null && leftCheck.LeftWorkDateGr == contractLeftWorkDate) + { + ch.IsLeft = true; + ch.LeftWorkDate = leftCheck.LeftWorkDate; + ch.LastDayOfWork = ch.ContractEndGr.ToFarsi(); + } + + //var checkBonusesPay = leftworkResult != null && leftworkResult.AddBonusesPay; + //var checkYearsPay = leftworkResult != null && leftworkResult.AddYearsPay; + //var checkLeavePay = leftworkResult != null && leftworkResult.AddLeavePay; + + //if (!checkBonusesPay || !checkYearsPay || !checkLeavePay) + //{ + // double sumOfBonusAndYearsPay = 0; + // if (!checkBonusesPay) + // { + // var bonusesPay = ch.BonusesPay.MoneyToDouble(); + // sumOfBonusAndYearsPay += bonusesPay; + // ch.BonusesPay = "0"; + + // } + + // if (!checkYearsPay) + // { + // var yearsPay = ch.YearsPay.MoneyToDouble(); + // sumOfBonusAndYearsPay += yearsPay; + // ch.YearsPay = "0"; + // } + + // if (!checkLeavePay) + // { + // var leavePay = ch.LeavePay.MoneyToDouble(); + // sumOfBonusAndYearsPay += leavePay; + // ch.LeavePay = "0"; + // } + // var totalClaimsDouble = ch.TotalClaims.MoneyToDouble(); + // var totalClaims = totalClaimsDouble - sumOfBonusAndYearsPay; + // ch.TotalClaims = totalClaims.ToMoney(); + + // var totalPayment = totalClaims - TotalDeduction; + // ch.TotalPayment = totalPayment.ToMoney(); + + //} + + //if (ch.WorkshopId == 40 || ch.WorkshopId == 68 || ch.WorkshopId == 44 || ch.WorkshopId == 45 || ch.WorkshopId == 280) + //{ + // ch.TotalClaims = ""; + // ch.TotalDeductions = ""; + // ch.TotalPayment = ""; + //} + + #region Leave + + var leavesQuery = _context.LeaveList + .Where(x => x.EmployeeId == ch.EmployeeId && x.WorkshopId == ch.WorkshopId && + x.StartLeave <= ch.ContractEndGr && x.EndLeave >= ch.ContractStartGr) + .AsNoTracking(); + + var paidLeave = leavesQuery.Where(x => x.LeaveType == "استحقاقی"); + var sickLeave = leavesQuery.Where(x => x.LeaveType == "استعلاجی").ToList(); + + + var dailyPaidLeave = paidLeave.Where(x => x.PaidLeaveType == "روزانه").ToList(); + var hourlyPaidLeave = paidLeave.Where(x => x.PaidLeaveType == "ساعتی").ToList(); + + var sickLeaveTimeSpans = sickLeave.Select(x => + { + var startLeave = ch.ContractStartGr > x.StartLeave ? ch.ContractStartGr : x.StartLeave; + var endLeave = ch.ContractEndGr < x.EndLeave ? ch.ContractEndGr : x.EndLeave; + + return (endLeave - startLeave).Add(TimeSpan.FromDays(1)); + }); + + ch.TotalSickLeave = new TimeSpan(sickLeaveTimeSpans.Sum(x => x.Ticks)).ToFarsiDaysAndHoursAndMinutes("-"); + + var hourlyPaidLeaveTimeSpans = hourlyPaidLeave.Select(x => TimeOnly.Parse(x.LeaveHourses).ToTimeSpan()).ToList(); + + var dailyPaidLeaveTimeSpans = dailyPaidLeave.Select(x => + { + var startLeave = ch.ContractStartGr > x.StartLeave ? ch.ContractStartGr : x.StartLeave; + var endLeave = ch.ContractEndGr < x.EndLeave ? ch.ContractEndGr : x.EndLeave; + return (endLeave - startLeave).Add(TimeSpan.FromDays(1)); + }); + + var totalPaidLeaveTimeSpans = hourlyPaidLeaveTimeSpans.Concat(dailyPaidLeaveTimeSpans); + ch.TotalHourlyLeave = new TimeSpan(hourlyPaidLeaveTimeSpans.Sum(x => x.Ticks)); + ch.TotalPaidLeave = new TimeSpan(totalPaidLeaveTimeSpans.Sum(x => x.Ticks)).ToFarsiDaysAndHoursAndMinutes("-"); + + + + #endregion + + + + if (ch.TotalPaymentHide == false) + { + ch.TotalClaims = ""; + ch.TotalDeductions = ""; + ch.TotalPayment = ""; + } + if (ch.HasRollCall) + ch.MonthlyRollCall = _rollCallRepository.GetEmployeeRollCallsForMonth(ch.EmployeeId, ch.WorkshopId, ch.ContractStartGr, ch.ContractEndGr); + else + { + ch.CreateWorkingHoursTemp.ContractStartGr = ch.ContractStartGr; + ch.CreateWorkingHoursTemp.ContractEndGr = ch.ContractEndGr; + ch.CreateWorkingHoursTemp.ContarctStart = ch.ContractStartGr.ToFarsi(); + ch.CreateWorkingHoursTemp.ContractEnd = ch.ContractEndGr.ToFarsi(); + ch.CreateWorkingHoursTemp.EmployeeId = ch.EmployeeId; + ch.CreateWorkingHoursTemp.WorkshopId = ch.WorkshopId; + ch.MonthlyRollCall = ConvertStaticToRollCall(ch.CreateWorkingHoursTemp, workshopName.WorkshopHolidayWorking); + } + return ch; + } + + private List ConvertStaticToRollCall(CreateWorkingHoursTemp workingHours, bool workshopHolidayWorking) + { + var rollCalls = _rollCallMandatoryRepository.ConvertStaticHoursToRollCall(workingHours, + workshopHolidayWorking); + var workshopId = workingHours.WorkshopId; + var employeeId = workingHours.EmployeeId; + var year = Convert.ToInt32(workingHours.ContarctStart.Substring(0, 4)); + var month = Convert.ToInt32(workingHours.ContarctStart.Substring(5, 2)); + var startMonthDay = $"{year:0000}/{month:00}/01".ToGeorgianDateTime(); + var endMonthDay = workingHours.ContractEndGr; + + var leaves = _context.LeaveList.Where(x => + x.WorkshopId == workshopId && x.EmployeeId == employeeId && x.EndLeave.Date >= startMonthDay.Date && + x.StartLeave.Date <= endMonthDay.Date).ToList(); + + var firstDayOfCurrentMonth = new DateTime(year, month, 1, new PersianCalendar()); + + + if (month == 12) + { + year += 1; + month = 1; + } + else + month += 1; + + var nextMonthDate = new DateTime(year, month, 1, new PersianCalendar()); + + var lastDayOfCurrentMonth = nextMonthDate.AddDays(-1); + + int dateRange = (int)(lastDayOfCurrentMonth - firstDayOfCurrentMonth).TotalDays + 1; + + + var holidays = _context.HolidayItems.Where(x => x.HolidayYear.Contains(year.ToString())).Select(x => new HolidayItemViewModel + { + Id = x.id, + Holidaydate = x.Holidaydate.ToFarsi(), + HolidayId = x.HolidayId, + HolidayYear = x.HolidayYear, + HolidaydateGr = x.Holidaydate + }).ToList(); + + if (workshopHolidayWorking) + holidays = []; + + //all the dates from start to end, to be compared with present days to get absent dates + var completeDaysList = Enumerable.Range(0, dateRange).Select(offset => startMonthDay.AddDays(offset).Date).ToList(); + + var absentRecords = completeDaysList + .ExceptBy(rollCalls.Select(x => x.ShiftDate.Date), y => y.Date) + .Select(x => + { + var leave = leaves.FirstOrDefault(y => + y.EmployeeId == employeeId && y.EndLeave.Date >= x.Date && y.StartLeave.Date <= x.Date); + var isHoliday = false; + var isFriday = x.Date.DayOfWeek == DayOfWeek.Friday; + var isNormalWorkingDay = isHoliday == false && isFriday == false; + return new CheckoutDailyRollCallViewModel() + { + StartDate1 = null, + EndDate1 = null, + DateTimeGr = x.Date, + DayOfWeek = x.Date.DayOfWeek.DayOfWeeKToPersian(), + RollCallDateFa = x.Date.ToFarsi(), + LeaveType = leave != null ? leave.LeaveType : "", + IsAbsent = leave == null && isNormalWorkingDay + }; + }); + + + var presentDays = rollCalls.GroupBy(x => x.ShiftDate.Date).Select(x => + { + + var orderedRollcalls = x.OrderBy(y => y.ShiftDate).ToList(); + + var rollCallTimeSpanPerDay = + new TimeSpan(x.Where(y => y.EndDate != null).Sum(y => y.ShiftEndWithoutRest == null ? (y.EndDate - y.StartDate).Value!.Ticks : (y.ShiftEndWithoutRest - y.StartDate)!.Value.Ticks)); + var breakTimePerDay = new TimeSpan(x.Sum(r => r.BreakTimeSpan.Ticks)); + + var firstRollCall = orderedRollcalls.FirstOrDefault(); + var secondRollCall = orderedRollcalls.Skip(1).FirstOrDefault(); + DateTime? secondRCEndDate = null; + DateTime? firstRCEndDate = null; + + if (firstRollCall != null) + firstRCEndDate = firstRollCall.ShiftEndWithoutRest ?? firstRollCall.EndDate; + if (secondRollCall != null) + secondRCEndDate = secondRollCall.ShiftEndWithoutRest ?? secondRollCall.EndDate; + + + + return new CheckoutDailyRollCallViewModel() + { + StartDate1 = firstRollCall?.StartDate?.ToString("HH:mm") ?? "", + EndDate1 = firstRCEndDate?.ToString("HH:mm") ?? "", + + StartDate2 = secondRollCall?.StartDate?.ToString("HH:mm") ?? "", + EndDate2 = secondRCEndDate?.ToString("HH:mm") ?? "", + + TotalhourseSpan = rollCallTimeSpanPerDay - breakTimePerDay, + + BreakTimeTimeSpan = breakTimePerDay, + + DayOfWeek = x.Key.DayOfWeek.DayOfWeeKToPersian(), + RollCallDateFa = x.Key.Date.ToFarsi(), + DateTimeGr = x.Key.Date, + IsSliced = x.Count() > 2, + IsAbsent = false + }; + }); + + + presentDays = presentDays.Select(x => new CheckoutDailyRollCallViewModel + { + StartDate1 = x.StartDate1, + EndDate1 = x.EndDate1, + EndDate2 = x.EndDate2, + StartDate2 = x.StartDate2, + TotalWorkingHours = $"{(int)(x.TotalhourseSpan.TotalHours)}:{x.TotalhourseSpan.Minutes:00}", + BreakTimeString = $"{(int)(x.BreakTimeTimeSpan.TotalHours)}:{x.BreakTimeTimeSpan.Minutes:00}", + TotalhourseSpan = x.TotalhourseSpan, + BreakTimeTimeSpan = x.BreakTimeTimeSpan, + DayOfWeek = x.DayOfWeek, + RollCallDateFa = x.RollCallDateFa, + DateTimeGr = x.DateTimeGr, + IsSliced = x.IsSliced, + IsAbsent = false + }); + + var result = presentDays.Concat(absentRecords).OrderBy(x => x.DateTimeGr).ToList(); + result.ForEach(x => + { + x.IsHoliday = holidays.Any(y => x.DateTimeGr.Date == y.HolidaydateGr.Date); + x.IsFriday = x.DateTimeGr.DayOfWeek == DayOfWeek.Friday; + }); + + return result; + } + + public OperationResult RemoveCheckout(long id) + { + var op = new OperationResult(); + var item = _context.CheckoutSet.FirstOrDefault(x => x.id == id); + if (item != null) + _context.CheckoutSet.Remove(item); + + _context.SaveChanges(); + return op.Succcedded(); + } + + #region Client + + public List SearchForClient(CheckoutSearchModel searchModel) + { + #region CheckValidtWorkshop + + var accountId = _authHelper.CurrentAccountId(); + var contracingPartyAcc = _context.ContractingPartyAccounts.FirstOrDefault(x => x.AccountId == accountId); + if (contracingPartyAcc == null) + { + return new List(); + } + var employers = + _context.Employers.Where(x => x.ContractingPartyId == contracingPartyAcc.PersonalContractingPartyId).Select(x => x.id).ToList(); + if (employers.Count < 1) + { + return new List(); + } + var workshopIds = _context.WorkshopEmployers.Where(x => employers.Contains(x.EmployerId)) + .Select(x => x.WorkshopId).ToList(); + var checkValid = workshopIds.Any(x => x == searchModel.WorkshopId); + if (!checkValid) + { + return new List(); + } + #endregion + var query = _context.CheckoutSet + .AsSplitQuery().Select(x => new CheckoutViewModel() + { + Id = x.id, + EmployeeId = x.EmployeeId, + WorkshopId = x.WorkshopId, + ContractStartGr = x.ContractStart, + ContractEndGr = x.ContractEnd, + ContractStart = x.ContractStart.ToFarsi(), + ContractEnd = x.ContractEnd.ToFarsi(), + Signature = x.Signature, + Year = x.Year, + Month = x.Month, + ContractNo = x.ContractNo, + ContractId = x.ContractId, + EmployeeFullName = x.EmployeeFullName, + PersonnelCode = x.PersonnelCode, + PersonnelCodeInt = Convert.ToInt32(x.PersonnelCode), + InstallmentViewModels = x.LoanInstallments.Select(i => new LoanInstallmentViewModel() + { + Amount = i.AmountForMonth, + AmountDouble = i.AmountForMonth.MoneyToDouble(), + Year = i.Year, + Month = i.Month, + IsActive = i.IsActive, + RemainingAmount = i.LoanRemaining, + LoanAmount = i.LoanAmount + }).ToList(), + SalaryAidViewModels = x.SalaryAids.Select(s => new SalaryAidViewModel() + { + Amount = s.Amount, + AmountDouble = s.Amount.MoneyToDouble(), + SalaryAidDateTimeFa = s.SalaryAidDateTimeFa, + SalaryAidDateTimeGe = s.SalaryAidDateTime + }).ToList(), + + }).Where(x => x.WorkshopId == searchModel.WorkshopId); + if (searchModel.EmployeeId > 0) + { + query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); + searchModel.Sorting = "ContractStart-Max"; + } + + if (!string.IsNullOrWhiteSpace(searchModel.ContractStart) && + !string.IsNullOrWhiteSpace(searchModel.ContractEnd)) + { + var start = searchModel.ContractStart.ToGeorgianDateTime(); + var endd = searchModel.ContractEnd.ToGeorgianDateTime(); + query = query.Where(x => + x.ContractStartGr >= start && x.ContractEndGr <= endd); + } + else if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month)) + { + var y = searchModel.Year + "/" + searchModel.Month + "/01"; + string y2 = string.Empty; + int month = Convert.ToInt32(searchModel.Month); + int year = Convert.ToInt32(searchModel.Year); + + if (month <= 6) + { + y2 = $"{searchModel.Year}/{searchModel.Month}/31"; + } + else if (month > 6 && month < 12) + { + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + } + else if (month == 12) + { + switch (year) + { + case 1346: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1350: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1354: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1358: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1362: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1366: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1370: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1375: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1379: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1383: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1387: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1391: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1395: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1399: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1403: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1408: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1412: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1416: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1420: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1424: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1428: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1432: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1436: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1441: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1445: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + + default: + y2 = $"{searchModel.Year}/{searchModel.Month}/29"; + break; + + } + } + + var start = y.ToGeorgianDateTime(); + var end = y2.ToGeorgianDateTime(); + + query = query.Where(x => x.ContractStartGr >= start && x.ContractStartGr < end && x.ContractEndGr > start && x.ContractEndGr <= end || + x.ContractStartGr <= start && x.ContractEndGr >= end || start <= x.ContractStartGr && end > x.ContractStartGr || end >= x.ContractEndGr && start < x.ContractEndGr); + } + if (searchModel.SearchAll) + return query.OrderByDescending(x => x.Id).ToList(); + switch (searchModel.Sorting) + { + case "CreationDate-Max": + return query.OrderByDescending(x => x.Id).Skip(searchModel.PageIndex).Take(30).ToList(); + break; + case "CreationDate-Min": + return query.OrderBy(x => x.Id).Skip(searchModel.PageIndex).Take(30).ToList(); + break; + case "PersonelCode-Max": + return query.OrderByDescending(x => x.PersonnelCodeInt).Skip(searchModel.PageIndex).Take(30).ToList(); + break; + case "PersonelCode-Min": + return query.OrderBy(x => x.PersonnelCodeInt).Skip(searchModel.PageIndex).Take(30).ToList(); + break; + case "ContractStart-Min": + return query.OrderBy(x => x.ContractStartGr).Skip(searchModel.PageIndex).Take(30).ToList(); + break; + case "ContractStart-Max": + return query.OrderByDescending(x => x.ContractStartGr).Skip(searchModel.PageIndex).Take(30).ToList(); + break; + case "Signature-Min": + return query.OrderByDescending(x => x.Signature == "0").Skip(searchModel.PageIndex).Take(30).ToList(); + break; + case "Signature-Max": + return query.OrderByDescending(x => x.Signature == "1").Skip(searchModel.PageIndex).Take(30).ToList(); + break; + default: return query.OrderByDescending(x => x.Id).Skip(searchModel.PageIndex).Take(30).ToList(); + } + + + } + + #endregion + + #region NewChangeByHeydari + + public OperationResult DeleteAllCheckouts(List ids) + { + var op = new OperationResult(); + + try + { + var contracts = _context.CheckoutSet.Where(x => ids.Contains(x.id)).ToList(); + _context.CheckoutSet.RemoveRange(contracts); + _context.SaveChanges(); + return op.Succcedded(-1, "حذف با موفقیت شد."); + } + catch (Exception) + { + return op.Failed("حذف با خطا مواجه شد."); + } + } + + public OperationResult DeleteCheckout(long id) + { + var op = new OperationResult(); + + try + { + + var checkout = _context.CheckoutSet.Where(x => x.id == id)?.FirstOrDefault(); + _context.CheckoutSet.Remove(checkout); + _context.SaveChanges(); + return op.Succcedded(-1, "حذف با موفقیت انجام شد."); + + } + catch (Exception) + { + return op.Failed("حذف با خطا مواجه شد."); + } + } + + public List CheckHasSignature(List ids) + { + List notRemoveList = new List(); + foreach (var item in ids) + { + if (_context.CheckoutSet.Any(x => x.id == item && x.Signature == "1")) + { + notRemoveList.Add(item); + } + } + return notRemoveList; + } + + public async Task> SearchCheckoutOptimized(CheckoutSearchModel searchModel) + { + bool hasSearch = false; + bool hasEmployeeOrWorkshpSearch = false; + var acountID = _authHelper.CurrentAccountId(); + var workshopAcounts = _context.WorkshopAccounts.Where(x => x.AccountId == acountID) + .Select(x => x.WorkshopId); + + var checkouts = + _context.CheckoutSet.Where(x => workshopAcounts.Contains(x.WorkshopId) && x.IsActiveString == "true") + .Join(_context.Workshops.AsSplitQuery(), + ch => ch.WorkshopId, + workshop => workshop.id, + (ch, workshop) => new { ch, workshop }) + .GroupJoin(_context.EmployeeComputeOptionsSet.AsSplitQuery(), + x => x.workshop.id, + option => option.WorkshopId, + (x, options) => new { x.ch, x.workshop, options }) + .SelectMany( + x => x.options.DefaultIfEmpty(), + (x, option) => new { x.ch, x.workshop, option }) + .GroupJoin(_context.WorkshopEmployers.AsSplitQuery().Include(we => we.Employer), + result => result.workshop.id, + workshopEmployer => workshopEmployer.WorkshopId, + (result, workshopEmployer) => new { result.ch, result.workshop, result.option, workshopEmployer }) + .SelectMany( + y => y.workshopEmployer.DefaultIfEmpty(), + (y, workshopEmployer) => new { y.option, y.ch, y.workshop, workshopEmployer }) + .Join(_context.PersonalContractingParties.AsSplitQuery().Include(p => p.Employers), + + secondResult => secondResult.workshopEmployer.Employer.id, + contractingParty => contractingParty.Employers.First().id, + (secondResult, contractingParty) => new + { + secondResult.workshopEmployer, + secondResult.workshop, + secondResult.option, + secondResult.ch, + contractingParty + }); + + + + + #region SercheModel + + if (!string.IsNullOrWhiteSpace(searchModel.ContractNo) && searchModel.ContractId != 0) + checkouts = checkouts.Where(x => + x.ch.ContractNo == searchModel.ContractNo && x.ch.ContractId == searchModel.ContractId); + if (searchModel.WorkshopId != 0) + { + hasEmployeeOrWorkshpSearch = true; + checkouts = checkouts.Where(x => x.ch.WorkshopId == searchModel.WorkshopId); + } + if (searchModel.EmployeeId != 0) + { + hasEmployeeOrWorkshpSearch = true; + checkouts = checkouts.Where(x => x.ch.EmployeeId == searchModel.EmployeeId); + } + if (searchModel.EmployerId != 0) + { + hasEmployeeOrWorkshpSearch = true; + checkouts = checkouts.Where(x => x.contractingParty.Employers.Select(c => c.id).Contains(searchModel.EmployerId)); + } + if (!string.IsNullOrWhiteSpace(searchModel.ContractNo)) + checkouts = checkouts.Where(x => x.ch.ContractNo == searchModel.ContractNo); + + + //if (searchModel.IsActiveString == null) + //{ + // checkouts = checkouts.Where(x => x.ch.IsActiveString == "true"); + //} + + //if (searchModel.IsActiveString == "false") + //{ + // checkouts = checkouts.Where(x => x.ch.IsActiveString == "false"); + //} + //else if (searchModel.IsActiveString == "both") + //{ + // checkouts = checkouts.Where(x => x.ch.IsActiveString == "false" || x.ch.IsActiveString == "true"); + //} + + + //سرچ سال + + if (!string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month) && + (string.IsNullOrWhiteSpace(searchModel.ContractStart) || + string.IsNullOrWhiteSpace(searchModel.ContractEnd))) + { + hasSearch = true; + var startYear = searchModel.Year + "/01/01"; + var startyearGr = startYear.ToGeorgianDateTime(); + var endYear = $"{searchModel.Year}/12/01".FindeEndOfMonth(); + var endYearGr = endYear.ToGeorgianDateTime(); + + + checkouts = checkouts.Where(x => x.ch.ContractStart >= startyearGr && x.ch.ContractEnd <= endYearGr); + if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) + checkouts = checkouts.OrderByDescending(x => x.ch.ContractEnd).ThenBy(x => x.ch.PersonnelCode); + + } + else if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month) && + string.IsNullOrWhiteSpace(searchModel.ContractStart) && + string.IsNullOrWhiteSpace(searchModel.ContractEnd)) + { + hasSearch = true; + //سرچ سال و ماه + string y1 = $"{searchModel.Year}/{searchModel.Month}/01"; + var startDate = y1.ToGeorgianDateTime(); + string y2 = string.Empty; + int month = Convert.ToInt32(searchModel.Month); + int year = Convert.ToInt32(searchModel.Year); + + if (month <= 6) + { + y2 = $"{searchModel.Year}/{searchModel.Month}/31"; + } + else if (month > 6 && month < 12) + { + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + } + else if (month == 12) + { + switch (year) + { + case 1346: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1350: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1354: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1358: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1362: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1366: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1370: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1375: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1379: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1383: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1387: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1391: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1395: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1399: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1403: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1408: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1412: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1416: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1420: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1424: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1428: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1432: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1436: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1441: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1445: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + + default: + y2 = $"{searchModel.Year}/{searchModel.Month}/29"; + break; + } + } + + + var endDate = y2.ToGeorgianDateTime(); + + //checkouts = checkouts.Where(x => x.ContractEndGr >= start && x.ContractEndGr <= end).ToList(); + checkouts = checkouts.Where(x => + x.ch.ContractStart >= startDate && x.ch.ContractStart < endDate && x.ch.ContractEnd > startDate && + x.ch.ContractEnd <= endDate || + x.ch.ContractStart <= startDate && x.ch.ContractEnd >= endDate || + startDate <= x.ch.ContractStart && endDate > x.ch.ContractStart || + endDate >= x.ch.ContractEnd && startDate < x.ch.ContractEnd); + if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) + checkouts = checkouts.OrderBy(x => x.ch.PersonnelCode); + + } + else if (!string.IsNullOrWhiteSpace(searchModel.ContractStart) && + !string.IsNullOrWhiteSpace(searchModel.ContractEnd) && + string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month)) + { + hasSearch = true; + //سرچ تاریخ + var start = searchModel.ContractStart.ToGeorgianDateTime(); + var endd = searchModel.ContractEnd.ToGeorgianDateTime(); + checkouts = checkouts.Where(x => + x.ch.ContractStart >= start && x.ch.ContractStart <= endd); + + if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) + checkouts = checkouts.OrderByDescending(x => x.ch.ContractEnd).ThenBy(x => x.ch.PersonnelCode); + } + + if (!string.IsNullOrEmpty(searchModel.EmployeeName)) + { + hasSearch = true; + var employeeList = _context.Employees.Where(x => (!string.IsNullOrEmpty(x.FName) && x.FName.StartsWith(searchModel.EmployeeName)) || + (!string.IsNullOrEmpty(x.LName) && x.LName.StartsWith(searchModel.EmployeeName))).Select(x => x.id).ToList(); + checkouts = checkouts.Where(x => employeeList.Contains(x.ch.EmployeeId)); + } + #endregion + + + if (!hasSearch && !hasEmployeeOrWorkshpSearch) + { + + return checkouts.Select(x => new CheckoutViewModel() + { + + Id = x.ch.id, + EmployeeFullName = x.ch.EmployeeFullName, + ContractStart = x.ch.ContractStart.ToFarsi(), + ContractEnd = x.ch.ContractEnd.ToFarsi(), + ContractStartGr = x.ch.ContractStart, + ContractEndGr = x.ch.ContractEnd, + PersonnelCode = x.ch.PersonnelCode, + PersonnelCodeInt = Convert.ToInt32(x.ch.PersonnelCode), + ArchiveCode = x.workshop.ArchiveCode, + SumOfWorkingDays = x.ch.SumOfWorkingDays, + WorkshopName = x.workshop.WorkshopName, + Month = x.ch.Month, + Year = x.ch.Year, + ContractNo = x.ch.ContractNo, + ContractId = x.ch.ContractId, + WorkshopId = x.ch.WorkshopId, + EmployeeId = x.ch.EmployeeId, + EmployerId = x.workshopEmployer.EmployerId, + IsActiveString = x.ch.IsActiveString, + Signature = x.ch.Signature, + CreationDate = x.ch.CreationDate, + EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}", + IsBlockCantracingParty = x.contractingParty.IsBlock, + HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout + + + }).OrderByDescending(x => x.Id) + .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).Take(50).ToList(); + } + else if (hasSearch) + { + + return checkouts.Select(x => new CheckoutViewModel() + { + + Id = x.ch.id, + EmployeeFullName = x.ch.EmployeeFullName, + ContractStart = x.ch.ContractStart.ToFarsi(), + ContractEnd = x.ch.ContractEnd.ToFarsi(), + ContractStartGr = x.ch.ContractStart, + ContractEndGr = x.ch.ContractEnd, + PersonnelCode = x.ch.PersonnelCode, + PersonnelCodeInt = Convert.ToInt32(x.ch.PersonnelCode), + ArchiveCode = x.workshop.ArchiveCode, + SumOfWorkingDays = x.ch.SumOfWorkingDays, + WorkshopName = x.workshop.WorkshopName, + Month = x.ch.Month, + Year = x.ch.Year, + ContractNo = x.ch.ContractNo, + ContractId = x.ch.ContractId, + WorkshopId = x.ch.WorkshopId, + EmployeeId = x.ch.EmployeeId, + EmployerId = x.workshopEmployer.EmployerId, + IsActiveString = x.ch.IsActiveString, + Signature = x.ch.Signature, + CreationDate = x.ch.CreationDate, + EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}", + IsBlockCantracingParty = x.contractingParty.IsBlock, + HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout + + }).OrderByDescending(x => x.Id) + .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).Distinct().ToList(); + } + else + { + + return checkouts.Select(x => new CheckoutViewModel() + { + + Id = x.ch.id, + EmployeeFullName = x.ch.EmployeeFullName, + ContractStart = x.ch.ContractStart.ToFarsi(), + ContractEnd = x.ch.ContractEnd.ToFarsi(), + ContractStartGr = x.ch.ContractStart, + ContractEndGr = x.ch.ContractEnd, + PersonnelCode = x.ch.PersonnelCode, + PersonnelCodeInt = Convert.ToInt32(x.ch.PersonnelCode), + ArchiveCode = x.workshop.ArchiveCode, + SumOfWorkingDays = x.ch.SumOfWorkingDays, + WorkshopName = x.workshop.WorkshopName, + Month = x.ch.Month, + Year = x.ch.Year, + ContractNo = x.ch.ContractNo, + ContractId = x.ch.ContractId, + WorkshopId = x.ch.WorkshopId, + EmployeeId = x.ch.EmployeeId, + EmployerId = x.workshopEmployer.EmployerId, + IsActiveString = x.ch.IsActiveString, + Signature = x.ch.Signature, + CreationDate = x.ch.CreationDate, + EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}", + IsBlockCantracingParty = x.contractingParty.IsBlock, + HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout + + }).OrderByDescending(x => x.ContractStartGr).Distinct().ToList(); + } + + } + public async Task> SearchForMainCheckout(CheckoutSearchModel searchModel) + { + + + bool hasSearch = false; + bool hasEmployeeOrWorkshpSearch = false; + //List query = null; + var connection = _configuration.GetConnectionString("MesbahDb"); + //var watch = System.Diagnostics.Stopwatch.StartNew(); + var AcountID = _authHelper.CurrentAccountId(); + var workshopAcounts = _context.WorkshopAccounts.Where(x => x.AccountId == AcountID) + .Select(x => x.WorkshopId).ToList(); + //Console.WriteLine("acID.. " + watch.Elapsed); + + //var watchmp = System.Diagnostics.Stopwatch.StartNew(); + var emp = _context.WorkshopEmployers.Where(x => workshopAcounts.Contains(x.WorkshopId)) + .Select(x => x.EmployerId).FirstOrDefault(); + var emp2 = _context.WorkshopEmployers.Where(x => x.EmployerId == searchModel.EmployerId) + .Select(x => x.WorkshopId).ToList(); + + + + + var query = _context.CheckoutSet.Select(x => new CheckoutViewModel() + { + + Id = x.id, + EmployeeFullName = x.EmployeeFullName, + //var start = ; + ContractStart = x.ContractStart.ToFarsi(), + // var end = (DateTime)reader["ContractEnd"]; + ContractEnd = x.ContractEnd.ToFarsi(), + ContractStartGr = x.ContractStart, + ContractEndGr = x.ContractEnd, + PersonnelCode = x.PersonnelCode, + PersonnelCodeInt = Convert.ToInt32(x.PersonnelCode), + ArchiveCode = x.ArchiveCode, + SumOfWorkingDays = x.SumOfWorkingDays, + WorkshopName = x.WorkshopName, + Month = x.Month, + Year = x.Year, + ContractNo = x.ContractNo, + ContractId = x.ContractId, + WorkshopId = x.WorkshopId, + EmployeeId = x.EmployeeId, + IsActiveString = x.IsActiveString, + Signature = x.Signature, + CreationDate = x.CreationDate, + + + }); + + + + + if (!string.IsNullOrWhiteSpace(searchModel.ContractNo) && searchModel.ContractId != 0) + query = query.Where(x => + x.ContractNo == searchModel.ContractNo && x.ContractId == searchModel.ContractId); + if (searchModel.WorkshopId != 0) + { + hasEmployeeOrWorkshpSearch = true; + query = query.Where(x => x.WorkshopId == searchModel.WorkshopId); + } + if (searchModel.EmployeeId != 0) + { + hasEmployeeOrWorkshpSearch = true; + query = query.Where(x => x.EmployeeId == searchModel.EmployeeId); + } + if (searchModel.EmployerId != 0) + { + hasEmployeeOrWorkshpSearch = true; + query = query.Where(x => emp2.Contains(x.WorkshopId)); + } + + if (!string.IsNullOrWhiteSpace(searchModel.ContractNo)) + query = query.Where(x => x.ContractNo == searchModel.ContractNo); + + + if (searchModel.IsActiveString == null) + { + query = query.Where(x => x.IsActiveString == "true"); + } + + if (searchModel.IsActiveString == "false") + { + query = query.Where(x => x.IsActiveString == "false"); + } + else if (searchModel.IsActiveString == "both") + { + query = query.Where(x => x.IsActiveString == "false" || x.IsActiveString == "true"); + } + + query = query.Where(e => workshopAcounts.Contains(e.WorkshopId)); + //var resultList = new List(); + //resultList = query; + //سرچ سال + + if (!string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month) && + (string.IsNullOrWhiteSpace(searchModel.ContractStart) || + string.IsNullOrWhiteSpace(searchModel.ContractEnd))) + { + hasSearch = true; + var startYear = searchModel.Year + "/01/01"; + var startyearGr = startYear.ToGeorgianDateTime(); + var endYear = $"{searchModel.Year}/12/01".FindeEndOfMonth(); + var endYearGr = endYear.ToGeorgianDateTime(); + + + query = query.Where(x => x.ContractStartGr >= startyearGr && x.ContractEndGr <= endYearGr); + if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) + query = query.OrderByDescending(x => x.ContractEndGr).ThenBy(x => x.PersonnelCodeInt); + + } + else if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month) && + string.IsNullOrWhiteSpace(searchModel.ContractStart) && + string.IsNullOrWhiteSpace(searchModel.ContractEnd)) + { + hasSearch = true; + //سرچ سال و ماه + string y1 = $"{searchModel.Year}/{searchModel.Month}/01"; + var startDate = y1.ToGeorgianDateTime(); + string y2 = string.Empty; + int month = Convert.ToInt32(searchModel.Month); + int year = Convert.ToInt32(searchModel.Year); + + if (month <= 6) + { + y2 = $"{searchModel.Year}/{searchModel.Month}/31"; + } + else if (month > 6 && month < 12) + { + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + } + else if (month == 12) + { + switch (year) + { + case 1346: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1350: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1354: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1358: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1362: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1366: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1370: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1375: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1379: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1383: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1387: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1391: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1395: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1399: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1403: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1408: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1412: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1416: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1420: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1424: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1428: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1432: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1436: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1441: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + case 1445: + y2 = $"{searchModel.Year}/{searchModel.Month}/30"; + break; + + default: + y2 = $"{searchModel.Year}/{searchModel.Month}/29"; + break; + } + } + + + var endDate = y2.ToGeorgianDateTime(); + + //query = query.Where(x => x.ContractEndGr >= start && x.ContractEndGr <= end).ToList(); + query = query.Where(x => + x.ContractStartGr >= startDate && x.ContractStartGr < endDate && x.ContractEndGr > startDate && + x.ContractEndGr <= endDate || + x.ContractStartGr <= startDate && x.ContractEndGr >= endDate || + startDate <= x.ContractStartGr && endDate > x.ContractStartGr || + endDate >= x.ContractEndGr && startDate < x.ContractEndGr); + if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) + query = query.OrderBy(x => x.PersonnelCodeInt); + + } + else if (!string.IsNullOrWhiteSpace(searchModel.ContractStart) && + !string.IsNullOrWhiteSpace(searchModel.ContractEnd) && + string.IsNullOrWhiteSpace(searchModel.Year) && string.IsNullOrWhiteSpace(searchModel.Month)) + { + hasSearch = true; + //سرچ تاریخ + var start = searchModel.ContractStart.ToGeorgianDateTime(); + var endd = searchModel.ContractEnd.ToGeorgianDateTime(); + query = query.Where(x => + x.ContractStartGr >= start && x.ContractEndGr <= endd); + + if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) + query = query.OrderByDescending(x => x.ContractEndGr).ThenBy(x => x.PersonnelCodeInt); + + } + + if (!string.IsNullOrEmpty(searchModel.EmployeeName)) + { + hasSearch = true; + var employeeList = _context.Employees.Where(x => (!string.IsNullOrEmpty(x.FName) && x.FName.StartsWith(searchModel.EmployeeName)) || + (!string.IsNullOrEmpty(x.LName) && x.LName.StartsWith(searchModel.EmployeeName))).Select(x => x.id).ToList(); + query = query.Where(x => employeeList.Contains(x.EmployeeId)); + } + if (hasSearch) + return query.OrderByDescending(x => x.Id) + .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).ToList(); + else if (hasEmployeeOrWorkshpSearch && !hasSearch) + return query.OrderByDescending(x => x.ContractStartGr).ToList(); + else + return query.OrderByDescending(x => x.Id) + .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).Take(50).ToList(); + + // Console.WriteLine("return" + watch.Elapsed); + + + + } + + #endregion + + #region Pooya + + + public List<(long EmployeeId, DateTime CheckoutStart, DateTime CheckoutEnd)> GetLastCheckoutsByWorkshopIdForWorkFlow(long workshopId, DateTime start, DateTime end) + { + + + + return _context.CheckoutSet.AsSplitQuery().Where(x => x.ContractEnd.Date >= start && x.ContractStart.Date <= end && x.WorkshopId == workshopId).Select(x => new + { + EmployeeId = x.EmployeeId, + CheckoutEnd = x.ContractEnd, + CheckoutStart = x.ContractStart + }).AsEnumerable().Select(x => (x.EmployeeId, x.CheckoutStart, x.CheckoutEnd)).ToList(); + } + + #endregion } \ No newline at end of file diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs index 3032fcfa..aff3ff72 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs @@ -155,9 +155,13 @@ public class IndexModel : PageModel public async Task OnGetSearch(CheckoutSearchModel searchModel) { var accountId = _authHelper.CurrentAccountId(); + - var searchResult = await _checkoutApplication.Search(searchModel); - var result = new MainViewModel(); + //var oldSearch = await _checkoutApplication.Search(searchModel); + + var searchResult = await _checkoutApplication.SearchCheckoutOptimized(searchModel); + + var result = new MainViewModel(); result.IsSysManager = accountId is 2 or 3; result.MainList = searchResult; if (searchModel.WorkshopId != 0 || searchModel.EmployeeId != 0) diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/MainSearch.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/MainSearch.cshtml index 2601fb48..a8c8e8f5 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/MainSearch.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/MainSearch.cshtml @@ -170,21 +170,33 @@ @item.PersonnelCode - @if (item.Signature == "1") + @if (item.HasSignCheckout) { - + @if (item.Signature == "1") + { + - - - + + + + } + else + { + + + + + } } else { - - - + + + + } + From 8e3a5b46da38c55b6d49f7585e8e1964c5297753 Mon Sep 17 00:00:00 2001 From: SamSys Date: Wed, 25 Jun 2025 01:17:07 +0330 Subject: [PATCH 07/25] checkout sign opration completed --- .../Migrations/CompanyContextModelSnapshot.cs | 622 +++++++++--------- .../Repository/CheckoutRepository.cs | 112 +++- .../Pages/Company/Checkouts/MainSearch.cshtml | 2 +- 3 files changed, 410 insertions(+), 326 deletions(-) diff --git a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs index 65265691..49f6c917 100644 --- a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs +++ b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs @@ -50,7 +50,7 @@ namespace CompanyManagment.EFCore.Migrations b.HasKey("id"); - b.ToTable("AdminMonthlyOverviews"); + b.ToTable("AdminMonthlyOverviews", (string)null); }); modelBuilder.Entity("Company.Domain.AndroidApkVersionAgg.AndroidApkVersion", b => @@ -1790,7 +1790,7 @@ namespace CompanyManagment.EFCore.Migrations b.HasKey("id"); - b.ToTable("EmployeeClientTemps"); + b.ToTable("EmployeeClientTemps", (string)null); }); modelBuilder.Entity("Company.Domain.EmployeeComputeOptionsAgg.EmployeeComputeOptions", b => @@ -3804,7 +3804,7 @@ namespace CompanyManagment.EFCore.Migrations b.HasKey("id"); - b.ToTable("LeftWorkTemps"); + b.ToTable("LeftWorkTemps", (string)null); }); modelBuilder.Entity("Company.Domain.LoanAgg.Entities.Loan", b => @@ -4742,7 +4742,7 @@ namespace CompanyManagment.EFCore.Migrations b.HasIndex("RollCallEmployeeId"); - b.ToTable("RollCallEmployeesStatus"); + b.ToTable("RollCallEmployeesStatus", (string)null); }); modelBuilder.Entity("Company.Domain.RollCallPlanAgg.RollCallPlan", b => @@ -6165,7 +6165,7 @@ namespace CompanyManagment.EFCore.Migrations b.HasIndex("WorkshopsListid"); - b.ToTable("EmployerWorkshop"); + b.ToTable("EmployerWorkshop", (string)null); }); modelBuilder.Entity("Company.Domain.Board.Board", b => @@ -6206,7 +6206,7 @@ namespace CompanyManagment.EFCore.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.OwnsOne("Company.Domain.CheckoutAgg.CheckoutRollCall", "CheckoutRollCall", b1 => + b.OwnsOne("Company.Domain.CheckoutAgg.Checkout.CheckoutRollCall#Company.Domain.CheckoutAgg.CheckoutRollCall", "CheckoutRollCall", b1 => { b1.Property("Checkoutid") .HasColumnType("bigint"); @@ -6243,12 +6243,12 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("Checkoutid"); - b1.ToTable("Checkouts"); + b1.ToTable("Checkouts", (string)null); b1.WithOwner() .HasForeignKey("Checkoutid"); - b1.OwnsMany("Company.Domain.CheckoutAgg.CheckoutRollCallDay", "RollCallDaysCollection", b2 => + b1.OwnsMany("Company.Domain.CheckoutAgg.Checkout.CheckoutRollCall#Company.Domain.CheckoutAgg.CheckoutRollCall.RollCallDaysCollection#Company.Domain.CheckoutAgg.CheckoutRollCallDay", "RollCallDaysCollection", b2 => { b2.Property("Id") .ValueGeneratedOnAdd() @@ -6308,7 +6308,7 @@ namespace CompanyManagment.EFCore.Migrations b2.HasIndex("CheckoutId"); - b2.ToTable("CheckoutRollCallDay"); + b2.ToTable("CheckoutRollCallDay", (string)null); b2.WithOwner() .HasForeignKey("CheckoutId"); @@ -6317,7 +6317,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("RollCallDaysCollection"); }); - b.OwnsMany("Company.Domain.CheckoutAgg.ValueObjects.CheckoutLoanInstallment", "LoanInstallments", b1 => + b.OwnsMany("Company.Domain.CheckoutAgg.Checkout.LoanInstallments#Company.Domain.CheckoutAgg.ValueObjects.CheckoutLoanInstallment", "LoanInstallments", b1 => { b1.Property("Checkoutid") .HasColumnType("bigint"); @@ -6358,13 +6358,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("Checkoutid", "Id"); - b1.ToTable("CheckoutLoanInstallment"); + b1.ToTable("CheckoutLoanInstallment", (string)null); b1.WithOwner() .HasForeignKey("Checkoutid"); }); - b.OwnsMany("Company.Domain.CheckoutAgg.ValueObjects.CheckoutSalaryAid", "SalaryAids", b1 => + b.OwnsMany("Company.Domain.CheckoutAgg.Checkout.SalaryAids#Company.Domain.CheckoutAgg.ValueObjects.CheckoutSalaryAid", "SalaryAids", b1 => { b1.Property("Checkoutid") .HasColumnType("bigint"); @@ -6398,7 +6398,7 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("Checkoutid", "Id"); - b1.ToTable("CheckoutSalaryAid"); + b1.ToTable("CheckoutSalaryAid", (string)null); b1.WithOwner() .HasForeignKey("Checkoutid"); @@ -6545,91 +6545,7 @@ namespace CompanyManagment.EFCore.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => - { - b1.Property("CustomizeCheckoutid") - .HasColumnType("bigint"); - - b1.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); - - b1.Property("EndTime") - .HasColumnType("time"); - - b1.Property("StartTime") - .HasColumnType("time"); - - b1.HasKey("CustomizeCheckoutid", "Id"); - - b1.ToTable("CustomizeCheckouts_CustomizeRotatingShifts"); - - b1.WithOwner() - .HasForeignKey("CustomizeCheckoutid"); - }); - - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => - { - b1.Property("CustomizeCheckoutid") - .HasColumnType("bigint"); - - b1.Property("EndTime") - .HasColumnType("time"); - - b1.Property("StartTime") - .HasColumnType("time"); - - b1.Property("WorkshopIrregularShifts") - .IsRequired() - .HasMaxLength(30) - .HasColumnType("nvarchar(30)"); - - b1.HasKey("CustomizeCheckoutid"); - - b1.ToTable("CustomizeCheckouts"); - - b1.WithOwner() - .HasForeignKey("CustomizeCheckoutid"); - }); - - b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutRegularShift", "RegularShifts", b1 => - { - b1.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); - - b1.Property("CreationDate") - .HasColumnType("datetime2"); - - b1.Property("CustomizeCheckoutid") - .HasColumnType("bigint"); - - b1.Property("EndTime") - .HasColumnType("time"); - - b1.Property("Placement") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("nvarchar(20)"); - - b1.Property("StartTime") - .HasColumnType("time"); - - b1.HasKey("id"); - - b1.HasIndex("CustomizeCheckoutid"); - - b1.ToTable("CustomizeCheckouts_RegularShifts"); - - b1.WithOwner() - .HasForeignKey("CustomizeCheckoutid"); - }); - - b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutFine", "CheckoutFines", b1 => + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout.CheckoutFines#Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutFine", "CheckoutFines", b1 => { b1.Property("CustomizeCheckoutid") .HasColumnType("bigint"); @@ -6668,13 +6584,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeCheckoutid", "Id"); - b1.ToTable("CustomizeCheckoutFine"); + b1.ToTable("CustomizeCheckoutFine", (string)null); b1.WithOwner() .HasForeignKey("CustomizeCheckoutid"); }); - b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutLoanInstallments", "CustomizeCheckoutLoanInstallments", b1 => + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout.CustomizeCheckoutLoanInstallments#Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutLoanInstallments", "CustomizeCheckoutLoanInstallments", b1 => { b1.Property("CustomizeCheckoutid") .HasColumnType("bigint"); @@ -6715,13 +6631,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeCheckoutid", "Id"); - b1.ToTable("CustomizeCheckoutLoanInstallments"); + b1.ToTable("CustomizeCheckoutLoanInstallments", (string)null); b1.WithOwner() .HasForeignKey("CustomizeCheckoutid"); }); - b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutReward", "CustomizeCheckoutRewards", b1 => + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout.CustomizeCheckoutRewards#Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutReward", "CustomizeCheckoutRewards", b1 => { b1.Property("CustomizeCheckoutid") .HasColumnType("bigint"); @@ -6760,13 +6676,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeCheckoutid", "Id"); - b1.ToTable("CustomizeCheckoutReward"); + b1.ToTable("CustomizeCheckoutReward", (string)null); b1.WithOwner() .HasForeignKey("CustomizeCheckoutid"); }); - b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutSalaryAid", "CustomizeCheckoutSalaryAids", b1 => + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout.CustomizeCheckoutSalaryAids#Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutSalaryAid", "CustomizeCheckoutSalaryAids", b1 => { b1.Property("CustomizeCheckoutid") .HasColumnType("bigint"); @@ -6800,7 +6716,91 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeCheckoutid", "Id"); - b1.ToTable("CustomizeCheckoutSalaryAid"); + b1.ToTable("CustomizeCheckoutSalaryAid", (string)null); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout.CustomizeRotatingShifts#_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", (string)null); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsOne("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout.IrregularShift#_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", (string)null); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout.RegularShifts#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", (string)null); b1.WithOwner() .HasForeignKey("CustomizeCheckoutid"); @@ -6839,91 +6839,7 @@ namespace CompanyManagment.EFCore.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => - { - b1.Property("CustomizeCheckoutTempid") - .HasColumnType("bigint"); - - b1.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); - - b1.Property("EndTime") - .HasColumnType("time"); - - b1.Property("StartTime") - .HasColumnType("time"); - - b1.HasKey("CustomizeCheckoutTempid", "Id"); - - b1.ToTable("CustomizeCheckoutTemps_CustomizeRotatingShifts"); - - b1.WithOwner() - .HasForeignKey("CustomizeCheckoutTempid"); - }); - - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => - { - b1.Property("CustomizeCheckoutTempid") - .HasColumnType("bigint"); - - b1.Property("EndTime") - .HasColumnType("time"); - - b1.Property("StartTime") - .HasColumnType("time"); - - b1.Property("WorkshopIrregularShifts") - .IsRequired() - .HasMaxLength(30) - .HasColumnType("nvarchar(30)"); - - b1.HasKey("CustomizeCheckoutTempid"); - - b1.ToTable("CustomizeCheckoutTemps"); - - b1.WithOwner() - .HasForeignKey("CustomizeCheckoutTempid"); - }); - - b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutRegularShift", "RegularShifts", b1 => - { - b1.Property("id") - .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); - - b1.Property("CreationDate") - .HasColumnType("datetime2"); - - b1.Property("CustomizeCheckoutTempid") - .HasColumnType("bigint"); - - b1.Property("EndTime") - .HasColumnType("time"); - - b1.Property("Placement") - .IsRequired() - .HasMaxLength(20) - .HasColumnType("nvarchar(20)"); - - b1.Property("StartTime") - .HasColumnType("time"); - - b1.HasKey("id"); - - b1.HasIndex("CustomizeCheckoutTempid"); - - b1.ToTable("CustomizeCheckoutTemps_RegularShifts"); - - b1.WithOwner() - .HasForeignKey("CustomizeCheckoutTempid"); - }); - - b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempFine", "CheckoutFines", b1 => + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp.CheckoutFines#Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempFine", "CheckoutFines", b1 => { b1.Property("CustomizeCheckoutTempid") .HasColumnType("bigint"); @@ -6962,13 +6878,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeCheckoutTempid", "Id"); - b1.ToTable("CustomizeCheckoutTempFine"); + b1.ToTable("CustomizeCheckoutTempFine", (string)null); b1.WithOwner() .HasForeignKey("CustomizeCheckoutTempid"); }); - b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempLoanInstallments", "CustomizeCheckoutLoanInstallments", b1 => + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp.CustomizeCheckoutLoanInstallments#Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempLoanInstallments", "CustomizeCheckoutLoanInstallments", b1 => { b1.Property("CustomizeCheckoutTempid") .HasColumnType("bigint"); @@ -7009,13 +6925,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeCheckoutTempid", "Id"); - b1.ToTable("CustomizeCheckoutTempLoanInstallments"); + b1.ToTable("CustomizeCheckoutTempLoanInstallments", (string)null); b1.WithOwner() .HasForeignKey("CustomizeCheckoutTempid"); }); - b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempReward", "CustomizeCheckoutRewards", b1 => + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp.CustomizeCheckoutRewards#Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempReward", "CustomizeCheckoutRewards", b1 => { b1.Property("CustomizeCheckoutTempid") .HasColumnType("bigint"); @@ -7054,13 +6970,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeCheckoutTempid", "Id"); - b1.ToTable("CustomizeCheckoutTempReward"); + b1.ToTable("CustomizeCheckoutTempReward", (string)null); b1.WithOwner() .HasForeignKey("CustomizeCheckoutTempid"); }); - b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempSalaryAid", "CustomizeCheckoutSalaryAids", b1 => + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp.CustomizeCheckoutSalaryAids#Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempSalaryAid", "CustomizeCheckoutSalaryAids", b1 => { b1.Property("CustomizeCheckoutTempid") .HasColumnType("bigint"); @@ -7094,7 +7010,91 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeCheckoutTempid", "Id"); - b1.ToTable("CustomizeCheckoutTempSalaryAid"); + b1.ToTable("CustomizeCheckoutTempSalaryAid", (string)null); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp.CustomizeRotatingShifts#_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", (string)null); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsOne("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp.IrregularShift#_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", (string)null); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp.RegularShifts#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", (string)null); b1.WithOwner() .HasForeignKey("CustomizeCheckoutTempid"); @@ -7127,7 +7127,7 @@ namespace CompanyManagment.EFCore.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.OwnsMany("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettingsShift", "CustomizeWorkshopEmployeeSettingsShifts", b1 => + b.OwnsMany("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.CustomizeWorkshopEmployeeSettingsShifts#Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettingsShift", "CustomizeWorkshopEmployeeSettingsShifts", b1 => { b1.Property("id") .ValueGeneratedOnAdd() @@ -7167,7 +7167,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("CustomizeWorkshopEmployeeSettings"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.BaseYearsPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7190,13 +7190,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.BonusesPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7219,13 +7219,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BreakTime", "BreakTime", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.BreakTime#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BreakTime", "BreakTime", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7243,13 +7243,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); }); - b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + b.OwnsMany("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.CustomizeRotatingShifts#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7268,13 +7268,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid", "Id"); - b1.ToTable("CustomizeWorkshopEmployeeSettings_CustomizeRotatingShifts"); + b1.ToTable("CustomizeWorkshopEmployeeSettings_CustomizeRotatingShifts", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.EarlyExit#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7291,12 +7291,12 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); - b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + b1.OwnsMany("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.EarlyExit#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit.EarlyExitTimeFines#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => { b2.Property("CustomizeWorkshopEmployeeSettingsId") .HasColumnType("bigint"); @@ -7318,7 +7318,7 @@ namespace CompanyManagment.EFCore.Migrations b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); - b2.ToTable("CustomizeWorkshopEmployeeSettings_EarlyExitTimeFines"); + b2.ToTable("CustomizeWorkshopEmployeeSettings_EarlyExitTimeFines", (string)null); b2.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); @@ -7327,7 +7327,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("EarlyExitTimeFines"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.FamilyAllowance#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7344,13 +7344,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.FineAbsenceDeduction#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7367,12 +7367,12 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); - b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + b1.OwnsMany("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.FineAbsenceDeduction#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction.FineAbsenceDayOfWeekCollection#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => { b2.Property("CustomizeWorkshopEmployeeSettingsId") .HasColumnType("bigint"); @@ -7391,7 +7391,7 @@ namespace CompanyManagment.EFCore.Migrations b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); - b2.ToTable("CustomizeWorkshopEmployeeSettings_FineAbsenceDayOfWeekCollection"); + b2.ToTable("CustomizeWorkshopEmployeeSettings_FineAbsenceDayOfWeekCollection", (string)null); b2.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); @@ -7400,7 +7400,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("FineAbsenceDayOfWeekCollection"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.FridayPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7416,13 +7416,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.InsuranceDeduction#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7439,13 +7439,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.IrregularShift#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7463,13 +7463,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.LateToWork#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7486,12 +7486,12 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); - b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + b1.OwnsMany("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.LateToWork#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork.LateToWorkTimeFines#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => { b2.Property("CustomizeWorkshopEmployeeSettingsId") .HasColumnType("bigint"); @@ -7513,7 +7513,7 @@ namespace CompanyManagment.EFCore.Migrations b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); - b2.ToTable("CustomizeWorkshopEmployeeSettings_LateToWorkTimeFines"); + b2.ToTable("CustomizeWorkshopEmployeeSettings_LateToWorkTimeFines", (string)null); b2.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); @@ -7522,7 +7522,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("LateToWorkTimeFines"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.LeavePay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7539,13 +7539,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.MarriedAllowance#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7562,13 +7562,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.NightWorkPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7585,13 +7585,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.OverTimePay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7608,13 +7608,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings.ShiftPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => { b1.Property("CustomizeWorkshopEmployeeSettingsid") .HasColumnType("bigint"); @@ -7637,7 +7637,7 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); - b1.ToTable("CustomizeWorkshopEmployeeSettings"); + b1.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); @@ -7688,7 +7688,7 @@ namespace CompanyManagment.EFCore.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.OwnsMany("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettingsShift", "CustomizeWorkshopGroupSettingsShifts", b1 => + b.OwnsMany("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.CustomizeWorkshopGroupSettingsShifts#Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettingsShift", "CustomizeWorkshopGroupSettingsShifts", b1 => { b1.Property("id") .ValueGeneratedOnAdd() @@ -7725,7 +7725,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("CustomizeWorkshopGroupSettings"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.BaseYearsPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -7748,13 +7748,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.BonusesPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -7777,13 +7777,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BreakTime", "BreakTime", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.BreakTime#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BreakTime", "BreakTime", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -7801,13 +7801,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); }); - b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + b.OwnsMany("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.CustomizeRotatingShifts#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -7826,13 +7826,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid", "Id"); - b1.ToTable("CustomizeWorkshopGroupSettings_CustomizeRotatingShifts"); + b1.ToTable("CustomizeWorkshopGroupSettings_CustomizeRotatingShifts", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.EarlyExit#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -7849,12 +7849,12 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); - b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + b1.OwnsMany("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.EarlyExit#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit.EarlyExitTimeFines#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => { b2.Property("CustomizeWorkshopGroupSettingsId") .HasColumnType("bigint"); @@ -7876,7 +7876,7 @@ namespace CompanyManagment.EFCore.Migrations b2.HasKey("CustomizeWorkshopGroupSettingsId", "Id"); - b2.ToTable("CustomizeWorkshopGroupSettings_EarlyExitTimeFines"); + b2.ToTable("CustomizeWorkshopGroupSettings_EarlyExitTimeFines", (string)null); b2.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsId"); @@ -7885,7 +7885,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("EarlyExitTimeFines"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.FamilyAllowance#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -7902,13 +7902,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.FineAbsenceDeduction#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -7925,12 +7925,12 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); - b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + b1.OwnsMany("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.FineAbsenceDeduction#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction.FineAbsenceDayOfWeekCollection#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => { b2.Property("CustomizeWorkshopGroupSettingsId") .HasColumnType("bigint"); @@ -7949,7 +7949,7 @@ namespace CompanyManagment.EFCore.Migrations b2.HasKey("CustomizeWorkshopGroupSettingsId", "Id"); - b2.ToTable("CustomizeWorkshopGroupSettings_FineAbsenceDayOfWeekCollection"); + b2.ToTable("CustomizeWorkshopGroupSettings_FineAbsenceDayOfWeekCollection", (string)null); b2.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsId"); @@ -7958,7 +7958,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("FineAbsenceDayOfWeekCollection"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.FridayPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -7974,13 +7974,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.InsuranceDeduction#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -7997,13 +7997,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.IrregularShift#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -8021,13 +8021,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.LateToWork#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -8044,12 +8044,12 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); - b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + b1.OwnsMany("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.LateToWork#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork.LateToWorkTimeFines#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => { b2.Property("CustomizeWorkshopGroupSettingsId") .HasColumnType("bigint"); @@ -8071,7 +8071,7 @@ namespace CompanyManagment.EFCore.Migrations b2.HasKey("CustomizeWorkshopGroupSettingsId", "Id"); - b2.ToTable("CustomizeWorkshopGroupSettings_LateToWorkTimeFines"); + b2.ToTable("CustomizeWorkshopGroupSettings_LateToWorkTimeFines", (string)null); b2.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsId"); @@ -8080,7 +8080,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("LateToWorkTimeFines"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.LeavePay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -8097,13 +8097,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.MarriedAllowance#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -8120,13 +8120,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.NightWorkPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -8143,13 +8143,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.OverTimePay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -8166,13 +8166,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings.ShiftPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => { b1.Property("CustomizeWorkshopGroupSettingsid") .HasColumnType("bigint"); @@ -8195,7 +8195,7 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopGroupSettingsid"); - b1.ToTable("CustomizeWorkshopGroupSettings"); + b1.ToTable("CustomizeWorkshopGroupSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopGroupSettingsid"); @@ -8246,7 +8246,7 @@ namespace CompanyManagment.EFCore.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.OwnsMany("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettingsShift", "CustomizeWorkshopSettingsShifts", b1 => + b.OwnsMany("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.CustomizeWorkshopSettingsShifts#Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettingsShift", "CustomizeWorkshopSettingsShifts", b1 => { b1.Property("id") .ValueGeneratedOnAdd() @@ -8283,7 +8283,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("CustomizeWorkshopSettings"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.BaseYearsPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8306,13 +8306,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.BonusesPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8335,13 +8335,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.EarlyExit#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8358,12 +8358,12 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); - b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + b1.OwnsMany("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.EarlyExit#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit.EarlyExitTimeFines#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => { b2.Property("CustomizeWorkshopSettingsId") .HasColumnType("bigint"); @@ -8385,7 +8385,7 @@ namespace CompanyManagment.EFCore.Migrations b2.HasKey("CustomizeWorkshopSettingsId", "Id"); - b2.ToTable("CustomizeWorkshopSettings_EarlyExitTimeFines"); + b2.ToTable("CustomizeWorkshopSettings_EarlyExitTimeFines", (string)null); b2.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsId"); @@ -8394,7 +8394,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("EarlyExitTimeFines"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.FamilyAllowance#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8411,13 +8411,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.FineAbsenceDeduction#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8434,12 +8434,12 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); - b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + b1.OwnsMany("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.FineAbsenceDeduction#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction.FineAbsenceDayOfWeekCollection#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => { b2.Property("CustomizeWorkshopSettingsId") .HasColumnType("bigint"); @@ -8458,7 +8458,7 @@ namespace CompanyManagment.EFCore.Migrations b2.HasKey("CustomizeWorkshopSettingsId", "Id"); - b2.ToTable("CustomizeWorkshopSettings_FineAbsenceDayOfWeekCollection"); + b2.ToTable("CustomizeWorkshopSettings_FineAbsenceDayOfWeekCollection", (string)null); b2.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsId"); @@ -8467,7 +8467,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("FineAbsenceDayOfWeekCollection"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.FridayPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8483,13 +8483,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.InsuranceDeduction#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8506,13 +8506,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.LateToWork#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8529,12 +8529,12 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); - b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + b1.OwnsMany("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.LateToWork#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork.LateToWorkTimeFines#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => { b2.Property("CustomizeWorkshopSettingsId") .HasColumnType("bigint"); @@ -8556,7 +8556,7 @@ namespace CompanyManagment.EFCore.Migrations b2.HasKey("CustomizeWorkshopSettingsId", "Id"); - b2.ToTable("CustomizeWorkshopSettings_LateToWorkTimeFines"); + b2.ToTable("CustomizeWorkshopSettings_LateToWorkTimeFines", (string)null); b2.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsId"); @@ -8565,7 +8565,7 @@ namespace CompanyManagment.EFCore.Migrations b1.Navigation("LateToWorkTimeFines"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.LeavePay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8582,13 +8582,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.MarriedAllowance#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8605,13 +8605,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.NightWorkPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8628,13 +8628,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.OverTimePay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8651,13 +8651,13 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); }); - b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + b.OwnsOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings.ShiftPay#_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => { b1.Property("CustomizeWorkshopSettingsid") .HasColumnType("bigint"); @@ -8680,7 +8680,7 @@ namespace CompanyManagment.EFCore.Migrations b1.HasKey("CustomizeWorkshopSettingsid"); - b1.ToTable("CustomizeWorkshopSettings"); + b1.ToTable("CustomizeWorkshopSettings", (string)null); b1.WithOwner() .HasForeignKey("CustomizeWorkshopSettingsid"); @@ -8789,7 +8789,7 @@ namespace CompanyManagment.EFCore.Migrations .WithMany("SelectedEmployeeDocumentItems") .HasForeignKey("EmployeeDocumentsAdminViewId"); - b.OwnsMany("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItemLog", "ItemLogs", b1 => + b.OwnsMany("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItem.ItemLogs#Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItemLog", "ItemLogs", b1 => { b1.Property("id") .ValueGeneratedOnAdd() @@ -9177,7 +9177,7 @@ namespace CompanyManagment.EFCore.Migrations modelBuilder.Entity("Company.Domain.LoanAgg.Entities.Loan", b => { - b.OwnsMany("Company.Domain.LoanAgg.Entities.LoanInstallment", "LoanInstallments", b1 => + b.OwnsMany("Company.Domain.LoanAgg.Entities.Loan.LoanInstallments#Company.Domain.LoanAgg.Entities.LoanInstallment", "LoanInstallments", b1 => { b1.Property("Id") .ValueGeneratedOnAdd() @@ -9211,7 +9211,7 @@ namespace CompanyManagment.EFCore.Migrations b1.HasIndex("LoanId"); - b1.ToTable("LoanInstallment"); + b1.ToTable("LoanInstallment", (string)null); b1.WithOwner() .HasForeignKey("LoanId"); diff --git a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs index 67f63b7f..34f465b4 100644 --- a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs @@ -1927,6 +1927,15 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos { bool hasSearch = false; bool hasEmployeeOrWorkshpSearch = false; + + //bool noHasSearch = searchModel.WorkshopId == 0 && searchModel.EmployerId == 0 + // && searchModel.EmployeeId == 0 + // && string.IsNullOrWhiteSpace(searchModel.EmployeeName) + // && string.IsNullOrWhiteSpace(searchModel.Year) + // && string.IsNullOrWhiteSpace(searchModel.Month) + // && string.IsNullOrWhiteSpace(searchModel.ContractStart) + // && string.IsNullOrWhiteSpace(searchModel.ContractEnd) + // && string.IsNullOrWhiteSpace(searchModel.ContractNo); var acountID = _authHelper.CurrentAccountId(); var workshopAcounts = _context.WorkshopAccounts.Where(x => x.AccountId == acountID) .Select(x => x.WorkshopId); @@ -1961,12 +1970,11 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos secondResult.workshop, secondResult.option, secondResult.ch, - contractingParty + contractingParty, + }); - - #region SercheModel if (!string.IsNullOrWhiteSpace(searchModel.ContractNo) && searchModel.ContractId != 0) @@ -1987,8 +1995,13 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos hasEmployeeOrWorkshpSearch = true; checkouts = checkouts.Where(x => x.contractingParty.Employers.Select(c => c.id).Contains(searchModel.EmployerId)); } + if (!string.IsNullOrWhiteSpace(searchModel.ContractNo)) + { + hasEmployeeOrWorkshpSearch = true; checkouts = checkouts.Where(x => x.ch.ContractNo == searchModel.ContractNo); + } + //if (searchModel.IsActiveString == null) @@ -2021,7 +2034,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos checkouts = checkouts.Where(x => x.ch.ContractStart >= startyearGr && x.ch.ContractEnd <= endYearGr); if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) - checkouts = checkouts.OrderByDescending(x => x.ch.ContractEnd).ThenBy(x => x.ch.PersonnelCode); + checkouts = checkouts.OrderByDescending(x => x.ch.ContractEnd); } else if (!string.IsNullOrWhiteSpace(searchModel.Year) && !string.IsNullOrWhiteSpace(searchModel.Month) && @@ -2140,8 +2153,8 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos x.ch.ContractStart <= startDate && x.ch.ContractEnd >= endDate || startDate <= x.ch.ContractStart && endDate > x.ch.ContractStart || endDate >= x.ch.ContractEnd && startDate < x.ch.ContractEnd); - if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) - checkouts = checkouts.OrderBy(x => x.ch.PersonnelCode); + //if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) + // checkouts = checkouts.OrderBy(x => x.ch.PersonnelCodeInt); } else if (!string.IsNullOrWhiteSpace(searchModel.ContractStart) && @@ -2155,8 +2168,8 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos checkouts = checkouts.Where(x => x.ch.ContractStart >= start && x.ch.ContractStart <= endd); - if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) - checkouts = checkouts.OrderByDescending(x => x.ch.ContractEnd).ThenBy(x => x.ch.PersonnelCode); + //if (searchModel.WorkshopId > 0 || searchModel.EmployeeId > 0 || searchModel.EmployerId > 0) + // checkouts = checkouts.OrderByDescending(x => x.ch.ContractEnd).ThenBy(x => x.ch.PersonnelCodeInt); } if (!string.IsNullOrEmpty(searchModel.EmployeeName)) @@ -2166,6 +2179,9 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos (!string.IsNullOrEmpty(x.LName) && x.LName.StartsWith(searchModel.EmployeeName))).Select(x => x.id).ToList(); checkouts = checkouts.Where(x => employeeList.Contains(x.ch.EmployeeId)); } + + + #endregion @@ -2204,10 +2220,10 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos }).OrderByDescending(x => x.Id) .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).Take(50).ToList(); } - else if (hasSearch) + else if (hasSearch && !hasEmployeeOrWorkshpSearch) { - - return checkouts.Select(x => new CheckoutViewModel() + + var result = checkouts.Select(x => new CheckoutViewModel() { Id = x.ch.id, @@ -2236,9 +2252,41 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout }).OrderByDescending(x => x.Id) - .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).Distinct().ToList(); + .GroupBy(x => x.Id) + .Select(x => x.First()); + + + + if ((string.IsNullOrWhiteSpace(searchModel.ContractStart) || + string.IsNullOrWhiteSpace(searchModel.ContractEnd)) && string.IsNullOrWhiteSpace(searchModel.Month)) + { + //اگر فقط سال رو سرچ کرد + return result.Take(300) + .ToList() + .OrderByDescending(x => x.ContractStartGr).ToList(); + } + else if ((string.IsNullOrWhiteSpace(searchModel.ContractStart) || + string.IsNullOrWhiteSpace(searchModel.ContractEnd)) && !string.IsNullOrWhiteSpace(searchModel.Month) && !string.IsNullOrWhiteSpace(searchModel.Year)) + { + //اگر فقط سال و ماه رو سرچ کرد + return result.Take(300) + .ToList() + .OrderByDescending(x => x.ContractStartGr).ToList(); + } + else if (!string.IsNullOrWhiteSpace(searchModel.ContractStart) && + !string.IsNullOrWhiteSpace(searchModel.ContractEnd)) + { + //اگر فقط سال و ماه رو سرچ کرد + return result.Take(300) + .ToList() + .OrderByDescending(x => x.ContractStartGr).ToList(); + } + + return result.ToList().OrderByDescending(x => x.Id) + .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).ToList(); + } - else + else if (hasEmployeeOrWorkshpSearch && !hasSearch) { return checkouts.Select(x => new CheckoutViewModel() @@ -2269,7 +2317,43 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos IsBlockCantracingParty = x.contractingParty.IsBlock, HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout - }).OrderByDescending(x => x.ContractStartGr).Distinct().ToList(); + }).GroupBy(x => x.Id).Select(x => x.First()).ToList() + .OrderByDescending(x => x.ContractStartGr).ToList(); + } + else + { + return checkouts.Select(x => new CheckoutViewModel() + { + + Id = x.ch.id, + EmployeeFullName = x.ch.EmployeeFullName, + ContractStart = x.ch.ContractStart.ToFarsi(), + ContractEnd = x.ch.ContractEnd.ToFarsi(), + ContractStartGr = x.ch.ContractStart, + ContractEndGr = x.ch.ContractEnd, + PersonnelCode = x.ch.PersonnelCode, + PersonnelCodeInt = Convert.ToInt32(x.ch.PersonnelCode), + ArchiveCode = x.workshop.ArchiveCode, + SumOfWorkingDays = x.ch.SumOfWorkingDays, + WorkshopName = x.workshop.WorkshopName, + Month = x.ch.Month, + Year = x.ch.Year, + ContractNo = x.ch.ContractNo, + ContractId = x.ch.ContractId, + WorkshopId = x.ch.WorkshopId, + EmployeeId = x.ch.EmployeeId, + EmployerId = x.workshopEmployer.EmployerId, + IsActiveString = x.ch.IsActiveString, + Signature = x.ch.Signature, + CreationDate = x.ch.CreationDate, + EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}", + IsBlockCantracingParty = x.contractingParty.IsBlock, + HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout + + }).GroupBy(x => x.Id) + .Select(x => x.First()).ToList() + .OrderByDescending(x => x.Id) + .ThenByDescending(x => x.Year).ThenBy(x => x.PersonnelCodeInt).ToList(); } } diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/MainSearch.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/MainSearch.cshtml index a8c8e8f5..70810eaf 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/MainSearch.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/MainSearch.cshtml @@ -192,7 +192,7 @@ { - + } From 83a17a7e8605d545a39d99f93ec6beb78a4ce786 Mon Sep 17 00:00:00 2001 From: SamSys Date: Wed, 25 Jun 2025 03:50:39 +0330 Subject: [PATCH 08/25] Contract Sign opreation completed - new option to check workflow to create checkout --- .../Checkout/CreateCheckoutListViewModel.cs | 1 + .../Contract/ContractViweModel.cs | 4 + .../ContractApplication.cs | 7 +- .../Company/Checkouts/CreateLoadList.cshtml | 21 +- .../Pages/Company/Checkouts/Index.cshtml.cs | 14427 ++++++++-------- .../Pages/Company/Contracts/Index.cshtml | 37 +- 6 files changed, 7293 insertions(+), 7204 deletions(-) diff --git a/CompanyManagment.App.Contracts/Checkout/CreateCheckoutListViewModel.cs b/CompanyManagment.App.Contracts/Checkout/CreateCheckoutListViewModel.cs index 7d7dbcfb..1414d918 100644 --- a/CompanyManagment.App.Contracts/Checkout/CreateCheckoutListViewModel.cs +++ b/CompanyManagment.App.Contracts/Checkout/CreateCheckoutListViewModel.cs @@ -44,5 +44,6 @@ public class CreateCheckoutListViewModel /// public bool EmployeeHasCreateCheckout { get; set; } + public bool HasWorkFlow { get; set; } public List CreateCheckoutList { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Contract/ContractViweModel.cs b/CompanyManagment.App.Contracts/Contract/ContractViweModel.cs index f9d453b4..4e575494 100644 --- a/CompanyManagment.App.Contracts/Contract/ContractViweModel.cs +++ b/CompanyManagment.App.Contracts/Contract/ContractViweModel.cs @@ -63,6 +63,10 @@ public class ContractViweModel public string EmployeeLName { get; set; } public string IsBlockCantracingParty { get; set; } + /// + /// آیا مجاز به امضاء قرادا می باشد + /// + public bool HasSignContract { get; set; } public IQueryable WorkshopEmployerList { get; set; } public List Employers { get; set; } public List Workshops { get; set; } diff --git a/CompanyManagment.Application/ContractApplication.cs b/CompanyManagment.Application/ContractApplication.cs index 8bcc1c80..4d670a54 100644 --- a/CompanyManagment.Application/ContractApplication.cs +++ b/CompanyManagment.Application/ContractApplication.cs @@ -12,6 +12,7 @@ using Company.Domain.YearlySalaryAgg; using Company.Domain.YearlySalaryItemsAgg; using CompanyManagment.App.Contracts.Contract; using CompanyManagment.App.Contracts.Employee; +using CompanyManagment.App.Contracts.EmployeeComputeOptions; using CompanyManagment.App.Contracts.Employer; using CompanyManagment.App.Contracts.LeftWork; using CompanyManagment.App.Contracts.PersonalContractingParty; @@ -39,6 +40,7 @@ public class ContractApplication : IContractApplication private readonly IPersonnelCodeRepository _personnelCodeRepository; private readonly IWorkingHoursTempApplication _workingHoursTempApplication; private readonly IPersonalContractingPartyApp _contractingPartyApp; + private readonly IEmployeeComputeOptionsApplication _employeeComputeOptionsApplication; public List EmpList; @@ -54,7 +56,7 @@ public class ContractApplication : IContractApplication IYearlySalaryRepository yearlySalaryRepository, IYearlySalaryItemRepository yearlySalaryItemRepository , IEmployeeApplication employeeApplication, IEmployerApplication employerApplication, IWorkshopApplication workshopApplication, IEmployerRepository employerRepository, - IWorkingHoursApplication workingHoursApplication, IWorkingHoursItemsApplication workingHoursItemsApplication, ILeftWorkRepository leftWorkRepository, IPersonnelCodeRepository personnelCodeRepository, IWorkingHoursTempApplication workingHoursTempApplication, IPersonalContractingPartyApp contractingPartyApp) + IWorkingHoursApplication workingHoursApplication, IWorkingHoursItemsApplication workingHoursItemsApplication, ILeftWorkRepository leftWorkRepository, IPersonnelCodeRepository personnelCodeRepository, IWorkingHoursTempApplication workingHoursTempApplication, IPersonalContractingPartyApp contractingPartyApp, IEmployeeComputeOptionsApplication employeeComputeOptionsApplication) { _contractRepository = contractRepository; _holidayItemRepository = holidayItemRepository; @@ -70,6 +72,7 @@ public class ContractApplication : IContractApplication _personnelCodeRepository = personnelCodeRepository; _workingHoursTempApplication = workingHoursTempApplication; _contractingPartyApp = contractingPartyApp; + _employeeComputeOptionsApplication = employeeComputeOptionsApplication; //_leftWorkApplication = leftWorkApplication; } @@ -3155,7 +3158,7 @@ public class ContractApplication : IContractApplication EmployeeFName = x.EmployeeFName, EmployeeLName = x.EmployeeLName, IsBlockCantracingParty = _contractingPartyApp.IsBlockByEmployerId(x.EmployerId), - + HasSignContract = _employeeComputeOptionsApplication.GetEmployeeOptions(x.WorkshopIds,x.EmployeeId).SignContract }).ToList(); diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CreateLoadList.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CreateLoadList.cshtml index 39ea0494..e49343e6 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CreateLoadList.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/CreateLoadList.cshtml @@ -1,4 +1,5 @@ -@model CompanyManagment.App.Contracts.Checkout.CreateCheckoutListViewModel +@using Microsoft.CodeAnalysis.CSharp.Syntax +@model CompanyManagment.App.Contracts.Checkout.CreateCheckoutListViewModel @{ var i = 1; var b = 0; @@ -14,7 +15,7 @@ -@if (Model.CreateCheckoutList.Count > 0) +@if (Model.CreateCheckoutList.Count > 0 && !Model.HasWorkFlow) { @foreach (var item in Model.CreateCheckoutList) { @@ -151,6 +152,22 @@ } } +else +{ + if (@Model.HasWorkFlow) + { +
+
+
+
+

این کارگاه به دلیل داشتن کارپوشه مجاز به ایجاد تصفیه حساب نمی باشد

+
+
+
+
+ + } +} \ No newline at end of file diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalCreateGroup.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalCreateGroup.cshtml index c34c2aaa..91d73f8b 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalCreateGroup.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalCreateGroup.cshtml @@ -221,45 +221,114 @@
- -
-
-
وضعیت فعالیت مجموعه در روز های جمعه و تعطیلات رسمی
-
+
+
+ روزهای تعطیل هفته +
-
-
- @*
وضعیت فعالیت مجموعه در روز های جمعه
*@ - @*
- - -
-
- - -
*@ -
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ وضعیت فعالیت مجموعه در روزهای جمعه و تعطیلات رسمی +
+
+
+ وضعیت پرسنل در روز های تعطیل رسمی : + +
+ +
- -
-
- @*
وضعیت فعالیت مجموعه در روز های تعطیلات رسمی
*@ -
- - -
-
- - -
-
+
+ +
+
+
+
+
+ +
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditEmployeeFromGroup.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditEmployeeFromGroup.cshtml index 684c25a3..0daac264 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditEmployeeFromGroup.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditEmployeeFromGroup.cshtml @@ -379,46 +379,118 @@
- -
-
-
وضعیت فعالیت مجموعه در روز های جمعه و تعطیلات رسمی
-
-
-
- @*
وضعیت فعالیت مجموعه در روز های جمعه
*@ - @*
- - -
-
- - -
*@ +
+
+ روزهای تعطیل هفته +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ وضعیت فعالیت مجموعه در روزهای جمعه و تعطیلات رسمی +
+
+
+ وضعیت پرسنل در روز های تعطیل رسمی : + +
+ + +
+ +
+ +
- - -
-
- @*
وضعیت فعالیت مجموعه در روز های تعطیلات رسمی
*@ -
- - -
-
- - -
-
+
+
-
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditGroup.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditGroup.cshtml index 642b43fc..227dc226 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditGroup.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/ModalEditGroup.cshtml @@ -391,46 +391,119 @@
- -
-
-
وضعیت فعالیت مجموعه در روز های جمعه و تعطیلات رسمی
-
- -
-
- @*
وضعیت فعالیت مجموعه در روز های جمعه
*@ - @*
- - -
-
- - -
*@ -
- -
- - -
-
- @*
وضعیت فعالیت مجموعه در روز های تعطیلات رسمی
*@ -
- - -
-
- - -
-
-
- -
-
+
+
+ روزهای تعطیل هفته
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ وضعیت فعالیت مجموعه در روزهای جمعه و تعطیلات رسمی +
+
+
+ وضعیت پرسنل در روز های تعطیل رسمی : + +
+ + +
+ +
+ + +
+ +
+
+
+ +
+ +
+ + +
@@ -488,4 +561,4 @@ var ajaxReCalculateValuesUrl = `@Url.Page("./Grouping", "ReCalculateValues")`; - \ No newline at end of file + \ No newline at end of file diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/_Partials/ModalCreateSettingWorkshop.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/_Partials/ModalCreateSettingWorkshop.cshtml index de2d4228..6322a8a8 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/_Partials/ModalCreateSettingWorkshop.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/WorkshopSetting/_Partials/ModalCreateSettingWorkshop.cshtml @@ -88,45 +88,109 @@