diff --git a/ProjecThing/Data/ApplicationDbContext.cs b/ProjecThing/Data/ApplicationDbContext.cs index 06f86102..b58c4c6c 100644 --- a/ProjecThing/Data/ApplicationDbContext.cs +++ b/ProjecThing/Data/ApplicationDbContext.cs @@ -11,16 +11,19 @@ using Microsoft.EntityFrameworkCore; using ProjecThing.Models.CodeTable; using ProjecThing.Models.Invoice; using ProjecThing.Models.Project; +using Microsoft.AspNetCore.DataProtection.EntityFrameworkCore; namespace ProjecThing.Data { - public class ApplicationDbContext : IdentityDbContext + public class ApplicationDbContext : IdentityDbContext, IDataProtectionKeyContext { public ApplicationDbContext(DbContextOptions options) : base(options) { } + public DbSet DataProtectionKeys { get; set; } + public DbSet CodeTableEmployees { get; set; } public DbSet CodeTableCountries { get; set; } public DbSet CodeTableCompanies { get; set; } diff --git a/ProjecThing/Migrations/20260622141620_AddDataProtectionKeys.Designer.cs b/ProjecThing/Migrations/20260622141620_AddDataProtectionKeys.Designer.cs new file mode 100644 index 00000000..d6888d89 --- /dev/null +++ b/ProjecThing/Migrations/20260622141620_AddDataProtectionKeys.Designer.cs @@ -0,0 +1,2542 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using ProjecThing.Data; + +#nullable disable + +namespace ProjecThing.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20260622141620_AddDataProtectionKeys")] + partial class AddDataProtectionKeys + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.DataProtectionKey", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("FriendlyName") + .HasColumnType("longtext"); + + b.Property("Xml") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("DataProtectionKeys"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("IdRoleClaim"); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("IdRoleFk"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("IdentityRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("IdUserClaim"); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("int") + .HasColumnName("IdUserFk"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("IdentityUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("ProviderKey") + .HasColumnType("varchar(255)"); + + b.Property("ProviderDisplayName") + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("int") + .HasColumnName("IdUserFk"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("IdentityUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("int") + .HasColumnName("IdUserFk"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("IdRoleFk"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("IdentityUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int") + .HasColumnName("IdUserFk"); + + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("Name") + .HasColumnType("varchar(255)"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("IdentityUserTokens", (string)null); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableCompany", b => + { + b.Property("IdCompany") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("Bank") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Ceo") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("City") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Email") + .HasColumnType("longtext"); + + b.Property("HouseNumber") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Iban") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("IdCountryFk") + .HasColumnType("int"); + + b.Property("LogoFileName") + .HasColumnType("longtext"); + + b.Property("Phone") + .HasColumnType("longtext"); + + b.Property("Post") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("PostNumber") + .HasColumnType("int"); + + b.Property("RegistrationNumber") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ShortTitle") + .HasColumnType("longtext"); + + b.Property("Street") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("SwiftBic") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TaxNumber") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdCompany"); + + b.HasIndex("IdCountryFk"); + + b.ToTable("CodeTableCompanies"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableCountry", b => + { + b.Property("IdCountry") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Code") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TranslationSlovenian") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdCountry"); + + b.ToTable("CodeTableCountries"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableDepartement", b => + { + b.Property("IdDepartement") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdDepartement"); + + b.HasIndex("IdCompanyFk"); + + b.ToTable("CodeTableDepartements"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableEmployee", b => + { + b.Property("IdEmployee") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("BankAccount") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("BirthDate") + .HasColumnType("datetime(6)"); + + b.Property("CitizenIdNumber") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("City") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Email") + .HasColumnType("longtext"); + + b.Property("EmploymentDate") + .HasColumnType("datetime(6)"); + + b.Property("FirstName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("GenderIdEmployee") + .HasColumnType("int"); + + b.Property("HourlyWage") + .HasColumnType("float"); + + b.Property("HouseNumber") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("IdCitizenshipFk") + .HasColumnType("int"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("IdCountryFk") + .HasColumnType("int"); + + b.Property("IdDepartementFk") + .HasColumnType("int"); + + b.Property("IdJobFk") + .HasColumnType("int"); + + b.Property("IdTemporaryCountryFk") + .HasColumnType("int"); + + b.Property("LastName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("MobileTelephone") + .HasColumnType("longtext"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("Post") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("PostNumber") + .HasColumnType("int"); + + b.Property("Street") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TaxNumber") + .HasColumnType("int"); + + b.Property("Telephone") + .HasColumnType("longtext"); + + b.Property("TemporaryCity") + .HasColumnType("longtext"); + + b.Property("TemporaryHouseNumber") + .HasColumnType("longtext"); + + b.Property("TemporaryPost") + .HasColumnType("longtext"); + + b.Property("TemporaryPostNumber") + .HasColumnType("int"); + + b.Property("TemporaryStreet") + .HasColumnType("longtext"); + + b.HasKey("IdEmployee"); + + b.HasIndex("GenderIdEmployee"); + + b.HasIndex("IdCitizenshipFk"); + + b.HasIndex("IdCompanyFk"); + + b.HasIndex("IdCountryFk"); + + b.HasIndex("IdDepartementFk"); + + b.HasIndex("IdJobFk"); + + b.HasIndex("IdTemporaryCountryFk"); + + b.ToTable("CodeTableEmployees"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableItem", b => + { + b.Property("IdItem") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("CodeTableItemType") + .HasColumnType("int"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdItem"); + + b.HasIndex("IdCompanyFk"); + + b.ToTable("CodeTableItems"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableJob", b => + { + b.Property("IdJob") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdJob"); + + b.HasIndex("IdCompanyFk"); + + b.ToTable("CodeTableJobs"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Default") + .HasColumnType("tinyint(1)"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("CodeTableOperations"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTablePartner", b => + { + b.Property("IdPartner") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("Buyer") + .HasColumnType("tinyint(1)"); + + b.Property("City") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Email") + .HasColumnType("longtext"); + + b.Property("HouseNumber") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("IdCountryFk") + .HasColumnType("int"); + + b.Property("Post") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("PostNumber") + .HasColumnType("int"); + + b.Property("RegistrationNumber") + .HasColumnType("longtext"); + + b.Property("Street") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Supplier") + .HasColumnType("tinyint(1)"); + + b.Property("TaxNumber") + .HasColumnType("longtext"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdPartner"); + + b.HasIndex("IdCompanyFk"); + + b.HasIndex("IdCountryFk"); + + b.ToTable("CodeTablePartners"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTablePrePostText", b => + { + b.Property("IdPrePostText") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Content") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("Type") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdPrePostText"); + + b.HasIndex("IdCompanyFk"); + + b.ToTable("CodeTablePrePostText"); + }); + + modelBuilder.Entity("ProjecThing.Models.Document", b => + { + b.Property("IdDocument") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("ExpirationDate") + .HasColumnType("datetime(6)"); + + b.Property("IdDocumentTypeFk") + .HasColumnType("int"); + + b.Property("IdReferenceFk") + .HasColumnType("int"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("Number") + .HasColumnType("longtext"); + + b.Property("Reference") + .HasColumnType("longtext"); + + b.HasKey("IdDocument"); + + b.HasIndex("IdDocumentTypeFk"); + + b.ToTable("Documents"); + }); + + modelBuilder.Entity("ProjecThing.Models.DocumentType", b => + { + b.Property("IdDocumentType") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("DocumentTypeReference") + .HasColumnType("int"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdDocumentType"); + + b.HasIndex("IdCompanyFk"); + + b.ToTable("DocumentTypes"); + }); + + modelBuilder.Entity("ProjecThing.Models.File", b => + { + b.Property("IdFile") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DateOfUpload") + .HasColumnType("datetime(6)"); + + b.Property("Extension") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FileType") + .HasColumnType("int"); + + b.Property("Guid") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("IdReferenceFk") + .HasColumnType("int"); + + b.Property("Iv") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("Salt") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdFile"); + + b.HasIndex("IdCompanyFk"); + + b.ToTable("Files"); + }); + + modelBuilder.Entity("ProjecThing.Models.GeneralNote", b => + { + b.Property("IdNote") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DateReminder") + .HasColumnType("datetime(6)"); + + b.Property("DateSubmitted") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("IdEmployeeFk") + .HasColumnType("int"); + + b.Property("IdVehicleFk") + .HasColumnType("int"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("IdNote"); + + b.HasIndex("IdCompanyFk"); + + b.HasIndex("IdEmployeeFk"); + + b.HasIndex("IdVehicleFk"); + + b.ToTable("GeneralNotes"); + }); + + modelBuilder.Entity("ProjecThing.Models.IdentityApplicationRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("IdRole"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("longtext"); + + b.Property("Description") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("IdentityRole", (string)null); + }); + + modelBuilder.Entity("ProjecThing.Models.IdentityApplicationUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("IdUser"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("longtext"); + + b.Property("DateCreated") + .HasColumnType("datetime(6)"); + + b.Property("DateValidUntil") + .HasColumnType("datetime(6)"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("tinyint(1)"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("LockoutEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("LockoutEnd") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("longtext"); + + b.Property("PhoneNumber") + .HasColumnType("longtext"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("tinyint(1)"); + + b.Property("SecurityStamp") + .HasColumnType("longtext"); + + b.Property("Surname") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TwoFactorEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("IdCompanyFk"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("IdentityUser", (string)null); + }); + + modelBuilder.Entity("ProjecThing.Models.Invoice.Invoice", b => + { + b.Property("IdInvoice") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("BuyersOrderNumber") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("DateOfDispatch") + .HasColumnType("datetime(6)"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("IdPartnerFk") + .IsRequired() + .HasColumnType("int"); + + b.Property("IdProjectFk") + .HasColumnType("int"); + + b.Property("InvoiceNumber") + .HasColumnType("int"); + + b.Property("InvoiceYear") + .HasColumnType("int"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("PostText") + .HasColumnType("longtext"); + + b.Property("PreText") + .HasColumnType("longtext"); + + b.Property("State") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("IdInvoice"); + + b.HasIndex("IdCompanyFk"); + + b.HasIndex("IdPartnerFk"); + + b.HasIndex("IdProjectFk"); + + b.ToTable("Invoices"); + }); + + modelBuilder.Entity("ProjecThing.Models.Invoice.InvoiceItem", b => + { + b.Property("IdInvoiceItem") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Discount") + .HasColumnType("double"); + + b.Property("IdInvoiceFk") + .HasColumnType("int"); + + b.Property("IdInvoiceItemJoinFk") + .HasColumnType("int"); + + b.Property("IdItemFk") + .HasColumnType("int"); + + b.Property("IdProjectPartItem") + .HasColumnType("int"); + + b.Property("ItemDescription") + .HasColumnType("longtext"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("double"); + + b.Property("Quantity") + .HasColumnType("double"); + + b.Property("State") + .HasColumnType("int"); + + b.Property("Tax") + .HasColumnType("double"); + + b.HasKey("IdInvoiceItem"); + + b.HasIndex("IdInvoiceFk"); + + b.HasIndex("IdInvoiceItemJoinFk"); + + b.HasIndex("IdItemFk"); + + b.HasIndex("IdProjectPartItem"); + + b.ToTable("InvoiceItems"); + }); + + modelBuilder.Entity("ProjecThing.Models.Project.Project", b => + { + b.Property("IdProject") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("BuyersOrderNumber") + .HasColumnType("longtext"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("FinishedDate") + .HasColumnType("datetime(6)"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("IdPartnerFk") + .HasColumnType("int"); + + b.Property("ProjectNumber") + .HasColumnType("int"); + + b.Property("ProjectYear") + .HasColumnType("int"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdProject"); + + b.HasIndex("IdCompanyFk"); + + b.HasIndex("IdPartnerFk"); + + b.ToTable("Projects"); + }); + + modelBuilder.Entity("ProjecThing.Models.Project.ProjectPart", b => + { + b.Property("IdProjectPart") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("FinishedDate") + .HasColumnType("datetime(6)"); + + b.Property("IdProjectFk") + .HasColumnType("int"); + + b.Property("PathOfPlans") + .HasColumnType("longtext"); + + b.Property("ProjectPartNumber") + .HasColumnType("int"); + + b.Property("ShippedDate") + .HasColumnType("datetime(6)"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdProjectPart"); + + b.HasIndex("IdProjectFk"); + + b.ToTable("ProjectParts"); + }); + + modelBuilder.Entity("ProjecThing.Models.Project.ProjectPartItem", b => + { + b.Property("IdProjectPartItem") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DateModified") + .HasColumnType("datetime(6)"); + + b.Property("DeliveryDate") + .HasColumnType("datetime(6)"); + + b.Property("FinishedDate") + .HasColumnType("datetime(6)"); + + b.Property("IdItemFk") + .HasColumnType("int"); + + b.Property("IdMaterialFk") + .HasColumnType("int"); + + b.Property("IdMaterialSupplierFk") + .IsRequired() + .HasColumnType("int"); + + b.Property("IdProjectPartFk") + .HasColumnType("int"); + + b.Property("MaterialDimensions") + .HasColumnType("longtext"); + + b.Property("MaterialPrice") + .HasColumnType("float"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("NumberOfItems") + .HasColumnType("float"); + + b.Property("NumberOfItemsFinished") + .HasColumnType("float"); + + b.Property("NumberOfSets") + .HasColumnType("float"); + + b.Property("ProjectPartItemNumber") + .HasColumnType("int"); + + b.Property("SellingPrice") + .HasColumnType("float"); + + b.Property("ShippingDate") + .HasColumnType("datetime(6)"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("WorkPrice") + .HasColumnType("float"); + + b.HasKey("IdProjectPartItem"); + + b.HasIndex("IdItemFk"); + + b.HasIndex("IdMaterialFk"); + + b.HasIndex("IdMaterialSupplierFk"); + + b.HasIndex("IdProjectPartFk"); + + b.ToTable("ProjectPartItems"); + }); + + modelBuilder.Entity("ProjecThing.Models.Project.ProjectPartItemOperation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Finished") + .HasColumnType("tinyint(1)"); + + b.Property("IdCodeTableOperationFk") + .HasColumnType("int"); + + b.Property("IdProjectPartItemFk") + .HasColumnType("int"); + + b.Property("Order") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.HasIndex("IdCodeTableOperationFk"); + + b.HasIndex("IdProjectPartItemFk"); + + b.ToTable("ProjectPartItemOperations"); + }); + + modelBuilder.Entity("ProjecThing.Models.Transport.TransportLoadingOrder", b => + { + b.Property("IdTransportLoadingOrder") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("IdPartnerFk") + .HasColumnType("int"); + + b.Property("IdVehicleFk") + .HasColumnType("int"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("OrderCity") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("OrderDate") + .HasColumnType("datetime(6)"); + + b.Property("OrderNumber") + .HasColumnType("int"); + + b.Property("OrderYear") + .HasColumnType("int"); + + b.Property("PostText") + .HasColumnType("longtext"); + + b.Property("PreText") + .HasColumnType("longtext"); + + b.Property("Total") + .HasColumnType("float"); + + b.Property("VehicleText") + .HasColumnType("longtext"); + + b.HasKey("IdTransportLoadingOrder"); + + b.HasIndex("IdCompanyFk"); + + b.HasIndex("IdPartnerFk"); + + b.HasIndex("IdVehicleFk"); + + b.ToTable("TransportLoadingOrders"); + }); + + modelBuilder.Entity("ProjecThing.Models.Transport.TransportLoadingOrderLoadUnload", b => + { + b.Property("IdTransportLoadingOrderLoadUnload") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CargoDescription") + .HasColumnType("longtext"); + + b.Property("IdLoadingFk") + .HasColumnType("int"); + + b.Property("IdTransportLoadingOrderFk") + .HasColumnType("int"); + + b.Property("IdUnloadingFk") + .HasColumnType("int"); + + b.Property("LoadingDateFrom") + .HasColumnType("datetime(6)"); + + b.Property("LoadingDateTo") + .HasColumnType("datetime(6)"); + + b.Property("LoadingNote") + .HasColumnType("longtext"); + + b.Property("LoadingReference") + .HasColumnType("longtext"); + + b.Property("LoadingText") + .HasColumnType("longtext"); + + b.Property("UnloadingDateFrom") + .HasColumnType("datetime(6)"); + + b.Property("UnloadingDateTo") + .HasColumnType("datetime(6)"); + + b.Property("UnloadingNote") + .HasColumnType("longtext"); + + b.Property("UnloadingReference") + .HasColumnType("longtext"); + + b.Property("UnloadingText") + .HasColumnType("longtext"); + + b.HasKey("IdTransportLoadingOrderLoadUnload"); + + b.HasIndex("IdLoadingFk"); + + b.HasIndex("IdTransportLoadingOrderFk"); + + b.HasIndex("IdUnloadingFk"); + + b.ToTable("TransportLoadingOrderLoadUnloads"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.Vehicle", b => + { + b.Property("IdVehicle") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("EngineNumber") + .HasColumnType("longtext"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("IdDepartementFk") + .HasColumnType("int"); + + b.Property("IdFuelTypeFk") + .HasColumnType("int"); + + b.Property("IdMakeFk") + .HasColumnType("int"); + + b.Property("IdVehicleGroupFk") + .HasColumnType("int"); + + b.Property("IdVehicleTypeFk") + .HasColumnType("int"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("RegistrationNumber") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("VehicleMeterType") + .HasColumnType("int"); + + b.Property("VinNumber") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("IdVehicle"); + + b.HasIndex("IdCompanyFk"); + + b.HasIndex("IdDepartementFk"); + + b.HasIndex("IdFuelTypeFk"); + + b.HasIndex("IdMakeFk"); + + b.HasIndex("IdVehicleGroupFk"); + + b.HasIndex("IdVehicleTypeFk"); + + b.ToTable("Vehicles"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleBreakdown", b => + { + b.Property("IdVehicleBreakdown") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DateBreakdown") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("EmployeeIdEmployee") + .HasColumnType("int"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("IdVehicleFk") + .HasColumnType("int"); + + b.Property("Meter") + .HasColumnType("int"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("Reference") + .HasColumnType("longtext"); + + b.HasKey("IdVehicleBreakdown"); + + b.HasIndex("EmployeeIdEmployee"); + + b.HasIndex("IdCompanyFk"); + + b.ToTable("VehicleBreakdowns"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleDrive", b => + { + b.Property("IdVehicleDrive") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DateEnd") + .HasColumnType("datetime(6)"); + + b.Property("DateStart") + .HasColumnType("datetime(6)"); + + b.Property("IdEmployeeFk") + .HasColumnType("int"); + + b.Property("IdVehicleFk") + .HasColumnType("int"); + + b.Property("MileageEnd") + .HasColumnType("int"); + + b.Property("MileageStart") + .HasColumnType("int"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.HasKey("IdVehicleDrive"); + + b.HasIndex("IdEmployeeFk"); + + b.HasIndex("IdVehicleFk"); + + b.ToTable("VehicleDrives"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleDriver", b => + { + b.Property("IdVehicleDriver") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("IdEmployeeFk") + .HasColumnType("int"); + + b.Property("IdVehicleFk") + .HasColumnType("int"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.HasKey("IdVehicleDriver"); + + b.HasIndex("IdEmployeeFk"); + + b.HasIndex("IdVehicleFk"); + + b.ToTable("VehicleDrivers"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleFueling", b => + { + b.Property("IdVehicleFueling") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Amount") + .HasColumnType("double"); + + b.Property("City") + .HasColumnType("longtext"); + + b.Property("DateOfFueling") + .HasColumnType("datetime(6)"); + + b.Property("FuelingCardInvoiceDate") + .HasColumnType("datetime(6)"); + + b.Property("FuelingCardInvoiceNumber") + .HasColumnType("longtext"); + + b.Property("FullTank") + .HasColumnType("tinyint(1)"); + + b.Property("IdCountryFk") + .HasColumnType("int"); + + b.Property("IdEmployeeFk") + .HasColumnType("int"); + + b.Property("IdVehicleFk") + .HasColumnType("int"); + + b.Property("IdVehicleFuelTypeFk") + .HasColumnType("int"); + + b.Property("IdVehicleFuelingCardFk") + .HasColumnType("int"); + + b.Property("Mileage") + .HasColumnType("int"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("Quantity") + .HasColumnType("double"); + + b.Property("Reference") + .HasColumnType("longtext"); + + b.HasKey("IdVehicleFueling"); + + b.HasIndex("IdCountryFk"); + + b.HasIndex("IdEmployeeFk"); + + b.HasIndex("IdVehicleFk"); + + b.HasIndex("IdVehicleFuelTypeFk"); + + b.HasIndex("IdVehicleFuelingCardFk"); + + b.ToTable("VehicleFuelings"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleFuelingCard", b => + { + b.Property("IdFuelingCard") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("CardNumber") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("DateOfExpiry") + .HasColumnType("datetime(6)"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdFuelingCard"); + + b.HasIndex("IdCompanyFk"); + + b.ToTable("VehicleFuelingCards"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleFuelType", b => + { + b.Property("IdVehicleFuelType") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdVehicleFuelType"); + + b.HasIndex("IdCompanyFk"); + + b.ToTable("VehicleFuelTypes"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleGroup", b => + { + b.Property("IdVehicleGroup") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdVehicleGroup"); + + b.HasIndex("IdCompanyFk"); + + b.ToTable("VehicleGroups"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleIncident", b => + { + b.Property("IdVehicleIncident") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("IdEmployeeFk") + .HasColumnType("int"); + + b.Property("IdVehicleFk") + .HasColumnType("int"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("Reference") + .HasColumnType("longtext"); + + b.HasKey("IdVehicleIncident"); + + b.HasIndex("IdEmployeeFk"); + + b.HasIndex("IdVehicleFk"); + + b.ToTable("VehicleIncidents"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleIssue", b => + { + b.Property("IdVehicleIssue") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DateReported") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("IdEmployeeFk") + .HasColumnType("int"); + + b.Property("IdVehicleFk") + .HasColumnType("int"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("IdVehicleIssue"); + + b.HasIndex("IdEmployeeFk"); + + b.HasIndex("IdVehicleFk"); + + b.ToTable("VehicleIssues"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleMake", b => + { + b.Property("IdVehicleMake") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdVehicleMake"); + + b.HasIndex("IdCompanyFk"); + + b.ToTable("VehicleMakes"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleMeterReading", b => + { + b.Property("IdVehicle") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("DateAdded") + .HasColumnType("datetime(6)"); + + b.Property("IdVehicleFk") + .HasColumnType("int"); + + b.Property("Mileage") + .HasColumnType("int"); + + b.Property("Note") + .HasColumnType("longtext"); + + b.HasKey("IdVehicle"); + + b.HasIndex("IdVehicleFk"); + + b.ToTable("VehicleMeterReadings"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleType", b => + { + b.Property("IdVehicleType") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Active") + .HasColumnType("tinyint(1)"); + + b.Property("IdCompanyFk") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("IdVehicleType"); + + b.HasIndex("IdCompanyFk"); + + b.ToTable("VehicleTypes"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("ProjecThing.Models.IdentityApplicationRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("ProjecThing.Models.IdentityApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("ProjecThing.Models.IdentityApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("ProjecThing.Models.IdentityApplicationRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.IdentityApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("ProjecThing.Models.IdentityApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableCompany", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCountry", "Country") + .WithMany("CountryCompany") + .HasForeignKey("IdCountryFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Country"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableDepartement", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyDepartement") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableEmployee", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableEmployee", "Gender") + .WithMany() + .HasForeignKey("GenderIdEmployee") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCountry", "Citizenship") + .WithMany("CountryEmployeeCitizenship") + .HasForeignKey("IdCitizenshipFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyEmployee") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCountry", "Country") + .WithMany("CountryEmployeeCountry") + .HasForeignKey("IdCountryFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableDepartement", "Departement") + .WithMany("DepartementEmployee") + .HasForeignKey("IdDepartementFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableJob", "Job") + .WithMany("JobEmployee") + .HasForeignKey("IdJobFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCountry", "TemporaryCountry") + .WithMany("CountryEmployeeTemporaryCountry") + .HasForeignKey("IdTemporaryCountryFk") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Citizenship"); + + b.Navigation("Company"); + + b.Navigation("Country"); + + b.Navigation("Departement"); + + b.Navigation("Gender"); + + b.Navigation("Job"); + + b.Navigation("TemporaryCountry"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableItem", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyItem") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableJob", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyJob") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTablePartner", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyPartner") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCountry", "Country") + .WithMany("CountryPartner") + .HasForeignKey("IdCountryFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Company"); + + b.Navigation("Country"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTablePrePostText", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyPrePostText") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ProjecThing.Models.Document", b => + { + b.HasOne("ProjecThing.Models.DocumentType", "DocumentType") + .WithMany("DocumentTypeDocument") + .HasForeignKey("IdDocumentTypeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DocumentType"); + }); + + modelBuilder.Entity("ProjecThing.Models.DocumentType", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany() + .HasForeignKey("IdCompanyFk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ProjecThing.Models.File", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyFile") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ProjecThing.Models.GeneralNote", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyNote") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeNote") + .HasForeignKey("IdEmployeeFk"); + + b.HasOne("ProjecThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleNote") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Company"); + + b.Navigation("Employee"); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("ProjecThing.Models.IdentityApplicationUser", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyIdentityApplicationUser") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ProjecThing.Models.Invoice.Invoice", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyInvoice") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTablePartner", "Partner") + .WithMany("Invoice") + .HasForeignKey("IdPartnerFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.Project.Project", "Project") + .WithMany("Invoices") + .HasForeignKey("IdProjectFk") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Company"); + + b.Navigation("Partner"); + + b.Navigation("Project"); + }); + + modelBuilder.Entity("ProjecThing.Models.Invoice.InvoiceItem", b => + { + b.HasOne("ProjecThing.Models.Invoice.Invoice", "Invoice") + .WithMany("InvoiceInvoiceItem") + .HasForeignKey("IdInvoiceFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("ProjecThing.Models.Invoice.InvoiceItem", "InvoiceItemJoin") + .WithMany() + .HasForeignKey("IdInvoiceItemJoinFk"); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableItem", "Item") + .WithMany("InvoiceItem") + .HasForeignKey("IdItemFk"); + + b.HasOne("ProjecThing.Models.Project.ProjectPartItem", "ProjectPartItem") + .WithMany("InvoiceItem") + .HasForeignKey("IdProjectPartItem"); + + b.Navigation("Invoice"); + + b.Navigation("InvoiceItemJoin"); + + b.Navigation("Item"); + + b.Navigation("ProjectPartItem"); + }); + + modelBuilder.Entity("ProjecThing.Models.Project.Project", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyProject") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTablePartner", "Partner") + .WithMany("PartnerProject") + .HasForeignKey("IdPartnerFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + + b.Navigation("Partner"); + }); + + modelBuilder.Entity("ProjecThing.Models.Project.ProjectPart", b => + { + b.HasOne("ProjecThing.Models.Project.Project", "Project") + .WithMany("ProjectProjectPart") + .HasForeignKey("IdProjectFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Project"); + }); + + modelBuilder.Entity("ProjecThing.Models.Project.ProjectPartItem", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableItem", "Item") + .WithMany("ItemProjectPartItem") + .HasForeignKey("IdItemFk") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableItem", "Material") + .WithMany("ItemProjectPartItemMaterial") + .HasForeignKey("IdMaterialFk") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTablePartner", "MaterialSupplier") + .WithMany("PartnerProjectPartItem") + .HasForeignKey("IdMaterialSupplierFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.Project.ProjectPart", "ProjectPart") + .WithMany("ProjectPartProjectPartItem") + .HasForeignKey("IdProjectPartFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Item"); + + b.Navigation("Material"); + + b.Navigation("MaterialSupplier"); + + b.Navigation("ProjectPart"); + }); + + modelBuilder.Entity("ProjecThing.Models.Project.ProjectPartItemOperation", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableOperation", "Operation") + .WithMany("ProjectPartItemOperation") + .HasForeignKey("IdCodeTableOperationFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("ProjecThing.Models.Project.ProjectPartItem", "ProjectPartItem") + .WithMany("ProjectPartItemOperation") + .HasForeignKey("IdProjectPartItemFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Operation"); + + b.Navigation("ProjectPartItem"); + }); + + modelBuilder.Entity("ProjecThing.Models.Transport.TransportLoadingOrder", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyTransportLoadingOrder") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTablePartner", "Partner") + .WithMany("PartnerTransportLoadingOrder") + .HasForeignKey("IdPartnerFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleTransportLoadingOrder") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Company"); + + b.Navigation("Partner"); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("ProjecThing.Models.Transport.TransportLoadingOrderLoadUnload", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTablePartner", "Loading") + .WithMany("PartnerTransportLoadingOrderLoad") + .HasForeignKey("IdLoadingFk"); + + b.HasOne("ProjecThing.Models.Transport.TransportLoadingOrder", "TransportLoadingOrder") + .WithMany("TransportLoadingOrderLoadUnload") + .HasForeignKey("IdTransportLoadingOrderFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTablePartner", "Unloading") + .WithMany("PartnerTransportLoadingOrderUnload") + .HasForeignKey("IdUnloadingFk"); + + b.Navigation("Loading"); + + b.Navigation("TransportLoadingOrder"); + + b.Navigation("Unloading"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.Vehicle", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicle") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableDepartement", "Departement") + .WithMany("DepartementVehicle") + .HasForeignKey("IdDepartementFk"); + + b.HasOne("ProjecThing.Models.Vehicle.VehicleFuelType", "VehicleFuelType") + .WithMany("VehicleFuelTypeVehicle") + .HasForeignKey("IdFuelTypeFk"); + + b.HasOne("ProjecThing.Models.Vehicle.VehicleMake", "VehicleMake") + .WithMany("VehicleMakeVehicle") + .HasForeignKey("IdMakeFk"); + + b.HasOne("ProjecThing.Models.Vehicle.VehicleGroup", "VehicleGroup") + .WithMany("VehicleGroupVehicle") + .HasForeignKey("IdVehicleGroupFk"); + + b.HasOne("ProjecThing.Models.Vehicle.VehicleType", "VehicleType") + .WithMany("VehicleTypeVehicle") + .HasForeignKey("IdVehicleTypeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + + b.Navigation("Departement"); + + b.Navigation("VehicleFuelType"); + + b.Navigation("VehicleGroup"); + + b.Navigation("VehicleMake"); + + b.Navigation("VehicleType"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleBreakdown", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeVehicleBreakdown") + .HasForeignKey("EmployeeIdEmployee"); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicleBreakdown") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleDrive", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeVehicleDrive") + .HasForeignKey("IdEmployeeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleVehicleDrive") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleDriver", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeVehicleDriver") + .HasForeignKey("IdEmployeeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleVehicleDriver") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleFueling", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCountry", "Country") + .WithMany("CountryVehicleFueling") + .HasForeignKey("IdCountryFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeVehicleFueling") + .HasForeignKey("IdEmployeeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleVehicleFueling") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("ProjecThing.Models.Vehicle.VehicleFuelType", "VehicleFuelType") + .WithMany("VehicleFuelTypeVehicleFueling") + .HasForeignKey("IdVehicleFuelTypeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.Vehicle.VehicleFuelingCard", "VehicleFuelingCard") + .WithMany("VehicleFuelingCardVehicleFueling") + .HasForeignKey("IdVehicleFuelingCardFk"); + + b.Navigation("Country"); + + b.Navigation("Employee"); + + b.Navigation("Vehicle"); + + b.Navigation("VehicleFuelType"); + + b.Navigation("VehicleFuelingCard"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleFuelingCard", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicleFuelingCard") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleFuelType", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicleFuelType") + .HasForeignKey("IdCompanyFk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleGroup", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicleGroup") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleIncident", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeIncident") + .HasForeignKey("IdEmployeeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ProjecThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleVehicleIncident") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleIssue", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeIssue") + .HasForeignKey("IdEmployeeFk"); + + b.HasOne("ProjecThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleVehicleIssue") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleMake", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicleMake") + .HasForeignKey("IdCompanyFk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleMeterReading", b => + { + b.HasOne("ProjecThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleVehicleMeterReading") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleType", b => + { + b.HasOne("ProjecThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicleType") + .HasForeignKey("IdCompanyFk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableCompany", b => + { + b.Navigation("CompanyDepartement"); + + b.Navigation("CompanyEmployee"); + + b.Navigation("CompanyFile"); + + b.Navigation("CompanyIdentityApplicationUser"); + + b.Navigation("CompanyInvoice"); + + b.Navigation("CompanyItem"); + + b.Navigation("CompanyJob"); + + b.Navigation("CompanyNote"); + + b.Navigation("CompanyPartner"); + + b.Navigation("CompanyPrePostText"); + + b.Navigation("CompanyProject"); + + b.Navigation("CompanyTransportLoadingOrder"); + + b.Navigation("CompanyVehicle"); + + b.Navigation("CompanyVehicleBreakdown"); + + b.Navigation("CompanyVehicleFuelType"); + + b.Navigation("CompanyVehicleFuelingCard"); + + b.Navigation("CompanyVehicleGroup"); + + b.Navigation("CompanyVehicleMake"); + + b.Navigation("CompanyVehicleType"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableCountry", b => + { + b.Navigation("CountryCompany"); + + b.Navigation("CountryEmployeeCitizenship"); + + b.Navigation("CountryEmployeeCountry"); + + b.Navigation("CountryEmployeeTemporaryCountry"); + + b.Navigation("CountryPartner"); + + b.Navigation("CountryVehicleFueling"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableDepartement", b => + { + b.Navigation("DepartementEmployee"); + + b.Navigation("DepartementVehicle"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableEmployee", b => + { + b.Navigation("EmployeeIncident"); + + b.Navigation("EmployeeIssue"); + + b.Navigation("EmployeeNote"); + + b.Navigation("EmployeeVehicleBreakdown"); + + b.Navigation("EmployeeVehicleDrive"); + + b.Navigation("EmployeeVehicleDriver"); + + b.Navigation("EmployeeVehicleFueling"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableItem", b => + { + b.Navigation("InvoiceItem"); + + b.Navigation("ItemProjectPartItem"); + + b.Navigation("ItemProjectPartItemMaterial"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableJob", b => + { + b.Navigation("JobEmployee"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableOperation", b => + { + b.Navigation("ProjectPartItemOperation"); + }); + + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTablePartner", b => + { + b.Navigation("Invoice"); + + b.Navigation("PartnerProject"); + + b.Navigation("PartnerProjectPartItem"); + + b.Navigation("PartnerTransportLoadingOrder"); + + b.Navigation("PartnerTransportLoadingOrderLoad"); + + b.Navigation("PartnerTransportLoadingOrderUnload"); + }); + + modelBuilder.Entity("ProjecThing.Models.DocumentType", b => + { + b.Navigation("DocumentTypeDocument"); + }); + + modelBuilder.Entity("ProjecThing.Models.Invoice.Invoice", b => + { + b.Navigation("InvoiceInvoiceItem"); + }); + + modelBuilder.Entity("ProjecThing.Models.Project.Project", b => + { + b.Navigation("Invoices"); + + b.Navigation("ProjectProjectPart"); + }); + + modelBuilder.Entity("ProjecThing.Models.Project.ProjectPart", b => + { + b.Navigation("ProjectPartProjectPartItem"); + }); + + modelBuilder.Entity("ProjecThing.Models.Project.ProjectPartItem", b => + { + b.Navigation("InvoiceItem"); + + b.Navigation("ProjectPartItemOperation"); + }); + + modelBuilder.Entity("ProjecThing.Models.Transport.TransportLoadingOrder", b => + { + b.Navigation("TransportLoadingOrderLoadUnload"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.Vehicle", b => + { + b.Navigation("VehicleNote"); + + b.Navigation("VehicleTransportLoadingOrder"); + + b.Navigation("VehicleVehicleDrive"); + + b.Navigation("VehicleVehicleDriver"); + + b.Navigation("VehicleVehicleFueling"); + + b.Navigation("VehicleVehicleIncident"); + + b.Navigation("VehicleVehicleIssue"); + + b.Navigation("VehicleVehicleMeterReading"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleFuelingCard", b => + { + b.Navigation("VehicleFuelingCardVehicleFueling"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleFuelType", b => + { + b.Navigation("VehicleFuelTypeVehicle"); + + b.Navigation("VehicleFuelTypeVehicleFueling"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleGroup", b => + { + b.Navigation("VehicleGroupVehicle"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleMake", b => + { + b.Navigation("VehicleMakeVehicle"); + }); + + modelBuilder.Entity("ProjecThing.Models.Vehicle.VehicleType", b => + { + b.Navigation("VehicleTypeVehicle"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/ProjecThing/Migrations/20260622141620_AddDataProtectionKeys.cs b/ProjecThing/Migrations/20260622141620_AddDataProtectionKeys.cs new file mode 100644 index 00000000..6af7767d --- /dev/null +++ b/ProjecThing/Migrations/20260622141620_AddDataProtectionKeys.cs @@ -0,0 +1,36 @@ +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ProjecThing.Migrations +{ + public partial class AddDataProtectionKeys : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "DataProtectionKeys", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FriendlyName = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Xml = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_DataProtectionKeys", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "DataProtectionKeys"); + } + } +} diff --git a/ProjecThing/Migrations/ApplicationDbContextModelSnapshot.cs b/ProjecThing/Migrations/ApplicationDbContextModelSnapshot.cs index b740adee..cfbecc6b 100644 --- a/ProjecThing/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/ProjecThing/Migrations/ApplicationDbContextModelSnapshot.cs @@ -1,9 +1,9 @@ -// +// using System; -using ProjecThing.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using ProjecThing.Data; #nullable disable @@ -19,6 +19,130 @@ namespace ProjecThing.Migrations .HasAnnotation("ProductVersion", "6.0.1") .HasAnnotation("Relational:MaxIdentifierLength", 64); + modelBuilder.Entity("Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.DataProtectionKey", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("FriendlyName") + .HasColumnType("longtext"); + + b.Property("Xml") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("DataProtectionKeys"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("IdRoleClaim"); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("IdRoleFk"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("IdentityRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasColumnName("IdUserClaim"); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("int") + .HasColumnName("IdUserFk"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("IdentityUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("ProviderKey") + .HasColumnType("varchar(255)"); + + b.Property("ProviderDisplayName") + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("int") + .HasColumnName("IdUserFk"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("IdentityUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("int") + .HasColumnName("IdUserFk"); + + b.Property("RoleId") + .HasColumnType("int") + .HasColumnName("IdRoleFk"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("IdentityUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("int") + .HasColumnName("IdUserFk"); + + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("Name") + .HasColumnType("varchar(255)"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("IdentityUserTokens", (string)null); + }); + modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableCompany", b => { b.Property("IdCompany") @@ -1549,109 +1673,53 @@ namespace ProjecThing.Migrations modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int") - .HasColumnName("IdRoleClaim"); - - b.Property("ClaimType") - .HasColumnType("longtext"); - - b.Property("ClaimValue") - .HasColumnType("longtext"); - - b.Property("RoleId") - .HasColumnType("int") - .HasColumnName("IdRoleFk"); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("IdentityRoleClaims", (string)null); + b.HasOne("ProjecThing.Models.IdentityApplicationRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int") - .HasColumnName("IdUserClaim"); - - b.Property("ClaimType") - .HasColumnType("longtext"); - - b.Property("ClaimValue") - .HasColumnType("longtext"); - - b.Property("UserId") - .HasColumnType("int") - .HasColumnName("IdUserFk"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("IdentityUserClaims", (string)null); + b.HasOne("ProjecThing.Models.IdentityApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => { - b.Property("LoginProvider") - .HasColumnType("varchar(255)"); - - b.Property("ProviderKey") - .HasColumnType("varchar(255)"); - - b.Property("ProviderDisplayName") - .HasColumnType("longtext"); - - b.Property("UserId") - .HasColumnType("int") - .HasColumnName("IdUserFk"); - - b.HasKey("LoginProvider", "ProviderKey"); - - b.HasIndex("UserId"); - - b.ToTable("IdentityUserLogins", (string)null); + b.HasOne("ProjecThing.Models.IdentityApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => { - b.Property("UserId") - .HasColumnType("int") - .HasColumnName("IdUserFk"); + b.HasOne("ProjecThing.Models.IdentityApplicationRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); - b.Property("RoleId") - .HasColumnType("int") - .HasColumnName("IdRoleFk"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId"); - - b.ToTable("IdentityUserRoles", (string)null); + b.HasOne("ProjecThing.Models.IdentityApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => { - b.Property("UserId") - .HasColumnType("int") - .HasColumnName("IdUserFk"); - - b.Property("LoginProvider") - .HasColumnType("varchar(255)"); - - b.Property("Name") - .HasColumnType("varchar(255)"); - - b.Property("Value") - .HasColumnType("longtext"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("IdentityUserTokens", (string)null); + b.HasOne("ProjecThing.Models.IdentityApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableCompany", b => @@ -2273,57 +2341,6 @@ namespace ProjecThing.Migrations b.Navigation("Company"); }); - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => - { - b.HasOne("ProjecThing.Models.IdentityApplicationRole", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => - { - b.HasOne("ProjecThing.Models.IdentityApplicationUser", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => - { - b.HasOne("ProjecThing.Models.IdentityApplicationUser", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => - { - b.HasOne("ProjecThing.Models.IdentityApplicationRole", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("ProjecThing.Models.IdentityApplicationUser", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => - { - b.HasOne("ProjecThing.Models.IdentityApplicationUser", null) - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - modelBuilder.Entity("ProjecThing.Models.CodeTable.CodeTableCompany", b => { b.Navigation("CompanyDepartement"); diff --git a/ProjecThing/Program.cs b/ProjecThing/Program.cs index a6b85c38..153191e4 100644 --- a/ProjecThing/Program.cs +++ b/ProjecThing/Program.cs @@ -1,16 +1,31 @@ +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.HttpOverrides; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Localization; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; +using NLog; +using NLog.Web; +using ProjecThing.Data; +using ProjecThing.Models; using System; using System.Collections.Generic; +using System.Configuration; +using System.Globalization; using System.IO; using System.Linq; using System.Net; using System.Net.Security; +using System.Text; using System.Threading.Tasks; -using NLog; -using NLog.Web; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Http; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.IdentityModel.Tokens; namespace ProjecThing { @@ -21,35 +36,223 @@ namespace ProjecThing //var logger = NLog.LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger(); //logger.Debug("INIT"); - CreateHostBuilder(args).Build().Run(); + var builder = WebApplication.CreateBuilder(args); + + // Configure NLog + builder.Logging.ClearProviders(); + builder.Logging.AddConsole(); + builder.Host.UseNLog(); + + builder.Services.Configure(options => + { + options.CheckConsentNeeded = context => true; + options.MinimumSameSitePolicy = SameSiteMode.None; + }); + + //builder.Services.Configure(options => + //{ + // options.KnownProxies.Add(IPAddress.Parse("192.168.111.78")); + //}); + + // Database connection + string connectionString = builder.Configuration.GetConnectionString("DataConnection"); + builder.Services.AddDbContext(options => options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString))); + //builder.Services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("DataConnection"))); + + // Session + builder.Services.AddSession(options => + { + options.IdleTimeout = TimeSpan.FromHours(3); + options.Cookie.HttpOnly = true; + options.Cookie.IsEssential = true; + options.Cookie.MaxAge = TimeSpan.FromHours(3); + }); + + // JWT + builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options => + { + options.SaveToken = true; + options.TokenValidationParameters = new TokenValidationParameters + { + ValidateIssuer = true, + ValidateAudience = true, + ValidateLifetime = true, + ValidateIssuerSigningKey = true, + ValidIssuer = "ProjecThing", + ValidAudience = "Android", + IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("!Appli$cation#9999#!")) + }; + }); + + // Identity + builder.Services.AddIdentity().AddEntityFrameworkStores().AddDefaultTokenProviders(); + + builder.Services.AddRazorPages(options => + { + //options.Conventions.AddPageRoute("/Administration/Users", "/AdministrationUsers"); + }).AddRazorRuntimeCompilation(); + + //builder.Services.Configure(options => + //{ + // options.ForwardedHeaders = + // ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; + // options.KnownProxies.Add(IPAddress.Parse("192.168.111.78")); + // //options.ForwardedForHeaderName = "X-Forwarded-For-My-Custom-Header-Name"; + //}); + + builder.Services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN"); + + builder.Services.Configure(options => + { + // Password settings + options.Password.RequireDigit = true; + options.Password.RequireLowercase = true; + options.Password.RequireNonAlphanumeric = true; + options.Password.RequireUppercase = true; + options.Password.RequiredLength = 8; + options.Password.RequiredUniqueChars = 1; + + // Lockout settings + options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5); + options.Lockout.MaxFailedAccessAttempts = 3; + options.Lockout.AllowedForNewUsers = true; + + // User settings + options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + options.User.RequireUniqueEmail = true; + }); + + builder.Services.ConfigureApplicationCookie(options => + { + // Cookie + options.Cookie.MaxAge = TimeSpan.FromHours(3); + options.Cookie.HttpOnly = true; + options.SlidingExpiration = true; + options.Cookie.SecurePolicy = CookieSecurePolicy.None;//Samo unencripted na locas + + options.LoginPath = $"/User/Login"; + options.LogoutPath = $"/User/Logout"; + options.AccessDeniedPath = $"/"; + options.ExpireTimeSpan = TimeSpan.FromHours(3);//Povecano na 15min + }); + + builder.Services.AddDistributedMemoryCache(); + + builder.Services.Configure(options => + { + options.AutomaticAuthentication = false; + }); + + //builder.Services.AddDataProtection().SetApplicationName("ProjecThing").PersistKeysToFileSystem(new DirectoryInfo(@"Keys/")); + + builder.Services.AddDataProtection() + .SetApplicationName("ProjecThing") + .PersistKeysToDbContext() + .AddKeyManagementOptions(options => + { + options.NewKeyLifetime = new TimeSpan(365, 0, 0, 0); + options.AutoGenerateKeys = true; + }); + + var app = builder.Build(); + + // Apply migrations in production +#if !DEBUG + ApplyMigrations(app); +#endif + + // ===== Configure Middleware Pipeline ===== + + if (app.Environment.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + //app.UseForwardedHeaders(); + } + else + { + app.UseExceptionHandler("/Error"); + //app.UseForwardedHeaders(); + app.UseHsts(); + } + + //app.UseForwardedHeaders(new ForwardedHeadersOptions + //{ + // ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto + //}); + + + var defaultCulture = new CultureInfo("sl-SI"); + var localizationOptions = new RequestLocalizationOptions + { + DefaultRequestCulture = new RequestCulture(defaultCulture), + SupportedCultures = new List { defaultCulture }, + SupportedUICultures = new List { defaultCulture } + }; + app.UseRequestLocalization(localizationOptions); + + //app.UseHttpsRedirection(); + app.UseStaticFiles(); + app.UseCookiePolicy(); + + app.UseRouting(); + app.UseAuthentication(); + app.UseAuthorization(); + + app.UseSession(); + + app.MapRazorPages(); + app.MapControllers(); + + app.Run(); + + //CreateHostBuilder(args).Build().Run(); } - public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults( - webBuilder => + private static void ApplyMigrations(IHost app) + { + using var scope = app.Services.CreateScope(); + var dbContext = scope.ServiceProvider.GetRequiredService(); + + // Check and apply pending migrations + var pendingMigrations = dbContext.Database.GetPendingMigrations(); + if (pendingMigrations.Any()) { - webBuilder.ConfigureLogging(logging => - { - logging.ClearProviders(); - logging.AddConsole(); - }).UseNLog(); + Console.WriteLine("Applying pending migrations..."); + dbContext.Database.Migrate(); + Console.WriteLine("Migrations applied successfully."); + } + else + { + Console.WriteLine("No pending migrations found."); + } + } -#if !DEBUG - webBuilder.UseKestrel(opts => - { - var appServices = opts.ApplicationServices; - //opts.Listen(IPAddress.Parse("192.168.1.150"), 80); - //opts.Listen(IPAddress.Parse("192.168.1.150"), 443, o => o.UseHttps(h => { h.UseLettuceEncrypt(appServices); })); + // public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults( + // webBuilder => + // { + // webBuilder.ConfigureLogging(logging => + // { + // logging.ClearProviders(); + // logging.AddConsole(); + // }).UseNLog(); - //opts.Listen(IPAddress.Parse("192.168.111.77"), 5005); - opts.Listen(IPAddress.Parse("192.168.178.205"), 5005);//novi server - opts.Listen(IPAddress.Loopback, port: 8081); - //opts.ListenLocalhost(4433, opts => opts.UseHttps()); - opts.ListenLocalhost(5005); - //opts.ListenLocalhost(5005, opts => opts.UseHttps()); - }); -#endif - webBuilder.UseContentRoot(Directory.GetCurrentDirectory()); - webBuilder.UseStartup(); - }); + //#if !DEBUG + // webBuilder.UseKestrel(opts => + // { + // var appServices = opts.ApplicationServices; + // //opts.Listen(IPAddress.Parse("192.168.1.150"), 80); + // //opts.Listen(IPAddress.Parse("192.168.1.150"), 443, o => o.UseHttps(h => { h.UseLettuceEncrypt(appServices); })); + + // //opts.Listen(IPAddress.Parse("192.168.111.77"), 5005); + // opts.Listen(IPAddress.Parse("192.168.178.205"), 5005);//novi server + // opts.Listen(IPAddress.Loopback, port: 8081); + // //opts.ListenLocalhost(4433, opts => opts.UseHttps()); + // opts.ListenLocalhost(5005); + // //opts.ListenLocalhost(5005, opts => opts.UseHttps()); + // }); + //#endif + // webBuilder.UseContentRoot(Directory.GetCurrentDirectory()); + // webBuilder.UseStartup(); + // }); } } diff --git a/ProjecThing/ProjecThing.csproj b/ProjecThing/ProjecThing.csproj index b4d79dad..8d8a371c 100644 --- a/ProjecThing/ProjecThing.csproj +++ b/ProjecThing/ProjecThing.csproj @@ -1,7 +1,7 @@ - net6.0 + net9.0 false ProjecThing.Program 26f134e2-3bc7-4885-b726-e8a92f2abb2e @@ -37,6 +37,7 @@ + diff --git a/ProjecThing/Startup.cs b/ProjecThing/Startup.cs deleted file mode 100644 index 7003fc2b..00000000 --- a/ProjecThing/Startup.cs +++ /dev/null @@ -1,197 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.HttpsPolicy; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Net; -using System.Text; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.AspNetCore.DataProtection; -using ProjecThing.Models; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Http.Connections; -using Microsoft.AspNetCore.Identity; -using Microsoft.AspNetCore.Localization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; -using Microsoft.IdentityModel.Tokens; -using ProjecThing.Data; -using Microsoft.AspNetCore.Authentication.Negotiate; -using Microsoft.AspNetCore.HttpOverrides; - -namespace ProjecThing -{ - public class Startup - { - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } - - public IConfiguration Configuration { get; } - - public void ConfigureServices(IServiceCollection services) - { - services.Configure(options => - { - options.CheckConsentNeeded = context => true; - options.MinimumSameSitePolicy = SameSiteMode.None; - }); - - //services.Configure(options => - //{ - // options.KnownProxies.Add(IPAddress.Parse("192.168.111.78")); - //}); - - // Database connection - string connectionString = Configuration.GetConnectionString("DataConnection"); - services.AddDbContext(options => options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString))); - //services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("DataConnection"))); - - // Session - services.AddSession(options => - { - options.IdleTimeout = TimeSpan.FromHours(3); - options.Cookie.HttpOnly = true; - options.Cookie.IsEssential = true; - options.Cookie.MaxAge = TimeSpan.FromHours(3); - }); - - // JWT - services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options => - { - options.SaveToken = true; - options.TokenValidationParameters = new TokenValidationParameters - { - ValidateIssuer = true, - ValidateAudience = true, - ValidateLifetime = true, - ValidateIssuerSigningKey = true, - ValidIssuer = "ProjecThing", - ValidAudience = "Android", - IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("!Appli$cation#9999#!")) - }; - }); - - // Identity - services.AddIdentity().AddEntityFrameworkStores().AddDefaultTokenProviders(); - - services.AddRazorPages(options => - { - //options.Conventions.AddPageRoute("/Administration/Users", "/AdministrationUsers"); - }).AddRazorRuntimeCompilation(); - - //services.Configure(options => - //{ - // options.ForwardedHeaders = - // ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; - // options.KnownProxies.Add(IPAddress.Parse("192.168.111.78")); - // //options.ForwardedForHeaderName = "X-Forwarded-For-My-Custom-Header-Name"; - //}); - - services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN"); - - services.Configure(options => - { - // Password settings - options.Password.RequireDigit = true; - options.Password.RequireLowercase = true; - options.Password.RequireNonAlphanumeric = true; - options.Password.RequireUppercase = true; - options.Password.RequiredLength = 8; - options.Password.RequiredUniqueChars = 1; - - // Lockout settings - options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5); - options.Lockout.MaxFailedAccessAttempts = 3; - options.Lockout.AllowedForNewUsers = true; - - // User settings - options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - options.User.RequireUniqueEmail = true; - }); - - services.ConfigureApplicationCookie(options => - { - // Cookie - options.Cookie.MaxAge = TimeSpan.FromHours(3); - options.Cookie.HttpOnly = true; - options.SlidingExpiration = true; - options.Cookie.SecurePolicy = CookieSecurePolicy.None;//Samo unencripted na locas - - options.LoginPath = $"/User/Login"; - options.LogoutPath = $"/User/Logout"; - options.AccessDeniedPath = $"/"; - options.ExpireTimeSpan = TimeSpan.FromHours(3);//Povecano na 15min - }); - - services.AddDistributedMemoryCache(); - - services.Configure(options => - { - options.AutomaticAuthentication = false; - }); - - services.AddDataProtection().SetApplicationName("ProjecThing").PersistKeysToFileSystem(new DirectoryInfo(@"Keys/")); - - //services.AddHttpsRedirection(options => - //{ - // options.RedirectStatusCode = (int)HttpStatusCode.PermanentRedirect; - // options.HttpsPort = 443; - //}); - } - - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - //app.UseForwardedHeaders(); - } - else - { - app.UseExceptionHandler("/Error"); - //app.UseForwardedHeaders(); - app.UseHsts(); - } - - //app.UseForwardedHeaders(new ForwardedHeadersOptions - //{ - // ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto - //}); - - - var defaultCulture = new CultureInfo("sl-SI"); - var localizationOptions = new RequestLocalizationOptions - { - DefaultRequestCulture = new RequestCulture(defaultCulture), - SupportedCultures = new List { defaultCulture }, - SupportedUICultures = new List { defaultCulture } - }; - app.UseRequestLocalization(localizationOptions); - - //app.UseHttpsRedirection(); - app.UseStaticFiles(); - app.UseCookiePolicy(); - - app.UseRouting(); - app.UseAuthentication(); - app.UseAuthorization(); - - app.UseSession(); - - app.UseEndpoints(endpoints => - { - endpoints.MapRazorPages(); - endpoints.MapControllers(); - }); - } - } -}