Files
Backend-Api/CompanyManagment.EFCore/Mapping/CustomizeWorkshopEmployeeSettingsMapping.cs
2025-06-02 19:42:20 +03:30

241 lines
12 KiB
C#

using System;
using System.Security.Cryptography.X509Certificates;
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace CompanyManagment.EFCore.Mapping;
public class CustomizeWorkshopEmployeeSettingsMapping : IEntityTypeConfiguration<CustomizeWorkshopEmployeeSettings>
{
public void Configure(EntityTypeBuilder<CustomizeWorkshopEmployeeSettings> builder)
{
builder.ToTable("CustomizeWorkshopEmployeeSettings");
builder.HasKey(x => x.id);
builder.HasOne(x => x.CustomizeWorkshopGroupSettings).WithMany(x => x.CustomizeWorkshopEmployeeSettingsCollection)
.HasForeignKey(x => x.CustomizeWorkshopGroupSettingId);
builder.Property(x => x.FridayWork).HasConversion(
v => v.ToString("d"),
v => (FridayWork)Enum.Parse(typeof(FridayWork), v)).HasMaxLength(1);
builder.Property(x => x.WorkshopShiftStatus).HasConversion(
v => v.ToString("d"),
v => (WorkshopShiftStatus)Enum.Parse(typeof(WorkshopShiftStatus), v)).HasMaxLength(1);
builder.Property(x => x.HolidayWork).HasConversion(
v => v.ToString("d"),
v => (HolidayWork)Enum.Parse(typeof(HolidayWork), v)).HasMaxLength(1);
builder.OwnsOne(x => x.IrregularShift, irregularShift =>
{
irregularShift.Property(x => x.WorkshopIrregularShifts).HasConversion(
v => v.ToString("d"),
v => (WorkshopIrregularShifts)Enum.Parse(typeof(WorkshopIrregularShifts), v)).HasMaxLength(1);
irregularShift.Property(x => x.StartTime).IsRequired();
irregularShift.Property(x=>x.EndTime).IsRequired();
});
builder.OwnsOne(x => x.BaseYearsPay, baseYearsPay =>
{
baseYearsPay.Property(a => a.BaseYearsPayType).HasConversion(
v => v.ToString("d"),
v => (BaseYearsPayType)Enum.Parse(typeof(BaseYearsPayType), v)).HasMaxLength(1).HasColumnName("BaseYearsPay_BaseYearsPayType");
baseYearsPay.Property(a => a.PaymentType).HasConversion(
v => v.ToString("d"),
v => (BaseYearsPaymentType)Enum.Parse(typeof(BaseYearsPaymentType), v)).HasMaxLength(1).HasColumnName("BaseYearsPay_PaymentType");
baseYearsPay.Property(x => x.Value).HasColumnName("BaseYearsPay_Value");
});
builder.OwnsOne(x => x.BonusesPay, bonusesPay =>
{
bonusesPay.Property(x => x.BonusesPayType).HasConversion(
v => v.ToString("d"),
v => (BonusesType)Enum.Parse(typeof(BonusesType), v)).HasMaxLength(1).HasColumnName("BonusesPay_BonusesPayType");
bonusesPay.Property(x=>x.PaymentType).HasConversion(
v => v.ToString("d"),
v => (BonusesPaymentType)Enum.Parse(typeof(BonusesPaymentType), v)).HasMaxLength(1).HasColumnName("BonusesPay_PaymentType");
bonusesPay.Property(x => x.Value).HasColumnName("BonusesPay_Value");
});
builder.OwnsOne(x => x.EarlyExit, earlyExit =>
{
earlyExit.Property(x => x.EarlyExitType).HasConversion(
v => v.ToString("d"),
v => (EarlyExitType)Enum.Parse(typeof(EarlyExitType), v)).HasMaxLength(1).HasColumnName("EarlyExit_EarlyExitType");
//earlyExit.Property(x => x.EarlyExitTimeFineType).HasConversion(
// v => v.HasValue ? v.Value.ToString("d") : null,
// v => v != null
// ? (EarlyExitTimeFineType)Enum.Parse(typeof(EarlyExitTimeFineType), v)
// : null).HasColumnName("EarlyExit_EarlyExitTimeFineType").HasMaxLength(1);
earlyExit.OwnsMany(x => x.EarlyExitTimeFines, earlyExitTimeFines =>
{
earlyExitTimeFines.WithOwner().HasForeignKey("CustomizeWorkshopEmployeeSettingsId");
earlyExitTimeFines.Property(x => x.FineMoney).HasColumnName("EarlyExitTimeFines_FineMoney");
earlyExitTimeFines.Property(x => x.Minute).HasColumnName("EarlyExitTimeFines_Minute").HasMaxLength(4);
});
earlyExit.Property(x => x.Value).HasColumnName("EarlyExitTimeFines_Value");
});
builder.OwnsOne(x => x.FamilyAllowance, familyAllowance =>
{
familyAllowance.Property(x => x.Value).HasColumnName("FamilyAllowance_Value");
//familyAllowance.Property(x => x.NumberOfChildren).HasConversion(
// v => v.ToString("d"),
// v => (NumberOfChildren)Enum.Parse(typeof(NumberOfChildren), v)).HasMaxLength(1).HasColumnName("FamilyAllowance_NumberOfChildren");
familyAllowance.Property(x => x.FamilyAllowanceType).HasConversion(
v => v.ToString("d"),
v => (FamilyAllowanceType)Enum.Parse(typeof(FamilyAllowanceType), v)).HasMaxLength(1).HasColumnName("FamilyAllowance_FamilyAllowanceType");
});
builder.OwnsOne(x => x.FineAbsenceDeduction, fineAbsenceDeduction =>
{
fineAbsenceDeduction.Property(x => x.Value).HasColumnName("FineAbsenceDeduction_Value");
fineAbsenceDeduction.Property(x => x.FineAbsenceDeductionType).HasConversion(
v => v.ToString("d"),
v => (FineAbsenceDeductionType)Enum.Parse(typeof(FineAbsenceDeductionType), v)).HasMaxLength(1).HasColumnName("FineAbsenceDeduction_FineAbsenceDeductionType");
fineAbsenceDeduction.OwnsMany(x => x.FineAbsenceDayOfWeekCollection, fineAbsenceDayOfWeek =>
{
fineAbsenceDayOfWeek.WithOwner().HasForeignKey("CustomizeWorkshopEmployeeSettingsId");
fineAbsenceDayOfWeek.Property(x => x.DayOfWeek).HasConversion(
v => v.ToString("d"),
v => (DayOfWeek)Enum.Parse(typeof(DayOfWeek), v)).HasMaxLength(1)
.HasColumnName("FineAbsenceDayOfWeekCollection_DayOfWeek");
});
});
builder.OwnsOne(x => x.FridayPay, fridayPay =>
{
fridayPay.Property(x => x.Value).HasColumnName("FridayPay_Value");
fridayPay.Property(x => x.FridayPayType).HasConversion(
v => v.ToString("d"),
v => (FridayPayType)Enum.Parse(typeof(FridayPayType), v)).HasMaxLength(1);
});
builder.OwnsOne(x => x.InsuranceDeduction, insuranceDeduction =>
{
insuranceDeduction.Property(x => x.Value).HasColumnName("InsuranceDeduction_Value");
insuranceDeduction.Property(x => x.InsuranceDeductionType).HasConversion(
v => v.ToString("d"),
v => (InsuranceDeductionType)Enum.Parse(typeof(InsuranceDeductionType), v)).HasMaxLength(1)
.HasColumnName("InsuranceDeduction_InsuranceDeductionType");
});
builder.OwnsOne(x => x.LateToWork, lateToWork =>
{
lateToWork.Property(x => x.Value).HasColumnName("LateToWork_Value");
lateToWork.Property(x => x.LateToWorkType).HasConversion(
v => v.ToString("d"),
v => (LateToWorkType)Enum.Parse(typeof(LateToWorkType), v)).HasMaxLength(1)
.HasColumnName("LateToWork_LateToWorkType");
//lateToWork.Property(x => x.LateToWorkTimeFineType).HasConversion(
// v => v.HasValue ? v.Value.ToString("d") : null,
// v => v != null
// ? (LateToWorkTimeFineType)Enum.Parse(typeof(LateToWorkTimeFineType), v)
// : null).HasColumnName("LateToWork_LateToWorkTimeFineType").HasMaxLength(1);
lateToWork.OwnsMany(x => x.LateToWorkTimeFines, lateToWorkTimeFines =>
{
lateToWorkTimeFines.WithOwner().HasForeignKey("CustomizeWorkshopEmployeeSettingsId");
lateToWorkTimeFines.Property(x => x.FineMoney).HasColumnName("LateToWorkTimeFines_FineMoney");
lateToWorkTimeFines.Property(x => x.Minute).HasMaxLength(4).HasColumnName("LateToWorkTimeFines_Minute");
});
});
builder.OwnsOne(x => x.LeavePay, leavePay =>
{
leavePay.Property(x => x.Value).HasColumnName("LeavePay_Value");
//leavePay.Property(x => x.DayCountAllowable).HasMaxLength(3).HasColumnName("LeavePay_DayCountAllowable");
leavePay.Property(x => x.LeavePayType).HasConversion(
v => v.ToString("d"),
v => (LeavePayType)Enum.Parse(typeof(LeavePayType), v)).HasMaxLength(1)
.HasColumnName("LeavePay_LeavePayType");
});
builder.OwnsOne(x => x.MarriedAllowance, marriedAllowance =>
{
marriedAllowance.Property(x => x.Value).HasColumnName("MarriedAllowance_Value");
marriedAllowance.Property(x => x.MarriedAllowanceType).HasConversion(
v => v.ToString("d"),
v => (MarriedAllowanceType)Enum.Parse(typeof(MarriedAllowanceType), v)).HasMaxLength(1)
.HasColumnName("MarriedAllowance_MarriedAllowanceType");
});
builder.OwnsOne(x => x.NightWorkPay, nightWorkPay =>
{
nightWorkPay.Property(x => x.NightWorkingType).HasConversion(
v => v.ToString("d"),
v => (NightWorkType)Enum.Parse(typeof(NightWorkType), v)).HasMaxLength(1)
.HasColumnName("NightWorkPay_NightWorkingType");
nightWorkPay.Property(x => x.Value).HasColumnName("NightWorkPay_Value");
});
builder.OwnsOne(x => x.OverTimePay, overTimePay =>
{
overTimePay.Property(x => x.Value).HasColumnName("OverTimePay_Value");
overTimePay.Property(x => x.OverTimePayType).HasConversion(
v => v.ToString("d"),
v => (OverTimePayType)Enum.Parse(typeof(OverTimePayType), v)).HasMaxLength(1)
.HasColumnName("OverTimePay_OverTimePayType");
});
builder.OwnsOne(x => x.ShiftPay, shiftPay =>
{
shiftPay.Property(x => x.Value).HasColumnName("ShiftPay_Value");
shiftPay.Property(x=>x.ShiftPayType).HasConversion(
v => v.ToString("d"),
v => (ShiftPayType)Enum.Parse(typeof(ShiftPayType), v)).HasMaxLength(1)
.HasColumnName("ShiftPay_ShiftPayType");
shiftPay.Property(x=>x.ShiftType).HasConversion(
v => v.ToString("d"),
v => (ShiftType)Enum.Parse(typeof(ShiftType), v)).HasMaxLength(1)
.HasColumnName("ShiftPay_ShiftType");
});
builder.OwnsOne(x => x.BreakTime, breakTime =>
{
breakTime.Property(x => x.BreakTimeType).HasConversion(v => v.ToString("d")
, v => (BreakTimeType)Enum.Parse(typeof(BreakTimeType), v)).HasMaxLength(1).IsRequired();
breakTime.Property(x => x.BreakTimeValue).IsRequired();
breakTime.Property(x => x.HasBreakTimeValue).IsRequired();
});
builder.OwnsMany(x => x.CustomizeWorkshopEmployeeSettingsShifts, shift =>
{
shift.ToTable("CustomizeWorkshopEmployeeSettingsShifts");
shift.HasKey(x => x.id);
shift.Property(x => x.Placement).HasConversion<string>().HasMaxLength(20);
shift.WithOwner(x => x.CustomizeWorkshopEmployeeSettings).HasForeignKey(a => a.CustomizeWorkshopEmployeeSettingsId);
});
builder.OwnsMany(x => x.WeeklyOffDays, offDay =>
{
offDay.HasKey(x => x.Id);
offDay.Property(x => x.DayOfWeek).HasConversion<string>().HasMaxLength(15);
offDay.WithOwner().HasForeignKey(x => x.ParentId);
});
builder.OwnsMany(x => x.CustomizeRotatingShifts);
}
}