using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Migrations.Operations; using Microsoft.EntityFrameworkCore.Migrations.Operations.Builders; using Oqtane.Databases.Interfaces; using Oqtane.Migrations; using Oqtane.Migrations.EntityBuilders; using SZUAbsolventenverein.Module.PremiumArea.Models; namespace SZUAbsolventenverein.Module.PremiumArea.Migrations.EntityBuilders { public class EngineerApplicationEntityBuilder : AuditableBaseEntityBuilder { private const string _entityTableName = "SZUAbsolventenvereinEngineerApplications"; private readonly PrimaryKey _primaryKey = new("PK_SZUAbsolventenvereinEngineerApplications", x => x.ApplicationId); private readonly ForeignKey _moduleForeignKey = new("FK_SZUAbsolventenvereinEngineerApplications_Module", x => x.ModuleId, "Module", "ModuleId", ReferentialAction.Cascade); public EngineerApplicationEntityBuilder(MigrationBuilder migrationBuilder, IDatabase database) : base( migrationBuilder, database) { EntityTableName = _entityTableName; PrimaryKey = _primaryKey; ForeignKeys.Add(_moduleForeignKey); } protected override EngineerApplicationEntityBuilder BuildTable(ColumnsBuilder table) { ApplicationId = AddAutoIncrementColumn(table, "ApplicationId"); UserId = AddIntegerColumn(table, "UserId"); ModuleId = AddIntegerColumn(table, "ModuleId"); FileId = AddIntegerColumn(table, "FileId", true); Title = AddStringColumn(table, "Title", 256, true); ShortDescription = AddMaxStringColumn(table, "ShortDescription", true); PdfFileName = AddStringColumn(table, "PdfFileName", 256); Status = AddStringColumn(table, "Status", 50); AdminReviewedBy = AddIntegerColumn(table, "AdminReviewedBy", true); AdminReviewedAt = AddDateTimeColumn(table, "AdminReviewedAt", true); AdminNote = AddMaxStringColumn(table, "AdminNote"); SubmittedOn = AddDateTimeColumn(table, "SubmittedOn", true); ApprovedOn = AddDateTimeColumn(table, "ApprovedOn", true); IsReported = AddBooleanColumn(table, "IsReported", false); ReportReason = AddMaxStringColumn(table, "ReportReason", true); ReportCount = AddIntegerColumn(table, "ReportCount", false); AddAuditableColumns(table); return this; } public OperationBuilder ApplicationId { get; set; } public OperationBuilder UserId { get; set; } public OperationBuilder ModuleId { get; set; } public OperationBuilder FileId { get; set; } public OperationBuilder Title { get; set; } public OperationBuilder ShortDescription { get; set; } public OperationBuilder PdfFileName { get; set; } public OperationBuilder Status { get; set; } public OperationBuilder AdminReviewedBy { get; set; } public OperationBuilder AdminReviewedAt { get; set; } public OperationBuilder AdminNote { get; set; } public OperationBuilder SubmittedOn { get; set; } public OperationBuilder ApprovedOn { get; set; } public OperationBuilder IsReported { get; set; } public OperationBuilder ReportReason { get; set; } public OperationBuilder ReportCount { get; set; } } }