diff --git a/EveryThing/Data/ApplicationDbContext.cs b/EveryThing/Data/ApplicationDbContext.cs index c293f50..371aa93 100644 --- a/EveryThing/Data/ApplicationDbContext.cs +++ b/EveryThing/Data/ApplicationDbContext.cs @@ -1,4 +1,4 @@ -using System; + using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -52,6 +52,8 @@ namespace EveryThing.Data public DbSet CodeTableItems { get; set; } public DbSet Invoices { get; set; } public DbSet InvoiceItems { get; set; } + public DbSet CodeTableOperations { get; set; } + public DbSet ProjectPartItemOperations { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { @@ -125,6 +127,20 @@ namespace EveryThing.Data modelBuilder.Entity().HasMany(t => t.ItemProjectPartItemMaterial).WithOne(t => t.Material).OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity().HasMany(t => t.InvoiceInvoiceItem).WithOne(t => t.Invoice).OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity().HasMany(t => t.Invoices).WithOne(t => t.Project).OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(t => t.Operation) + .WithMany(t => t.ProjectPartItemOperation) + .HasForeignKey(t => t.IdCodeTableOperationFk) + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(t => t.ProjectPartItem) + .WithMany(t => t.ProjectPartItemOperation) + .HasForeignKey(t => t.IdProjectPartItemFk) + .OnDelete(DeleteBehavior.Restrict); + + //modelBuilder.Entity().HasMany(t => t.ProjectPartItemOperations).WithMany(t => t.Operation).OnDelete(DeleteBehavior.Restrict); } } } diff --git a/EveryThing/Migrations/20260228075857_17.Designer.cs b/EveryThing/Migrations/20260228075857_17.Designer.cs new file mode 100644 index 0000000..cec2537 --- /dev/null +++ b/EveryThing/Migrations/20260228075857_17.Designer.cs @@ -0,0 +1,2525 @@ +// +using System; +using EveryThing.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace EveryThing.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20260228075857_17")] + partial class _17 + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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("EveryThing.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.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("EveryThing.Models.CodeTable.CodeTableCompany", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCountry", "Country") + .WithMany("CountryCompany") + .HasForeignKey("IdCountryFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Country"); + }); + + modelBuilder.Entity("EveryThing.Models.CodeTable.CodeTableDepartement", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyDepartement") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("EveryThing.Models.CodeTable.CodeTableEmployee", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableEmployee", "Gender") + .WithMany() + .HasForeignKey("GenderIdEmployee") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTableCountry", "Citizenship") + .WithMany("CountryEmployeeCitizenship") + .HasForeignKey("IdCitizenshipFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyEmployee") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTableCountry", "Country") + .WithMany("CountryEmployeeCountry") + .HasForeignKey("IdCountryFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTableDepartement", "Departement") + .WithMany("DepartementEmployee") + .HasForeignKey("IdDepartementFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTableJob", "Job") + .WithMany("JobEmployee") + .HasForeignKey("IdJobFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("EveryThing.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("EveryThing.Models.CodeTable.CodeTableItem", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyItem") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("EveryThing.Models.CodeTable.CodeTableJob", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyJob") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("EveryThing.Models.CodeTable.CodeTablePartner", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyPartner") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTableCountry", "Country") + .WithMany("CountryPartner") + .HasForeignKey("IdCountryFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Company"); + + b.Navigation("Country"); + }); + + modelBuilder.Entity("EveryThing.Models.CodeTable.CodeTablePrePostText", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyPrePostText") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("EveryThing.Models.Document", b => + { + b.HasOne("EveryThing.Models.DocumentType", "DocumentType") + .WithMany("DocumentTypeDocument") + .HasForeignKey("IdDocumentTypeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DocumentType"); + }); + + modelBuilder.Entity("EveryThing.Models.DocumentType", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany() + .HasForeignKey("IdCompanyFk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("EveryThing.Models.File", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyFile") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("EveryThing.Models.GeneralNote", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyNote") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeNote") + .HasForeignKey("IdEmployeeFk"); + + b.HasOne("EveryThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleNote") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Company"); + + b.Navigation("Employee"); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("EveryThing.Models.IdentityApplicationUser", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyIdentityApplicationUser") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("EveryThing.Models.Invoice.Invoice", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyInvoice") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTablePartner", "Partner") + .WithMany("Invoice") + .HasForeignKey("IdPartnerFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.Project.Project", "Project") + .WithMany("Invoices") + .HasForeignKey("IdProjectFk") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Company"); + + b.Navigation("Partner"); + + b.Navigation("Project"); + }); + + modelBuilder.Entity("EveryThing.Models.Invoice.InvoiceItem", b => + { + b.HasOne("EveryThing.Models.Invoice.Invoice", "Invoice") + .WithMany("InvoiceInvoiceItem") + .HasForeignKey("IdInvoiceFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("EveryThing.Models.Invoice.InvoiceItem", "InvoiceItemJoin") + .WithMany() + .HasForeignKey("IdInvoiceItemJoinFk"); + + b.HasOne("EveryThing.Models.CodeTable.CodeTableItem", "Item") + .WithMany("InvoiceItem") + .HasForeignKey("IdItemFk"); + + b.HasOne("EveryThing.Models.Project.ProjectPartItem", "ProjectPartItem") + .WithMany("InvoiceItem") + .HasForeignKey("IdProjectPartItem"); + + b.Navigation("Invoice"); + + b.Navigation("InvoiceItemJoin"); + + b.Navigation("Item"); + + b.Navigation("ProjectPartItem"); + }); + + modelBuilder.Entity("EveryThing.Models.Project.Project", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyProject") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTablePartner", "Partner") + .WithMany("PartnerProject") + .HasForeignKey("IdPartnerFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + + b.Navigation("Partner"); + }); + + modelBuilder.Entity("EveryThing.Models.Project.ProjectPart", b => + { + b.HasOne("EveryThing.Models.Project.Project", "Project") + .WithMany("ProjectProjectPart") + .HasForeignKey("IdProjectFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Project"); + }); + + modelBuilder.Entity("EveryThing.Models.Project.ProjectPartItem", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableItem", "Item") + .WithMany("ItemProjectPartItem") + .HasForeignKey("IdItemFk") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("EveryThing.Models.CodeTable.CodeTableItem", "Material") + .WithMany("ItemProjectPartItemMaterial") + .HasForeignKey("IdMaterialFk") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("EveryThing.Models.CodeTable.CodeTablePartner", "MaterialSupplier") + .WithMany("PartnerProjectPartItem") + .HasForeignKey("IdMaterialSupplierFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.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("EveryThing.Models.Project.ProjectPartItemOperation", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableOperation", "Operation") + .WithMany("ProjectPartItemOperation") + .HasForeignKey("IdCodeTableOperationFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("EveryThing.Models.Project.ProjectPartItem", "ProjectPartItem") + .WithMany("ProjectPartItemOperation") + .HasForeignKey("IdProjectPartItemFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Operation"); + + b.Navigation("ProjectPartItem"); + }); + + modelBuilder.Entity("EveryThing.Models.Transport.TransportLoadingOrder", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyTransportLoadingOrder") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTablePartner", "Partner") + .WithMany("PartnerTransportLoadingOrder") + .HasForeignKey("IdPartnerFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleTransportLoadingOrder") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Company"); + + b.Navigation("Partner"); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("EveryThing.Models.Transport.TransportLoadingOrderLoadUnload", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTablePartner", "Loading") + .WithMany("PartnerTransportLoadingOrderLoad") + .HasForeignKey("IdLoadingFk"); + + b.HasOne("EveryThing.Models.Transport.TransportLoadingOrder", "TransportLoadingOrder") + .WithMany("TransportLoadingOrderLoadUnload") + .HasForeignKey("IdTransportLoadingOrderFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTablePartner", "Unloading") + .WithMany("PartnerTransportLoadingOrderUnload") + .HasForeignKey("IdUnloadingFk"); + + b.Navigation("Loading"); + + b.Navigation("TransportLoadingOrder"); + + b.Navigation("Unloading"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.Vehicle", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicle") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTableDepartement", "Departement") + .WithMany("DepartementVehicle") + .HasForeignKey("IdDepartementFk"); + + b.HasOne("EveryThing.Models.Vehicle.VehicleFuelType", "VehicleFuelType") + .WithMany("VehicleFuelTypeVehicle") + .HasForeignKey("IdFuelTypeFk"); + + b.HasOne("EveryThing.Models.Vehicle.VehicleMake", "VehicleMake") + .WithMany("VehicleMakeVehicle") + .HasForeignKey("IdMakeFk"); + + b.HasOne("EveryThing.Models.Vehicle.VehicleGroup", "VehicleGroup") + .WithMany("VehicleGroupVehicle") + .HasForeignKey("IdVehicleGroupFk"); + + b.HasOne("EveryThing.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("EveryThing.Models.Vehicle.VehicleBreakdown", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeVehicleBreakdown") + .HasForeignKey("EmployeeIdEmployee"); + + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicleBreakdown") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleDrive", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeVehicleDrive") + .HasForeignKey("IdEmployeeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleVehicleDrive") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleDriver", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeVehicleDriver") + .HasForeignKey("IdEmployeeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleVehicleDriver") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleFueling", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCountry", "Country") + .WithMany("CountryVehicleFueling") + .HasForeignKey("IdCountryFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeVehicleFueling") + .HasForeignKey("IdEmployeeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleVehicleFueling") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("EveryThing.Models.Vehicle.VehicleFuelType", "VehicleFuelType") + .WithMany("VehicleFuelTypeVehicleFueling") + .HasForeignKey("IdVehicleFuelTypeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.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("EveryThing.Models.Vehicle.VehicleFuelingCard", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicleFuelingCard") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleFuelType", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicleFuelType") + .HasForeignKey("IdCompanyFk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleGroup", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicleGroup") + .HasForeignKey("IdCompanyFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleIncident", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeIncident") + .HasForeignKey("IdEmployeeFk") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleVehicleIncident") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleIssue", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableEmployee", "Employee") + .WithMany("EmployeeIssue") + .HasForeignKey("IdEmployeeFk"); + + b.HasOne("EveryThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleVehicleIssue") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleMake", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicleMake") + .HasForeignKey("IdCompanyFk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleMeterReading", b => + { + b.HasOne("EveryThing.Models.Vehicle.Vehicle", "Vehicle") + .WithMany("VehicleVehicleMeterReading") + .HasForeignKey("IdVehicleFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Vehicle"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleType", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") + .WithMany("CompanyVehicleType") + .HasForeignKey("IdCompanyFk"); + + b.Navigation("Company"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("EveryThing.Models.IdentityApplicationRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("EveryThing.Models.IdentityApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("EveryThing.Models.IdentityApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("EveryThing.Models.IdentityApplicationRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("EveryThing.Models.IdentityApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("EveryThing.Models.IdentityApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("EveryThing.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("EveryThing.Models.CodeTable.CodeTableCountry", b => + { + b.Navigation("CountryCompany"); + + b.Navigation("CountryEmployeeCitizenship"); + + b.Navigation("CountryEmployeeCountry"); + + b.Navigation("CountryEmployeeTemporaryCountry"); + + b.Navigation("CountryPartner"); + + b.Navigation("CountryVehicleFueling"); + }); + + modelBuilder.Entity("EveryThing.Models.CodeTable.CodeTableDepartement", b => + { + b.Navigation("DepartementEmployee"); + + b.Navigation("DepartementVehicle"); + }); + + modelBuilder.Entity("EveryThing.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("EveryThing.Models.CodeTable.CodeTableItem", b => + { + b.Navigation("InvoiceItem"); + + b.Navigation("ItemProjectPartItem"); + + b.Navigation("ItemProjectPartItemMaterial"); + }); + + modelBuilder.Entity("EveryThing.Models.CodeTable.CodeTableJob", b => + { + b.Navigation("JobEmployee"); + }); + + modelBuilder.Entity("EveryThing.Models.CodeTable.CodeTableOperation", b => + { + b.Navigation("ProjectPartItemOperation"); + }); + + modelBuilder.Entity("EveryThing.Models.CodeTable.CodeTablePartner", b => + { + b.Navigation("Invoice"); + + b.Navigation("PartnerProject"); + + b.Navigation("PartnerProjectPartItem"); + + b.Navigation("PartnerTransportLoadingOrder"); + + b.Navigation("PartnerTransportLoadingOrderLoad"); + + b.Navigation("PartnerTransportLoadingOrderUnload"); + }); + + modelBuilder.Entity("EveryThing.Models.DocumentType", b => + { + b.Navigation("DocumentTypeDocument"); + }); + + modelBuilder.Entity("EveryThing.Models.Invoice.Invoice", b => + { + b.Navigation("InvoiceInvoiceItem"); + }); + + modelBuilder.Entity("EveryThing.Models.Project.Project", b => + { + b.Navigation("Invoices"); + + b.Navigation("ProjectProjectPart"); + }); + + modelBuilder.Entity("EveryThing.Models.Project.ProjectPart", b => + { + b.Navigation("ProjectPartProjectPartItem"); + }); + + modelBuilder.Entity("EveryThing.Models.Project.ProjectPartItem", b => + { + b.Navigation("InvoiceItem"); + + b.Navigation("ProjectPartItemOperation"); + }); + + modelBuilder.Entity("EveryThing.Models.Transport.TransportLoadingOrder", b => + { + b.Navigation("TransportLoadingOrderLoadUnload"); + }); + + modelBuilder.Entity("EveryThing.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("EveryThing.Models.Vehicle.VehicleFuelingCard", b => + { + b.Navigation("VehicleFuelingCardVehicleFueling"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleFuelType", b => + { + b.Navigation("VehicleFuelTypeVehicle"); + + b.Navigation("VehicleFuelTypeVehicleFueling"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleGroup", b => + { + b.Navigation("VehicleGroupVehicle"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleMake", b => + { + b.Navigation("VehicleMakeVehicle"); + }); + + modelBuilder.Entity("EveryThing.Models.Vehicle.VehicleType", b => + { + b.Navigation("VehicleTypeVehicle"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/EveryThing/Migrations/20260228075857_17.cs b/EveryThing/Migrations/20260228075857_17.cs new file mode 100644 index 0000000..3da59a1 --- /dev/null +++ b/EveryThing/Migrations/20260228075857_17.cs @@ -0,0 +1,140 @@ +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace EveryThing.Migrations +{ + public partial class _17 : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Invoices_Projects_ProjectIdProject", + table: "Invoices"); + + migrationBuilder.DropIndex( + name: "IX_Invoices_ProjectIdProject", + table: "Invoices"); + + migrationBuilder.DropColumn( + name: "ProjectIdProject", + table: "Invoices"); + + migrationBuilder.AddColumn( + name: "Note", + table: "ProjectPartItems", + type: "longtext", + nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "CodeTableOperations", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Title = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Default = table.Column(type: "tinyint(1)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CodeTableOperations", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "ProjectPartItemOperations", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + IdProjectPartItemFk = table.Column(type: "int", nullable: false), + IdCodeTableOperationFk = table.Column(type: "int", nullable: false), + Finished = table.Column(type: "tinyint(1)", nullable: false), + Order = table.Column(type: "smallint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ProjectPartItemOperations", x => x.Id); + table.ForeignKey( + name: "FK_ProjectPartItemOperations_CodeTableOperations_IdCodeTableOpe~", + column: x => x.IdCodeTableOperationFk, + principalTable: "CodeTableOperations", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_ProjectPartItemOperations_ProjectPartItems_IdProjectPartItem~", + column: x => x.IdProjectPartItemFk, + principalTable: "ProjectPartItems", + principalColumn: "IdProjectPartItem", + onDelete: ReferentialAction.Restrict); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_Invoices_IdProjectFk", + table: "Invoices", + column: "IdProjectFk"); + + migrationBuilder.CreateIndex( + name: "IX_ProjectPartItemOperations_IdCodeTableOperationFk", + table: "ProjectPartItemOperations", + column: "IdCodeTableOperationFk"); + + migrationBuilder.CreateIndex( + name: "IX_ProjectPartItemOperations_IdProjectPartItemFk", + table: "ProjectPartItemOperations", + column: "IdProjectPartItemFk"); + + migrationBuilder.AddForeignKey( + name: "FK_Invoices_Projects_IdProjectFk", + table: "Invoices", + column: "IdProjectFk", + principalTable: "Projects", + principalColumn: "IdProject", + onDelete: ReferentialAction.Restrict); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Invoices_Projects_IdProjectFk", + table: "Invoices"); + + migrationBuilder.DropTable( + name: "ProjectPartItemOperations"); + + migrationBuilder.DropTable( + name: "CodeTableOperations"); + + migrationBuilder.DropIndex( + name: "IX_Invoices_IdProjectFk", + table: "Invoices"); + + migrationBuilder.DropColumn( + name: "Note", + table: "ProjectPartItems"); + + migrationBuilder.AddColumn( + name: "ProjectIdProject", + table: "Invoices", + type: "int", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_Invoices_ProjectIdProject", + table: "Invoices", + column: "ProjectIdProject"); + + migrationBuilder.AddForeignKey( + name: "FK_Invoices_Projects_ProjectIdProject", + table: "Invoices", + column: "ProjectIdProject", + principalTable: "Projects", + principalColumn: "IdProject", + onDelete: ReferentialAction.Restrict); + } + } +} diff --git a/EveryThing/Migrations/ApplicationDbContextModelSnapshot.cs b/EveryThing/Migrations/ApplicationDbContextModelSnapshot.cs index c7b76f5..c3bee70 100644 --- a/EveryThing/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/EveryThing/Migrations/ApplicationDbContextModelSnapshot.cs @@ -318,6 +318,24 @@ namespace EveryThing.Migrations b.ToTable("CodeTableJobs"); }); + modelBuilder.Entity("EveryThing.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("EveryThing.Models.CodeTable.CodeTablePartner", b => { b.Property("IdPartner") @@ -713,9 +731,6 @@ namespace EveryThing.Migrations b.Property("PreText") .HasColumnType("longtext"); - b.Property("ProjectIdProject") - .HasColumnType("int"); - b.Property("State") .HasColumnType("int"); @@ -728,7 +743,7 @@ namespace EveryThing.Migrations b.HasIndex("IdPartnerFk"); - b.HasIndex("ProjectIdProject"); + b.HasIndex("IdProjectFk"); b.ToTable("Invoices"); }); @@ -900,6 +915,9 @@ namespace EveryThing.Migrations b.Property("MaterialPrice") .HasColumnType("float"); + b.Property("Note") + .HasColumnType("longtext"); + b.Property("NumberOfItems") .HasColumnType("float"); @@ -937,6 +955,33 @@ namespace EveryThing.Migrations b.ToTable("ProjectPartItems"); }); + modelBuilder.Entity("EveryThing.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("EveryThing.Models.Transport.TransportLoadingOrder", b => { b.Property("IdTransportLoadingOrder") @@ -1823,7 +1868,7 @@ namespace EveryThing.Migrations b.HasOne("EveryThing.Models.Project.Project", "Project") .WithMany("Invoices") - .HasForeignKey("ProjectIdProject") + .HasForeignKey("IdProjectFk") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Company"); @@ -1925,6 +1970,25 @@ namespace EveryThing.Migrations b.Navigation("ProjectPart"); }); + modelBuilder.Entity("EveryThing.Models.Project.ProjectPartItemOperation", b => + { + b.HasOne("EveryThing.Models.CodeTable.CodeTableOperation", "Operation") + .WithMany("ProjectPartItemOperation") + .HasForeignKey("IdCodeTableOperationFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("EveryThing.Models.Project.ProjectPartItem", "ProjectPartItem") + .WithMany("ProjectPartItemOperation") + .HasForeignKey("IdProjectPartItemFk") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Operation"); + + b.Navigation("ProjectPartItem"); + }); + modelBuilder.Entity("EveryThing.Models.Transport.TransportLoadingOrder", b => { b.HasOne("EveryThing.Models.CodeTable.CodeTableCompany", "Company") @@ -2354,6 +2418,11 @@ namespace EveryThing.Migrations b.Navigation("JobEmployee"); }); + modelBuilder.Entity("EveryThing.Models.CodeTable.CodeTableOperation", b => + { + b.Navigation("ProjectPartItemOperation"); + }); + modelBuilder.Entity("EveryThing.Models.CodeTable.CodeTablePartner", b => { b.Navigation("Invoice"); @@ -2394,6 +2463,8 @@ namespace EveryThing.Migrations modelBuilder.Entity("EveryThing.Models.Project.ProjectPartItem", b => { b.Navigation("InvoiceItem"); + + b.Navigation("ProjectPartItemOperation"); }); modelBuilder.Entity("EveryThing.Models.Transport.TransportLoadingOrder", b => diff --git a/EveryThing/Models/CodeTable/CodeTableOperation.cs b/EveryThing/Models/CodeTable/CodeTableOperation.cs new file mode 100644 index 0000000..1c49411 --- /dev/null +++ b/EveryThing/Models/CodeTable/CodeTableOperation.cs @@ -0,0 +1,23 @@ +using EveryThing.Models.Project; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EveryThing.Models.CodeTable +{ + public class CodeTableOperation + { + [Key] + public int Id { get; set; } + + [Required] + [Display(Name = "Naziv")] + public string Title { get; set; } + + [Display(Name = "Privzeta operacija")] + public bool Default { get; set; } + + [InverseProperty("Operation")] + public virtual ICollection ProjectPartItemOperation { get; set; } + } +} diff --git a/EveryThing/Models/Invoice/Invoice.cs b/EveryThing/Models/Invoice/Invoice.cs index f597f1f..632ed01 100644 --- a/EveryThing/Models/Invoice/Invoice.cs +++ b/EveryThing/Models/Invoice/Invoice.cs @@ -77,7 +77,7 @@ namespace EveryThing.Models.Invoice [Display(Name = "Partner")] public int? IdPartnerFk { get; set; } - [ForeignKey("Projekt")] + [ForeignKey("Project")] [Display(Name = "Projekt")] public int? IdProjectFk { get; set; } @@ -146,7 +146,7 @@ namespace EveryThing.Models.Invoice public CodeTableCompany Company { get; set; } public CodeTablePartner Partner { get; set; } - public Project.Project Project{ get; set; } + public Project.Project Project { get; set; } // InvoicePart [InverseProperty("Invoice")] diff --git a/EveryThing/Models/Project/ProjectPartItem.cs b/EveryThing/Models/Project/ProjectPartItem.cs index 045dda6..42255a2 100644 --- a/EveryThing/Models/Project/ProjectPartItem.cs +++ b/EveryThing/Models/Project/ProjectPartItem.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Threading.Tasks; using EveryThing.Models.CodeTable; using EveryThing.Models.Invoice; +using JetBrains.Annotations; namespace EveryThing.Models.Project { @@ -161,6 +162,9 @@ namespace EveryThing.Models.Project [Display(Name = "Spremenjeno")] public DateTime DateModified { get; set; } = DateTime.Now; + [Display(Name = "Opomba")] + public string Note { get; set; } = ""; + [Required] public int ProjectPartItemNumber { get; set; } = 0; @@ -177,5 +181,8 @@ namespace EveryThing.Models.Project //Invoice item [InverseProperty("ProjectPartItem")] public virtual ICollection InvoiceItem { get; set; } + + [InverseProperty("ProjectPartItem")] + public virtual ICollection ProjectPartItemOperation { get; set; } } } diff --git a/EveryThing/Models/Project/ProjectPartItemOperation.cs b/EveryThing/Models/Project/ProjectPartItemOperation.cs new file mode 100644 index 0000000..ae7b233 --- /dev/null +++ b/EveryThing/Models/Project/ProjectPartItemOperation.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using EveryThing.Models.CodeTable; + +namespace EveryThing.Models.Project +{ + public class ProjectPartItemOperation + { + [Key] + public int Id { get; set; } + + [Required] + [ForeignKey("ProjectPartItem")] + public int IdProjectPartItemFk { get; set; } + + [Required] + [ForeignKey("Operation")] + public int IdCodeTableOperationFk { get; set; } + + [Required] + public bool Finished { get; set; } + + [Required] + public short Order { get; set; } + + + public CodeTableOperation Operation { get; set; } + public ProjectPartItem ProjectPartItem { get; set; } + } +} diff --git a/EveryThing/Pages/CodeTableOperations/AddEditOperationModal.cshtml b/EveryThing/Pages/CodeTableOperations/AddEditOperationModal.cshtml new file mode 100644 index 0000000..f90536b --- /dev/null +++ b/EveryThing/Pages/CodeTableOperations/AddEditOperationModal.cshtml @@ -0,0 +1,32 @@ +@model EveryThing.Pages.CodeTableOperations.IndexModel.AddEditCodeTableOperation + + diff --git a/EveryThing/Pages/CodeTableOperations/Index.cshtml b/EveryThing/Pages/CodeTableOperations/Index.cshtml new file mode 100644 index 0000000..35f9ba6 --- /dev/null +++ b/EveryThing/Pages/CodeTableOperations/Index.cshtml @@ -0,0 +1,112 @@ +@page +@model EveryThing.Pages.CodeTableOperations.IndexModel + +@{ + ViewData["Title"] = "Index"; + Layout = "~/Pages/Layouts/_Layout.cshtml"; +} + +

+ + Operacije / Pregled + +

+ +
+
+
+
+ + +
+ +@* *@ +
+
+
+
+
+ +
+ +
+ Seznam operacij +
+ + + + + + + + + + + @foreach (var item in Model.Operation) + { + + + + + + } + +
+ @Html.DisplayNameFor(model => model.Operation[0].Title) + + @Html.DisplayNameFor(model => model.Operation[0].Default) +
+ @Html.DisplayFor(modelItem => item.Title) + + @Html.DisplayFor(modelItem => item.Default) + + + +
+ + +
+
+@Html.AntiForgeryToken() + +@section Scripts { + + + +} diff --git a/EveryThing/Pages/CodeTableOperations/Index.cshtml.cs b/EveryThing/Pages/CodeTableOperations/Index.cshtml.cs new file mode 100644 index 0000000..f19e50c --- /dev/null +++ b/EveryThing/Pages/CodeTableOperations/Index.cshtml.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.EntityFrameworkCore; +using EveryThing.Data; +using EveryThing.Models; +using EveryThing.Models.CodeTable; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Authorization; +using Microsoft.VisualStudio.Debugger.Contracts; +using System.Globalization; + +namespace EveryThing.Pages.CodeTableOperations +{ + [Authorize(Roles = "Administrator,InvoicingUser,ProjecThingUser")] + public class IndexModel : PageModel + { + public class AddEditCodeTableOperation + { + public CodeTableOperation Operation { get; set; } + public bool Edit { get; set; } + public int IdCodeTableOperation { get; set; } + } + + private readonly ApplicationDbContext _context; + private readonly UserManager _userManager; + private readonly SignInManager _loginManager; + private readonly RoleManager _roleManager; + + public IndexModel(ApplicationDbContext context, UserManager userManager, SignInManager loginManager, RoleManager roleManager) + { + _context = context; + _userManager = userManager; + _loginManager = loginManager; + _roleManager = roleManager; + } + + public IList Operation { get; set; } + + public async Task OnGetAsync(string searchString) + { + var user = _userManager.GetUserAsync(User).Result; + + ViewData["SearchString"] = searchString ?? ""; + + var search = !string.IsNullOrEmpty(searchString); + var query = _context.CodeTableOperations.AsQueryable(); + + if (search) + { + query = query.Where(x => EF.Functions.Like(x.Title, $"%{searchString}%")); + } + + Operation = await query + .OrderByDescending(x => x.Id) + .Take(100) + .ToListAsync(); + } + + public IActionResult OnGetCodeTableOperationModal(bool edit, int idCodeTableOperation) + { + CodeTableOperation operation = null; + + if (edit) + { + operation = _context.CodeTableOperations + .FirstOrDefault(x => x.Id == idCodeTableOperation); + } + + operation ??= new CodeTableOperation(); + + return Partial("AddEditOperationModal", new AddEditCodeTableOperation + { + Operation = operation, + Edit = edit, + IdCodeTableOperation = idCodeTableOperation + }); + } + + public IActionResult OnPostCodeTableOperation(string title, bool defaultValue, bool edit, int idCodeTableOperation) + { + var successful = true; + var error = ""; + + if (edit) + { + var operation = _context.CodeTableOperations + .FirstOrDefault(x => x.Id == idCodeTableOperation); + + if (operation != null) + { + operation.Title = title; + operation.Default = defaultValue; + + _context.SaveChanges(); + } + else + { + successful = false; + error = $"Code-table operation with ID: {idCodeTableOperation} not found"; + } + } + else + { + var operation = new CodeTableOperation + { + Title = title, + Default = defaultValue + }; + _context.CodeTableOperations.Add(operation); + _context.SaveChanges(); + + idCodeTableOperation = operation.Id; + } + + return new JsonResult(new { idCodeTableOperation, error, successful }); + } + + public IActionResult OnGetCodeTableOperation(int idCodeTableOperation) + { + var successful = true; + var error = ""; + var inUse = false; + + var operation = _context.CodeTableOperations + .Include(x => x.ProjectPartItemOperation) + .FirstOrDefault(x => x.Id == idCodeTableOperation); + + if (operation == null) + { + successful = false; + error = $"Code-table operation with ID: {idCodeTableOperation} not found"; + } + else + { + inUse = operation.ProjectPartItemOperation != null && operation.ProjectPartItemOperation.Count > 0; + operation.ProjectPartItemOperation = null; + } + + return new JsonResult(new { operation, error, successful, inUse }); + } + + public IActionResult OnDeleteCodeTableOperation(int idCodeTableOperation) + { + var successful = true; + var error = ""; + + var operation = _context.CodeTableOperations + .FirstOrDefault(x => x.Id == idCodeTableOperation); + + if (operation != null) + { + _context.CodeTableOperations.Remove(operation); + _context.SaveChanges(); + } + else + { + successful = false; + error = $"Code-table operation with ID: {idCodeTableOperation} not found"; + } + + return new JsonResult(new { idCodeTableOperation, error, successful }); + } + } +} diff --git a/EveryThing/Pages/Layouts/Partials/_LayoutSidenav.cshtml b/EveryThing/Pages/Layouts/Partials/_LayoutSidenav.cshtml index 6af2429..32cede9 100644 --- a/EveryThing/Pages/Layouts/Partials/_LayoutSidenav.cshtml +++ b/EveryThing/Pages/Layouts/Partials/_LayoutSidenav.cshtml @@ -74,50 +74,12 @@
Kooperacije
} - @*
  • -
    Planiranje
    -
  • - -
  • -
    Prevoznice
    -
  • *@ - - @*
  • -
  • VOZNI PARK
  • - -
  • -
    Delovni nalogi
    -
  • - -
  • -
    Servisi
    -
  • - -
  • -
    Pregledi
    -
  • - -
  • -
    Napake
    -
  • - -
  • -
    Gorivo
    -
  • *@ @if (User.IsInRole("Administrator") || User.IsInRole("ProjecThingUser") || User.IsInRole("InvoicingUser") || User.IsInRole("TransportThingUser")) {
  • ŠIFRANTI
  • - @*
  • -
    Zaposleni
    -
  • *@ - - @*
  • -
    Vozni park
    -
  • *@ -
  • Partnerji
  • @@ -126,6 +88,9 @@
  • Artikli
  • +
  • +
    Operacije
    +
  • } @if (User.IsInRole("Administrator") || User.IsInRole("TransportThingUser")) { diff --git a/EveryThing/Pages/Projects/CreateEditPartItem.cshtml b/EveryThing/Pages/Projects/CreateEditPartItem.cshtml index 2ccd9f3..61922dd 100644 --- a/EveryThing/Pages/Projects/CreateEditPartItem.cshtml +++ b/EveryThing/Pages/Projects/CreateEditPartItem.cshtml @@ -13,7 +13,7 @@

    - Projekt / + Projekt / @if ((bool)ViewData["Edit"]) {  Urejanje pozicije dela projekta @@ -22,7 +22,7 @@ {  Nova pozicija dela projekta } - +

    @@ -46,9 +46,11 @@
    -
    -
    +
    +
    +
    +
    @@ -76,11 +78,11 @@
    -
    -
    +
    +
    -
    +
    @@ -153,6 +155,15 @@
    + +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + Operacije +
    +
    + @if (ViewData["Edit"] != null && (bool)ViewData["Edit"]) + { +
    +
    + + +
    +
    + + +
    +
    + } + + + + + + + + + + + @foreach (var operation in Model.ProjectPartItemOperations) + { + + + + + + } + +
    NazivKončano
    + @Html.DisplayFor(modelItem => operation.Operation.Title) + + + + + + +
    +
    +
    + +
    +
    + Kooperacije +
    +
    + + + + + + + + + + @foreach (var item in Model.CooperationInvoiceItems) + { + + + + + + } + +
    ŠtevilkaPartner
    @item.Invoice.InvoiceNumberFormatted@item.Invoice.Partner?.Title + + +
    +
    +
    +
    @@ -246,5 +337,209 @@ location.replace(`CreateEditPartItem?idProjectPartItem=${idProjectPartItem}&idProject=${idProject}&idProjectPart=${idProjectPart}&edit=${edit}&idArticleCopyFrom=${idArticle}`); } + function moveOperation(idProjectPartItemOperation, direction, element) { + let row = $(element).closest('tr'); + $.ajax({ + type: "POST", + beforeSend: function(xhr) { + xhr.setRequestHeader("XSRF-TOKEN", + $('input:hidden[name="__RequestVerificationToken"]').val()); + }, + url: "CreateEditPartItem/?handler=MoveOperation", + data: { + idProjectPartItemOperation, + direction + }, + success: function(data) { + if (data.successful) { + if (direction === 'up') { + let prev = row.prev('tr'); + if (prev.length) { + row.insertBefore(prev); + } + } else { + let next = row.next('tr'); + if (next.length) { + row.insertAfter(next); + } + } + } + }, + error: function(xhr, ajaxOptions, thrownError) { + console.log(xhr); + alert(xhr.responseText); + } + }); + } + + function toggleOperationFinished(idProjectPartItemOperation, checkbox) { + $.ajax({ + type: "POST", + beforeSend: function(xhr) { + xhr.setRequestHeader("XSRF-TOKEN", + $('input:hidden[name="__RequestVerificationToken"]').val()); + }, + url: "CreateEditPartItem/?handler=ToggleProjectPartItemOperationFinished", + data: { + idProjectPartItemOperation + }, + success: function(data) { + if (!data.successful) { + Swal.fire('Napaka pri posodabljanju operacije', data.error, 'error'); + checkbox.checked = !checkbox.checked; + } + }, + error: function(xhr, ajaxOptions, thrownError) { + console.log(xhr); + alert(xhr.responseText); + checkbox.checked = !checkbox.checked; + } + }); + } + + function deleteProjectPartItemOperation(idProjectPartItemOperation, element) { + let row = $(element).closest('tr'); + Swal.fire({ + title: 'Izbrišem operacijo?', + text: "Tega dejanja ni možno razveljaviti!", + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Da, izbriši!', + cancelButtonText: 'Prekliči!' + }).then((result) => { + if (result.isConfirmed) { + $.ajax({ + type: "DELETE", + beforeSend: function(xhr) { + xhr.setRequestHeader("XSRF-TOKEN", + $('input:hidden[name="__RequestVerificationToken"]').val()); + }, + url: "CreateEditPartItem/?handler=ProjectPartItemOperation", + data: { + idProjectPartItemOperation + }, + success: function(data) { + if (data.successful) { + let operationName = row.find('td:first').text().trim(); + let operationId = row.data('idCodeTableOperation'); + $('#selProjectPartItemOperation').append($('').val(operationId).html(operationName)); + row.remove(); + $('#selProjectPartItemOperation').trigger('change'); + } else { + Swal.fire('Napaka pri brisanju operacije', data.error, 'error'); + } + }, + error: function(xhr, ajaxOptions, thrownError) { + console.log(xhr); + alert(xhr.responseText); + } + }); + } + }); + } + + function addDefaultOperations() { + let idProjectPartItem = parseInt($('#ProjectPartItem_IdProjectPartItem').val()); + if (isNaN(idProjectPartItem)) { + return; + } + + $.blockUI(); + $.ajax({ + type: "POST", + beforeSend: function(xhr) { + xhr.setRequestHeader("XSRF-TOKEN", + $('input:hidden[name="__RequestVerificationToken"]').val()); + }, + url: "CreateEditPartItem/?handler=AddDefaultOperations", + data: { + idProjectPartItem + }, + success: function(data) { + $.unblockUI(); + if (data.successful) { + $.each(data.operations, function(i, op) { + let row = ` + ${op.title} + + + + + + + + + `; + $('table.table tbody').append(row); + $('#selProjectPartItemOperation option[value="' + op.idCodeTableOperation + '"]').remove(); + }); + $('#selProjectPartItemOperation').trigger('change'); + } else { + Swal.fire('Napaka pri dodajanju privzetih operacij', data.error, 'error'); + } + }, + error: function(xhr, ajaxOptions, thrownError) { + console.log(xhr); + alert(xhr.responseText); + $.unblockUI(); + } + }); + } + + function addProjectPartItemOperation() { + let idProjectPartItem = parseInt($('#ProjectPartItem_IdProjectPartItem').val()); + let idCodeTableOperation = parseInt($('#selProjectPartItemOperation').val()); + + if (isNaN(idProjectPartItem) || isNaN(idCodeTableOperation)) { + Swal.fire('Izberite operacijo.'); + return; + } + + $.blockUI(); + $.ajax({ + type: "POST", + beforeSend: function(xhr) { + xhr.setRequestHeader("XSRF-TOKEN", + $('input:hidden[name="__RequestVerificationToken"]').val()); + }, + url: "CreateEditPartItem/?handler=ProjectPartItemOperation", + data: { + idProjectPartItem, + idCodeTableOperation + }, + success: function(data) { + $.unblockUI(); + if (data.successful){ + let id = data.idProjectPartItemOperation; + let row = ` + ${data.title} + + + + + + + + + `; + $('table.table tbody').append(row); + $('#selProjectPartItemOperation option[value="' + idCodeTableOperation + '"]').remove(); + $('#selProjectPartItemOperation').trigger('change'); + } else { + Swal.fire('Napaka pri dodajanju operacije', + data.error, + 'error'); + } + }, + error: function(xhr, ajaxOptions, thrownError) { + console.log(xhr); + alert(xhr.responseText); + $.unblockUI(); + } + }); + } + } diff --git a/EveryThing/Pages/Projects/CreateEditPartItem.cshtml.cs b/EveryThing/Pages/Projects/CreateEditPartItem.cshtml.cs index 00b9730..93d4cd0 100644 --- a/EveryThing/Pages/Projects/CreateEditPartItem.cshtml.cs +++ b/EveryThing/Pages/Projects/CreateEditPartItem.cshtml.cs @@ -11,6 +11,7 @@ using EveryThing.Data; using EveryThing.Models; using EveryThing.Models.CodeTable; using EveryThing.Models.Project; +using EveryThing.Models.Invoice; using Microsoft.EntityFrameworkCore; namespace EveryThing.Pages.Projects @@ -46,6 +47,8 @@ namespace EveryThing.Pages.Projects ViewData["IdMaterialSupplierFk"] = new SelectList(_context.CodeTablePartners .Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active && x.Supplier) .OrderBy(x => x.Title), "IdPartner", "Title"); + ViewData["IdCodeTableOperationFk"] = new SelectList(_context.CodeTableOperations + .OrderBy(x => x.Title), "Id", "Title"); ViewData["Edit"] = edit; @@ -55,11 +58,29 @@ namespace EveryThing.Pages.Projects .Include(x => x.ProjectPart) .ThenInclude(x => x.Project) .FirstOrDefault(x => x.IdProjectPartItem == idProjectPartItem); - + if (ProjectPartItem == null) { return NotFound(); } + + ProjectPartItemOperations = _context.ProjectPartItemOperations + .Include(x => x.Operation) + .Where(x => x.IdProjectPartItemFk == ProjectPartItem.IdProjectPartItem) + .OrderBy(x => x.Order) + .ToList(); + + var usedOperationIds = ProjectPartItemOperations.Select(x => x.IdCodeTableOperationFk).ToList(); + ViewData["IdCodeTableOperationFk"] = new SelectList(_context.CodeTableOperations + .Where(x => !usedOperationIds.Contains(x.Id)) + .OrderBy(x => x.Title), "Id", "Title"); + + CooperationInvoiceItems = _context.InvoiceItems + .Include(x => x.Invoice) + .ThenInclude(x => x.Partner) + .Where(x => x.IdProjectPartItem == ProjectPartItem.IdProjectPartItem + && x.Invoice.Type == Invoice.InvoiceType.Cooperation) + .ToList(); } else { @@ -68,6 +89,8 @@ namespace EveryThing.Pages.Projects NumberOfSets = 1, IdProjectPartFk = idProjectPart }; + ProjectPartItemOperations = new List(); + CooperationInvoiceItems = new List(); } if (idArticleCopyFrom != null) @@ -101,6 +124,10 @@ namespace EveryThing.Pages.Projects [BindProperty] public int IdProject { get; set; } + public IList ProjectPartItemOperations { get; set; } + + public IList CooperationInvoiceItems { get; set; } + public async Task OnPostAsync(bool edit) { if (!ModelState.IsValid) @@ -158,5 +185,149 @@ namespace EveryThing.Pages.Projects return new JsonResult(new { items = items }); } + + public IActionResult OnPostProjectPartItemOperation(int idProjectPartItem, int idCodeTableOperation) + { + var maxOrder = _context.ProjectPartItemOperations + .Where(x => x.IdProjectPartItemFk == idProjectPartItem) + .Select(x => (short?)x.Order) + .Max() ?? 0; + + var operation = new ProjectPartItemOperation + { + IdProjectPartItemFk = idProjectPartItem, + IdCodeTableOperationFk = idCodeTableOperation, + Finished = false, + Order = (short)(maxOrder + 1) + }; + + _context.ProjectPartItemOperations.Add(operation); + _context.SaveChanges(); + + var title = _context.CodeTableOperations + .Where(x => x.Id == idCodeTableOperation) + .Select(x => x.Title) + .FirstOrDefault(); + + return new JsonResult(new { successful = true, idProjectPartItemOperation = operation.Id, title }); + } + + public IActionResult OnPostToggleProjectPartItemOperationFinished(int idProjectPartItemOperation) + { + var successful = true; + var error = ""; + + var operation = _context.ProjectPartItemOperations + .FirstOrDefault(x => x.Id == idProjectPartItemOperation); + + if (operation != null) + { + operation.Finished = !operation.Finished; + _context.SaveChanges(); + } + else + { + successful = false; + error = $"Operation with ID: {idProjectPartItemOperation} not found"; + } + + return new JsonResult(new { successful, error, finished = operation?.Finished }); + } + + public IActionResult OnDeleteProjectPartItemOperation(int idProjectPartItemOperation) + { + var successful = true; + var error = ""; + + var operation = _context.ProjectPartItemOperations + .FirstOrDefault(x => x.Id == idProjectPartItemOperation); + + if (operation != null) + { + _context.ProjectPartItemOperations.Remove(operation); + _context.SaveChanges(); + } + else + { + successful = false; + error = $"Operation with ID: {idProjectPartItemOperation} not found"; + } + + return new JsonResult(new { successful, error, idProjectPartItemOperation }); + } + + public IActionResult OnPostAddDefaultOperations(int idProjectPartItem) + { + var existingOperationIds = _context.ProjectPartItemOperations + .Where(x => x.IdProjectPartItemFk == idProjectPartItem) + .Select(x => x.IdCodeTableOperationFk) + .ToList(); + + var defaultOperations = _context.CodeTableOperations + .Where(x => x.Default && !existingOperationIds.Contains(x.Id)) + .OrderBy(x => x.Title) + .ToList(); + + var added = new List(); + + var maxOrder = _context.ProjectPartItemOperations + .Where(x => x.IdProjectPartItemFk == idProjectPartItem) + .Select(x => (short?)x.Order) + .Max() ?? 0; + + foreach (var op in defaultOperations) + { + maxOrder++; + var newOp = new ProjectPartItemOperation + { + IdProjectPartItemFk = idProjectPartItem, + IdCodeTableOperationFk = op.Id, + Finished = false, + Order = maxOrder + }; + _context.ProjectPartItemOperations.Add(newOp); + _context.SaveChanges(); + + added.Add(new { idProjectPartItemOperation = newOp.Id, idCodeTableOperation = op.Id, title = op.Title }); + } + + return new JsonResult(new { successful = true, operations = added }); + } + + public IActionResult OnPostMoveOperation(int idProjectPartItemOperation, string direction) + { + var operation = _context.ProjectPartItemOperations + .FirstOrDefault(x => x.Id == idProjectPartItemOperation); + + if (operation == null) + return new JsonResult(new { successful = false, error = "Operation not found" }); + + ProjectPartItemOperation neighbor; + + if (direction == "up") + { + neighbor = _context.ProjectPartItemOperations + .Where(x => x.IdProjectPartItemFk == operation.IdProjectPartItemFk && x.Order < operation.Order) + .OrderByDescending(x => x.Order) + .FirstOrDefault(); + } + else + { + neighbor = _context.ProjectPartItemOperations + .Where(x => x.IdProjectPartItemFk == operation.IdProjectPartItemFk && x.Order > operation.Order) + .OrderBy(x => x.Order) + .FirstOrDefault(); + } + + if (neighbor == null) + return new JsonResult(new { successful = true }); + + var temp = operation.Order; + operation.Order = neighbor.Order; + neighbor.Order = temp; + _context.SaveChanges(); + + return new JsonResult(new { successful = true }); + } } } diff --git a/EveryThing/wwwroot/js/codeTableOperationHelper.js b/EveryThing/wwwroot/js/codeTableOperationHelper.js new file mode 100644 index 0000000..a704f9d --- /dev/null +++ b/EveryThing/wwwroot/js/codeTableOperationHelper.js @@ -0,0 +1,162 @@ +//ce jamra da ne najde post je treba dati @Html.AntiForgeryToken() v page +function codeTableOperationAddEdit(placeholderSelector, edit, idCodeTableOperation, onAddEdit, onCancel){ + $.blockUI(); + $.ajax({ + type: "GET", + url: "/CodeTableOperations/Index/?handler=CodeTableOperationModal", + data: { edit: edit, idCodeTableOperation: edit ? idCodeTableOperation : -1 }, + success: function(data) { + $.unblockUI(); + $(placeholderSelector).html(data); + if (edit){ + $('#modalAddEditCodeTableOperationTitle').html(`Urejanje operacije: ${$('#inpModalAddEditCodeTableOperationTitle').val()}`); + $('#btnModalAddEditCodeTableOperationConfirm').html('Shrani'); + } else { + $('#modalAddEditCodeTableOperationTitle').html('Dodajanje nove operacije'); + $('#btnModalAddEditCodeTableOperationConfirm').html('Dodaj'); + } + $('#btnModalAddEditCodeTableOperationConfirm').off(); + $('#btnModalAddEditCodeTableOperationCancel').off(); + + //Save to db + $('#btnModalAddEditCodeTableOperationConfirm').on('click', () =>{ + let title = $('#inpModalAddEditCodeTableOperationTitle').val(); + let defaultValue = $('#inpModalAddEditCodeTableOperationDefault').is(':checked'); + let edit = $('#inpModalAddEditCodeTableOperationEdit').val() === 'true'; + let idCodeTableOperation = parseInt($('#inpModalAddEditCodeTableOperationIdCodeTableOperation').val()); + + if (title === '' || title === null){ + Swal.fire('Zahtevano polje naziv!'); + return; + } + + $.blockUI(); + $.ajax({ + type: "POST", + beforeSend: function(xhr) { + xhr.setRequestHeader("XSRF-TOKEN", + $('input:hidden[name="__RequestVerificationToken"]').val()); + }, + url: "/CodeTableOperations/Index/?handler=CodeTableOperation", + data: { + title, + defaultValue, + edit, + idCodeTableOperation + }, + success: function(data) { + $.unblockUI(); + if (data.successful){ + $("#divModalAddEditCodeTableOperation").modal('hide'); + if (onAddEdit != null){ + onAddEdit(data.idCodeTableOperation); + } + } else { + Swal.fire('Napaka pri dodajanju/posodabljanju', + data.error, + 'error'); + } + + }, + error: function (xhr, ajaxOptions, thrownError) { + console.log(xhr); + alert(xhr.responseText); + $.unblockUI(); + } + }); + }); + + //Cancel + $('#btnModalAddEditCodeTableOperationCancel').on('click', () =>{ + $("#divModalAddEditCodeTableOperation").modal('hide'); + if (onCancel != null){ + onCancel(); + } + }); + + $("#divModalAddEditCodeTableOperation").modal('show'); + }, + error: function (xhr, ajaxOptions, thrownError) { + alert(xhr.responseText); + $.unblockUI(); + } + }); +} + +function codeTableOperationDelete(idCodeTableOperation, onDelete, onCancel){ + $.blockUI(); + $.ajax({ + type: "GET", + url: "/CodeTableOperations/Index/?handler=CodeTableOperation", + data: { + idCodeTableOperation + }, + success: function(data) { + $.unblockUI(); + if (data.successful){ + if (data.inUse){ + Swal.fire('Operacija je v uporabi!', + 'Brisanje ni možno!', + 'warning'); + return; + } + Swal.fire({ + title: `Izbrišem operacijo ${data.operation.title}?`, + text: "Tega dejanja ni možno razveljaviti!", + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Da, izbriši!', + cancelButtonText: 'Prekliči!' + }).then((result) => { + if (result.isConfirmed) { + $.blockUI(); + $.ajax({ + type: "DELETE", + beforeSend: function(xhr) { + xhr.setRequestHeader("XSRF-TOKEN", + $('input:hidden[name="__RequestVerificationToken"]').val()); + }, + url: "/CodeTableOperations/Index/?handler=CodeTableOperation", + data: { + idCodeTableOperation + }, + success: function(data) { + $.unblockUI(); + if (data.successful){ + if (onDelete != null){ + onDelete(data.idCodeTableOperation); + } + } else { + Swal.fire('Napaka pri brisanju operacije', + data.error, + 'error'); + } + + }, + error: function (xhr, ajaxOptions, thrownError) { + console.log(xhr); + alert(xhr.responseText); + $.unblockUI(); + } + }); + } else{ + if (onCancel != null){ + onCancel(); + } + } + }); + } else { + Swal.fire('Napaka pri branju operacije', + data.error, + 'error'); + } + }, + error: function (xhr, ajaxOptions, thrownError) { + console.log(xhr); + alert(xhr.responseText); + $.unblockUI(); + } + }); +}