Phase 1: Package-Based Domain Infrastructure
ENTITIES: - Package: +11 fields (SortOrder, IsActive, IsBasePackage, SupportsDaya/Direct, ActivationFee, DiscountMultiplier, MagicWalletMultiplier, MaxBalancesPerLeg, MaxNetworkLevel, MagicWalletMaxDeposit/Credit) + nav props - PackageFeature: NEW junction entity (Package × ClubFeature) for feature DIFF - ClubMembership: +4 fields (FirstActivationDate/PackageId, LastActivation/PackageId) ActivatedAt kept as [Obsolete] for backward compat - ClubMembershipCycle: +PackageId FK (tracks which package per cycle) - WeeklyCommissionPool: +PackageId FK (separate pool per package) - UserCommissionPayout: +PackageId FK (payout per package) - NetworkWeeklyBalance: +PackageId FK (balance per package) - UserWalletChangeLog: +PackageId? FK (optional package tracking) EF CONFIGS: - PackageConfiguration: 11 new field configs + indexes - PackageFeatureConfiguration: NEW (unique PackageId+ClubFeatureId) - ClubMembershipConfiguration: First/Last Package FKs + LastActivationDate index - ClubMembershipCycleConfiguration: Package FK - WeeklyCommissionPoolConfiguration: Package FK + unique(WeekDef,Package) - UserCommissionPayoutConfiguration: Package FK + unique(User,WeekDef,Package) - NetworkWeeklyBalanceConfiguration: Package FK + unique(User,WeekDef,Package) - UserWalletChangeLogConfiguration: Package FK (nullable) DBCONTEXT: - DbSet<PackageFeature> added to ApplicationDbContext + IApplicationDbContext SYSTEMCONSTANTS: - 9 constants marked [Obsolete] → moved to Package entity (ClubMembershipGiftValue, ClubActivationFee, BasePackageAmount, DayaLoanAmount, MagicWalletMultiplier, MagicWalletMaxDeposit, MagicWalletMaxCredit, CommissionMaxWeeklyBalancesPerLeg, CommissionMaxNetworkLevel) Build: 0 errors, 610 warnings (40 new = expected Obsolete CS0618)
This commit is contained in:
+10
-3
@@ -17,6 +17,7 @@ public class WeeklyCommissionPoolConfiguration : IEntityTypeConfiguration<Weekly
|
||||
builder.Property(entity => entity.Id).UseIdentityColumn();
|
||||
|
||||
builder.Property(entity => entity.WeekDefinitionId).IsRequired();
|
||||
builder.Property(entity => entity.PackageId).IsRequired();
|
||||
builder.Property(entity => entity.TotalPoolAmount).IsRequired();
|
||||
builder.Property(entity => entity.TotalBalances).IsRequired();
|
||||
builder.Property(entity => entity.ValuePerBalance).IsRequired();
|
||||
@@ -30,10 +31,16 @@ public class WeeklyCommissionPoolConfiguration : IEntityTypeConfiguration<Weekly
|
||||
.IsRequired()
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
// Index یونیک برای WeekDefinitionId
|
||||
builder.HasIndex(e => e.WeekDefinitionId)
|
||||
// رابطه با Package
|
||||
builder.HasOne(entity => entity.Package)
|
||||
.WithMany()
|
||||
.HasForeignKey(entity => entity.PackageId)
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
// Index یونیک ترکیبی: هر هفته × هر پکیج فقط یک استخر
|
||||
builder.HasIndex(e => new { e.WeekDefinitionId, e.PackageId })
|
||||
.IsUnique()
|
||||
.HasDatabaseName("IX_WeeklyCommissionPool_WeekDefinitionId");
|
||||
.HasDatabaseName("IX_WeeklyCommissionPool_WeekDef_Package");
|
||||
|
||||
// Index برای IsCalculated
|
||||
builder.HasIndex(e => e.IsCalculated)
|
||||
|
||||
Reference in New Issue
Block a user