Files
Backend-Api/CompanyManagment.EFCore/Mapping/EmployeeDocumentItemMapping.cs
2025-02-18 16:16:33 +03:30

41 lines
2.0 KiB
C#

using Company.Domain.EmployeeDocumentItemAgg;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace CompanyManagment.EFCore.Mapping
{
public class EmployeeDocumentItemMapping:IEntityTypeConfiguration<EmployeeDocumentItem>
{
public void Configure(EntityTypeBuilder<EmployeeDocumentItem> builder)
{
builder.ToTable("EmployeeDocumentItems");
builder.HasKey(x => x.id);
builder.Property(x => x.DocumentLabel).HasConversion<string>().HasMaxLength(31);
builder.Property(x => x.EmployeeDocumentId).IsRequired();
builder.Property(x => x.DocumentStatus).HasConversion<string>().HasMaxLength(20);
builder.Property(x => x.UploaderId).IsRequired();
builder.Property(x => x.RejectionReason).HasMaxLength(150);
builder.Property(x => x.ReviewedById).HasMaxLength(120);
builder.Property(x => x.UploaderType).HasConversion<string>().HasMaxLength(20).IsRequired();
builder.Property(x => x.EmployeeDocumentsAdminViewId).IsRequired(false);
builder.HasOne(x => x.EmployeeDocuments).WithMany(x => x.EmployeeDocumentItemCollection)
.HasForeignKey(x => x.EmployeeDocumentId);
builder.HasOne(x => x.EmployeeDocumentsAdminSelection).WithMany(x => x.SelectedEmployeeDocumentItems)
.HasForeignKey(x => x.EmployeeDocumentsAdminViewId).IsRequired(false);
builder.OwnsMany(x => x.ItemLogs, opt =>
{
opt.ToTable("EmployeeDocumentItemLogs");
opt.HasKey(x => x.id);
opt.Property(x => x.AdminMessage).HasMaxLength(500);
opt.Property(x => x.OperationType).HasConversion<string>().HasMaxLength(25);
opt.Property(x => x.OperatorType).HasConversion<string>().HasMaxLength(20);
opt.WithOwner(x => x.EmployeeDocumentItem).HasForeignKey(x => x.EmployeeDocumentItemId);
});
}
}
}