Refactored `FinancialInvoice` to include new properties (`Description`, `PublicId`, `IsActive`) and methods for managing items and statuses. Introduced `FinancialInvoiceItem` for invoice itemization. Updated `PaymentTransaction` to reference `FinancialInvoice`. Enhanced repository and application layers with CRUD operations, advanced search functionality, and integration with contracts. Updated `CompanyContext` with `DbSet<FinancialInvoices>` and `DbSet<FinancialInvoiceItem>`. Created new database tables for `FinancialInvoices` and `FinancialInvoiceItem`, and updated relationships with `PaymentTransactions`. Added DTOs for invoice creation, editing, and searching. Registered `IFinancialInvoiceRepository` for dependency injection.
24 lines
950 B
C#
24 lines
950 B
C#
using Company.Domain.FinancialInvoiceAgg;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
|
|
|
namespace CompanyManagment.EFCore.Mapping;
|
|
|
|
public class FinancialInvoiceMapping:IEntityTypeConfiguration<FinancialInvoice>
|
|
{
|
|
public void Configure(EntityTypeBuilder<FinancialInvoice> builder)
|
|
{
|
|
builder.HasKey(x => x.id);
|
|
|
|
builder.Property(x => x.Status).HasConversion<string>().HasMaxLength(20);
|
|
builder.Property(x => x.PaidAt).IsRequired(false);
|
|
builder.Property(x => x.Description).HasMaxLength(800);
|
|
|
|
builder.HasMany(x => x.Items).WithOne(x => x.FinancialInvoice)
|
|
.HasForeignKey(x => x.FinancialInvoiceId).IsRequired().OnDelete(DeleteBehavior.Cascade);
|
|
builder.HasMany(x => x.PaymentTransactions).WithOne(x => x.FinancialInvoice)
|
|
.HasForeignKey(x => x.FinancialInvoiceId).IsRequired(false).OnDelete(DeleteBehavior.NoAction);
|
|
|
|
|
|
}
|
|
} |