//
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using MilitaryTrainingManagement.Data;
#nullable disable
namespace MilitaryTrainingManagement.Migrations
{
[DbContext(typeof(ApplicationDbContext))]
partial class ApplicationDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.0")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.AllocationDistribution", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("ActualCompletion")
.HasPrecision(18, 2)
.HasColumnType("decimal(18,2)");
b.Property("AllocationId")
.HasColumnType("int");
b.Property("ApprovedAt")
.HasColumnType("datetime2");
b.Property("ApprovedByUserId")
.HasColumnType("int");
b.Property("IsApproved")
.HasColumnType("bit");
b.Property("ReportedAt")
.HasColumnType("datetime2");
b.Property("ReportedByUserId")
.HasColumnType("int");
b.Property("TargetUnitId")
.HasColumnType("int");
b.Property("UnitQuota")
.HasPrecision(18, 2)
.HasColumnType("decimal(18,2)");
b.HasKey("Id");
b.HasIndex("AllocationId");
b.HasIndex("ApprovedByUserId");
b.HasIndex("ReportedByUserId");
b.HasIndex("TargetUnitId");
b.ToTable("AllocationDistributions");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.ApprovalRequest", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("OriginalData")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("Reason")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property("RequestedAt")
.HasColumnType("datetime2");
b.Property("RequestedByUnitId")
.HasColumnType("int");
b.Property("RequestedByUserId")
.HasColumnType("int");
b.Property("RequestedChanges")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("ReviewComments")
.HasColumnType("nvarchar(max)");
b.Property("ReviewedAt")
.HasColumnType("datetime2");
b.Property("ReviewedByUserId")
.HasColumnType("int");
b.Property("Status")
.HasColumnType("int");
b.Property("TargetEntityId")
.HasColumnType("int");
b.Property("Type")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("RequestedByUnitId");
b.HasIndex("RequestedByUserId");
b.HasIndex("ReviewedByUserId");
b.ToTable("ApprovalRequests");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.AuditLog", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("Action")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("ChangedFields")
.HasColumnType("nvarchar(max)");
b.Property("Description")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property("EntityId")
.HasColumnType("int");
b.Property("EntityType")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("ErrorMessage")
.HasMaxLength(2000)
.HasColumnType("nvarchar(2000)");
b.Property("IpAddress")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("IsSuccess")
.HasColumnType("bit");
b.Property("NewValues")
.HasColumnType("nvarchar(max)");
b.Property("OldValues")
.HasColumnType("nvarchar(max)");
b.Property("OrganizationalUnitId")
.HasColumnType("int");
b.Property("RequestPath")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property("Timestamp")
.HasColumnType("datetime2");
b.Property("UserAgent")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("Action");
b.HasIndex("EntityId");
b.HasIndex("EntityType");
b.HasIndex("OrganizationalUnitId");
b.HasIndex("Timestamp");
b.HasIndex("UserId");
b.ToTable("AuditLogs");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.ConsumptionReport", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("AllocationDistributionId")
.HasColumnType("int");
b.Property("CumulativeAmount")
.HasPrecision(18, 2)
.HasColumnType("decimal(18,2)");
b.Property("Remarks")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property("ReportedAmount")
.HasPrecision(18, 2)
.HasColumnType("decimal(18,2)");
b.Property("ReportedAt")
.HasColumnType("datetime2");
b.Property("ReportedByUnitId")
.HasColumnType("int");
b.Property("ReportedByUserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("AllocationDistributionId");
b.HasIndex("ReportedAt");
b.HasIndex("ReportedByUnitId");
b.HasIndex("ReportedByUserId");
b.ToTable("ConsumptionReports");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.ConsumptionReportChangeRequest", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("ConsumptionReportId")
.HasColumnType("int");
b.Property("ProcessComments")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property("ProcessedAt")
.HasColumnType("datetime2");
b.Property("ProcessedByUnitId")
.HasColumnType("int");
b.Property("ProcessedByUserId")
.HasColumnType("int");
b.Property("Reason")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property("RequestType")
.HasColumnType("int");
b.Property("RequestedAt")
.HasColumnType("datetime2");
b.Property("RequestedByUnitId")
.HasColumnType("int");
b.Property("RequestedByUserId")
.HasColumnType("int");
b.Property("Status")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ConsumptionReportId");
b.HasIndex("ProcessedByUnitId");
b.HasIndex("ProcessedByUserId");
b.HasIndex("RequestedByUnitId");
b.HasIndex("RequestedByUserId");
b.HasIndex("Status");
b.ToTable("ConsumptionReportChangeRequests");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.MaterialAllocation", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("Category")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("CreatedByUnitId")
.HasColumnType("int");
b.Property("MaterialName")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property("TotalQuota")
.HasPrecision(18, 2)
.HasColumnType("decimal(18,2)");
b.Property("Unit")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.HasIndex("CreatedByUnitId");
b.ToTable("MaterialAllocations");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.MaterialCategory", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("Description")
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property("IsActive")
.HasColumnType("bit");
b.Property("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("SortOrder")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("Name")
.IsUnique();
b.ToTable("MaterialCategories");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("Level")
.HasColumnType("int");
b.Property("Name")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("ParentId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ParentId");
b.ToTable("OrganizationalUnits");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.Personnel", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("Achievements")
.HasColumnType("nvarchar(max)");
b.Property("Age")
.HasColumnType("int");
b.Property("ApprovedAt")
.HasColumnType("datetime2");
b.Property("ApprovedByUnitId")
.HasColumnType("int");
b.Property("ApprovedLevel")
.HasColumnType("int");
b.Property("BirthDate")
.HasColumnType("nvarchar(max)");
b.Property("ContactInfo")
.HasColumnType("nvarchar(max)");
b.Property("EducationLevel")
.HasColumnType("nvarchar(max)");
b.Property("EnlistmentDate")
.HasColumnType("nvarchar(max)");
b.Property("Ethnicity")
.HasColumnType("nvarchar(max)");
b.Property("Gender")
.IsRequired()
.HasMaxLength(10)
.HasColumnType("nvarchar(10)");
b.Property("Height")
.HasPrecision(5, 2)
.HasColumnType("decimal(5,2)");
b.Property("Hometown")
.HasColumnType("nvarchar(max)");
b.Property("IdNumber")
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("PendingUpgradeByUnitId")
.HasColumnType("int");
b.Property("PhotoPath")
.HasColumnType("nvarchar(max)");
b.Property("PoliticalStatus")
.HasColumnType("nvarchar(max)");
b.Property("Position")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("ProfessionalTitle")
.HasColumnType("nvarchar(max)");
b.Property("Rank")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property("Specialty")
.HasColumnType("nvarchar(max)");
b.Property("Status")
.HasColumnType("int");
b.Property("SubmittedAt")
.HasColumnType("datetime2");
b.Property("SubmittedByUnitId")
.HasColumnType("int");
b.Property("SupportingDocuments")
.HasColumnType("nvarchar(max)");
b.Property("TrainingParticipation")
.HasColumnType("nvarchar(max)");
b.Property("Unit")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("ApprovedByUnitId");
b.HasIndex("PendingUpgradeByUnitId");
b.HasIndex("SubmittedByUnitId");
b.ToTable("Personnel");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.PersonnelApprovalHistory", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("Action")
.HasColumnType("int");
b.Property("Comments")
.HasColumnType("nvarchar(max)");
b.Property("NewLevel")
.HasColumnType("int");
b.Property("NewStatus")
.HasColumnType("int");
b.Property("PersonnelId")
.HasColumnType("int");
b.Property("PreviousLevel")
.HasColumnType("int");
b.Property("PreviousStatus")
.HasColumnType("int");
b.Property("ReviewedAt")
.HasColumnType("datetime2");
b.Property("ReviewedByUnitId")
.HasColumnType("int");
b.Property("ReviewedByUserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("PersonnelId");
b.HasIndex("ReviewedByUnitId");
b.HasIndex("ReviewedByUserId");
b.ToTable("PersonnelApprovalHistories");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.UserAccount", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("DisplayName")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property("IsActive")
.HasColumnType("bit");
b.Property("LastLoginAt")
.HasColumnType("datetime2");
b.Property("OrganizationalUnitId")
.HasColumnType("int");
b.Property("PasswordHash")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("PlainPassword")
.HasColumnType("nvarchar(max)");
b.Property("Username")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.HasIndex("OrganizationalUnitId");
b.HasIndex("Username")
.IsUnique();
b.ToTable("UserAccounts");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.AllocationDistribution", b =>
{
b.HasOne("MilitaryTrainingManagement.Models.Entities.MaterialAllocation", "Allocation")
.WithMany("Distributions")
.HasForeignKey("AllocationId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("MilitaryTrainingManagement.Models.Entities.UserAccount", "ApprovedByUser")
.WithMany()
.HasForeignKey("ApprovedByUserId")
.OnDelete(DeleteBehavior.NoAction);
b.HasOne("MilitaryTrainingManagement.Models.Entities.UserAccount", "ReportedByUser")
.WithMany()
.HasForeignKey("ReportedByUserId")
.OnDelete(DeleteBehavior.NoAction);
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "TargetUnit")
.WithMany()
.HasForeignKey("TargetUnitId")
.OnDelete(DeleteBehavior.NoAction)
.IsRequired();
b.Navigation("Allocation");
b.Navigation("ApprovedByUser");
b.Navigation("ReportedByUser");
b.Navigation("TargetUnit");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.ApprovalRequest", b =>
{
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "RequestedByUnit")
.WithMany()
.HasForeignKey("RequestedByUnitId")
.OnDelete(DeleteBehavior.NoAction)
.IsRequired();
b.HasOne("MilitaryTrainingManagement.Models.Entities.UserAccount", "RequestedByUser")
.WithMany()
.HasForeignKey("RequestedByUserId")
.OnDelete(DeleteBehavior.NoAction)
.IsRequired();
b.HasOne("MilitaryTrainingManagement.Models.Entities.UserAccount", "ReviewedByUser")
.WithMany()
.HasForeignKey("ReviewedByUserId")
.OnDelete(DeleteBehavior.NoAction);
b.Navigation("RequestedByUnit");
b.Navigation("RequestedByUser");
b.Navigation("ReviewedByUser");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.AuditLog", b =>
{
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "OrganizationalUnit")
.WithMany()
.HasForeignKey("OrganizationalUnitId")
.OnDelete(DeleteBehavior.NoAction);
b.HasOne("MilitaryTrainingManagement.Models.Entities.UserAccount", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.NoAction);
b.Navigation("OrganizationalUnit");
b.Navigation("User");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.ConsumptionReport", b =>
{
b.HasOne("MilitaryTrainingManagement.Models.Entities.AllocationDistribution", "AllocationDistribution")
.WithMany()
.HasForeignKey("AllocationDistributionId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "ReportedByUnit")
.WithMany()
.HasForeignKey("ReportedByUnitId")
.OnDelete(DeleteBehavior.NoAction)
.IsRequired();
b.HasOne("MilitaryTrainingManagement.Models.Entities.UserAccount", "ReportedByUser")
.WithMany()
.HasForeignKey("ReportedByUserId")
.OnDelete(DeleteBehavior.NoAction)
.IsRequired();
b.Navigation("AllocationDistribution");
b.Navigation("ReportedByUnit");
b.Navigation("ReportedByUser");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.ConsumptionReportChangeRequest", b =>
{
b.HasOne("MilitaryTrainingManagement.Models.Entities.ConsumptionReport", "ConsumptionReport")
.WithMany()
.HasForeignKey("ConsumptionReportId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "ProcessedByUnit")
.WithMany()
.HasForeignKey("ProcessedByUnitId")
.OnDelete(DeleteBehavior.NoAction);
b.HasOne("MilitaryTrainingManagement.Models.Entities.UserAccount", "ProcessedByUser")
.WithMany()
.HasForeignKey("ProcessedByUserId")
.OnDelete(DeleteBehavior.NoAction);
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "RequestedByUnit")
.WithMany()
.HasForeignKey("RequestedByUnitId")
.OnDelete(DeleteBehavior.NoAction)
.IsRequired();
b.HasOne("MilitaryTrainingManagement.Models.Entities.UserAccount", "RequestedByUser")
.WithMany()
.HasForeignKey("RequestedByUserId")
.OnDelete(DeleteBehavior.NoAction)
.IsRequired();
b.Navigation("ConsumptionReport");
b.Navigation("ProcessedByUnit");
b.Navigation("ProcessedByUser");
b.Navigation("RequestedByUnit");
b.Navigation("RequestedByUser");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.MaterialAllocation", b =>
{
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "CreatedByUnit")
.WithMany()
.HasForeignKey("CreatedByUnitId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("CreatedByUnit");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", b =>
{
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "Parent")
.WithMany("Children")
.HasForeignKey("ParentId")
.OnDelete(DeleteBehavior.Restrict);
b.Navigation("Parent");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.Personnel", b =>
{
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "ApprovedByUnit")
.WithMany()
.HasForeignKey("ApprovedByUnitId")
.OnDelete(DeleteBehavior.NoAction);
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "PendingUpgradeByUnit")
.WithMany()
.HasForeignKey("PendingUpgradeByUnitId");
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "SubmittedByUnit")
.WithMany()
.HasForeignKey("SubmittedByUnitId")
.OnDelete(DeleteBehavior.NoAction)
.IsRequired();
b.Navigation("ApprovedByUnit");
b.Navigation("PendingUpgradeByUnit");
b.Navigation("SubmittedByUnit");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.PersonnelApprovalHistory", b =>
{
b.HasOne("MilitaryTrainingManagement.Models.Entities.Personnel", "Personnel")
.WithMany()
.HasForeignKey("PersonnelId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "ReviewedByUnit")
.WithMany()
.HasForeignKey("ReviewedByUnitId")
.OnDelete(DeleteBehavior.NoAction);
b.HasOne("MilitaryTrainingManagement.Models.Entities.UserAccount", "ReviewedByUser")
.WithMany()
.HasForeignKey("ReviewedByUserId")
.OnDelete(DeleteBehavior.NoAction)
.IsRequired();
b.Navigation("Personnel");
b.Navigation("ReviewedByUnit");
b.Navigation("ReviewedByUser");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.UserAccount", b =>
{
b.HasOne("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", "OrganizationalUnit")
.WithMany("Accounts")
.HasForeignKey("OrganizationalUnitId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("OrganizationalUnit");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.MaterialAllocation", b =>
{
b.Navigation("Distributions");
});
modelBuilder.Entity("MilitaryTrainingManagement.Models.Entities.OrganizationalUnit", b =>
{
b.Navigation("Accounts");
b.Navigation("Children");
});
#pragma warning restore 612, 618
}
}
}