From cd0e4e6431d067aa22c93c4fab4481a7392d764c Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 26 Sep 2025 11:09:00 +0200 Subject: [PATCH 01/43] Creating DbContext and Models repository --- PyroFetes/PyroFetes.csproj | 10 ++++++++++ PyroFetes/PyroFetesDbContext.cs | 27 +++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 PyroFetes/PyroFetesDbContext.cs diff --git a/PyroFetes/PyroFetes.csproj b/PyroFetes/PyroFetes.csproj index ba1446f..f2a584c 100644 --- a/PyroFetes/PyroFetes.csproj +++ b/PyroFetes/PyroFetes.csproj @@ -8,7 +8,17 @@ + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + diff --git a/PyroFetes/PyroFetesDbContext.cs b/PyroFetes/PyroFetesDbContext.cs new file mode 100644 index 0000000..b5ab500 --- /dev/null +++ b/PyroFetes/PyroFetesDbContext.cs @@ -0,0 +1,27 @@ +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes; + +public class PyroFetesDbContext : DbContext +{ + // Entities + + + // Database configuration + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + string connectionString = + "Server=romaric-thibault.fr;" + + "Database=PyroFetes;" + + "User Id=pyrofetes;" + + "Password=Onto9-Cage-Afflicted;" + + "TrustServerCertificate=true;"; + + optionsBuilder.UseSqlServer(connectionString); + } + + // Models customization + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + } +} \ No newline at end of file From 1078244eebf8dfb26cd6ca6d315f1d9a723ddd24 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 26 Sep 2025 16:18:22 +0100 Subject: [PATCH 02/43] Creating all entities for subject 2 --- PyroFetes/Models/Deliverer.cs | 11 +++++++++++ PyroFetes/Models/DeliveryNote.cs | 15 +++++++++++++++ PyroFetes/Models/Price.cs | 15 +++++++++++++++ PyroFetes/Models/ProductDelivery.cs | 16 ++++++++++++++++ PyroFetes/Models/PurchaseOrder.cs | 9 +++++++++ PyroFetes/Models/PurchaseProduct.cs | 16 ++++++++++++++++ PyroFetes/Models/Quotation.cs | 10 ++++++++++ PyroFetes/Models/QuotationProduct.cs | 15 +++++++++++++++ PyroFetes/Models/Setting.cs | 10 ++++++++++ PyroFetes/Models/Supplier.cs | 16 ++++++++++++++++ PyroFetes/Models/User.cs | 13 +++++++++++++ PyroFetes/PyroFetes.csproj | 4 ---- 12 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 PyroFetes/Models/Deliverer.cs create mode 100644 PyroFetes/Models/DeliveryNote.cs create mode 100644 PyroFetes/Models/Price.cs create mode 100644 PyroFetes/Models/ProductDelivery.cs create mode 100644 PyroFetes/Models/PurchaseOrder.cs create mode 100644 PyroFetes/Models/PurchaseProduct.cs create mode 100644 PyroFetes/Models/Quotation.cs create mode 100644 PyroFetes/Models/QuotationProduct.cs create mode 100644 PyroFetes/Models/Setting.cs create mode 100644 PyroFetes/Models/Supplier.cs create mode 100644 PyroFetes/Models/User.cs diff --git a/PyroFetes/Models/Deliverer.cs b/PyroFetes/Models/Deliverer.cs new file mode 100644 index 0000000..2897ef9 --- /dev/null +++ b/PyroFetes/Models/Deliverer.cs @@ -0,0 +1,11 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Deliverer +{ + [Key] public int Id { get; set; } + [Required] public string? Transporter { get; set; } + + public List? DeliveryNotes { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/DeliveryNote.cs b/PyroFetes/Models/DeliveryNote.cs new file mode 100644 index 0000000..eb7e70a --- /dev/null +++ b/PyroFetes/Models/DeliveryNote.cs @@ -0,0 +1,15 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class DeliveryNote +{ + [Key] public int Id { get; set; } + [Required] public string? TrackingNumber { get; set; } + public int DelivererId { get; set; } + [Required] public DateOnly EstimateDeliveryDate { get; set; } + [Required] public DateOnly ExpeditionDate { get; set; } + [Required] public DateOnly RealDeliveryDate { get; set; } + + public Deliverer? Deliverer { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Price.cs b/PyroFetes/Models/Price.cs new file mode 100644 index 0000000..7c787bb --- /dev/null +++ b/PyroFetes/Models/Price.cs @@ -0,0 +1,15 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(ProductId), nameof(SupplierId))] +public class Price +{ + [Required] public int ProductId { get; set; } + [Required] public int SupplierId { get; set; } + [Required] public decimal SellingPrice { get; set; } + + public Product? Product { get; set; } + public Supplier? Supplier { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/ProductDelivery.cs b/PyroFetes/Models/ProductDelivery.cs new file mode 100644 index 0000000..1151585 --- /dev/null +++ b/PyroFetes/Models/ProductDelivery.cs @@ -0,0 +1,16 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(ProductId), nameof(DeliveryNoteId))] +public class ProductDelivery +{ + [Required] public int ProductId { get; set; } + [Required] public int DeliveryNoteId { get; set; } + [Required] public int Quantity { get; set; } + + public Product? Product { get; set; } + public DeliveryNote? DeliveryNote { get; set; } +} + \ No newline at end of file diff --git a/PyroFetes/Models/PurchaseOrder.cs b/PyroFetes/Models/PurchaseOrder.cs new file mode 100644 index 0000000..3c997e9 --- /dev/null +++ b/PyroFetes/Models/PurchaseOrder.cs @@ -0,0 +1,9 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class PurchaseOrder +{ + [Key] public int Id { get; set; } + [Required] public string? PurchaseConditions { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/PurchaseProduct.cs b/PyroFetes/Models/PurchaseProduct.cs new file mode 100644 index 0000000..c335ede --- /dev/null +++ b/PyroFetes/Models/PurchaseProduct.cs @@ -0,0 +1,16 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(ProductId), nameof(PurchaseOrderId))] +public class PurchaseProduct +{ + public Product? Product { get; set; } + [Required] public int ProductId { get; set; } + + public PurchaseOrder? PurchaseOrder { get; set; } + [Required] public int PurchaseOrderId { get; set; } + + [Required] public int Quantity { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Quotation.cs b/PyroFetes/Models/Quotation.cs new file mode 100644 index 0000000..aadf24f --- /dev/null +++ b/PyroFetes/Models/Quotation.cs @@ -0,0 +1,10 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Quotation +{ + [Key] public int Id { get; set; } + [Required] public string? Message { get; set; } + [Required] public string? ConditionsSale { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/QuotationProduct.cs b/PyroFetes/Models/QuotationProduct.cs new file mode 100644 index 0000000..8e2f3bb --- /dev/null +++ b/PyroFetes/Models/QuotationProduct.cs @@ -0,0 +1,15 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(ProductId), nameof(QuotationId))] +public class QuotationProduct +{ + [Required] public int ProductId { get; set; } + [Required] public int QuotationId { get; set; } + [Required] public int Quantity { get; set; } + + public Product? Product { get; set; } + public Quotation? Quotation { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Setting.cs b/PyroFetes/Models/Setting.cs new file mode 100644 index 0000000..0759032 --- /dev/null +++ b/PyroFetes/Models/Setting.cs @@ -0,0 +1,10 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Setting +{ + [Key] public int Id { get; set; } + [Required] public string? Logo { get; set; } + [Required] public string? ElectronicSignature { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Supplier.cs b/PyroFetes/Models/Supplier.cs new file mode 100644 index 0000000..fc68d5b --- /dev/null +++ b/PyroFetes/Models/Supplier.cs @@ -0,0 +1,16 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore.Metadata.Internal; + +namespace PyroFetes.Models; + +public class Supplier +{ + [Key] public int Id { get; set; } + [Required, MaxLength(100)] public string? Name { get; set; } + [Required] public string? Email { get; set; } + [Required] public string? Phone { get; set; } + [Required] public string? Address { get; set; } + [Required] public int ZipCode { get; set; } + [Required] public string? City { get; set; } + [Required] public int DeliveryDelay { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/User.cs b/PyroFetes/Models/User.cs new file mode 100644 index 0000000..a768a48 --- /dev/null +++ b/PyroFetes/Models/User.cs @@ -0,0 +1,13 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class User +{ + [Key] public int Id { get; set; } + [Required, MaxLength(100)] public string? Name { get; set; } + [Required, MinLength(12)] public string? Password { get; set; } + [Required] public string? Salt { get; set; } + [Required] public string? Email { get; set; } + [Required] public string? Fonction { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/PyroFetes.csproj b/PyroFetes/PyroFetes.csproj index f2a584c..60e4770 100644 --- a/PyroFetes/PyroFetes.csproj +++ b/PyroFetes/PyroFetes.csproj @@ -17,8 +17,4 @@ - - - - From d3a8ae593efc32a3d08fbfcaa3c44462f2d862da Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 26 Sep 2025 16:20:55 +0100 Subject: [PATCH 03/43] Delete Models for an error --- PyroFetes/PyroFetes.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/PyroFetes/PyroFetes.csproj b/PyroFetes/PyroFetes.csproj index f2a584c..60e4770 100644 --- a/PyroFetes/PyroFetes.csproj +++ b/PyroFetes/PyroFetes.csproj @@ -17,8 +17,4 @@ - - - - From a8a6aa409484ca132a71db9f923d7e0f7dd8b38e Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 26 Sep 2025 16:31:00 +0100 Subject: [PATCH 04/43] Creating of Product entities to resolve error in 4 files. --- PyroFetes/Models/Product.cs | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 PyroFetes/Models/Product.cs diff --git a/PyroFetes/Models/Product.cs b/PyroFetes/Models/Product.cs new file mode 100644 index 0000000..1c98a9a --- /dev/null +++ b/PyroFetes/Models/Product.cs @@ -0,0 +1,8 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Product +{ + [Key] public int Id { get; set; } +} \ No newline at end of file From 8416f5af820cb9432e917901d46cb94b5ef2efc9 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Sat, 27 Sep 2025 14:07:11 +0100 Subject: [PATCH 05/43] Fixed an error in Supplier.cs --- PyroFetes/Models/Supplier.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/PyroFetes/Models/Supplier.cs b/PyroFetes/Models/Supplier.cs index fc68d5b..9cf8fe4 100644 --- a/PyroFetes/Models/Supplier.cs +++ b/PyroFetes/Models/Supplier.cs @@ -1,5 +1,4 @@ using System.ComponentModel.DataAnnotations; -using Microsoft.EntityFrameworkCore.Metadata.Internal; namespace PyroFetes.Models; From 423f4c4a6c99e61db324f578180707aa0e788237 Mon Sep 17 00:00:00 2001 From: reignem Date: Thu, 2 Oct 2025 14:30:54 +0200 Subject: [PATCH 06/43] =?UTF-8?q?Ajout=20du=20Mod=C3=A8le=20du=20sujet=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PyroFetes/Models/.idea/.gitignore | 13 +++++++++++ PyroFetes/Models/.idea/encodings.xml | 4 ++++ PyroFetes/Models/.idea/indexLayout.xml | 8 +++++++ PyroFetes/Models/Brand.cs | 12 ++++++++++ PyroFetes/Models/Classification.cs | 11 +++++++++ PyroFetes/Models/Color.cs | 10 +++++++++ PyroFetes/Models/Effect.cs | 10 +++++++++ PyroFetes/Models/Material.cs | 13 +++++++++++ PyroFetes/Models/Movement.cs | 21 +++++++++++++++++ PyroFetes/Models/Price.cs | 17 ++++++++++++++ PyroFetes/Models/Product.cs | 31 ++++++++++++++++++++++++++ PyroFetes/Models/ProductCategory.cs | 11 +++++++++ PyroFetes/Models/ProductColor.cs | 14 ++++++++++++ PyroFetes/Models/ProductEffect.cs | 15 +++++++++++++ PyroFetes/Models/Supplier.cs | 15 +++++++++++++ PyroFetes/Models/Warehouse.cs | 22 ++++++++++++++++++ PyroFetes/Models/WarehouseProduct.cs | 15 +++++++++++++ 17 files changed, 242 insertions(+) create mode 100644 PyroFetes/Models/.idea/.gitignore create mode 100644 PyroFetes/Models/.idea/encodings.xml create mode 100644 PyroFetes/Models/.idea/indexLayout.xml create mode 100644 PyroFetes/Models/Brand.cs create mode 100644 PyroFetes/Models/Classification.cs create mode 100644 PyroFetes/Models/Color.cs create mode 100644 PyroFetes/Models/Effect.cs create mode 100644 PyroFetes/Models/Material.cs create mode 100644 PyroFetes/Models/Movement.cs create mode 100644 PyroFetes/Models/Price.cs create mode 100644 PyroFetes/Models/Product.cs create mode 100644 PyroFetes/Models/ProductCategory.cs create mode 100644 PyroFetes/Models/ProductColor.cs create mode 100644 PyroFetes/Models/ProductEffect.cs create mode 100644 PyroFetes/Models/Supplier.cs create mode 100644 PyroFetes/Models/Warehouse.cs create mode 100644 PyroFetes/Models/WarehouseProduct.cs diff --git a/PyroFetes/Models/.idea/.gitignore b/PyroFetes/Models/.idea/.gitignore new file mode 100644 index 0000000..516c578 --- /dev/null +++ b/PyroFetes/Models/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/.idea.Models.iml +/modules.xml +/contentModel.xml +/projectSettingsUpdater.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/PyroFetes/Models/.idea/encodings.xml b/PyroFetes/Models/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/PyroFetes/Models/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/PyroFetes/Models/.idea/indexLayout.xml b/PyroFetes/Models/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/PyroFetes/Models/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/PyroFetes/Models/Brand.cs b/PyroFetes/Models/Brand.cs new file mode 100644 index 0000000..7278cec --- /dev/null +++ b/PyroFetes/Models/Brand.cs @@ -0,0 +1,12 @@ +using API.Class; + +namespace API.Models; + +public class Brand +{ + public int Id { get; set; } + public string Name { get; set; } + + public int ProductId { get; set; } + public Product Product { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Classification.cs b/PyroFetes/Models/Classification.cs new file mode 100644 index 0000000..bdc57b2 --- /dev/null +++ b/PyroFetes/Models/Classification.cs @@ -0,0 +1,11 @@ +using API.Class; + +namespace API.Models; + +public class Classification +{ + public int Id { get; set; } + public string Label { get; set; } + + public List Products { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Color.cs b/PyroFetes/Models/Color.cs new file mode 100644 index 0000000..2654725 --- /dev/null +++ b/PyroFetes/Models/Color.cs @@ -0,0 +1,10 @@ +using API.Class; + +namespace API.Models; + +public class Color +{ + public int Id { get; set; } + public string Label { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/Models/Effect.cs b/PyroFetes/Models/Effect.cs new file mode 100644 index 0000000..7643d4b --- /dev/null +++ b/PyroFetes/Models/Effect.cs @@ -0,0 +1,10 @@ +using API.Class; + +namespace API.Models; + +public class Effect +{ + public int Id { get; set; } + public string Label { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/Models/Material.cs b/PyroFetes/Models/Material.cs new file mode 100644 index 0000000..872c1c9 --- /dev/null +++ b/PyroFetes/Models/Material.cs @@ -0,0 +1,13 @@ +using API.Class; + +namespace API.Models; + +public class Material +{ + public int Id {get; set;} + public string Name {get; set;} + public int Quantity {get; set;} + + public int WarehouseId {get; set;} + public Warehouse Warehouse {get; set;} +} \ No newline at end of file diff --git a/PyroFetes/Models/Movement.cs b/PyroFetes/Models/Movement.cs new file mode 100644 index 0000000..436a1ad --- /dev/null +++ b/PyroFetes/Models/Movement.cs @@ -0,0 +1,21 @@ +using API.Class; + +namespace API.Models; + +public class Movement +{ + public int Id { get; set; } + public DateTime Date { get; set; } + public DateTime Start {get; set;} + public DateTime Arrival {get; set;} + public int Quantity {get; set;} + + public int ProductId {get; set;} + public Product Product {get; set;} + + public int? sourceWarehouse {get; set;} + public Warehouse SourceWarehouse {get; set;} + + public int? destinationWarehouse {get; set;} + public Warehouse DestinationWarehouse {get; set;} +} \ No newline at end of file diff --git a/PyroFetes/Models/Price.cs b/PyroFetes/Models/Price.cs new file mode 100644 index 0000000..6f28e60 --- /dev/null +++ b/PyroFetes/Models/Price.cs @@ -0,0 +1,17 @@ +using System.ComponentModel.DataAnnotations; +using API.Class; +using Microsoft.EntityFrameworkCore; + +namespace API.Models; + +[PrimaryKey(nameof(SupplierId), nameof(ProductId))] +public class Price +{ + public decimal Label { get; set; } + + public int SupplierId { get; set; } + [Required] public Supplier Supplier { get; set; } + + public int ProductId { get; set; } + [Required] public Product Product { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Product.cs b/PyroFetes/Models/Product.cs new file mode 100644 index 0000000..0399afb --- /dev/null +++ b/PyroFetes/Models/Product.cs @@ -0,0 +1,31 @@ +using API.Class; + +namespace API.Models +{ + public class Product + { + public int Id { get; set; } + public int References { get; set; } + public string Name { get; set; } + public decimal Duration {get; set;} + public decimal Caliber { get; set; } + public int ApprovalNumber { get; set; } + public decimal Weight { get; set; } + public decimal Nec { get; set; } + public decimal SellingPrice { get; set; } + public string Image { get; set; } + public string Link { get; set; } + + // Relations + public int ClassificationId { get; set; } + public Classification Classification { get; set; } + + public int ProductCategoryId { get; set; } + public ProductCategory ProductCategory { get; set; } + + public List Brands { get; set; } + + public List Movements { get; set; } + + } +} \ No newline at end of file diff --git a/PyroFetes/Models/ProductCategory.cs b/PyroFetes/Models/ProductCategory.cs new file mode 100644 index 0000000..ca4bacd --- /dev/null +++ b/PyroFetes/Models/ProductCategory.cs @@ -0,0 +1,11 @@ +using API.Class; + +namespace API.Models; + +public class ProductCategory +{ + public int Id { get; set; } + public string Label { get; set; } + + public List Products { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/ProductColor.cs b/PyroFetes/Models/ProductColor.cs new file mode 100644 index 0000000..58d17bf --- /dev/null +++ b/PyroFetes/Models/ProductColor.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace API.Models; + +[PrimaryKey(nameof(ProductId), nameof(ColorId))] +public class ProductColor +{ + public Product? Product { get; set; } + [Required] public int ProductId { get; set; } + + public Color? Color { get; set; } + [Required] public int ColorId { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/ProductEffect.cs b/PyroFetes/Models/ProductEffect.cs new file mode 100644 index 0000000..bc6b33c --- /dev/null +++ b/PyroFetes/Models/ProductEffect.cs @@ -0,0 +1,15 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace API.Models; + +[PrimaryKey(nameof(ProductId), nameof(EffectId))] +public class ProductEffect +{ + public Product? Product { get; set; } + [Required] public int ProductId { get; set; } + + public Effect? Effect { get; set; } + [Required] public int EffectId { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/Models/Supplier.cs b/PyroFetes/Models/Supplier.cs new file mode 100644 index 0000000..b519e1f --- /dev/null +++ b/PyroFetes/Models/Supplier.cs @@ -0,0 +1,15 @@ +using API.Models; + +namespace API.Class; + +public class Supplier +{ + public int Id { get; set; } + public string Name { get; set; } + public string Email { get; set; } + public string PhoneNumber { get; set; } + public string Adress { get; set; } + public int ZipCode { get; set; } + public string City { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/Models/Warehouse.cs b/PyroFetes/Models/Warehouse.cs new file mode 100644 index 0000000..3145ac4 --- /dev/null +++ b/PyroFetes/Models/Warehouse.cs @@ -0,0 +1,22 @@ +using API.Models; + +namespace API.Class; + +public class Warehouse +{ + public int Id {get; set;} + public string Name {get; set;} + public int MaxWeight {get; set;} + public int Current {get; set;} + public int MinWeight {get; set;} + public string Adress { get; set; } + public int ZipCode { get; set; } + public string City { get; set; } + + + public List Materials {get; set;} + + + public List MovementsSource { get; set; } + public List MovementsDestination { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/WarehouseProduct.cs b/PyroFetes/Models/WarehouseProduct.cs new file mode 100644 index 0000000..7aeb873 --- /dev/null +++ b/PyroFetes/Models/WarehouseProduct.cs @@ -0,0 +1,15 @@ +using System.ComponentModel.DataAnnotations; +using API.Class; + +namespace API.Models; + +public class WarehouseProduct +{ + public int Quantity { get; set; } + + public int ProductId { get; set; } + [Required] public Product Product { get; set; } + + public int WarehouseId { get; set; } + [Required] public Warehouse Warehouse { get; set; } +} \ No newline at end of file From 964faa0b6b038934fb4aa169c89de40fe6421863 Mon Sep 17 00:00:00 2001 From: reignem Date: Thu, 2 Oct 2025 14:43:34 +0200 Subject: [PATCH 07/43] Ajout des Key et Required --- PyroFetes/Models/Brand.cs | 11 +++++---- PyroFetes/Models/Classification.cs | 9 ++++--- PyroFetes/Models/Color.cs | 7 +++--- PyroFetes/Models/Effect.cs | 7 +++--- PyroFetes/Models/Material.cs | 13 +++++----- PyroFetes/Models/Movement.cs | 25 ++++++++++--------- PyroFetes/Models/Price.cs | 6 ++--- PyroFetes/Models/Product.cs | 37 ++++++++++++++-------------- PyroFetes/Models/ProductCategory.cs | 9 ++++--- PyroFetes/Models/ProductColor.cs | 4 +-- PyroFetes/Models/ProductEffect.cs | 4 +-- PyroFetes/Models/Supplier.cs | 17 +++++++------ PyroFetes/Models/Warehouse.cs | 25 ++++++++++--------- PyroFetes/Models/WarehouseProduct.cs | 6 ++--- 14 files changed, 95 insertions(+), 85 deletions(-) diff --git a/PyroFetes/Models/Brand.cs b/PyroFetes/Models/Brand.cs index 7278cec..93b596c 100644 --- a/PyroFetes/Models/Brand.cs +++ b/PyroFetes/Models/Brand.cs @@ -1,12 +1,13 @@ -using API.Class; +using System.ComponentModel.DataAnnotations; +using API.Class; namespace API.Models; public class Brand { - public int Id { get; set; } - public string Name { get; set; } + [Key] public int Id { get; set; } + [Required, MaxLength(100)] public string Name { get; set; } - public int ProductId { get; set; } - public Product Product { get; set; } + [Required] public int ProductId { get; set; } + [Required] public Product Product { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Classification.cs b/PyroFetes/Models/Classification.cs index bdc57b2..43be442 100644 --- a/PyroFetes/Models/Classification.cs +++ b/PyroFetes/Models/Classification.cs @@ -1,11 +1,12 @@ -using API.Class; +using System.ComponentModel.DataAnnotations; +using API.Class; namespace API.Models; public class Classification { - public int Id { get; set; } - public string Label { get; set; } + [Key] public int Id { get; set; } + [Required] public string Label { get; set; } - public List Products { get; set; } + [Required] public List Products { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Color.cs b/PyroFetes/Models/Color.cs index 2654725..d7a0d7d 100644 --- a/PyroFetes/Models/Color.cs +++ b/PyroFetes/Models/Color.cs @@ -1,10 +1,11 @@ -using API.Class; +using System.ComponentModel.DataAnnotations; +using API.Class; namespace API.Models; public class Color { - public int Id { get; set; } - public string Label { get; set; } + [Key] public int Id { get; set; } + [Required] public string Label { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Effect.cs b/PyroFetes/Models/Effect.cs index 7643d4b..b8f083f 100644 --- a/PyroFetes/Models/Effect.cs +++ b/PyroFetes/Models/Effect.cs @@ -1,10 +1,11 @@ -using API.Class; +using System.ComponentModel.DataAnnotations; +using API.Class; namespace API.Models; public class Effect { - public int Id { get; set; } - public string Label { get; set; } + [Key] public int Id { get; set; } + [Required] public string Label { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Material.cs b/PyroFetes/Models/Material.cs index 872c1c9..f60fc61 100644 --- a/PyroFetes/Models/Material.cs +++ b/PyroFetes/Models/Material.cs @@ -1,13 +1,14 @@ -using API.Class; +using System.ComponentModel.DataAnnotations; +using API.Class; namespace API.Models; public class Material { - public int Id {get; set;} - public string Name {get; set;} - public int Quantity {get; set;} + [Key] public int Id {get; set;} + [Required, MaxLength(100)] public string Name {get; set;} + [Required] public int Quantity {get; set;} - public int WarehouseId {get; set;} - public Warehouse Warehouse {get; set;} + [Required] public int WarehouseId {get; set;} + [Required] public Warehouse Warehouse {get; set;} } \ No newline at end of file diff --git a/PyroFetes/Models/Movement.cs b/PyroFetes/Models/Movement.cs index 436a1ad..ff875d8 100644 --- a/PyroFetes/Models/Movement.cs +++ b/PyroFetes/Models/Movement.cs @@ -1,21 +1,22 @@ -using API.Class; +using System.ComponentModel.DataAnnotations; +using API.Class; namespace API.Models; public class Movement { - public int Id { get; set; } - public DateTime Date { get; set; } - public DateTime Start {get; set;} - public DateTime Arrival {get; set;} - public int Quantity {get; set;} + [Key] public int Id { get; set; } + [Required] public DateTime Date { get; set; } + [Required] public DateTime Start {get; set;} + [Required] public DateTime Arrival {get; set;} + [Required] public int Quantity {get; set;} - public int ProductId {get; set;} - public Product Product {get; set;} + [Required] public int ProductId {get; set;} + [Required] public Product Product {get; set;} - public int? sourceWarehouse {get; set;} - public Warehouse SourceWarehouse {get; set;} + [Required] public int? sourceWarehouse {get; set;} + [Required] public Warehouse SourceWarehouse {get; set;} - public int? destinationWarehouse {get; set;} - public Warehouse DestinationWarehouse {get; set;} + [Required] public int? destinationWarehouse {get; set;} + [Required] public Warehouse DestinationWarehouse {get; set;} } \ No newline at end of file diff --git a/PyroFetes/Models/Price.cs b/PyroFetes/Models/Price.cs index 6f28e60..9878768 100644 --- a/PyroFetes/Models/Price.cs +++ b/PyroFetes/Models/Price.cs @@ -7,11 +7,11 @@ namespace API.Models; [PrimaryKey(nameof(SupplierId), nameof(ProductId))] public class Price { - public decimal Label { get; set; } + [Required] public decimal Label { get; set; } - public int SupplierId { get; set; } + [Required] public int SupplierId { get; set; } [Required] public Supplier Supplier { get; set; } - public int ProductId { get; set; } + [Required] public int ProductId { get; set; } [Required] public Product Product { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Product.cs b/PyroFetes/Models/Product.cs index 0399afb..e2d5db3 100644 --- a/PyroFetes/Models/Product.cs +++ b/PyroFetes/Models/Product.cs @@ -1,31 +1,32 @@ -using API.Class; +using System.ComponentModel.DataAnnotations; +using API.Class; namespace API.Models { public class Product { - public int Id { get; set; } - public int References { get; set; } - public string Name { get; set; } - public decimal Duration {get; set;} - public decimal Caliber { get; set; } - public int ApprovalNumber { get; set; } - public decimal Weight { get; set; } - public decimal Nec { get; set; } - public decimal SellingPrice { get; set; } - public string Image { get; set; } - public string Link { get; set; } + [Key] public int Id { get; set; } + [Required] public int References { get; set; } + [Required, MaxLength(100)] public string Name { get; set; } + [Required] public decimal Duration {get; set;} + [Required] public decimal Caliber { get; set; } + [Required] public int ApprovalNumber { get; set; } + [Required] public decimal Weight { get; set; } + [Required] public decimal Nec { get; set; } + [Required] public decimal SellingPrice { get; set; } + [Required] public string Image { get; set; } + [Required] public string Link { get; set; } // Relations - public int ClassificationId { get; set; } - public Classification Classification { get; set; } + [Required] public int ClassificationId { get; set; } + [Required] public Classification Classification { get; set; } - public int ProductCategoryId { get; set; } - public ProductCategory ProductCategory { get; set; } + [Required] public int ProductCategoryId { get; set; } + [Required] public ProductCategory ProductCategory { get; set; } - public List Brands { get; set; } + [Required] public List Brands { get; set; } - public List Movements { get; set; } + [Required] public List Movements { get; set; } } } \ No newline at end of file diff --git a/PyroFetes/Models/ProductCategory.cs b/PyroFetes/Models/ProductCategory.cs index ca4bacd..419970c 100644 --- a/PyroFetes/Models/ProductCategory.cs +++ b/PyroFetes/Models/ProductCategory.cs @@ -1,11 +1,12 @@ -using API.Class; +using System.ComponentModel.DataAnnotations; +using API.Class; namespace API.Models; public class ProductCategory { - public int Id { get; set; } - public string Label { get; set; } + [Key] public int Id { get; set; } + [Required] public string Label { get; set; } - public List Products { get; set; } + [Required] public List Products { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ProductColor.cs b/PyroFetes/Models/ProductColor.cs index 58d17bf..8beac4d 100644 --- a/PyroFetes/Models/ProductColor.cs +++ b/PyroFetes/Models/ProductColor.cs @@ -6,9 +6,9 @@ namespace API.Models; [PrimaryKey(nameof(ProductId), nameof(ColorId))] public class ProductColor { - public Product? Product { get; set; } + [Required] public Product? Product { get; set; } [Required] public int ProductId { get; set; } - public Color? Color { get; set; } + [Required] public Color? Color { get; set; } [Required] public int ColorId { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ProductEffect.cs b/PyroFetes/Models/ProductEffect.cs index bc6b33c..5289662 100644 --- a/PyroFetes/Models/ProductEffect.cs +++ b/PyroFetes/Models/ProductEffect.cs @@ -6,10 +6,10 @@ namespace API.Models; [PrimaryKey(nameof(ProductId), nameof(EffectId))] public class ProductEffect { - public Product? Product { get; set; } + [Required] public Product? Product { get; set; } [Required] public int ProductId { get; set; } - public Effect? Effect { get; set; } + [Required] public Effect? Effect { get; set; } [Required] public int EffectId { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Supplier.cs b/PyroFetes/Models/Supplier.cs index b519e1f..6d44a91 100644 --- a/PyroFetes/Models/Supplier.cs +++ b/PyroFetes/Models/Supplier.cs @@ -1,15 +1,16 @@ -using API.Models; +using System.ComponentModel.DataAnnotations; +using API.Models; namespace API.Class; public class Supplier { - public int Id { get; set; } - public string Name { get; set; } - public string Email { get; set; } - public string PhoneNumber { get; set; } - public string Adress { get; set; } - public int ZipCode { get; set; } - public string City { get; set; } + [Key] public int Id { get; set; } + [Required, MaxLength(100)] public string Name { get; set; } + [Required] public string Email { get; set; } + [Required] public string PhoneNumber { get; set; } + [Required] public string Adress { get; set; } + [Required] public int ZipCode { get; set; } + [Required] public string City { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Warehouse.cs b/PyroFetes/Models/Warehouse.cs index 3145ac4..388e4d2 100644 --- a/PyroFetes/Models/Warehouse.cs +++ b/PyroFetes/Models/Warehouse.cs @@ -1,22 +1,23 @@ -using API.Models; +using System.ComponentModel.DataAnnotations; +using API.Models; namespace API.Class; public class Warehouse { - public int Id {get; set;} - public string Name {get; set;} - public int MaxWeight {get; set;} - public int Current {get; set;} - public int MinWeight {get; set;} - public string Adress { get; set; } - public int ZipCode { get; set; } - public string City { get; set; } + [Key] public int Id {get; set;} + [Required, MaxLength(100)] public string Name {get; set;} + [Required] public int MaxWeight {get; set;} + [Required] public int Current {get; set;} + [Required] public int MinWeight {get; set;} + [Required] public string Adress { get; set; } + [Required] public int ZipCode { get; set; } + [Required] public string City { get; set; } - public List Materials {get; set;} + [Required] public List Materials {get; set;} - public List MovementsSource { get; set; } - public List MovementsDestination { get; set; } + [Required] public List MovementsSource { get; set; } + [Required] public List MovementsDestination { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/WarehouseProduct.cs b/PyroFetes/Models/WarehouseProduct.cs index 7aeb873..79e5329 100644 --- a/PyroFetes/Models/WarehouseProduct.cs +++ b/PyroFetes/Models/WarehouseProduct.cs @@ -5,11 +5,11 @@ namespace API.Models; public class WarehouseProduct { - public int Quantity { get; set; } + [Key] public int Quantity { get; set; } - public int ProductId { get; set; } + [Required] public int ProductId { get; set; } [Required] public Product Product { get; set; } - public int WarehouseId { get; set; } + [Required] public int WarehouseId { get; set; } [Required] public Warehouse Warehouse { get; set; } } \ No newline at end of file From 21d3480b19038e6016f33b6d3aea709999557cc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9?= Date: Thu, 2 Oct 2025 14:53:55 +0200 Subject: [PATCH 08/43] =?UTF-8?q?Entit=C3=A9=20du=20sujet=203=20avec=20con?= =?UTF-8?q?nections=20et=20cardinalit=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PyroFetes/Models/Show.cs | 24 ++++++++++++++++++++++ PyroFetes/Models/Sound.cs | 34 +++++++++++++++++++++++++++++++ PyroFetes/Models/SoundCategory.cs | 13 ++++++++++++ PyroFetes/Models/SoundTimecode.cs | 22 ++++++++++++++++++++ PyroFetes/Models/Staff.cs | 22 ++++++++++++++++++++ PyroFetes/Models/Truck.cs | 24 ++++++++++++++++++++++ 6 files changed, 139 insertions(+) create mode 100644 PyroFetes/Models/Show.cs create mode 100644 PyroFetes/Models/Sound.cs create mode 100644 PyroFetes/Models/SoundCategory.cs create mode 100644 PyroFetes/Models/SoundTimecode.cs create mode 100644 PyroFetes/Models/Staff.cs create mode 100644 PyroFetes/Models/Truck.cs diff --git a/PyroFetes/Models/Show.cs b/PyroFetes/Models/Show.cs new file mode 100644 index 0000000..5d4e794 --- /dev/null +++ b/PyroFetes/Models/Show.cs @@ -0,0 +1,24 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Show +{ + [Key] public int Id { get; set; } + + [MaxLength(120)] + public string? Place { get; set; } + + [MaxLength(500)] + public string? Description { get; set; } + + // Lien (chemin/URL/nom de fichier) vers le plan d’implémentation pyrotechnique + [MaxLength(500)] + public string? PyrotechnicImplementationPlan { get; set; } + + public DateTime? Date { get; set; } + + public ICollection Staff { get; set; } = new List(); + public ICollection Trucks { get; set; } = new List(); + public ICollection SoundCues { get; set; } = new List(); +} \ No newline at end of file diff --git a/PyroFetes/Models/Sound.cs b/PyroFetes/Models/Sound.cs new file mode 100644 index 0000000..4bde6bf --- /dev/null +++ b/PyroFetes/Models/Sound.cs @@ -0,0 +1,34 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Sound +{ + [Key] public int Id { get; set; } + + [Required, MaxLength(120)] + public string Name { get; set; } = null!; + + [MaxLength(60)] + public string? Type { get; set; } + + [MaxLength(120)] + public string? Artist { get; set; } + + [Range(0, int.MaxValue)] + public int? Duration { get; set; } + + [MaxLength(40)] + public string? Kind { get; set; } + + [MaxLength(40)] + public string? Format { get; set; } + + public DateTime? CreationDate { get; set; } + + [Required] + public int SoundCategoryId { get; set; } + public SoundCategory? Category { get; set; } + + public ICollection ShowPlacements { get; set; } = new List(); +} \ No newline at end of file diff --git a/PyroFetes/Models/SoundCategory.cs b/PyroFetes/Models/SoundCategory.cs new file mode 100644 index 0000000..17b5120 --- /dev/null +++ b/PyroFetes/Models/SoundCategory.cs @@ -0,0 +1,13 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class SoundCategory +{ + [Key] public int Id { get; set; } + + [Required, MaxLength(60)] + public string Name { get; set; } = null!; + + public ICollection Sounds { get; set; } = new List(); +} \ No newline at end of file diff --git a/PyroFetes/Models/SoundTimecode.cs b/PyroFetes/Models/SoundTimecode.cs new file mode 100644 index 0000000..0492073 --- /dev/null +++ b/PyroFetes/Models/SoundTimecode.cs @@ -0,0 +1,22 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class SoundTimecode +{ + [Key] public int Id { get; set; } + + [Required] + public int ShowId { get; set; } + public Show? Show { get; set; } + + [Required] + public int SoundId { get; set; } + public Sound? Sound { get; set; } + + [Required, Range(0, int.MaxValue)] + public int Start { get; set; } + + [Required, Range(0, int.MaxValue)] + public int End { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Staff.cs b/PyroFetes/Models/Staff.cs new file mode 100644 index 0000000..fd6d846 --- /dev/null +++ b/PyroFetes/Models/Staff.cs @@ -0,0 +1,22 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Staff +{ + [Key] public int Id { get; set; } + + [Required, MaxLength(60)] + public string FirstName { get; set; } = null!; + + [Required, MaxLength(60)] + public string LastName { get; set; } = null!; + + [MaxLength(100)] + public string? Profession { get; set; } + + [EmailAddress, MaxLength(120)] + public string? Email { get; set; } + + public ICollection Shows { get; set; } = new List(); +} \ No newline at end of file diff --git a/PyroFetes/Models/Truck.cs b/PyroFetes/Models/Truck.cs new file mode 100644 index 0000000..31b05e2 --- /dev/null +++ b/PyroFetes/Models/Truck.cs @@ -0,0 +1,24 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Truck +{ + [Key] public int Id { get; set; } + + [Required, MaxLength(40)] + public string Type { get; set; } = null!; + + [Range(0, double.MaxValue)] + public double? MaxExplosiveCapacity { get; set; } + + [MaxLength(80)] + public string? Sizes { get; set; } + + [MaxLength(40)] + public string? Statut { get; set; } + + [Required] + public int ShowId { get; set; } + public Show? Show { get; set; } +} \ No newline at end of file From bb02df63234584faf2cfb3655274daba36ebac72 Mon Sep 17 00:00:00 2001 From: cernont Date: Thu, 2 Oct 2025 15:00:09 +0200 Subject: [PATCH 09/43] Actualiser PyroFetes/Models/Show.cs --- PyroFetes/Models/Show.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyroFetes/Models/Show.cs b/PyroFetes/Models/Show.cs index 5d4e794..0173665 100644 --- a/PyroFetes/Models/Show.cs +++ b/PyroFetes/Models/Show.cs @@ -6,14 +6,14 @@ public class Show { [Key] public int Id { get; set; } - [MaxLength(120)] + [Required, MaxLength(120)] public string? Place { get; set; } [MaxLength(500)] public string? Description { get; set; } // Lien (chemin/URL/nom de fichier) vers le plan d’implémentation pyrotechnique - [MaxLength(500)] + [Required, MaxLength(500)] public string? PyrotechnicImplementationPlan { get; set; } public DateTime? Date { get; set; } From c0ee31f4a7dd89fad1d0e9c6802a4608e7f00118 Mon Sep 17 00:00:00 2001 From: cernont Date: Thu, 2 Oct 2025 15:00:58 +0200 Subject: [PATCH 10/43] Actualiser PyroFetes/Models/Sound.cs --- PyroFetes/Models/Sound.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PyroFetes/Models/Sound.cs b/PyroFetes/Models/Sound.cs index 4bde6bf..7ba2f64 100644 --- a/PyroFetes/Models/Sound.cs +++ b/PyroFetes/Models/Sound.cs @@ -9,19 +9,19 @@ public class Sound [Required, MaxLength(120)] public string Name { get; set; } = null!; - [MaxLength(60)] + [Required, MaxLength(60)] public string? Type { get; set; } - [MaxLength(120)] + [Required, MaxLength(120)] public string? Artist { get; set; } - [Range(0, int.MaxValue)] + [Required, Range(0, int.MaxValue)] public int? Duration { get; set; } - [MaxLength(40)] + [Required, MaxLength(40)] public string? Kind { get; set; } - [MaxLength(40)] + [Required, MaxLength(40)] public string? Format { get; set; } public DateTime? CreationDate { get; set; } From 2bbb6c6e7807382daf40515caf43a27a65912c2e Mon Sep 17 00:00:00 2001 From: cernont Date: Thu, 2 Oct 2025 15:01:30 +0200 Subject: [PATCH 11/43] Actualiser PyroFetes/Models/Staff.cs --- PyroFetes/Models/Staff.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyroFetes/Models/Staff.cs b/PyroFetes/Models/Staff.cs index fd6d846..0c829d8 100644 --- a/PyroFetes/Models/Staff.cs +++ b/PyroFetes/Models/Staff.cs @@ -12,10 +12,10 @@ public class Staff [Required, MaxLength(60)] public string LastName { get; set; } = null!; - [MaxLength(100)] + [Required, MaxLength(100)] public string? Profession { get; set; } - [EmailAddress, MaxLength(120)] + [Required, MaxLength(120)] public string? Email { get; set; } public ICollection Shows { get; set; } = new List(); From 788ad933272efa3307794456da9b5ccf1d493667 Mon Sep 17 00:00:00 2001 From: cernont Date: Thu, 2 Oct 2025 15:01:46 +0200 Subject: [PATCH 12/43] Actualiser PyroFetes/Models/Truck.cs --- PyroFetes/Models/Truck.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyroFetes/Models/Truck.cs b/PyroFetes/Models/Truck.cs index 31b05e2..b711a34 100644 --- a/PyroFetes/Models/Truck.cs +++ b/PyroFetes/Models/Truck.cs @@ -12,10 +12,10 @@ public class Truck [Range(0, double.MaxValue)] public double? MaxExplosiveCapacity { get; set; } - [MaxLength(80)] + [Required, MaxLength(80)] public string? Sizes { get; set; } - [MaxLength(40)] + [Required, MaxLength(40)] public string? Statut { get; set; } [Required] From 6bb86c0ce9ed1bbca88335f9de4d54581f98ec64 Mon Sep 17 00:00:00 2001 From: cernont Date: Thu, 2 Oct 2025 15:19:38 +0200 Subject: [PATCH 13/43] Actualiser PyroFetes/Models/Show.cs --- PyroFetes/Models/Show.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/PyroFetes/Models/Show.cs b/PyroFetes/Models/Show.cs index 0173665..6fdc7d2 100644 --- a/PyroFetes/Models/Show.cs +++ b/PyroFetes/Models/Show.cs @@ -6,6 +6,9 @@ public class Show { [Key] public int Id { get; set; } + [Required] + public string? Name { get; set; } + [Required, MaxLength(120)] public string? Place { get; set; } From da468f28531f0852db786a386951e9f827b28e34 Mon Sep 17 00:00:00 2001 From: carteronm Date: Thu, 2 Oct 2025 17:11:00 +0200 Subject: [PATCH 14/43] Project4 Adding entities --- PyroFetes/Models/Availability.cs | 12 ++++++++++++ PyroFetes/Models/Communication.cs | 13 +++++++++++++ PyroFetes/Models/Contact.cs | 18 ++++++++++++++++++ PyroFetes/Models/Customer.cs | 15 +++++++++++++++ PyroFetes/Models/CustomerContact.cs | 13 +++++++++++++ PyroFetes/Models/CustomerType.cs | 11 +++++++++++ PyroFetes/Models/ExperienceLevel.cs | 9 +++++++++ PyroFetes/Models/HistoryOfApproval.cs | 10 ++++++++++ PyroFetes/Models/Provider.cs | 14 ++++++++++++++ PyroFetes/Models/ProviderContact.cs | 12 ++++++++++++ PyroFetes/Models/ProviderType.cs | 9 +++++++++ PyroFetes/Models/Staff.cs | 10 ++++++++++ PyroFetes/Models/StaffAvailability.cs | 12 ++++++++++++ PyroFetes/Models/StaffContact.cs | 12 ++++++++++++ PyroFetes/Models/StaffHistoryOfApproval.cs | 12 ++++++++++++ 15 files changed, 182 insertions(+) create mode 100644 PyroFetes/Models/Availability.cs create mode 100644 PyroFetes/Models/Communication.cs create mode 100644 PyroFetes/Models/Contact.cs create mode 100644 PyroFetes/Models/Customer.cs create mode 100644 PyroFetes/Models/CustomerContact.cs create mode 100644 PyroFetes/Models/CustomerType.cs create mode 100644 PyroFetes/Models/ExperienceLevel.cs create mode 100644 PyroFetes/Models/HistoryOfApproval.cs create mode 100644 PyroFetes/Models/Provider.cs create mode 100644 PyroFetes/Models/ProviderContact.cs create mode 100644 PyroFetes/Models/ProviderType.cs create mode 100644 PyroFetes/Models/Staff.cs create mode 100644 PyroFetes/Models/StaffAvailability.cs create mode 100644 PyroFetes/Models/StaffContact.cs create mode 100644 PyroFetes/Models/StaffHistoryOfApproval.cs diff --git a/PyroFetes/Models/Availability.cs b/PyroFetes/Models/Availability.cs new file mode 100644 index 0000000..a727c3a --- /dev/null +++ b/PyroFetes/Models/Availability.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Availability +{ + [Key] public int Id { get; set; } + [Required] public string AvailabilityDate { get; set; } + [Required] public string DeliveryDate { get; set; } + [Required] public string ExpirationDate { get; set; } + [Required] public string RenewallDate { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Communication.cs b/PyroFetes/Models/Communication.cs new file mode 100644 index 0000000..7c3e284 --- /dev/null +++ b/PyroFetes/Models/Communication.cs @@ -0,0 +1,13 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Communication +{ + [Key] public int Id { get; set; } + [Required] public string Calling { get; set; } + [Required] public string Email { get; set; } + [Required] public string Meeting { get; set; } + + //REL +} \ No newline at end of file diff --git a/PyroFetes/Models/Contact.cs b/PyroFetes/Models/Contact.cs new file mode 100644 index 0000000..87385bc --- /dev/null +++ b/PyroFetes/Models/Contact.cs @@ -0,0 +1,18 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Contact +{ + [Key] public int Id { get; set; } + [Required] public string LastName { get; set; } + [Required] public string FirstName { get; set; } + [Required] public string Email { get; set; } + [Required] public string PhoneNumber { get; set; } + [Required] public string Address { get; set; } + [Required] public string Role { get; set; } + + //RELATIONS DE CON LA + public int CommunicationID { get; set; } + public Communication? Communication { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Customer.cs b/PyroFetes/Models/Customer.cs new file mode 100644 index 0000000..3e7139a --- /dev/null +++ b/PyroFetes/Models/Customer.cs @@ -0,0 +1,15 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Customer +{ + [Key] public int Id { get; set; } + [Required] public string? Note { get; set; } + //Les relations + public int CustomerTypeId { get; set; } + public CustomerType? CustomerType { get; set; } + + public int ContactId { get; set; } + public Contact? Contact { get; set; } +} diff --git a/PyroFetes/Models/CustomerContact.cs b/PyroFetes/Models/CustomerContact.cs new file mode 100644 index 0000000..dff5fb2 --- /dev/null +++ b/PyroFetes/Models/CustomerContact.cs @@ -0,0 +1,13 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(ContactId), nameof(CustomerId))] +public class CustomerContact +{ + public int CustomerId { get; set; } + public Customer? Customer { get; set; } + public int ContactId { get; set; } + public Contact? Contact { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/CustomerType.cs b/PyroFetes/Models/CustomerType.cs new file mode 100644 index 0000000..28fc14d --- /dev/null +++ b/PyroFetes/Models/CustomerType.cs @@ -0,0 +1,11 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class CustomerType +{ + [Key] public int Id { get; set; } + [Required] public string? Price { get; set; } + //RELATIONS PTN + public List? Customers { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/ExperienceLevel.cs b/PyroFetes/Models/ExperienceLevel.cs new file mode 100644 index 0000000..8a2bb93 --- /dev/null +++ b/PyroFetes/Models/ExperienceLevel.cs @@ -0,0 +1,9 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class ExperienceLevel +{ + [Key] public int Id { get; set; } + [Required] public string Label { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/HistoryOfApproval.cs b/PyroFetes/Models/HistoryOfApproval.cs new file mode 100644 index 0000000..4e05886 --- /dev/null +++ b/PyroFetes/Models/HistoryOfApproval.cs @@ -0,0 +1,10 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class HistoryOfApproval +{ + [Key] public int Id { get; set; } + [Required] public string ExpirationDate { get; set; } + [Required] public string DeliveryDate { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Provider.cs b/PyroFetes/Models/Provider.cs new file mode 100644 index 0000000..fdfc566 --- /dev/null +++ b/PyroFetes/Models/Provider.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Provider +{ + [Key] public int Id { get; set; } + [Required] public decimal Price { get; set; } + + //Relations + + public int ProviderID { get; set; } + public ProviderType? ProviderType { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/ProviderContact.cs b/PyroFetes/Models/ProviderContact.cs new file mode 100644 index 0000000..cdfefb3 --- /dev/null +++ b/PyroFetes/Models/ProviderContact.cs @@ -0,0 +1,12 @@ +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(ContactId), nameof(ProviderId))] +public class ProviderContact +{ + public int ProviderId { get; set; } + public Provider? Provider { get; set; } + public int ContactId { get; set; } + public Contact? Contact { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/ProviderType.cs b/PyroFetes/Models/ProviderType.cs new file mode 100644 index 0000000..ac620c9 --- /dev/null +++ b/PyroFetes/Models/ProviderType.cs @@ -0,0 +1,9 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class ProviderType +{ + [Key] public int Id { get; set; } + [Required] public string Label { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Staff.cs b/PyroFetes/Models/Staff.cs new file mode 100644 index 0000000..fef94d9 --- /dev/null +++ b/PyroFetes/Models/Staff.cs @@ -0,0 +1,10 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class Staff +{ + [Key] public int Id { get; set; } + [Required] public string F4T2NumberApproval { get; set; } + [Required] public string F4T2ExpirationDate { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/StaffAvailability.cs b/PyroFetes/Models/StaffAvailability.cs new file mode 100644 index 0000000..3ba0732 --- /dev/null +++ b/PyroFetes/Models/StaffAvailability.cs @@ -0,0 +1,12 @@ +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(AvailabilityId), nameof(StaffId))] +public class StaffAvailability +{ + public int StaffId { get; set; } + public Staff? Staff { get; set; } + public int AvailabilityId { get; set; } + public Availability? Availability { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/StaffContact.cs b/PyroFetes/Models/StaffContact.cs new file mode 100644 index 0000000..3fb3f87 --- /dev/null +++ b/PyroFetes/Models/StaffContact.cs @@ -0,0 +1,12 @@ +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(ContactId), nameof(StaffId))] +public class StaffContact +{ + public int StaffId { get; set; } + public Staff? Staff { get; set; } + public int ContactId { get; set; } + public Contact? Contact { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/StaffHistoryOfApproval.cs b/PyroFetes/Models/StaffHistoryOfApproval.cs new file mode 100644 index 0000000..3937064 --- /dev/null +++ b/PyroFetes/Models/StaffHistoryOfApproval.cs @@ -0,0 +1,12 @@ +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(HistoryOfApprovalId), nameof(StaffId))] +public class StaffHistoryOfApproval +{ + public int StaffId { get; set; } + public Staff? Staff { get; set; } + public int HistoryOfApprovalId { get; set; } + public HistoryOfApproval? HistoryOfApproval { get; set; } +} \ No newline at end of file From 9da75d53b90a1e2a2ab2d26f40f8071398664435 Mon Sep 17 00:00:00 2001 From: norguete Date: Thu, 2 Oct 2025 17:37:52 +0200 Subject: [PATCH 15/43] Actualiser PyroFetes/Models/Movement.cs --- PyroFetes/Models/Movement.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyroFetes/Models/Movement.cs b/PyroFetes/Models/Movement.cs index ff875d8..084a069 100644 --- a/PyroFetes/Models/Movement.cs +++ b/PyroFetes/Models/Movement.cs @@ -14,9 +14,9 @@ public class Movement [Required] public int ProductId {get; set;} [Required] public Product Product {get; set;} - [Required] public int? sourceWarehouse {get; set;} + [Required] public int? SourceWarehouseId {get; set;} [Required] public Warehouse SourceWarehouse {get; set;} - [Required] public int? destinationWarehouse {get; set;} + [Required] public int? DestinationWarehouseId {get; set;} [Required] public Warehouse DestinationWarehouse {get; set;} } \ No newline at end of file From 4cb501fe04180a9d9cf33e0fe65438b3a9b7be37 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 3 Oct 2025 14:35:31 +0100 Subject: [PATCH 16/43] Correcting errors on Entities --- PyroFetes/Models/Brand.cs | 8 ++++---- PyroFetes/Models/Classification.cs | 8 ++++---- PyroFetes/Models/Color.cs | 5 ++--- PyroFetes/Models/Effect.cs | 6 ++---- PyroFetes/Models/Material.cs | 7 +++---- PyroFetes/Models/Movement.cs | 10 +++++----- PyroFetes/Models/Price.cs | 17 ----------------- PyroFetes/Models/Product.cs | 2 +- PyroFetes/Models/ProductCategory.cs | 8 ++++---- PyroFetes/Models/ProductColor.cs | 3 ++- PyroFetes/Models/ProductEffect.cs | 4 ++-- PyroFetes/Models/Supplier.cs | 16 ---------------- PyroFetes/Models/Warehouse.cs | 15 +++++++-------- PyroFetes/Models/WarehouseProduct.cs | 8 ++++---- 14 files changed, 40 insertions(+), 77 deletions(-) delete mode 100644 PyroFetes/Models/Price.cs delete mode 100644 PyroFetes/Models/Supplier.cs diff --git a/PyroFetes/Models/Brand.cs b/PyroFetes/Models/Brand.cs index 93b596c..b42bcfc 100644 --- a/PyroFetes/Models/Brand.cs +++ b/PyroFetes/Models/Brand.cs @@ -1,13 +1,13 @@ using System.ComponentModel.DataAnnotations; -using API.Class; +using API.Models; -namespace API.Models; +namespace PyroFetes.Models; public class Brand { [Key] public int Id { get; set; } - [Required, MaxLength(100)] public string Name { get; set; } + [Required, MaxLength(100)] public string? Name { get; set; } [Required] public int ProductId { get; set; } - [Required] public Product Product { get; set; } + [Required] public Product? Product { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Classification.cs b/PyroFetes/Models/Classification.cs index 43be442..2eff1fc 100644 --- a/PyroFetes/Models/Classification.cs +++ b/PyroFetes/Models/Classification.cs @@ -1,12 +1,12 @@ using System.ComponentModel.DataAnnotations; -using API.Class; +using API.Models; -namespace API.Models; +namespace PyroFetes.Models; public class Classification { [Key] public int Id { get; set; } - [Required] public string Label { get; set; } + [Required] public string? Label { get; set; } - [Required] public List Products { get; set; } + [Required] public List? Products { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Color.cs b/PyroFetes/Models/Color.cs index d7a0d7d..00bb147 100644 --- a/PyroFetes/Models/Color.cs +++ b/PyroFetes/Models/Color.cs @@ -1,11 +1,10 @@ using System.ComponentModel.DataAnnotations; -using API.Class; -namespace API.Models; +namespace PyroFetes.Models; public class Color { [Key] public int Id { get; set; } - [Required] public string Label { get; set; } + [Required] public string? Label { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Effect.cs b/PyroFetes/Models/Effect.cs index b8f083f..2d0ba45 100644 --- a/PyroFetes/Models/Effect.cs +++ b/PyroFetes/Models/Effect.cs @@ -1,11 +1,9 @@ using System.ComponentModel.DataAnnotations; -using API.Class; -namespace API.Models; +namespace PyroFetes.Models; public class Effect { [Key] public int Id { get; set; } - [Required] public string Label { get; set; } - + [Required] public string? Label { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Material.cs b/PyroFetes/Models/Material.cs index f60fc61..d1ad0a9 100644 --- a/PyroFetes/Models/Material.cs +++ b/PyroFetes/Models/Material.cs @@ -1,14 +1,13 @@ using System.ComponentModel.DataAnnotations; -using API.Class; -namespace API.Models; +namespace PyroFetes.Models; public class Material { [Key] public int Id {get; set;} - [Required, MaxLength(100)] public string Name {get; set;} + [Required, MaxLength(100)] public string? Name {get; set;} [Required] public int Quantity {get; set;} [Required] public int WarehouseId {get; set;} - [Required] public Warehouse Warehouse {get; set;} + [Required] public Warehouse? Warehouse {get; set;} } \ No newline at end of file diff --git a/PyroFetes/Models/Movement.cs b/PyroFetes/Models/Movement.cs index 084a069..b0fb0ab 100644 --- a/PyroFetes/Models/Movement.cs +++ b/PyroFetes/Models/Movement.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations; -using API.Class; +using API.Models; -namespace API.Models; +namespace PyroFetes.Models; public class Movement { @@ -12,11 +12,11 @@ public class Movement [Required] public int Quantity {get; set;} [Required] public int ProductId {get; set;} - [Required] public Product Product {get; set;} + [Required] public Product? Product {get; set;} [Required] public int? SourceWarehouseId {get; set;} - [Required] public Warehouse SourceWarehouse {get; set;} + [Required] public Warehouse? SourceWarehouse {get; set;} [Required] public int? DestinationWarehouseId {get; set;} - [Required] public Warehouse DestinationWarehouse {get; set;} + [Required] public Warehouse? DestinationWarehouse {get; set;} } \ No newline at end of file diff --git a/PyroFetes/Models/Price.cs b/PyroFetes/Models/Price.cs deleted file mode 100644 index 9878768..0000000 --- a/PyroFetes/Models/Price.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using API.Class; -using Microsoft.EntityFrameworkCore; - -namespace API.Models; - -[PrimaryKey(nameof(SupplierId), nameof(ProductId))] -public class Price -{ - [Required] public decimal Label { get; set; } - - [Required] public int SupplierId { get; set; } - [Required] public Supplier Supplier { get; set; } - - [Required] public int ProductId { get; set; } - [Required] public Product Product { get; set; } -} \ No newline at end of file diff --git a/PyroFetes/Models/Product.cs b/PyroFetes/Models/Product.cs index e2d5db3..f8c4497 100644 --- a/PyroFetes/Models/Product.cs +++ b/PyroFetes/Models/Product.cs @@ -1,5 +1,5 @@ using System.ComponentModel.DataAnnotations; -using API.Class; +using PyroFetes.Models; namespace API.Models { diff --git a/PyroFetes/Models/ProductCategory.cs b/PyroFetes/Models/ProductCategory.cs index 419970c..14a613c 100644 --- a/PyroFetes/Models/ProductCategory.cs +++ b/PyroFetes/Models/ProductCategory.cs @@ -1,12 +1,12 @@ using System.ComponentModel.DataAnnotations; -using API.Class; +using API.Models; -namespace API.Models; +namespace PyroFetes.Models; public class ProductCategory { [Key] public int Id { get; set; } - [Required] public string Label { get; set; } + [Required] public string? Label { get; set; } - [Required] public List Products { get; set; } + [Required] public List? Products { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ProductColor.cs b/PyroFetes/Models/ProductColor.cs index 8beac4d..0f27e3c 100644 --- a/PyroFetes/Models/ProductColor.cs +++ b/PyroFetes/Models/ProductColor.cs @@ -1,7 +1,8 @@ using System.ComponentModel.DataAnnotations; +using API.Models; using Microsoft.EntityFrameworkCore; -namespace API.Models; +namespace PyroFetes.Models; [PrimaryKey(nameof(ProductId), nameof(ColorId))] public class ProductColor diff --git a/PyroFetes/Models/ProductEffect.cs b/PyroFetes/Models/ProductEffect.cs index 5289662..39659ec 100644 --- a/PyroFetes/Models/ProductEffect.cs +++ b/PyroFetes/Models/ProductEffect.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations; -using Microsoft.EntityFrameworkCore; +using API.Models; -namespace API.Models; +namespace PyroFetes.Models; [PrimaryKey(nameof(ProductId), nameof(EffectId))] public class ProductEffect diff --git a/PyroFetes/Models/Supplier.cs b/PyroFetes/Models/Supplier.cs deleted file mode 100644 index 6d44a91..0000000 --- a/PyroFetes/Models/Supplier.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using API.Models; - -namespace API.Class; - -public class Supplier -{ - [Key] public int Id { get; set; } - [Required, MaxLength(100)] public string Name { get; set; } - [Required] public string Email { get; set; } - [Required] public string PhoneNumber { get; set; } - [Required] public string Adress { get; set; } - [Required] public int ZipCode { get; set; } - [Required] public string City { get; set; } - -} \ No newline at end of file diff --git a/PyroFetes/Models/Warehouse.cs b/PyroFetes/Models/Warehouse.cs index 388e4d2..3b0f833 100644 --- a/PyroFetes/Models/Warehouse.cs +++ b/PyroFetes/Models/Warehouse.cs @@ -1,23 +1,22 @@ using System.ComponentModel.DataAnnotations; -using API.Models; -namespace API.Class; +namespace PyroFetes.Models; public class Warehouse { [Key] public int Id {get; set;} - [Required, MaxLength(100)] public string Name {get; set;} + [Required, MaxLength(100)] public string? Name {get; set;} [Required] public int MaxWeight {get; set;} [Required] public int Current {get; set;} [Required] public int MinWeight {get; set;} - [Required] public string Adress { get; set; } + [Required] public string? Address { get; set; } [Required] public int ZipCode { get; set; } - [Required] public string City { get; set; } + [Required] public string? City { get; set; } - [Required] public List Materials {get; set;} + [Required] public List? Materials {get; set;} - [Required] public List MovementsSource { get; set; } - [Required] public List MovementsDestination { get; set; } + [Required] public List? MovementsSource { get; set; } + [Required] public List? MovementsDestination { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/WarehouseProduct.cs b/PyroFetes/Models/WarehouseProduct.cs index 79e5329..2b9cc41 100644 --- a/PyroFetes/Models/WarehouseProduct.cs +++ b/PyroFetes/Models/WarehouseProduct.cs @@ -1,15 +1,15 @@ using System.ComponentModel.DataAnnotations; -using API.Class; +using API.Models; -namespace API.Models; +namespace PyroFetes.Models; public class WarehouseProduct { [Key] public int Quantity { get; set; } [Required] public int ProductId { get; set; } - [Required] public Product Product { get; set; } + [Required] public Product? Product { get; set; } [Required] public int WarehouseId { get; set; } - [Required] public Warehouse Warehouse { get; set; } + [Required] public Warehouse? Warehouse { get; set; } } \ No newline at end of file From f163aa5feb15b8037ecd7e3f4200433c338f7337 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 3 Oct 2025 14:37:27 +0100 Subject: [PATCH 17/43] Correcting type error in all string properties --- PyroFetes/Models/Product.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/PyroFetes/Models/Product.cs b/PyroFetes/Models/Product.cs index f8c4497..cb4613f 100644 --- a/PyroFetes/Models/Product.cs +++ b/PyroFetes/Models/Product.cs @@ -7,26 +7,26 @@ namespace API.Models { [Key] public int Id { get; set; } [Required] public int References { get; set; } - [Required, MaxLength(100)] public string Name { get; set; } + [Required, MaxLength(100)] public string? Name { get; set; } [Required] public decimal Duration {get; set;} [Required] public decimal Caliber { get; set; } [Required] public int ApprovalNumber { get; set; } [Required] public decimal Weight { get; set; } [Required] public decimal Nec { get; set; } [Required] public decimal SellingPrice { get; set; } - [Required] public string Image { get; set; } - [Required] public string Link { get; set; } + [Required] public string? Image { get; set; } + [Required] public string? Link { get; set; } // Relations [Required] public int ClassificationId { get; set; } - [Required] public Classification Classification { get; set; } + [Required] public Classification? Classification { get; set; } [Required] public int ProductCategoryId { get; set; } - [Required] public ProductCategory ProductCategory { get; set; } + [Required] public ProductCategory? ProductCategory { get; set; } - [Required] public List Brands { get; set; } + [Required] public List? Brands { get; set; } - [Required] public List Movements { get; set; } + [Required] public List? Movements { get; set; } } } \ No newline at end of file From c4e8b0b2ded80a204628941d91a94b78645d3ee0 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 3 Oct 2025 14:42:08 +0100 Subject: [PATCH 18/43] Deleting Product.cs --- PyroFetes/Models/Product.cs | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 PyroFetes/Models/Product.cs diff --git a/PyroFetes/Models/Product.cs b/PyroFetes/Models/Product.cs deleted file mode 100644 index 1c98a9a..0000000 --- a/PyroFetes/Models/Product.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace PyroFetes.Models; - -public class Product -{ - [Key] public int Id { get; set; } -} \ No newline at end of file From 2781f1e80a5603991e89a7af809971d684d114a1 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 3 Oct 2025 14:44:12 +0100 Subject: [PATCH 19/43] Change namespace --- PyroFetes/Models/Brand.cs | 1 - PyroFetes/Models/Classification.cs | 1 - PyroFetes/Models/Movement.cs | 1 - PyroFetes/Models/Product.cs | 3 +-- PyroFetes/Models/ProductCategory.cs | 1 - PyroFetes/Models/ProductColor.cs | 1 - PyroFetes/Models/ProductEffect.cs | 1 - PyroFetes/Models/WarehouseProduct.cs | 1 - 8 files changed, 1 insertion(+), 9 deletions(-) diff --git a/PyroFetes/Models/Brand.cs b/PyroFetes/Models/Brand.cs index b42bcfc..49016ca 100644 --- a/PyroFetes/Models/Brand.cs +++ b/PyroFetes/Models/Brand.cs @@ -1,5 +1,4 @@ using System.ComponentModel.DataAnnotations; -using API.Models; namespace PyroFetes.Models; diff --git a/PyroFetes/Models/Classification.cs b/PyroFetes/Models/Classification.cs index 2eff1fc..6ef006b 100644 --- a/PyroFetes/Models/Classification.cs +++ b/PyroFetes/Models/Classification.cs @@ -1,5 +1,4 @@ using System.ComponentModel.DataAnnotations; -using API.Models; namespace PyroFetes.Models; diff --git a/PyroFetes/Models/Movement.cs b/PyroFetes/Models/Movement.cs index b0fb0ab..ad42494 100644 --- a/PyroFetes/Models/Movement.cs +++ b/PyroFetes/Models/Movement.cs @@ -1,5 +1,4 @@ using System.ComponentModel.DataAnnotations; -using API.Models; namespace PyroFetes.Models; diff --git a/PyroFetes/Models/Product.cs b/PyroFetes/Models/Product.cs index cb4613f..8f1cff9 100644 --- a/PyroFetes/Models/Product.cs +++ b/PyroFetes/Models/Product.cs @@ -1,7 +1,6 @@ using System.ComponentModel.DataAnnotations; -using PyroFetes.Models; -namespace API.Models +namespace PyroFetes.Models { public class Product { diff --git a/PyroFetes/Models/ProductCategory.cs b/PyroFetes/Models/ProductCategory.cs index 14a613c..2e339ba 100644 --- a/PyroFetes/Models/ProductCategory.cs +++ b/PyroFetes/Models/ProductCategory.cs @@ -1,5 +1,4 @@ using System.ComponentModel.DataAnnotations; -using API.Models; namespace PyroFetes.Models; diff --git a/PyroFetes/Models/ProductColor.cs b/PyroFetes/Models/ProductColor.cs index 0f27e3c..66acf11 100644 --- a/PyroFetes/Models/ProductColor.cs +++ b/PyroFetes/Models/ProductColor.cs @@ -1,5 +1,4 @@ using System.ComponentModel.DataAnnotations; -using API.Models; using Microsoft.EntityFrameworkCore; namespace PyroFetes.Models; diff --git a/PyroFetes/Models/ProductEffect.cs b/PyroFetes/Models/ProductEffect.cs index 39659ec..4ac084b 100644 --- a/PyroFetes/Models/ProductEffect.cs +++ b/PyroFetes/Models/ProductEffect.cs @@ -1,5 +1,4 @@ using System.ComponentModel.DataAnnotations; -using API.Models; namespace PyroFetes.Models; diff --git a/PyroFetes/Models/WarehouseProduct.cs b/PyroFetes/Models/WarehouseProduct.cs index 2b9cc41..ca3716c 100644 --- a/PyroFetes/Models/WarehouseProduct.cs +++ b/PyroFetes/Models/WarehouseProduct.cs @@ -1,5 +1,4 @@ using System.ComponentModel.DataAnnotations; -using API.Models; namespace PyroFetes.Models; From da0f5fb513c68a0dbba794468119341492f60a26 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 3 Oct 2025 14:46:34 +0100 Subject: [PATCH 20/43] Correcting an error in using EF --- PyroFetes/Models/ProductEffect.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/PyroFetes/Models/ProductEffect.cs b/PyroFetes/Models/ProductEffect.cs index 4ac084b..1c55e9a 100644 --- a/PyroFetes/Models/ProductEffect.cs +++ b/PyroFetes/Models/ProductEffect.cs @@ -1,4 +1,5 @@ using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; namespace PyroFetes.Models; From df919bf943be1586abd8d85b908405cd0a224fd5 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 3 Oct 2025 14:54:25 +0100 Subject: [PATCH 21/43] Correcting Entities --- PyroFetes/Models/Show.cs | 21 +++++++------------- PyroFetes/Models/Sound.cs | 32 ++++++++----------------------- PyroFetes/Models/SoundCategory.cs | 7 ++----- PyroFetes/Models/SoundTimecode.cs | 16 ++++------------ PyroFetes/Models/Staff.cs | 19 +++++------------- PyroFetes/Models/Truck.cs | 20 +++++-------------- 6 files changed, 31 insertions(+), 84 deletions(-) diff --git a/PyroFetes/Models/Show.cs b/PyroFetes/Models/Show.cs index 6fdc7d2..5ec1804 100644 --- a/PyroFetes/Models/Show.cs +++ b/PyroFetes/Models/Show.cs @@ -5,23 +5,16 @@ namespace PyroFetes.Models; public class Show { [Key] public int Id { get; set; } - - [Required] - public string? Name { get; set; } - - [Required, MaxLength(120)] - public string? Place { get; set; } - - [MaxLength(500)] - public string? Description { get; set; } - + [Required] public string? Name { get; set; } + [Required, MaxLength(120)] public string? Place { get; set; } + [MaxLength(500)] public string? Description { get; set; } + // Lien (chemin/URL/nom de fichier) vers le plan d’implémentation pyrotechnique [Required, MaxLength(500)] public string? PyrotechnicImplementationPlan { get; set; } public DateTime? Date { get; set; } - - public ICollection Staff { get; set; } = new List(); - public ICollection Trucks { get; set; } = new List(); - public ICollection SoundCues { get; set; } = new List(); + public ICollection? Staff { get; set; } + public ICollection? Trucks { get; set; } + public ICollection? SoundCues { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Sound.cs b/PyroFetes/Models/Sound.cs index 7ba2f64..361d3e5 100644 --- a/PyroFetes/Models/Sound.cs +++ b/PyroFetes/Models/Sound.cs @@ -5,30 +5,14 @@ namespace PyroFetes.Models; public class Sound { [Key] public int Id { get; set; } - - [Required, MaxLength(120)] - public string Name { get; set; } = null!; - - [Required, MaxLength(60)] - public string? Type { get; set; } - - [Required, MaxLength(120)] - public string? Artist { get; set; } - - [Required, Range(0, int.MaxValue)] - public int? Duration { get; set; } - - [Required, MaxLength(40)] - public string? Kind { get; set; } - - [Required, MaxLength(40)] - public string? Format { get; set; } - + [Required, MaxLength(120)] public string Name { get; set; } = null!; + [Required, MaxLength(60)] public string? Type { get; set; } + [Required, MaxLength(120)] public string? Artist { get; set; } + [Required, Range(0, int.MaxValue)] public int? Duration { get; set; } + [Required, MaxLength(40)] public string? Kind { get; set; } + [Required, MaxLength(40)] public string? Format { get; set; } public DateTime? CreationDate { get; set; } - - [Required] - public int SoundCategoryId { get; set; } + [Required] public int SoundCategoryId { get; set; } public SoundCategory? Category { get; set; } - - public ICollection ShowPlacements { get; set; } = new List(); + public ICollection? ShowPlacements { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/SoundCategory.cs b/PyroFetes/Models/SoundCategory.cs index 17b5120..3cabd6d 100644 --- a/PyroFetes/Models/SoundCategory.cs +++ b/PyroFetes/Models/SoundCategory.cs @@ -5,9 +5,6 @@ namespace PyroFetes.Models; public class SoundCategory { [Key] public int Id { get; set; } - - [Required, MaxLength(60)] - public string Name { get; set; } = null!; - - public ICollection Sounds { get; set; } = new List(); + [Required, MaxLength(60)] public string Name { get; set; } = null!; + public ICollection? Sounds { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/SoundTimecode.cs b/PyroFetes/Models/SoundTimecode.cs index 0492073..7537699 100644 --- a/PyroFetes/Models/SoundTimecode.cs +++ b/PyroFetes/Models/SoundTimecode.cs @@ -5,18 +5,10 @@ namespace PyroFetes.Models; public class SoundTimecode { [Key] public int Id { get; set; } - - [Required] - public int ShowId { get; set; } + [Required] public int ShowId { get; set; } public Show? Show { get; set; } - - [Required] - public int SoundId { get; set; } + [Required] public int SoundId { get; set; } public Sound? Sound { get; set; } - - [Required, Range(0, int.MaxValue)] - public int Start { get; set; } - - [Required, Range(0, int.MaxValue)] - public int End { get; set; } + [Required, Range(0, int.MaxValue)] public int Start { get; set; } + [Required, Range(0, int.MaxValue)] public int End { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Staff.cs b/PyroFetes/Models/Staff.cs index 0c829d8..60f4850 100644 --- a/PyroFetes/Models/Staff.cs +++ b/PyroFetes/Models/Staff.cs @@ -5,18 +5,9 @@ namespace PyroFetes.Models; public class Staff { [Key] public int Id { get; set; } - - [Required, MaxLength(60)] - public string FirstName { get; set; } = null!; - - [Required, MaxLength(60)] - public string LastName { get; set; } = null!; - - [Required, MaxLength(100)] - public string? Profession { get; set; } - - [Required, MaxLength(120)] - public string? Email { get; set; } - - public ICollection Shows { get; set; } = new List(); + [Required, MaxLength(60)] public string FirstName { get; set; } = null!; + [Required, MaxLength(60)] public string LastName { get; set; } = null!; + [Required, MaxLength(100)] public string? Profession { get; set; } + [Required, MaxLength(120)] public string? Email { get; set; } + public ICollection? Shows { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Truck.cs b/PyroFetes/Models/Truck.cs index b711a34..b0a55f8 100644 --- a/PyroFetes/Models/Truck.cs +++ b/PyroFetes/Models/Truck.cs @@ -5,20 +5,10 @@ namespace PyroFetes.Models; public class Truck { [Key] public int Id { get; set; } - - [Required, MaxLength(40)] - public string Type { get; set; } = null!; - - [Range(0, double.MaxValue)] - public double? MaxExplosiveCapacity { get; set; } - - [Required, MaxLength(80)] - public string? Sizes { get; set; } - - [Required, MaxLength(40)] - public string? Statut { get; set; } - - [Required] - public int ShowId { get; set; } + [Required, MaxLength(40)] public string Type { get; set; } = null!; + [Range(0, double.MaxValue)] public double? MaxExplosiveCapacity { get; set; } + [Required, MaxLength(80)] public string? Sizes { get; set; } + [Required, MaxLength(40)] public string? Status { get; set; } + [Required] public int ShowId { get; set; } public Show? Show { get; set; } } \ No newline at end of file From 52521908b7cc54465fd9ca46d87a75b971f20cb1 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 3 Oct 2025 16:53:18 +0100 Subject: [PATCH 22/43] Change type of date parameters (string => DateOnly) --- PyroFetes/Models/Availability.cs | 8 ++++---- PyroFetes/Models/Communication.cs | 6 +++--- PyroFetes/Models/Contact.cs | 16 +++++++++------- PyroFetes/Models/Customer.cs | 1 + PyroFetes/Models/CustomerType.cs | 4 ++-- PyroFetes/Models/ExperienceLevel.cs | 2 +- PyroFetes/Models/HistoryOfApproval.cs | 4 ++-- PyroFetes/Models/Provider.cs | 2 +- PyroFetes/Models/ProviderType.cs | 2 +- PyroFetes/Models/Staff.cs | 6 +++--- 10 files changed, 27 insertions(+), 24 deletions(-) diff --git a/PyroFetes/Models/Availability.cs b/PyroFetes/Models/Availability.cs index a727c3a..5d85e0d 100644 --- a/PyroFetes/Models/Availability.cs +++ b/PyroFetes/Models/Availability.cs @@ -5,8 +5,8 @@ namespace PyroFetes.Models; public class Availability { [Key] public int Id { get; set; } - [Required] public string AvailabilityDate { get; set; } - [Required] public string DeliveryDate { get; set; } - [Required] public string ExpirationDate { get; set; } - [Required] public string RenewallDate { get; set; } + [Required] public string? AvailabilityDate { get; set; } + [Required] public DateOnly DeliveryDate { get; set; } + [Required] public DateOnly ExpirationDate { get; set; } + [Required] public DateOnly RenewallDate { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Communication.cs b/PyroFetes/Models/Communication.cs index 7c3e284..6faa91a 100644 --- a/PyroFetes/Models/Communication.cs +++ b/PyroFetes/Models/Communication.cs @@ -5,9 +5,9 @@ namespace PyroFetes.Models; public class Communication { [Key] public int Id { get; set; } - [Required] public string Calling { get; set; } - [Required] public string Email { get; set; } - [Required] public string Meeting { get; set; } + [Required] public string? Calling { get; set; } + [Required] public string? Email { get; set; } + [Required] public string? Meeting { get; set; } //REL } \ No newline at end of file diff --git a/PyroFetes/Models/Contact.cs b/PyroFetes/Models/Contact.cs index 87385bc..8b6a6cf 100644 --- a/PyroFetes/Models/Contact.cs +++ b/PyroFetes/Models/Contact.cs @@ -5,14 +5,16 @@ namespace PyroFetes.Models; public class Contact { [Key] public int Id { get; set; } - [Required] public string LastName { get; set; } - [Required] public string FirstName { get; set; } - [Required] public string Email { get; set; } - [Required] public string PhoneNumber { get; set; } - [Required] public string Address { get; set; } - [Required] public string Role { get; set; } + [Required, MaxLength(100)] public string? LastName { get; set; } + [Required, MaxLength(100)] public string? FirstName { get; set; } + [Required] public string? Email { get; set; } + [Required] public string? PhoneNumber { get; set; } + [Required] public string? Address { get; set; } + [Required] public string? ZipCode { get; set; } + [Required] public string? City { get; set; } + [Required] public string? Role { get; set; } //RELATIONS DE CON LA - public int CommunicationID { get; set; } + public int CommunicationId { get; set; } public Communication? Communication { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Customer.cs b/PyroFetes/Models/Customer.cs index 3e7139a..31f0203 100644 --- a/PyroFetes/Models/Customer.cs +++ b/PyroFetes/Models/Customer.cs @@ -6,6 +6,7 @@ public class Customer { [Key] public int Id { get; set; } [Required] public string? Note { get; set; } + //Les relations public int CustomerTypeId { get; set; } public CustomerType? CustomerType { get; set; } diff --git a/PyroFetes/Models/CustomerType.cs b/PyroFetes/Models/CustomerType.cs index 28fc14d..3e24483 100644 --- a/PyroFetes/Models/CustomerType.cs +++ b/PyroFetes/Models/CustomerType.cs @@ -5,7 +5,7 @@ namespace PyroFetes.Models; public class CustomerType { [Key] public int Id { get; set; } - [Required] public string? Price { get; set; } - //RELATIONS PTN + [Required] public decimal Price { get; set; } + public List? Customers { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ExperienceLevel.cs b/PyroFetes/Models/ExperienceLevel.cs index 8a2bb93..41a1879 100644 --- a/PyroFetes/Models/ExperienceLevel.cs +++ b/PyroFetes/Models/ExperienceLevel.cs @@ -5,5 +5,5 @@ namespace PyroFetes.Models; public class ExperienceLevel { [Key] public int Id { get; set; } - [Required] public string Label { get; set; } + [Required] public string? Label { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/HistoryOfApproval.cs b/PyroFetes/Models/HistoryOfApproval.cs index 4e05886..8c85ef8 100644 --- a/PyroFetes/Models/HistoryOfApproval.cs +++ b/PyroFetes/Models/HistoryOfApproval.cs @@ -5,6 +5,6 @@ namespace PyroFetes.Models; public class HistoryOfApproval { [Key] public int Id { get; set; } - [Required] public string ExpirationDate { get; set; } - [Required] public string DeliveryDate { get; set; } + [Required] public DateOnly ExpirationDate { get; set; } + [Required] public DateOnly DeliveryDate { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Provider.cs b/PyroFetes/Models/Provider.cs index fdfc566..f48e2c3 100644 --- a/PyroFetes/Models/Provider.cs +++ b/PyroFetes/Models/Provider.cs @@ -9,6 +9,6 @@ public class Provider //Relations - public int ProviderID { get; set; } + public int ProviderId { get; set; } public ProviderType? ProviderType { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ProviderType.cs b/PyroFetes/Models/ProviderType.cs index ac620c9..4c8f70c 100644 --- a/PyroFetes/Models/ProviderType.cs +++ b/PyroFetes/Models/ProviderType.cs @@ -5,5 +5,5 @@ namespace PyroFetes.Models; public class ProviderType { [Key] public int Id { get; set; } - [Required] public string Label { get; set; } + [Required] public string? Label { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Staff.cs b/PyroFetes/Models/Staff.cs index fef94d9..c405e21 100644 --- a/PyroFetes/Models/Staff.cs +++ b/PyroFetes/Models/Staff.cs @@ -1,10 +1,10 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; namespace PyroFetes.Models; public class Staff { [Key] public int Id { get; set; } - [Required] public string F4T2NumberApproval { get; set; } - [Required] public string F4T2ExpirationDate { get; set; } + [Required] public string? F4T2NumberApproval { get; set; } + [Required] public string? F4T2ExpirationDate { get; set; } } \ No newline at end of file From c128cd453d7c9ba7623948951ee49d7efcb049f4 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 3 Oct 2025 16:57:23 +0100 Subject: [PATCH 23/43] Add F4T2NumberApproval and F4T2ExpirationDate in Staff.css --- PyroFetes/Models/Staff.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PyroFetes/Models/Staff.cs b/PyroFetes/Models/Staff.cs index 60f4850..670adef 100644 --- a/PyroFetes/Models/Staff.cs +++ b/PyroFetes/Models/Staff.cs @@ -9,5 +9,7 @@ public class Staff [Required, MaxLength(60)] public string LastName { get; set; } = null!; [Required, MaxLength(100)] public string? Profession { get; set; } [Required, MaxLength(120)] public string? Email { get; set; } + [Required] public string? F4T2NumberApproval { get; set; } + [Required] public DateOnly F4T2ExpirationDate { get; set; } public ICollection? Shows { get; set; } } \ No newline at end of file From 65725922f6cf35d09ec3c89279085f4269e1da74 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 3 Oct 2025 16:58:36 +0100 Subject: [PATCH 24/43] Delete Staff.cs --- PyroFetes/Models/Staff.cs | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 PyroFetes/Models/Staff.cs diff --git a/PyroFetes/Models/Staff.cs b/PyroFetes/Models/Staff.cs deleted file mode 100644 index c405e21..0000000 --- a/PyroFetes/Models/Staff.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace PyroFetes.Models; - -public class Staff -{ - [Key] public int Id { get; set; } - [Required] public string? F4T2NumberApproval { get; set; } - [Required] public string? F4T2ExpirationDate { get; set; } -} \ No newline at end of file From 5419ca5aa9cf3dfbbc26bfad15b24194f9fd228f Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 3 Oct 2025 17:24:31 +0100 Subject: [PATCH 25/43] Creating all entities in DbSet --- PyroFetes/PyroFetesDbContext.cs | 47 +++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/PyroFetes/PyroFetesDbContext.cs b/PyroFetes/PyroFetesDbContext.cs index b5ab500..ae0944c 100644 --- a/PyroFetes/PyroFetesDbContext.cs +++ b/PyroFetes/PyroFetesDbContext.cs @@ -1,12 +1,55 @@ using Microsoft.EntityFrameworkCore; +using PyroFetes.Models; namespace PyroFetes; public class PyroFetesDbContext : DbContext { // Entities - - + public DbSet Availabilities { get; set; } + public DbSet Brands { get; set; } + public DbSet Classifications { get; set; } + public DbSet Colors { get; set; } + public DbSet Communications { get; set; } + public DbSet Contacts { get; set; } + public DbSet Customers { get; set; } + public DbSet CustomerContacts { get; set; } + public DbSet CustomerTypes { get; set; } + public DbSet Deliverers { get; set; } + public DbSet DeliveryNotes { get; set; } + public DbSet Effects { get; set; } + public DbSet ExperienceLevels { get; set; } + public DbSet HistoryOfApprovals { get; set; } + public DbSet Materials { get; set; } + public DbSet Movements { get; set; } + public DbSet Prices { get; set; } + public DbSet Products { get; set; } + public DbSet ProductCategories { get; set; } + public DbSet ProductColors { get; set; } + public DbSet ProductDeliveries { get; set; } + public DbSet ProductEffects { get; set; } + public DbSet Providers { get; set; } + public DbSet ProviderContacts { get; set; } + public DbSet ProviderTypes { get; set; } + public DbSet PurchaseOrders { get; set; } + public DbSet PurchaseProducts { get; set; } + public DbSet Quotations { get; set; } + public DbSet QuotationProducts { get; set; } + public DbSet Settings { get; set; } + public DbSet Shows { get; set; } + public DbSet Sounds { get; set; } + public DbSet SoundCategories { get; set; } + public DbSet SoundTimecodes { get; set; } + public DbSet Staffs { get; set; } + public DbSet StaffAvailabilities { get; set; } + public DbSet StaffContacts { get; set; } + public DbSet StaffHistoryOfApprovals { get; set; } + public DbSet Suppliers { get; set; } + public DbSet Trucks { get; set; } + public DbSet Users { get; set; } + public DbSet Warehouses { get; set; } + public DbSet WarehouseProducts { get; set; } + // Database configuration protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { From 2d73830c5acb2491013f4cdb05cdbc2c96c9c169 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Fri, 3 Oct 2025 17:41:17 +0100 Subject: [PATCH 26/43] Add MinimalQuantity in Product.cs --- PyroFetes/Models/Product.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/PyroFetes/Models/Product.cs b/PyroFetes/Models/Product.cs index 8f1cff9..e7ad7ee 100644 --- a/PyroFetes/Models/Product.cs +++ b/PyroFetes/Models/Product.cs @@ -15,6 +15,7 @@ namespace PyroFetes.Models [Required] public decimal SellingPrice { get; set; } [Required] public string? Image { get; set; } [Required] public string? Link { get; set; } + [Required] public int MinimalQuantity { get; set; } // Relations [Required] public int ClassificationId { get; set; } From df3b820dea1671a9049b5b5593d6fd48bff16c40 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Mon, 6 Oct 2025 19:23:20 +0100 Subject: [PATCH 27/43] Correcting relations into Movement and Warehouse. --- PyroFetes/Models/Movement.cs | 6 +++--- PyroFetes/Models/Warehouse.cs | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PyroFetes/Models/Movement.cs b/PyroFetes/Models/Movement.cs index ad42494..6b31873 100644 --- a/PyroFetes/Models/Movement.cs +++ b/PyroFetes/Models/Movement.cs @@ -14,8 +14,8 @@ public class Movement [Required] public Product? Product {get; set;} [Required] public int? SourceWarehouseId {get; set;} - [Required] public Warehouse? SourceWarehouse {get; set;} + public Warehouse? SourceWarehouse {get; set;} - [Required] public int? DestinationWarehouseId {get; set;} - [Required] public Warehouse? DestinationWarehouse {get; set;} + public int? DestinationWarehouseId {get; set;} + public Warehouse? DestinationWarehouse {get; set;} } \ No newline at end of file diff --git a/PyroFetes/Models/Warehouse.cs b/PyroFetes/Models/Warehouse.cs index 3b0f833..3ce4382 100644 --- a/PyroFetes/Models/Warehouse.cs +++ b/PyroFetes/Models/Warehouse.cs @@ -14,9 +14,9 @@ public class Warehouse [Required] public string? City { get; set; } - [Required] public List? Materials {get; set;} + public List? Materials {get; set;} - [Required] public List? MovementsSource { get; set; } - [Required] public List? MovementsDestination { get; set; } + public List? MovementsSource { get; set; } + public List? MovementsDestination { get; set; } } \ No newline at end of file From f4da74e9e2868d0e2fc3f2c9c9264a5c0d4bfac1 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Mon, 6 Oct 2025 19:29:45 +0100 Subject: [PATCH 28/43] Idem --- PyroFetes/Models/Movement.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyroFetes/Models/Movement.cs b/PyroFetes/Models/Movement.cs index 6b31873..6c53c54 100644 --- a/PyroFetes/Models/Movement.cs +++ b/PyroFetes/Models/Movement.cs @@ -13,7 +13,7 @@ public class Movement [Required] public int ProductId {get; set;} [Required] public Product? Product {get; set;} - [Required] public int? SourceWarehouseId {get; set;} + public int? SourceWarehouseId {get; set;} public Warehouse? SourceWarehouse {get; set;} public int? DestinationWarehouseId {get; set;} From fa353446eb39ea7f696697ddc4f1689c2dc100e4 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Mon, 6 Oct 2025 19:35:34 +0100 Subject: [PATCH 29/43] Writing OnModelCreating in PyroFetesDbContext.cs. --- PyroFetes/PyroFetesDbContext.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/PyroFetes/PyroFetesDbContext.cs b/PyroFetes/PyroFetesDbContext.cs index ae0944c..ac556ea 100644 --- a/PyroFetes/PyroFetesDbContext.cs +++ b/PyroFetes/PyroFetesDbContext.cs @@ -66,5 +66,18 @@ public class PyroFetesDbContext : DbContext // Models customization protected override void OnModelCreating(ModelBuilder modelBuilder) { + // Relation SourceWarehouse + modelBuilder.Entity() + .HasOne(m => m.SourceWarehouse) + .WithMany(w => w.MovementsSource) + .HasForeignKey(m => m.SourceWarehouseId) + .OnDelete(DeleteBehavior.Restrict); // empêche la suppression en cascade + + // Relation DestinationWarehouse + modelBuilder.Entity() + .HasOne(m => m.DestinationWarehouse) + .WithMany(w => w.MovementsDestination) + .HasForeignKey(m => m.DestinationWarehouseId) + .OnDelete(DeleteBehavior.Restrict); } } \ No newline at end of file From cfa2d59c0d90f19decd65d703faa178471b00a49 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Tue, 7 Oct 2025 10:01:41 +0200 Subject: [PATCH 30/43] Fix french comments --- PyroFetes/Models/Communication.cs | 1 - PyroFetes/Models/Contact.cs | 1 - PyroFetes/Models/Customer.cs | 2 +- PyroFetes/Models/Show.cs | 2 +- PyroFetes/Models/Warehouse.cs | 3 --- 5 files changed, 2 insertions(+), 7 deletions(-) diff --git a/PyroFetes/Models/Communication.cs b/PyroFetes/Models/Communication.cs index 6faa91a..d7cf112 100644 --- a/PyroFetes/Models/Communication.cs +++ b/PyroFetes/Models/Communication.cs @@ -9,5 +9,4 @@ public class Communication [Required] public string? Email { get; set; } [Required] public string? Meeting { get; set; } - //REL } \ No newline at end of file diff --git a/PyroFetes/Models/Contact.cs b/PyroFetes/Models/Contact.cs index 8b6a6cf..3b0e762 100644 --- a/PyroFetes/Models/Contact.cs +++ b/PyroFetes/Models/Contact.cs @@ -14,7 +14,6 @@ public class Contact [Required] public string? City { get; set; } [Required] public string? Role { get; set; } - //RELATIONS DE CON LA public int CommunicationId { get; set; } public Communication? Communication { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Customer.cs b/PyroFetes/Models/Customer.cs index 31f0203..d158621 100644 --- a/PyroFetes/Models/Customer.cs +++ b/PyroFetes/Models/Customer.cs @@ -7,7 +7,7 @@ public class Customer [Key] public int Id { get; set; } [Required] public string? Note { get; set; } - //Les relations + //Relations public int CustomerTypeId { get; set; } public CustomerType? CustomerType { get; set; } diff --git a/PyroFetes/Models/Show.cs b/PyroFetes/Models/Show.cs index 5ec1804..0713da7 100644 --- a/PyroFetes/Models/Show.cs +++ b/PyroFetes/Models/Show.cs @@ -9,7 +9,7 @@ public class Show [Required, MaxLength(120)] public string? Place { get; set; } [MaxLength(500)] public string? Description { get; set; } - // Lien (chemin/URL/nom de fichier) vers le plan d’implémentation pyrotechnique + // Link (path/URL/file name) to the pyrotechnic implementation plan [Required, MaxLength(500)] public string? PyrotechnicImplementationPlan { get; set; } diff --git a/PyroFetes/Models/Warehouse.cs b/PyroFetes/Models/Warehouse.cs index 3ce4382..3dd817f 100644 --- a/PyroFetes/Models/Warehouse.cs +++ b/PyroFetes/Models/Warehouse.cs @@ -13,10 +13,7 @@ public class Warehouse [Required] public int ZipCode { get; set; } [Required] public string? City { get; set; } - public List? Materials {get; set;} - - public List? MovementsSource { get; set; } public List? MovementsDestination { get; set; } } \ No newline at end of file From 5261446ddbddcb3a0661e6de0b4d33cd6ddf7cc7 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Tue, 7 Oct 2025 10:04:55 +0200 Subject: [PATCH 31/43] Fix comments in PyroFetesDbContext.cs --- PyroFetes/PyroFetesDbContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyroFetes/PyroFetesDbContext.cs b/PyroFetes/PyroFetesDbContext.cs index ac556ea..29fc13b 100644 --- a/PyroFetes/PyroFetesDbContext.cs +++ b/PyroFetes/PyroFetesDbContext.cs @@ -71,7 +71,7 @@ public class PyroFetesDbContext : DbContext .HasOne(m => m.SourceWarehouse) .WithMany(w => w.MovementsSource) .HasForeignKey(m => m.SourceWarehouseId) - .OnDelete(DeleteBehavior.Restrict); // empêche la suppression en cascade + .OnDelete(DeleteBehavior.Restrict); // Relation DestinationWarehouse modelBuilder.Entity() From 1446fe7b95d3d3e3d93bc4e1a8784a2a85cd202f Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Tue, 7 Oct 2025 10:20:52 +0200 Subject: [PATCH 32/43] Error during migration --- PyroFetes/PyroFetesDbContext.cs | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/PyroFetes/PyroFetesDbContext.cs b/PyroFetes/PyroFetesDbContext.cs index 29fc13b..ae0944c 100644 --- a/PyroFetes/PyroFetesDbContext.cs +++ b/PyroFetes/PyroFetesDbContext.cs @@ -66,18 +66,5 @@ public class PyroFetesDbContext : DbContext // Models customization protected override void OnModelCreating(ModelBuilder modelBuilder) { - // Relation SourceWarehouse - modelBuilder.Entity() - .HasOne(m => m.SourceWarehouse) - .WithMany(w => w.MovementsSource) - .HasForeignKey(m => m.SourceWarehouseId) - .OnDelete(DeleteBehavior.Restrict); - - // Relation DestinationWarehouse - modelBuilder.Entity() - .HasOne(m => m.DestinationWarehouse) - .WithMany(w => w.MovementsDestination) - .HasForeignKey(m => m.DestinationWarehouseId) - .OnDelete(DeleteBehavior.Restrict); } } \ No newline at end of file From 2bbb771635ba5d6fc18636860e984a6bd4b74ecc Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Tue, 7 Oct 2025 11:00:35 +0200 Subject: [PATCH 33/43] Writing OnModelCreating in PyroFetesDbContext.cs --- PyroFetes/PyroFetesDbContext.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/PyroFetes/PyroFetesDbContext.cs b/PyroFetes/PyroFetesDbContext.cs index ae0944c..29fc13b 100644 --- a/PyroFetes/PyroFetesDbContext.cs +++ b/PyroFetes/PyroFetesDbContext.cs @@ -66,5 +66,18 @@ public class PyroFetesDbContext : DbContext // Models customization protected override void OnModelCreating(ModelBuilder modelBuilder) { + // Relation SourceWarehouse + modelBuilder.Entity() + .HasOne(m => m.SourceWarehouse) + .WithMany(w => w.MovementsSource) + .HasForeignKey(m => m.SourceWarehouseId) + .OnDelete(DeleteBehavior.Restrict); + + // Relation DestinationWarehouse + modelBuilder.Entity() + .HasOne(m => m.DestinationWarehouse) + .WithMany(w => w.MovementsDestination) + .HasForeignKey(m => m.DestinationWarehouseId) + .OnDelete(DeleteBehavior.Restrict); } } \ No newline at end of file From 41b0f1892ec20914628f3a3ee5f62838581b31e7 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Tue, 7 Oct 2025 11:37:51 +0200 Subject: [PATCH 34/43] Writing relations into customer and contact --- PyroFetes/Models/Contact.cs | 2 ++ PyroFetes/Models/Customer.cs | 2 ++ PyroFetes/PyroFetesDbContext.cs | 18 ++++++++++++++---- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/PyroFetes/Models/Contact.cs b/PyroFetes/Models/Contact.cs index 3b0e762..958f52a 100644 --- a/PyroFetes/Models/Contact.cs +++ b/PyroFetes/Models/Contact.cs @@ -16,4 +16,6 @@ public class Contact public int CommunicationId { get; set; } public Communication? Communication { get; set; } + + public List? CustomerContacts { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Customer.cs b/PyroFetes/Models/Customer.cs index d158621..98a49b0 100644 --- a/PyroFetes/Models/Customer.cs +++ b/PyroFetes/Models/Customer.cs @@ -13,4 +13,6 @@ public class Customer public int ContactId { get; set; } public Contact? Contact { get; set; } + + public List? CustomerContacts { get; set; } } diff --git a/PyroFetes/PyroFetesDbContext.cs b/PyroFetes/PyroFetesDbContext.cs index 29fc13b..2641f14 100644 --- a/PyroFetes/PyroFetesDbContext.cs +++ b/PyroFetes/PyroFetesDbContext.cs @@ -57,7 +57,7 @@ public class PyroFetesDbContext : DbContext "Server=romaric-thibault.fr;" + "Database=PyroFetes;" + "User Id=pyrofetes;" + - "Password=Onto9-Cage-Afflicted;" + + "Password=Crablike8-Fringe-Swimmable;" + "TrustServerCertificate=true;"; optionsBuilder.UseSqlServer(connectionString); @@ -66,18 +66,28 @@ public class PyroFetesDbContext : DbContext // Models customization protected override void OnModelCreating(ModelBuilder modelBuilder) { - // Relation SourceWarehouse modelBuilder.Entity() .HasOne(m => m.SourceWarehouse) .WithMany(w => w.MovementsSource) .HasForeignKey(m => m.SourceWarehouseId) .OnDelete(DeleteBehavior.Restrict); - - // Relation DestinationWarehouse + modelBuilder.Entity() .HasOne(m => m.DestinationWarehouse) .WithMany(w => w.MovementsDestination) .HasForeignKey(m => m.DestinationWarehouseId) .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(cc => cc.Customer) + .WithMany(c => c.CustomerContacts) + .HasForeignKey(cc => cc.CustomerId) + .OnDelete(DeleteBehavior.NoAction); + + modelBuilder.Entity() + .HasOne(cc => cc.Contact) + .WithMany(c => c.CustomerContacts) + .HasForeignKey(cc => cc.ContactId) + .OnDelete(DeleteBehavior.NoAction); } } \ No newline at end of file From 9a5c83161a5308326954e312779290965e2a0c7f Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Tue, 7 Oct 2025 11:42:04 +0200 Subject: [PATCH 35/43] Exucuting migrations commands --- ...20251007094021_InitialDatabase.Designer.cs | 1574 +++++++++++++++++ .../20251007094021_InitialDatabase.cs | 1199 +++++++++++++ .../PyroFetesDbContextModelSnapshot.cs | 1571 ++++++++++++++++ PyroFetes/PyroFetesDbContext.cs | 3 + 4 files changed, 4347 insertions(+) create mode 100644 PyroFetes/Migrations/20251007094021_InitialDatabase.Designer.cs create mode 100644 PyroFetes/Migrations/20251007094021_InitialDatabase.cs create mode 100644 PyroFetes/Migrations/PyroFetesDbContextModelSnapshot.cs diff --git a/PyroFetes/Migrations/20251007094021_InitialDatabase.Designer.cs b/PyroFetes/Migrations/20251007094021_InitialDatabase.Designer.cs new file mode 100644 index 0000000..7b2ce88 --- /dev/null +++ b/PyroFetes/Migrations/20251007094021_InitialDatabase.Designer.cs @@ -0,0 +1,1574 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using PyroFetes; + +#nullable disable + +namespace PyroFetes.Migrations +{ + [DbContext(typeof(PyroFetesDbContext))] + [Migration("20251007094021_InitialDatabase")] + partial class InitialDatabase + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.20") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("PyroFetes.Models.Availability", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AvailabilityDate") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DeliveryDate") + .HasColumnType("date"); + + b.Property("ExpirationDate") + .HasColumnType("date"); + + b.Property("RenewallDate") + .HasColumnType("date"); + + b.HasKey("Id"); + + b.ToTable("Availabilities"); + }); + + modelBuilder.Entity("PyroFetes.Models.Brand", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ProductId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ProductId"); + + b.ToTable("Brands"); + }); + + modelBuilder.Entity("PyroFetes.Models.Classification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Label") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Classifications"); + }); + + modelBuilder.Entity("PyroFetes.Models.Color", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Label") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Colors"); + }); + + modelBuilder.Entity("PyroFetes.Models.Communication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Calling") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Meeting") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Communications"); + }); + + modelBuilder.Entity("PyroFetes.Models.Contact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("City") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CommunicationId") + .HasColumnType("int"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Role") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ZipCode") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("CommunicationId"); + + b.ToTable("Contacts"); + }); + + modelBuilder.Entity("PyroFetes.Models.Customer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ContactId") + .HasColumnType("int"); + + b.Property("CustomerTypeId") + .HasColumnType("int"); + + b.Property("Note") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ContactId"); + + b.HasIndex("CustomerTypeId"); + + b.ToTable("Customers"); + }); + + modelBuilder.Entity("PyroFetes.Models.CustomerContact", b => + { + b.Property("ContactId") + .HasColumnType("int"); + + b.Property("CustomerId") + .HasColumnType("int"); + + b.HasKey("ContactId", "CustomerId"); + + b.HasIndex("CustomerId"); + + b.ToTable("CustomerContacts"); + }); + + modelBuilder.Entity("PyroFetes.Models.CustomerType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Price") + .HasColumnType("decimal(18,2)"); + + b.HasKey("Id"); + + b.ToTable("CustomerTypes"); + }); + + modelBuilder.Entity("PyroFetes.Models.Deliverer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Transporter") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Deliverers"); + }); + + modelBuilder.Entity("PyroFetes.Models.DeliveryNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DelivererId") + .HasColumnType("int"); + + b.Property("EstimateDeliveryDate") + .HasColumnType("date"); + + b.Property("ExpeditionDate") + .HasColumnType("date"); + + b.Property("RealDeliveryDate") + .HasColumnType("date"); + + b.Property("TrackingNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("DelivererId"); + + b.ToTable("DeliveryNotes"); + }); + + modelBuilder.Entity("PyroFetes.Models.Effect", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Label") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Effects"); + }); + + modelBuilder.Entity("PyroFetes.Models.ExperienceLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Label") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ExperienceLevels"); + }); + + modelBuilder.Entity("PyroFetes.Models.HistoryOfApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DeliveryDate") + .HasColumnType("date"); + + b.Property("ExpirationDate") + .HasColumnType("date"); + + b.HasKey("Id"); + + b.ToTable("HistoryOfApprovals"); + }); + + modelBuilder.Entity("PyroFetes.Models.Material", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Quantity") + .HasColumnType("int"); + + b.Property("WarehouseId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("WarehouseId"); + + b.ToTable("Materials"); + }); + + modelBuilder.Entity("PyroFetes.Models.Movement", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Arrival") + .HasColumnType("datetime2"); + + b.Property("Date") + .HasColumnType("datetime2"); + + b.Property("DestinationWarehouseId") + .HasColumnType("int"); + + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("Quantity") + .HasColumnType("int"); + + b.Property("SourceWarehouseId") + .HasColumnType("int"); + + b.Property("Start") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.HasIndex("DestinationWarehouseId"); + + b.HasIndex("ProductId"); + + b.HasIndex("SourceWarehouseId"); + + b.ToTable("Movements"); + }); + + modelBuilder.Entity("PyroFetes.Models.Price", b => + { + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("SupplierId") + .HasColumnType("int"); + + b.Property("SellingPrice") + .HasColumnType("decimal(18,2)"); + + b.HasKey("ProductId", "SupplierId"); + + b.HasIndex("SupplierId"); + + b.ToTable("Prices"); + }); + + modelBuilder.Entity("PyroFetes.Models.Product", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ApprovalNumber") + .HasColumnType("int"); + + b.Property("Caliber") + .HasColumnType("decimal(18,2)"); + + b.Property("ClassificationId") + .HasColumnType("int"); + + b.Property("Duration") + .HasColumnType("decimal(18,2)"); + + b.Property("Image") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Link") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("MinimalQuantity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Nec") + .HasColumnType("decimal(18,2)"); + + b.Property("ProductCategoryId") + .HasColumnType("int"); + + b.Property("References") + .HasColumnType("int"); + + b.Property("SellingPrice") + .HasColumnType("decimal(18,2)"); + + b.Property("Weight") + .HasColumnType("decimal(18,2)"); + + b.HasKey("Id"); + + b.HasIndex("ClassificationId"); + + b.HasIndex("ProductCategoryId"); + + b.ToTable("Products"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Label") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ProductCategories"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductColor", b => + { + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("ColorId") + .HasColumnType("int"); + + b.HasKey("ProductId", "ColorId"); + + b.HasIndex("ColorId"); + + b.ToTable("ProductColors"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductDelivery", b => + { + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("DeliveryNoteId") + .HasColumnType("int"); + + b.Property("Quantity") + .HasColumnType("int"); + + b.HasKey("ProductId", "DeliveryNoteId"); + + b.HasIndex("DeliveryNoteId"); + + b.ToTable("ProductDeliveries"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductEffect", b => + { + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("EffectId") + .HasColumnType("int"); + + b.HasKey("ProductId", "EffectId"); + + b.HasIndex("EffectId"); + + b.ToTable("ProductEffects"); + }); + + modelBuilder.Entity("PyroFetes.Models.Provider", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Price") + .HasColumnType("decimal(18,2)"); + + b.Property("ProviderId") + .HasColumnType("int"); + + b.Property("ProviderTypeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ProviderTypeId"); + + b.ToTable("Providers"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProviderContact", b => + { + b.Property("ContactId") + .HasColumnType("int"); + + b.Property("ProviderId") + .HasColumnType("int"); + + b.HasKey("ContactId", "ProviderId"); + + b.HasIndex("ProviderId"); + + b.ToTable("ProviderContacts"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProviderType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Label") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ProviderTypes"); + }); + + modelBuilder.Entity("PyroFetes.Models.PurchaseOrder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PurchaseConditions") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("PurchaseOrders"); + }); + + modelBuilder.Entity("PyroFetes.Models.PurchaseProduct", b => + { + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("PurchaseOrderId") + .HasColumnType("int"); + + b.Property("Quantity") + .HasColumnType("int"); + + b.HasKey("ProductId", "PurchaseOrderId"); + + b.HasIndex("PurchaseOrderId"); + + b.ToTable("PurchaseProducts"); + }); + + modelBuilder.Entity("PyroFetes.Models.Quotation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConditionsSale") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Message") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Quotations"); + }); + + modelBuilder.Entity("PyroFetes.Models.QuotationProduct", b => + { + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("QuotationId") + .HasColumnType("int"); + + b.Property("Quantity") + .HasColumnType("int"); + + b.HasKey("ProductId", "QuotationId"); + + b.HasIndex("QuotationId"); + + b.ToTable("QuotationProducts"); + }); + + modelBuilder.Entity("PyroFetes.Models.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ElectronicSignature") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Logo") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Settings"); + }); + + modelBuilder.Entity("PyroFetes.Models.Show", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Place") + .IsRequired() + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.Property("PyrotechnicImplementationPlan") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("Id"); + + b.ToTable("Shows"); + }); + + modelBuilder.Entity("PyroFetes.Models.Sound", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Artist") + .IsRequired() + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Duration") + .IsRequired() + .HasColumnType("int"); + + b.Property("Format") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("Kind") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.Property("SoundCategoryId") + .HasColumnType("int"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("Id"); + + b.HasIndex("SoundCategoryId"); + + b.ToTable("Sounds"); + }); + + modelBuilder.Entity("PyroFetes.Models.SoundCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("Id"); + + b.ToTable("SoundCategories"); + }); + + modelBuilder.Entity("PyroFetes.Models.SoundTimecode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("End") + .HasColumnType("int"); + + b.Property("ShowId") + .HasColumnType("int"); + + b.Property("SoundId") + .HasColumnType("int"); + + b.Property("Start") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ShowId"); + + b.HasIndex("SoundId"); + + b.ToTable("SoundTimecodes"); + }); + + modelBuilder.Entity("PyroFetes.Models.Staff", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.Property("F4T2ExpirationDate") + .HasColumnType("date"); + + b.Property("F4T2NumberApproval") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.Property("Profession") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id"); + + b.ToTable("Staffs"); + }); + + modelBuilder.Entity("PyroFetes.Models.StaffAvailability", b => + { + b.Property("AvailabilityId") + .HasColumnType("int"); + + b.Property("StaffId") + .HasColumnType("int"); + + b.HasKey("AvailabilityId", "StaffId"); + + b.HasIndex("StaffId"); + + b.ToTable("StaffAvailabilities"); + }); + + modelBuilder.Entity("PyroFetes.Models.StaffContact", b => + { + b.Property("ContactId") + .HasColumnType("int"); + + b.Property("StaffId") + .HasColumnType("int"); + + b.HasKey("ContactId", "StaffId"); + + b.HasIndex("StaffId"); + + b.ToTable("StaffContacts"); + }); + + modelBuilder.Entity("PyroFetes.Models.StaffHistoryOfApproval", b => + { + b.Property("HistoryOfApprovalId") + .HasColumnType("int"); + + b.Property("StaffId") + .HasColumnType("int"); + + b.HasKey("HistoryOfApprovalId", "StaffId"); + + b.HasIndex("StaffId"); + + b.ToTable("StaffHistoryOfApprovals"); + }); + + modelBuilder.Entity("PyroFetes.Models.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("City") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DeliveryDelay") + .HasColumnType("int"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Phone") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Suppliers"); + }); + + modelBuilder.Entity("PyroFetes.Models.Truck", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("MaxExplosiveCapacity") + .HasColumnType("float"); + + b.Property("ShowId") + .HasColumnType("int"); + + b.Property("Sizes") + .IsRequired() + .HasMaxLength(80) + .HasColumnType("nvarchar(80)"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.HasKey("Id"); + + b.HasIndex("ShowId"); + + b.ToTable("Trucks"); + }); + + modelBuilder.Entity("PyroFetes.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Fonction") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Salt") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("PyroFetes.Models.Warehouse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("City") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Current") + .HasColumnType("int"); + + b.Property("MaxWeight") + .HasColumnType("int"); + + b.Property("MinWeight") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Warehouses"); + }); + + modelBuilder.Entity("PyroFetes.Models.WarehouseProduct", b => + { + b.Property("Quantity") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Quantity")); + + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("WarehouseId") + .HasColumnType("int"); + + b.HasKey("Quantity"); + + b.HasIndex("ProductId"); + + b.HasIndex("WarehouseId"); + + b.ToTable("WarehouseProducts"); + }); + + modelBuilder.Entity("ShowStaff", b => + { + b.Property("ShowsId") + .HasColumnType("int"); + + b.Property("StaffId") + .HasColumnType("int"); + + b.HasKey("ShowsId", "StaffId"); + + b.HasIndex("StaffId"); + + b.ToTable("ShowStaff"); + }); + + modelBuilder.Entity("PyroFetes.Models.Brand", b => + { + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany("Brands") + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("PyroFetes.Models.Contact", b => + { + b.HasOne("PyroFetes.Models.Communication", "Communication") + .WithMany() + .HasForeignKey("CommunicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Communication"); + }); + + modelBuilder.Entity("PyroFetes.Models.Customer", b => + { + b.HasOne("PyroFetes.Models.Contact", "Contact") + .WithMany() + .HasForeignKey("ContactId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.CustomerType", "CustomerType") + .WithMany("Customers") + .HasForeignKey("CustomerTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Contact"); + + b.Navigation("CustomerType"); + }); + + modelBuilder.Entity("PyroFetes.Models.CustomerContact", b => + { + b.HasOne("PyroFetes.Models.Contact", "Contact") + .WithMany("CustomerContacts") + .HasForeignKey("ContactId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Customer", "Customer") + .WithMany("CustomerContacts") + .HasForeignKey("CustomerId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Contact"); + + b.Navigation("Customer"); + }); + + modelBuilder.Entity("PyroFetes.Models.DeliveryNote", b => + { + b.HasOne("PyroFetes.Models.Deliverer", "Deliverer") + .WithMany("DeliveryNotes") + .HasForeignKey("DelivererId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Deliverer"); + }); + + modelBuilder.Entity("PyroFetes.Models.Material", b => + { + b.HasOne("PyroFetes.Models.Warehouse", "Warehouse") + .WithMany("Materials") + .HasForeignKey("WarehouseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Warehouse"); + }); + + modelBuilder.Entity("PyroFetes.Models.Movement", b => + { + b.HasOne("PyroFetes.Models.Warehouse", "DestinationWarehouse") + .WithMany("MovementsDestination") + .HasForeignKey("DestinationWarehouseId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany("Movements") + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Warehouse", "SourceWarehouse") + .WithMany("MovementsSource") + .HasForeignKey("SourceWarehouseId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("DestinationWarehouse"); + + b.Navigation("Product"); + + b.Navigation("SourceWarehouse"); + }); + + modelBuilder.Entity("PyroFetes.Models.Price", b => + { + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Supplier", "Supplier") + .WithMany() + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("PyroFetes.Models.Product", b => + { + b.HasOne("PyroFetes.Models.Classification", "Classification") + .WithMany("Products") + .HasForeignKey("ClassificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.ProductCategory", "ProductCategory") + .WithMany("Products") + .HasForeignKey("ProductCategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Classification"); + + b.Navigation("ProductCategory"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductColor", b => + { + b.HasOne("PyroFetes.Models.Color", "Color") + .WithMany() + .HasForeignKey("ColorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Color"); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductDelivery", b => + { + b.HasOne("PyroFetes.Models.DeliveryNote", "DeliveryNote") + .WithMany() + .HasForeignKey("DeliveryNoteId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DeliveryNote"); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductEffect", b => + { + b.HasOne("PyroFetes.Models.Effect", "Effect") + .WithMany() + .HasForeignKey("EffectId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Effect"); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("PyroFetes.Models.Provider", b => + { + b.HasOne("PyroFetes.Models.ProviderType", "ProviderType") + .WithMany() + .HasForeignKey("ProviderTypeId"); + + b.Navigation("ProviderType"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProviderContact", b => + { + b.HasOne("PyroFetes.Models.Contact", "Contact") + .WithMany() + .HasForeignKey("ContactId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Provider", "Provider") + .WithMany() + .HasForeignKey("ProviderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Contact"); + + b.Navigation("Provider"); + }); + + modelBuilder.Entity("PyroFetes.Models.PurchaseProduct", b => + { + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.PurchaseOrder", "PurchaseOrder") + .WithMany() + .HasForeignKey("PurchaseOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + + b.Navigation("PurchaseOrder"); + }); + + modelBuilder.Entity("PyroFetes.Models.QuotationProduct", b => + { + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Quotation", "Quotation") + .WithMany() + .HasForeignKey("QuotationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + + b.Navigation("Quotation"); + }); + + modelBuilder.Entity("PyroFetes.Models.Sound", b => + { + b.HasOne("PyroFetes.Models.SoundCategory", "Category") + .WithMany("Sounds") + .HasForeignKey("SoundCategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + }); + + modelBuilder.Entity("PyroFetes.Models.SoundTimecode", b => + { + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("SoundCues") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Sound", "Sound") + .WithMany("ShowPlacements") + .HasForeignKey("SoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Show"); + + b.Navigation("Sound"); + }); + + modelBuilder.Entity("PyroFetes.Models.StaffAvailability", b => + { + b.HasOne("PyroFetes.Models.Availability", "Availability") + .WithMany() + .HasForeignKey("AvailabilityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Staff", "Staff") + .WithMany() + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Availability"); + + b.Navigation("Staff"); + }); + + modelBuilder.Entity("PyroFetes.Models.StaffContact", b => + { + b.HasOne("PyroFetes.Models.Contact", "Contact") + .WithMany() + .HasForeignKey("ContactId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Staff", "Staff") + .WithMany() + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Contact"); + + b.Navigation("Staff"); + }); + + modelBuilder.Entity("PyroFetes.Models.StaffHistoryOfApproval", b => + { + b.HasOne("PyroFetes.Models.HistoryOfApproval", "HistoryOfApproval") + .WithMany() + .HasForeignKey("HistoryOfApprovalId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Staff", "Staff") + .WithMany() + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("HistoryOfApproval"); + + b.Navigation("Staff"); + }); + + modelBuilder.Entity("PyroFetes.Models.Truck", b => + { + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("Trucks") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Show"); + }); + + modelBuilder.Entity("PyroFetes.Models.WarehouseProduct", b => + { + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Warehouse", "Warehouse") + .WithMany() + .HasForeignKey("WarehouseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + + b.Navigation("Warehouse"); + }); + + modelBuilder.Entity("ShowStaff", b => + { + b.HasOne("PyroFetes.Models.Show", null) + .WithMany() + .HasForeignKey("ShowsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Staff", null) + .WithMany() + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("PyroFetes.Models.Classification", b => + { + b.Navigation("Products"); + }); + + modelBuilder.Entity("PyroFetes.Models.Contact", b => + { + b.Navigation("CustomerContacts"); + }); + + modelBuilder.Entity("PyroFetes.Models.Customer", b => + { + b.Navigation("CustomerContacts"); + }); + + modelBuilder.Entity("PyroFetes.Models.CustomerType", b => + { + b.Navigation("Customers"); + }); + + modelBuilder.Entity("PyroFetes.Models.Deliverer", b => + { + b.Navigation("DeliveryNotes"); + }); + + modelBuilder.Entity("PyroFetes.Models.Product", b => + { + b.Navigation("Brands"); + + b.Navigation("Movements"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductCategory", b => + { + b.Navigation("Products"); + }); + + modelBuilder.Entity("PyroFetes.Models.Show", b => + { + b.Navigation("SoundCues"); + + b.Navigation("Trucks"); + }); + + modelBuilder.Entity("PyroFetes.Models.Sound", b => + { + b.Navigation("ShowPlacements"); + }); + + modelBuilder.Entity("PyroFetes.Models.SoundCategory", b => + { + b.Navigation("Sounds"); + }); + + modelBuilder.Entity("PyroFetes.Models.Warehouse", b => + { + b.Navigation("Materials"); + + b.Navigation("MovementsDestination"); + + b.Navigation("MovementsSource"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/PyroFetes/Migrations/20251007094021_InitialDatabase.cs b/PyroFetes/Migrations/20251007094021_InitialDatabase.cs new file mode 100644 index 0000000..0d226b1 --- /dev/null +++ b/PyroFetes/Migrations/20251007094021_InitialDatabase.cs @@ -0,0 +1,1199 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace PyroFetes.Migrations +{ + /// + public partial class InitialDatabase : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Availabilities", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + AvailabilityDate = table.Column(type: "nvarchar(max)", nullable: false), + DeliveryDate = table.Column(type: "date", nullable: false), + ExpirationDate = table.Column(type: "date", nullable: false), + RenewallDate = table.Column(type: "date", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Availabilities", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Classifications", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Label = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Classifications", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Colors", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Label = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Colors", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Communications", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Calling = table.Column(type: "nvarchar(max)", nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), + Meeting = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Communications", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "CustomerTypes", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Price = table.Column(type: "decimal(18,2)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomerTypes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Deliverers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Transporter = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Deliverers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Effects", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Label = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Effects", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ExperienceLevels", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Label = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ExperienceLevels", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "HistoryOfApprovals", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ExpirationDate = table.Column(type: "date", nullable: false), + DeliveryDate = table.Column(type: "date", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_HistoryOfApprovals", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ProductCategories", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Label = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ProductCategories", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ProviderTypes", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Label = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ProviderTypes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "PurchaseOrders", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + PurchaseConditions = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_PurchaseOrders", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Quotations", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Message = table.Column(type: "nvarchar(max)", nullable: false), + ConditionsSale = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Quotations", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Settings", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Logo = table.Column(type: "nvarchar(max)", nullable: false), + ElectronicSignature = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Settings", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Shows", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(max)", nullable: false), + Place = table.Column(type: "nvarchar(120)", maxLength: 120, nullable: false), + Description = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), + PyrotechnicImplementationPlan = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: false), + Date = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Shows", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "SoundCategories", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(60)", maxLength: 60, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SoundCategories", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Staffs", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + FirstName = table.Column(type: "nvarchar(60)", maxLength: 60, nullable: false), + LastName = table.Column(type: "nvarchar(60)", maxLength: 60, nullable: false), + Profession = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Email = table.Column(type: "nvarchar(120)", maxLength: 120, nullable: false), + F4T2NumberApproval = table.Column(type: "nvarchar(max)", nullable: false), + F4T2ExpirationDate = table.Column(type: "date", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Staffs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Suppliers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), + Phone = table.Column(type: "nvarchar(max)", nullable: false), + Address = table.Column(type: "nvarchar(max)", nullable: false), + ZipCode = table.Column(type: "int", nullable: false), + City = table.Column(type: "nvarchar(max)", nullable: false), + DeliveryDelay = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Suppliers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Users", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Password = table.Column(type: "nvarchar(max)", nullable: false), + Salt = table.Column(type: "nvarchar(max)", nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), + Fonction = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Users", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Warehouses", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + MaxWeight = table.Column(type: "int", nullable: false), + Current = table.Column(type: "int", nullable: false), + MinWeight = table.Column(type: "int", nullable: false), + Address = table.Column(type: "nvarchar(max)", nullable: false), + ZipCode = table.Column(type: "int", nullable: false), + City = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Warehouses", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Contacts", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + LastName = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + FirstName = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), + PhoneNumber = table.Column(type: "nvarchar(max)", nullable: false), + Address = table.Column(type: "nvarchar(max)", nullable: false), + ZipCode = table.Column(type: "nvarchar(max)", nullable: false), + City = table.Column(type: "nvarchar(max)", nullable: false), + Role = table.Column(type: "nvarchar(max)", nullable: false), + CommunicationId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Contacts", x => x.Id); + table.ForeignKey( + name: "FK_Contacts_Communications_CommunicationId", + column: x => x.CommunicationId, + principalTable: "Communications", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "DeliveryNotes", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + TrackingNumber = table.Column(type: "nvarchar(max)", nullable: false), + DelivererId = table.Column(type: "int", nullable: false), + EstimateDeliveryDate = table.Column(type: "date", nullable: false), + ExpeditionDate = table.Column(type: "date", nullable: false), + RealDeliveryDate = table.Column(type: "date", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_DeliveryNotes", x => x.Id); + table.ForeignKey( + name: "FK_DeliveryNotes_Deliverers_DelivererId", + column: x => x.DelivererId, + principalTable: "Deliverers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Products", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + References = table.Column(type: "int", nullable: false), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Duration = table.Column(type: "decimal(18,2)", nullable: false), + Caliber = table.Column(type: "decimal(18,2)", nullable: false), + ApprovalNumber = table.Column(type: "int", nullable: false), + Weight = table.Column(type: "decimal(18,2)", nullable: false), + Nec = table.Column(type: "decimal(18,2)", nullable: false), + SellingPrice = table.Column(type: "decimal(18,2)", nullable: false), + Image = table.Column(type: "nvarchar(max)", nullable: false), + Link = table.Column(type: "nvarchar(max)", nullable: false), + MinimalQuantity = table.Column(type: "int", nullable: false), + ClassificationId = table.Column(type: "int", nullable: false), + ProductCategoryId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Products", x => x.Id); + table.ForeignKey( + name: "FK_Products_Classifications_ClassificationId", + column: x => x.ClassificationId, + principalTable: "Classifications", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Products_ProductCategories_ProductCategoryId", + column: x => x.ProductCategoryId, + principalTable: "ProductCategories", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Providers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Price = table.Column(type: "decimal(18,2)", nullable: false), + ProviderId = table.Column(type: "int", nullable: false), + ProviderTypeId = table.Column(type: "int", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Providers", x => x.Id); + table.ForeignKey( + name: "FK_Providers_ProviderTypes_ProviderTypeId", + column: x => x.ProviderTypeId, + principalTable: "ProviderTypes", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "Trucks", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Type = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), + MaxExplosiveCapacity = table.Column(type: "float", nullable: true), + Sizes = table.Column(type: "nvarchar(80)", maxLength: 80, nullable: false), + Status = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), + ShowId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Trucks", x => x.Id); + table.ForeignKey( + name: "FK_Trucks_Shows_ShowId", + column: x => x.ShowId, + principalTable: "Shows", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Sounds", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(120)", maxLength: 120, nullable: false), + Type = table.Column(type: "nvarchar(60)", maxLength: 60, nullable: false), + Artist = table.Column(type: "nvarchar(120)", maxLength: 120, nullable: false), + Duration = table.Column(type: "int", nullable: false), + Kind = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), + Format = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), + CreationDate = table.Column(type: "datetime2", nullable: true), + SoundCategoryId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Sounds", x => x.Id); + table.ForeignKey( + name: "FK_Sounds_SoundCategories_SoundCategoryId", + column: x => x.SoundCategoryId, + principalTable: "SoundCategories", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ShowStaff", + columns: table => new + { + ShowsId = table.Column(type: "int", nullable: false), + StaffId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ShowStaff", x => new { x.ShowsId, x.StaffId }); + table.ForeignKey( + name: "FK_ShowStaff_Shows_ShowsId", + column: x => x.ShowsId, + principalTable: "Shows", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ShowStaff_Staffs_StaffId", + column: x => x.StaffId, + principalTable: "Staffs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "StaffAvailabilities", + columns: table => new + { + StaffId = table.Column(type: "int", nullable: false), + AvailabilityId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_StaffAvailabilities", x => new { x.AvailabilityId, x.StaffId }); + table.ForeignKey( + name: "FK_StaffAvailabilities_Availabilities_AvailabilityId", + column: x => x.AvailabilityId, + principalTable: "Availabilities", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_StaffAvailabilities_Staffs_StaffId", + column: x => x.StaffId, + principalTable: "Staffs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "StaffHistoryOfApprovals", + columns: table => new + { + StaffId = table.Column(type: "int", nullable: false), + HistoryOfApprovalId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_StaffHistoryOfApprovals", x => new { x.HistoryOfApprovalId, x.StaffId }); + table.ForeignKey( + name: "FK_StaffHistoryOfApprovals_HistoryOfApprovals_HistoryOfApprovalId", + column: x => x.HistoryOfApprovalId, + principalTable: "HistoryOfApprovals", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_StaffHistoryOfApprovals_Staffs_StaffId", + column: x => x.StaffId, + principalTable: "Staffs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Materials", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Quantity = table.Column(type: "int", nullable: false), + WarehouseId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Materials", x => x.Id); + table.ForeignKey( + name: "FK_Materials_Warehouses_WarehouseId", + column: x => x.WarehouseId, + principalTable: "Warehouses", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Customers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Note = table.Column(type: "nvarchar(max)", nullable: false), + CustomerTypeId = table.Column(type: "int", nullable: false), + ContactId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Customers", x => x.Id); + table.ForeignKey( + name: "FK_Customers_Contacts_ContactId", + column: x => x.ContactId, + principalTable: "Contacts", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Customers_CustomerTypes_CustomerTypeId", + column: x => x.CustomerTypeId, + principalTable: "CustomerTypes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "StaffContacts", + columns: table => new + { + StaffId = table.Column(type: "int", nullable: false), + ContactId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_StaffContacts", x => new { x.ContactId, x.StaffId }); + table.ForeignKey( + name: "FK_StaffContacts_Contacts_ContactId", + column: x => x.ContactId, + principalTable: "Contacts", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_StaffContacts_Staffs_StaffId", + column: x => x.StaffId, + principalTable: "Staffs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Brands", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + ProductId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Brands", x => x.Id); + table.ForeignKey( + name: "FK_Brands_Products_ProductId", + column: x => x.ProductId, + principalTable: "Products", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Movements", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Date = table.Column(type: "datetime2", nullable: false), + Start = table.Column(type: "datetime2", nullable: false), + Arrival = table.Column(type: "datetime2", nullable: false), + Quantity = table.Column(type: "int", nullable: false), + ProductId = table.Column(type: "int", nullable: false), + SourceWarehouseId = table.Column(type: "int", nullable: true), + DestinationWarehouseId = table.Column(type: "int", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Movements", x => x.Id); + table.ForeignKey( + name: "FK_Movements_Products_ProductId", + column: x => x.ProductId, + principalTable: "Products", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Movements_Warehouses_DestinationWarehouseId", + column: x => x.DestinationWarehouseId, + principalTable: "Warehouses", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Movements_Warehouses_SourceWarehouseId", + column: x => x.SourceWarehouseId, + principalTable: "Warehouses", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Prices", + columns: table => new + { + ProductId = table.Column(type: "int", nullable: false), + SupplierId = table.Column(type: "int", nullable: false), + SellingPrice = table.Column(type: "decimal(18,2)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Prices", x => new { x.ProductId, x.SupplierId }); + table.ForeignKey( + name: "FK_Prices_Products_ProductId", + column: x => x.ProductId, + principalTable: "Products", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Prices_Suppliers_SupplierId", + column: x => x.SupplierId, + principalTable: "Suppliers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ProductColors", + columns: table => new + { + ProductId = table.Column(type: "int", nullable: false), + ColorId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ProductColors", x => new { x.ProductId, x.ColorId }); + table.ForeignKey( + name: "FK_ProductColors_Colors_ColorId", + column: x => x.ColorId, + principalTable: "Colors", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ProductColors_Products_ProductId", + column: x => x.ProductId, + principalTable: "Products", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ProductDeliveries", + columns: table => new + { + ProductId = table.Column(type: "int", nullable: false), + DeliveryNoteId = table.Column(type: "int", nullable: false), + Quantity = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ProductDeliveries", x => new { x.ProductId, x.DeliveryNoteId }); + table.ForeignKey( + name: "FK_ProductDeliveries_DeliveryNotes_DeliveryNoteId", + column: x => x.DeliveryNoteId, + principalTable: "DeliveryNotes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ProductDeliveries_Products_ProductId", + column: x => x.ProductId, + principalTable: "Products", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ProductEffects", + columns: table => new + { + ProductId = table.Column(type: "int", nullable: false), + EffectId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ProductEffects", x => new { x.ProductId, x.EffectId }); + table.ForeignKey( + name: "FK_ProductEffects_Effects_EffectId", + column: x => x.EffectId, + principalTable: "Effects", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ProductEffects_Products_ProductId", + column: x => x.ProductId, + principalTable: "Products", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "PurchaseProducts", + columns: table => new + { + ProductId = table.Column(type: "int", nullable: false), + PurchaseOrderId = table.Column(type: "int", nullable: false), + Quantity = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_PurchaseProducts", x => new { x.ProductId, x.PurchaseOrderId }); + table.ForeignKey( + name: "FK_PurchaseProducts_Products_ProductId", + column: x => x.ProductId, + principalTable: "Products", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_PurchaseProducts_PurchaseOrders_PurchaseOrderId", + column: x => x.PurchaseOrderId, + principalTable: "PurchaseOrders", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "QuotationProducts", + columns: table => new + { + ProductId = table.Column(type: "int", nullable: false), + QuotationId = table.Column(type: "int", nullable: false), + Quantity = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_QuotationProducts", x => new { x.ProductId, x.QuotationId }); + table.ForeignKey( + name: "FK_QuotationProducts_Products_ProductId", + column: x => x.ProductId, + principalTable: "Products", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_QuotationProducts_Quotations_QuotationId", + column: x => x.QuotationId, + principalTable: "Quotations", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "WarehouseProducts", + columns: table => new + { + Quantity = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ProductId = table.Column(type: "int", nullable: false), + WarehouseId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_WarehouseProducts", x => x.Quantity); + table.ForeignKey( + name: "FK_WarehouseProducts_Products_ProductId", + column: x => x.ProductId, + principalTable: "Products", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_WarehouseProducts_Warehouses_WarehouseId", + column: x => x.WarehouseId, + principalTable: "Warehouses", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ProviderContacts", + columns: table => new + { + ProviderId = table.Column(type: "int", nullable: false), + ContactId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ProviderContacts", x => new { x.ContactId, x.ProviderId }); + table.ForeignKey( + name: "FK_ProviderContacts_Contacts_ContactId", + column: x => x.ContactId, + principalTable: "Contacts", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ProviderContacts_Providers_ProviderId", + column: x => x.ProviderId, + principalTable: "Providers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "SoundTimecodes", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ShowId = table.Column(type: "int", nullable: false), + SoundId = table.Column(type: "int", nullable: false), + Start = table.Column(type: "int", nullable: false), + End = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SoundTimecodes", x => x.Id); + table.ForeignKey( + name: "FK_SoundTimecodes_Shows_ShowId", + column: x => x.ShowId, + principalTable: "Shows", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_SoundTimecodes_Sounds_SoundId", + column: x => x.SoundId, + principalTable: "Sounds", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CustomerContacts", + columns: table => new + { + CustomerId = table.Column(type: "int", nullable: false), + ContactId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomerContacts", x => new { x.ContactId, x.CustomerId }); + table.ForeignKey( + name: "FK_CustomerContacts_Contacts_ContactId", + column: x => x.ContactId, + principalTable: "Contacts", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_CustomerContacts_Customers_CustomerId", + column: x => x.CustomerId, + principalTable: "Customers", + principalColumn: "Id"); + }); + + migrationBuilder.CreateIndex( + name: "IX_Brands_ProductId", + table: "Brands", + column: "ProductId"); + + migrationBuilder.CreateIndex( + name: "IX_Contacts_CommunicationId", + table: "Contacts", + column: "CommunicationId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomerContacts_CustomerId", + table: "CustomerContacts", + column: "CustomerId"); + + migrationBuilder.CreateIndex( + name: "IX_Customers_ContactId", + table: "Customers", + column: "ContactId"); + + migrationBuilder.CreateIndex( + name: "IX_Customers_CustomerTypeId", + table: "Customers", + column: "CustomerTypeId"); + + migrationBuilder.CreateIndex( + name: "IX_DeliveryNotes_DelivererId", + table: "DeliveryNotes", + column: "DelivererId"); + + migrationBuilder.CreateIndex( + name: "IX_Materials_WarehouseId", + table: "Materials", + column: "WarehouseId"); + + migrationBuilder.CreateIndex( + name: "IX_Movements_DestinationWarehouseId", + table: "Movements", + column: "DestinationWarehouseId"); + + migrationBuilder.CreateIndex( + name: "IX_Movements_ProductId", + table: "Movements", + column: "ProductId"); + + migrationBuilder.CreateIndex( + name: "IX_Movements_SourceWarehouseId", + table: "Movements", + column: "SourceWarehouseId"); + + migrationBuilder.CreateIndex( + name: "IX_Prices_SupplierId", + table: "Prices", + column: "SupplierId"); + + migrationBuilder.CreateIndex( + name: "IX_ProductColors_ColorId", + table: "ProductColors", + column: "ColorId"); + + migrationBuilder.CreateIndex( + name: "IX_ProductDeliveries_DeliveryNoteId", + table: "ProductDeliveries", + column: "DeliveryNoteId"); + + migrationBuilder.CreateIndex( + name: "IX_ProductEffects_EffectId", + table: "ProductEffects", + column: "EffectId"); + + migrationBuilder.CreateIndex( + name: "IX_Products_ClassificationId", + table: "Products", + column: "ClassificationId"); + + migrationBuilder.CreateIndex( + name: "IX_Products_ProductCategoryId", + table: "Products", + column: "ProductCategoryId"); + + migrationBuilder.CreateIndex( + name: "IX_ProviderContacts_ProviderId", + table: "ProviderContacts", + column: "ProviderId"); + + migrationBuilder.CreateIndex( + name: "IX_Providers_ProviderTypeId", + table: "Providers", + column: "ProviderTypeId"); + + migrationBuilder.CreateIndex( + name: "IX_PurchaseProducts_PurchaseOrderId", + table: "PurchaseProducts", + column: "PurchaseOrderId"); + + migrationBuilder.CreateIndex( + name: "IX_QuotationProducts_QuotationId", + table: "QuotationProducts", + column: "QuotationId"); + + migrationBuilder.CreateIndex( + name: "IX_ShowStaff_StaffId", + table: "ShowStaff", + column: "StaffId"); + + migrationBuilder.CreateIndex( + name: "IX_Sounds_SoundCategoryId", + table: "Sounds", + column: "SoundCategoryId"); + + migrationBuilder.CreateIndex( + name: "IX_SoundTimecodes_ShowId", + table: "SoundTimecodes", + column: "ShowId"); + + migrationBuilder.CreateIndex( + name: "IX_SoundTimecodes_SoundId", + table: "SoundTimecodes", + column: "SoundId"); + + migrationBuilder.CreateIndex( + name: "IX_StaffAvailabilities_StaffId", + table: "StaffAvailabilities", + column: "StaffId"); + + migrationBuilder.CreateIndex( + name: "IX_StaffContacts_StaffId", + table: "StaffContacts", + column: "StaffId"); + + migrationBuilder.CreateIndex( + name: "IX_StaffHistoryOfApprovals_StaffId", + table: "StaffHistoryOfApprovals", + column: "StaffId"); + + migrationBuilder.CreateIndex( + name: "IX_Trucks_ShowId", + table: "Trucks", + column: "ShowId"); + + migrationBuilder.CreateIndex( + name: "IX_WarehouseProducts_ProductId", + table: "WarehouseProducts", + column: "ProductId"); + + migrationBuilder.CreateIndex( + name: "IX_WarehouseProducts_WarehouseId", + table: "WarehouseProducts", + column: "WarehouseId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Brands"); + + migrationBuilder.DropTable( + name: "CustomerContacts"); + + migrationBuilder.DropTable( + name: "ExperienceLevels"); + + migrationBuilder.DropTable( + name: "Materials"); + + migrationBuilder.DropTable( + name: "Movements"); + + migrationBuilder.DropTable( + name: "Prices"); + + migrationBuilder.DropTable( + name: "ProductColors"); + + migrationBuilder.DropTable( + name: "ProductDeliveries"); + + migrationBuilder.DropTable( + name: "ProductEffects"); + + migrationBuilder.DropTable( + name: "ProviderContacts"); + + migrationBuilder.DropTable( + name: "PurchaseProducts"); + + migrationBuilder.DropTable( + name: "QuotationProducts"); + + migrationBuilder.DropTable( + name: "Settings"); + + migrationBuilder.DropTable( + name: "ShowStaff"); + + migrationBuilder.DropTable( + name: "SoundTimecodes"); + + migrationBuilder.DropTable( + name: "StaffAvailabilities"); + + migrationBuilder.DropTable( + name: "StaffContacts"); + + migrationBuilder.DropTable( + name: "StaffHistoryOfApprovals"); + + migrationBuilder.DropTable( + name: "Trucks"); + + migrationBuilder.DropTable( + name: "Users"); + + migrationBuilder.DropTable( + name: "WarehouseProducts"); + + migrationBuilder.DropTable( + name: "Customers"); + + migrationBuilder.DropTable( + name: "Suppliers"); + + migrationBuilder.DropTable( + name: "Colors"); + + migrationBuilder.DropTable( + name: "DeliveryNotes"); + + migrationBuilder.DropTable( + name: "Effects"); + + migrationBuilder.DropTable( + name: "Providers"); + + migrationBuilder.DropTable( + name: "PurchaseOrders"); + + migrationBuilder.DropTable( + name: "Quotations"); + + migrationBuilder.DropTable( + name: "Sounds"); + + migrationBuilder.DropTable( + name: "Availabilities"); + + migrationBuilder.DropTable( + name: "HistoryOfApprovals"); + + migrationBuilder.DropTable( + name: "Staffs"); + + migrationBuilder.DropTable( + name: "Shows"); + + migrationBuilder.DropTable( + name: "Products"); + + migrationBuilder.DropTable( + name: "Warehouses"); + + migrationBuilder.DropTable( + name: "Contacts"); + + migrationBuilder.DropTable( + name: "CustomerTypes"); + + migrationBuilder.DropTable( + name: "Deliverers"); + + migrationBuilder.DropTable( + name: "ProviderTypes"); + + migrationBuilder.DropTable( + name: "SoundCategories"); + + migrationBuilder.DropTable( + name: "Classifications"); + + migrationBuilder.DropTable( + name: "ProductCategories"); + + migrationBuilder.DropTable( + name: "Communications"); + } + } +} diff --git a/PyroFetes/Migrations/PyroFetesDbContextModelSnapshot.cs b/PyroFetes/Migrations/PyroFetesDbContextModelSnapshot.cs new file mode 100644 index 0000000..3f047d1 --- /dev/null +++ b/PyroFetes/Migrations/PyroFetesDbContextModelSnapshot.cs @@ -0,0 +1,1571 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using PyroFetes; + +#nullable disable + +namespace PyroFetes.Migrations +{ + [DbContext(typeof(PyroFetesDbContext))] + partial class PyroFetesDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.20") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("PyroFetes.Models.Availability", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AvailabilityDate") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DeliveryDate") + .HasColumnType("date"); + + b.Property("ExpirationDate") + .HasColumnType("date"); + + b.Property("RenewallDate") + .HasColumnType("date"); + + b.HasKey("Id"); + + b.ToTable("Availabilities"); + }); + + modelBuilder.Entity("PyroFetes.Models.Brand", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ProductId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ProductId"); + + b.ToTable("Brands"); + }); + + modelBuilder.Entity("PyroFetes.Models.Classification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Label") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Classifications"); + }); + + modelBuilder.Entity("PyroFetes.Models.Color", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Label") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Colors"); + }); + + modelBuilder.Entity("PyroFetes.Models.Communication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Calling") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Meeting") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Communications"); + }); + + modelBuilder.Entity("PyroFetes.Models.Contact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("City") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CommunicationId") + .HasColumnType("int"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Role") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ZipCode") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("CommunicationId"); + + b.ToTable("Contacts"); + }); + + modelBuilder.Entity("PyroFetes.Models.Customer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ContactId") + .HasColumnType("int"); + + b.Property("CustomerTypeId") + .HasColumnType("int"); + + b.Property("Note") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ContactId"); + + b.HasIndex("CustomerTypeId"); + + b.ToTable("Customers"); + }); + + modelBuilder.Entity("PyroFetes.Models.CustomerContact", b => + { + b.Property("ContactId") + .HasColumnType("int"); + + b.Property("CustomerId") + .HasColumnType("int"); + + b.HasKey("ContactId", "CustomerId"); + + b.HasIndex("CustomerId"); + + b.ToTable("CustomerContacts"); + }); + + modelBuilder.Entity("PyroFetes.Models.CustomerType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Price") + .HasColumnType("decimal(18,2)"); + + b.HasKey("Id"); + + b.ToTable("CustomerTypes"); + }); + + modelBuilder.Entity("PyroFetes.Models.Deliverer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Transporter") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Deliverers"); + }); + + modelBuilder.Entity("PyroFetes.Models.DeliveryNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DelivererId") + .HasColumnType("int"); + + b.Property("EstimateDeliveryDate") + .HasColumnType("date"); + + b.Property("ExpeditionDate") + .HasColumnType("date"); + + b.Property("RealDeliveryDate") + .HasColumnType("date"); + + b.Property("TrackingNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("DelivererId"); + + b.ToTable("DeliveryNotes"); + }); + + modelBuilder.Entity("PyroFetes.Models.Effect", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Label") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Effects"); + }); + + modelBuilder.Entity("PyroFetes.Models.ExperienceLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Label") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ExperienceLevels"); + }); + + modelBuilder.Entity("PyroFetes.Models.HistoryOfApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DeliveryDate") + .HasColumnType("date"); + + b.Property("ExpirationDate") + .HasColumnType("date"); + + b.HasKey("Id"); + + b.ToTable("HistoryOfApprovals"); + }); + + modelBuilder.Entity("PyroFetes.Models.Material", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Quantity") + .HasColumnType("int"); + + b.Property("WarehouseId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("WarehouseId"); + + b.ToTable("Materials"); + }); + + modelBuilder.Entity("PyroFetes.Models.Movement", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Arrival") + .HasColumnType("datetime2"); + + b.Property("Date") + .HasColumnType("datetime2"); + + b.Property("DestinationWarehouseId") + .HasColumnType("int"); + + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("Quantity") + .HasColumnType("int"); + + b.Property("SourceWarehouseId") + .HasColumnType("int"); + + b.Property("Start") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.HasIndex("DestinationWarehouseId"); + + b.HasIndex("ProductId"); + + b.HasIndex("SourceWarehouseId"); + + b.ToTable("Movements"); + }); + + modelBuilder.Entity("PyroFetes.Models.Price", b => + { + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("SupplierId") + .HasColumnType("int"); + + b.Property("SellingPrice") + .HasColumnType("decimal(18,2)"); + + b.HasKey("ProductId", "SupplierId"); + + b.HasIndex("SupplierId"); + + b.ToTable("Prices"); + }); + + modelBuilder.Entity("PyroFetes.Models.Product", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ApprovalNumber") + .HasColumnType("int"); + + b.Property("Caliber") + .HasColumnType("decimal(18,2)"); + + b.Property("ClassificationId") + .HasColumnType("int"); + + b.Property("Duration") + .HasColumnType("decimal(18,2)"); + + b.Property("Image") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Link") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("MinimalQuantity") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Nec") + .HasColumnType("decimal(18,2)"); + + b.Property("ProductCategoryId") + .HasColumnType("int"); + + b.Property("References") + .HasColumnType("int"); + + b.Property("SellingPrice") + .HasColumnType("decimal(18,2)"); + + b.Property("Weight") + .HasColumnType("decimal(18,2)"); + + b.HasKey("Id"); + + b.HasIndex("ClassificationId"); + + b.HasIndex("ProductCategoryId"); + + b.ToTable("Products"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Label") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ProductCategories"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductColor", b => + { + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("ColorId") + .HasColumnType("int"); + + b.HasKey("ProductId", "ColorId"); + + b.HasIndex("ColorId"); + + b.ToTable("ProductColors"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductDelivery", b => + { + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("DeliveryNoteId") + .HasColumnType("int"); + + b.Property("Quantity") + .HasColumnType("int"); + + b.HasKey("ProductId", "DeliveryNoteId"); + + b.HasIndex("DeliveryNoteId"); + + b.ToTable("ProductDeliveries"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductEffect", b => + { + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("EffectId") + .HasColumnType("int"); + + b.HasKey("ProductId", "EffectId"); + + b.HasIndex("EffectId"); + + b.ToTable("ProductEffects"); + }); + + modelBuilder.Entity("PyroFetes.Models.Provider", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Price") + .HasColumnType("decimal(18,2)"); + + b.Property("ProviderId") + .HasColumnType("int"); + + b.Property("ProviderTypeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ProviderTypeId"); + + b.ToTable("Providers"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProviderContact", b => + { + b.Property("ContactId") + .HasColumnType("int"); + + b.Property("ProviderId") + .HasColumnType("int"); + + b.HasKey("ContactId", "ProviderId"); + + b.HasIndex("ProviderId"); + + b.ToTable("ProviderContacts"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProviderType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Label") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ProviderTypes"); + }); + + modelBuilder.Entity("PyroFetes.Models.PurchaseOrder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PurchaseConditions") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("PurchaseOrders"); + }); + + modelBuilder.Entity("PyroFetes.Models.PurchaseProduct", b => + { + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("PurchaseOrderId") + .HasColumnType("int"); + + b.Property("Quantity") + .HasColumnType("int"); + + b.HasKey("ProductId", "PurchaseOrderId"); + + b.HasIndex("PurchaseOrderId"); + + b.ToTable("PurchaseProducts"); + }); + + modelBuilder.Entity("PyroFetes.Models.Quotation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConditionsSale") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Message") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Quotations"); + }); + + modelBuilder.Entity("PyroFetes.Models.QuotationProduct", b => + { + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("QuotationId") + .HasColumnType("int"); + + b.Property("Quantity") + .HasColumnType("int"); + + b.HasKey("ProductId", "QuotationId"); + + b.HasIndex("QuotationId"); + + b.ToTable("QuotationProducts"); + }); + + modelBuilder.Entity("PyroFetes.Models.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ElectronicSignature") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Logo") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Settings"); + }); + + modelBuilder.Entity("PyroFetes.Models.Show", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Date") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Place") + .IsRequired() + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.Property("PyrotechnicImplementationPlan") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("Id"); + + b.ToTable("Shows"); + }); + + modelBuilder.Entity("PyroFetes.Models.Sound", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Artist") + .IsRequired() + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Duration") + .IsRequired() + .HasColumnType("int"); + + b.Property("Format") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("Kind") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.Property("SoundCategoryId") + .HasColumnType("int"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("Id"); + + b.HasIndex("SoundCategoryId"); + + b.ToTable("Sounds"); + }); + + modelBuilder.Entity("PyroFetes.Models.SoundCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("Id"); + + b.ToTable("SoundCategories"); + }); + + modelBuilder.Entity("PyroFetes.Models.SoundTimecode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("End") + .HasColumnType("int"); + + b.Property("ShowId") + .HasColumnType("int"); + + b.Property("SoundId") + .HasColumnType("int"); + + b.Property("Start") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ShowId"); + + b.HasIndex("SoundId"); + + b.ToTable("SoundTimecodes"); + }); + + modelBuilder.Entity("PyroFetes.Models.Staff", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.Property("F4T2ExpirationDate") + .HasColumnType("date"); + + b.Property("F4T2NumberApproval") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.Property("Profession") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id"); + + b.ToTable("Staffs"); + }); + + modelBuilder.Entity("PyroFetes.Models.StaffAvailability", b => + { + b.Property("AvailabilityId") + .HasColumnType("int"); + + b.Property("StaffId") + .HasColumnType("int"); + + b.HasKey("AvailabilityId", "StaffId"); + + b.HasIndex("StaffId"); + + b.ToTable("StaffAvailabilities"); + }); + + modelBuilder.Entity("PyroFetes.Models.StaffContact", b => + { + b.Property("ContactId") + .HasColumnType("int"); + + b.Property("StaffId") + .HasColumnType("int"); + + b.HasKey("ContactId", "StaffId"); + + b.HasIndex("StaffId"); + + b.ToTable("StaffContacts"); + }); + + modelBuilder.Entity("PyroFetes.Models.StaffHistoryOfApproval", b => + { + b.Property("HistoryOfApprovalId") + .HasColumnType("int"); + + b.Property("StaffId") + .HasColumnType("int"); + + b.HasKey("HistoryOfApprovalId", "StaffId"); + + b.HasIndex("StaffId"); + + b.ToTable("StaffHistoryOfApprovals"); + }); + + modelBuilder.Entity("PyroFetes.Models.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("City") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DeliveryDelay") + .HasColumnType("int"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Phone") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Suppliers"); + }); + + modelBuilder.Entity("PyroFetes.Models.Truck", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("MaxExplosiveCapacity") + .HasColumnType("float"); + + b.Property("ShowId") + .HasColumnType("int"); + + b.Property("Sizes") + .IsRequired() + .HasMaxLength(80) + .HasColumnType("nvarchar(80)"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.HasKey("Id"); + + b.HasIndex("ShowId"); + + b.ToTable("Trucks"); + }); + + modelBuilder.Entity("PyroFetes.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Fonction") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Salt") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("PyroFetes.Models.Warehouse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("City") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Current") + .HasColumnType("int"); + + b.Property("MaxWeight") + .HasColumnType("int"); + + b.Property("MinWeight") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Warehouses"); + }); + + modelBuilder.Entity("PyroFetes.Models.WarehouseProduct", b => + { + b.Property("Quantity") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Quantity")); + + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("WarehouseId") + .HasColumnType("int"); + + b.HasKey("Quantity"); + + b.HasIndex("ProductId"); + + b.HasIndex("WarehouseId"); + + b.ToTable("WarehouseProducts"); + }); + + modelBuilder.Entity("ShowStaff", b => + { + b.Property("ShowsId") + .HasColumnType("int"); + + b.Property("StaffId") + .HasColumnType("int"); + + b.HasKey("ShowsId", "StaffId"); + + b.HasIndex("StaffId"); + + b.ToTable("ShowStaff"); + }); + + modelBuilder.Entity("PyroFetes.Models.Brand", b => + { + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany("Brands") + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("PyroFetes.Models.Contact", b => + { + b.HasOne("PyroFetes.Models.Communication", "Communication") + .WithMany() + .HasForeignKey("CommunicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Communication"); + }); + + modelBuilder.Entity("PyroFetes.Models.Customer", b => + { + b.HasOne("PyroFetes.Models.Contact", "Contact") + .WithMany() + .HasForeignKey("ContactId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.CustomerType", "CustomerType") + .WithMany("Customers") + .HasForeignKey("CustomerTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Contact"); + + b.Navigation("CustomerType"); + }); + + modelBuilder.Entity("PyroFetes.Models.CustomerContact", b => + { + b.HasOne("PyroFetes.Models.Contact", "Contact") + .WithMany("CustomerContacts") + .HasForeignKey("ContactId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Customer", "Customer") + .WithMany("CustomerContacts") + .HasForeignKey("CustomerId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Contact"); + + b.Navigation("Customer"); + }); + + modelBuilder.Entity("PyroFetes.Models.DeliveryNote", b => + { + b.HasOne("PyroFetes.Models.Deliverer", "Deliverer") + .WithMany("DeliveryNotes") + .HasForeignKey("DelivererId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Deliverer"); + }); + + modelBuilder.Entity("PyroFetes.Models.Material", b => + { + b.HasOne("PyroFetes.Models.Warehouse", "Warehouse") + .WithMany("Materials") + .HasForeignKey("WarehouseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Warehouse"); + }); + + modelBuilder.Entity("PyroFetes.Models.Movement", b => + { + b.HasOne("PyroFetes.Models.Warehouse", "DestinationWarehouse") + .WithMany("MovementsDestination") + .HasForeignKey("DestinationWarehouseId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany("Movements") + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Warehouse", "SourceWarehouse") + .WithMany("MovementsSource") + .HasForeignKey("SourceWarehouseId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("DestinationWarehouse"); + + b.Navigation("Product"); + + b.Navigation("SourceWarehouse"); + }); + + modelBuilder.Entity("PyroFetes.Models.Price", b => + { + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Supplier", "Supplier") + .WithMany() + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("PyroFetes.Models.Product", b => + { + b.HasOne("PyroFetes.Models.Classification", "Classification") + .WithMany("Products") + .HasForeignKey("ClassificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.ProductCategory", "ProductCategory") + .WithMany("Products") + .HasForeignKey("ProductCategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Classification"); + + b.Navigation("ProductCategory"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductColor", b => + { + b.HasOne("PyroFetes.Models.Color", "Color") + .WithMany() + .HasForeignKey("ColorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Color"); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductDelivery", b => + { + b.HasOne("PyroFetes.Models.DeliveryNote", "DeliveryNote") + .WithMany() + .HasForeignKey("DeliveryNoteId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DeliveryNote"); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductEffect", b => + { + b.HasOne("PyroFetes.Models.Effect", "Effect") + .WithMany() + .HasForeignKey("EffectId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Effect"); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("PyroFetes.Models.Provider", b => + { + b.HasOne("PyroFetes.Models.ProviderType", "ProviderType") + .WithMany() + .HasForeignKey("ProviderTypeId"); + + b.Navigation("ProviderType"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProviderContact", b => + { + b.HasOne("PyroFetes.Models.Contact", "Contact") + .WithMany() + .HasForeignKey("ContactId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Provider", "Provider") + .WithMany() + .HasForeignKey("ProviderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Contact"); + + b.Navigation("Provider"); + }); + + modelBuilder.Entity("PyroFetes.Models.PurchaseProduct", b => + { + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.PurchaseOrder", "PurchaseOrder") + .WithMany() + .HasForeignKey("PurchaseOrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + + b.Navigation("PurchaseOrder"); + }); + + modelBuilder.Entity("PyroFetes.Models.QuotationProduct", b => + { + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Quotation", "Quotation") + .WithMany() + .HasForeignKey("QuotationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + + b.Navigation("Quotation"); + }); + + modelBuilder.Entity("PyroFetes.Models.Sound", b => + { + b.HasOne("PyroFetes.Models.SoundCategory", "Category") + .WithMany("Sounds") + .HasForeignKey("SoundCategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Category"); + }); + + modelBuilder.Entity("PyroFetes.Models.SoundTimecode", b => + { + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("SoundCues") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Sound", "Sound") + .WithMany("ShowPlacements") + .HasForeignKey("SoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Show"); + + b.Navigation("Sound"); + }); + + modelBuilder.Entity("PyroFetes.Models.StaffAvailability", b => + { + b.HasOne("PyroFetes.Models.Availability", "Availability") + .WithMany() + .HasForeignKey("AvailabilityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Staff", "Staff") + .WithMany() + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Availability"); + + b.Navigation("Staff"); + }); + + modelBuilder.Entity("PyroFetes.Models.StaffContact", b => + { + b.HasOne("PyroFetes.Models.Contact", "Contact") + .WithMany() + .HasForeignKey("ContactId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Staff", "Staff") + .WithMany() + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Contact"); + + b.Navigation("Staff"); + }); + + modelBuilder.Entity("PyroFetes.Models.StaffHistoryOfApproval", b => + { + b.HasOne("PyroFetes.Models.HistoryOfApproval", "HistoryOfApproval") + .WithMany() + .HasForeignKey("HistoryOfApprovalId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Staff", "Staff") + .WithMany() + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("HistoryOfApproval"); + + b.Navigation("Staff"); + }); + + modelBuilder.Entity("PyroFetes.Models.Truck", b => + { + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("Trucks") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Show"); + }); + + modelBuilder.Entity("PyroFetes.Models.WarehouseProduct", b => + { + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Warehouse", "Warehouse") + .WithMany() + .HasForeignKey("WarehouseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + + b.Navigation("Warehouse"); + }); + + modelBuilder.Entity("ShowStaff", b => + { + b.HasOne("PyroFetes.Models.Show", null) + .WithMany() + .HasForeignKey("ShowsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Staff", null) + .WithMany() + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("PyroFetes.Models.Classification", b => + { + b.Navigation("Products"); + }); + + modelBuilder.Entity("PyroFetes.Models.Contact", b => + { + b.Navigation("CustomerContacts"); + }); + + modelBuilder.Entity("PyroFetes.Models.Customer", b => + { + b.Navigation("CustomerContacts"); + }); + + modelBuilder.Entity("PyroFetes.Models.CustomerType", b => + { + b.Navigation("Customers"); + }); + + modelBuilder.Entity("PyroFetes.Models.Deliverer", b => + { + b.Navigation("DeliveryNotes"); + }); + + modelBuilder.Entity("PyroFetes.Models.Product", b => + { + b.Navigation("Brands"); + + b.Navigation("Movements"); + }); + + modelBuilder.Entity("PyroFetes.Models.ProductCategory", b => + { + b.Navigation("Products"); + }); + + modelBuilder.Entity("PyroFetes.Models.Show", b => + { + b.Navigation("SoundCues"); + + b.Navigation("Trucks"); + }); + + modelBuilder.Entity("PyroFetes.Models.Sound", b => + { + b.Navigation("ShowPlacements"); + }); + + modelBuilder.Entity("PyroFetes.Models.SoundCategory", b => + { + b.Navigation("Sounds"); + }); + + modelBuilder.Entity("PyroFetes.Models.Warehouse", b => + { + b.Navigation("Materials"); + + b.Navigation("MovementsDestination"); + + b.Navigation("MovementsSource"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/PyroFetes/PyroFetesDbContext.cs b/PyroFetes/PyroFetesDbContext.cs index 2641f14..d71044c 100644 --- a/PyroFetes/PyroFetesDbContext.cs +++ b/PyroFetes/PyroFetesDbContext.cs @@ -78,6 +78,9 @@ public class PyroFetesDbContext : DbContext .HasForeignKey(m => m.DestinationWarehouseId) .OnDelete(DeleteBehavior.Restrict); + modelBuilder.Entity() + .HasKey(cc => new { cc.ContactId, cc.CustomerId }); + modelBuilder.Entity() .HasOne(cc => cc.Customer) .WithMany(c => c.CustomerContacts) From 89be35ecb046709b9f68c318f9dcb199283f179b Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Tue, 7 Oct 2025 23:28:16 +0100 Subject: [PATCH 36/43] Fixed all relationship and write errors in all entities --- PyroFetes/Models/City.cs | 12 ++++++++++ PyroFetes/Models/Classification.cs | 4 ++-- PyroFetes/Models/Color.cs | 3 ++- PyroFetes/Models/Communication.cs | 8 ++++--- PyroFetes/Models/Contact.cs | 18 +++++++-------- PyroFetes/Models/Customer.cs | 9 +++----- PyroFetes/Models/CustomerContact.cs | 13 ----------- PyroFetes/Models/Deliverer.cs | 2 +- PyroFetes/Models/DeliveryNote.cs | 3 ++- PyroFetes/Models/Effect.cs | 4 +++- PyroFetes/Models/Movement.cs | 4 +--- PyroFetes/Models/Price.cs | 1 + PyroFetes/Models/Product.cs | 22 ++++++++++++++----- PyroFetes/Models/ProductCategory.cs | 4 ++-- PyroFetes/Models/ProductColor.cs | 4 ++-- PyroFetes/Models/ProductDelivery.cs | 3 +-- PyroFetes/Models/ProductEffect.cs | 2 +- PyroFetes/Models/ProviderContact.cs | 2 +- PyroFetes/Models/PurchaseOrder.cs | 4 +++- PyroFetes/Models/Quotation.cs | 6 +++-- .../{Provider.cs => ServiceProvider.cs} | 5 ++--- PyroFetes/Models/Show.cs | 14 +++++++----- PyroFetes/Models/ShowServiceProvider.cs | 9 ++++++++ PyroFetes/Models/Sound.cs | 6 +++-- PyroFetes/Models/SoundCategory.cs | 5 +++-- PyroFetes/Models/SoundTimecode.cs | 8 ++++--- PyroFetes/Models/Supplier.cs | 10 +++++---- PyroFetes/Models/User.cs | 8 +++---- PyroFetes/Models/Warehouse.cs | 5 +++-- PyroFetes/Models/WarehouseProduct.cs | 11 +++++----- PyroFetes/PyroFetesDbContext.cs | 19 ++-------------- 31 files changed, 124 insertions(+), 104 deletions(-) create mode 100644 PyroFetes/Models/City.cs delete mode 100644 PyroFetes/Models/CustomerContact.cs rename PyroFetes/Models/{Provider.cs => ServiceProvider.cs} (76%) create mode 100644 PyroFetes/Models/ShowServiceProvider.cs diff --git a/PyroFetes/Models/City.cs b/PyroFetes/Models/City.cs new file mode 100644 index 0000000..04dc24e --- /dev/null +++ b/PyroFetes/Models/City.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class City +{ + [Key] public int Id { get; set; } + [Required, MaxLength(100)] public string? Name { get; set; } + [Required] public int ZipCode { get; set; } + + public List? Shows { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Classification.cs b/PyroFetes/Models/Classification.cs index 6ef006b..bd3685b 100644 --- a/PyroFetes/Models/Classification.cs +++ b/PyroFetes/Models/Classification.cs @@ -5,7 +5,7 @@ namespace PyroFetes.Models; public class Classification { [Key] public int Id { get; set; } - [Required] public string? Label { get; set; } + [Required, MaxLength(100)] public string? Label { get; set; } - [Required] public List? Products { get; set; } + public List? Products { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Color.cs b/PyroFetes/Models/Color.cs index 00bb147..acfe830 100644 --- a/PyroFetes/Models/Color.cs +++ b/PyroFetes/Models/Color.cs @@ -5,6 +5,7 @@ namespace PyroFetes.Models; public class Color { [Key] public int Id { get; set; } - [Required] public string? Label { get; set; } + [Required, MaxLength(100)] public string? Label { get; set; } + public List? ProductColors { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Communication.cs b/PyroFetes/Models/Communication.cs index d7cf112..a3dd0d2 100644 --- a/PyroFetes/Models/Communication.cs +++ b/PyroFetes/Models/Communication.cs @@ -5,8 +5,10 @@ namespace PyroFetes.Models; public class Communication { [Key] public int Id { get; set; } - [Required] public string? Calling { get; set; } - [Required] public string? Email { get; set; } - [Required] public string? Meeting { get; set; } + [Required, MaxLength(100)] public string? Calling { get; set; } + [Required, MaxLength(100)] public string? Email { get; set; } + [Required, MaxLength(300)] public string? Meeting { get; set; } + [Required] public int ContactId { get; set; } + public Contact? Contact { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Contact.cs b/PyroFetes/Models/Contact.cs index 958f52a..3644750 100644 --- a/PyroFetes/Models/Contact.cs +++ b/PyroFetes/Models/Contact.cs @@ -7,15 +7,15 @@ public class Contact [Key] public int Id { get; set; } [Required, MaxLength(100)] public string? LastName { get; set; } [Required, MaxLength(100)] public string? FirstName { get; set; } - [Required] public string? Email { get; set; } - [Required] public string? PhoneNumber { get; set; } - [Required] public string? Address { get; set; } - [Required] public string? ZipCode { get; set; } - [Required] public string? City { get; set; } - [Required] public string? Role { get; set; } + [Required, MaxLength(100)] public string? Email { get; set; } + [Required, MaxLength(30)] public string? PhoneNumber { get; set; } + [Required, MaxLength(100)] public string? Address { get; set; } + [Required] public int ZipCode { get; set; } + [Required, MaxLength(100)] public string? City { get; set; } + [Required, MaxLength(100)] public string? Role { get; set; } - public int CommunicationId { get; set; } - public Communication? Communication { get; set; } + public Customer? Customer { get; set; } + [Required] public int CustomerId { get; set; } - public List? CustomerContacts { get; set; } + public List? Communications { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Customer.cs b/PyroFetes/Models/Customer.cs index 98a49b0..545bca4 100644 --- a/PyroFetes/Models/Customer.cs +++ b/PyroFetes/Models/Customer.cs @@ -5,14 +5,11 @@ namespace PyroFetes.Models; public class Customer { [Key] public int Id { get; set; } - [Required] public string? Note { get; set; } + [Required, MaxLength(200)] public string? Note { get; set; } //Relations - public int CustomerTypeId { get; set; } + [Required] public int CustomerTypeId { get; set; } public CustomerType? CustomerType { get; set; } - public int ContactId { get; set; } - public Contact? Contact { get; set; } - - public List? CustomerContacts { get; set; } + public List? Contacts { get; set; } } diff --git a/PyroFetes/Models/CustomerContact.cs b/PyroFetes/Models/CustomerContact.cs deleted file mode 100644 index dff5fb2..0000000 --- a/PyroFetes/Models/CustomerContact.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using Microsoft.EntityFrameworkCore; - -namespace PyroFetes.Models; - -[PrimaryKey(nameof(ContactId), nameof(CustomerId))] -public class CustomerContact -{ - public int CustomerId { get; set; } - public Customer? Customer { get; set; } - public int ContactId { get; set; } - public Contact? Contact { get; set; } -} \ No newline at end of file diff --git a/PyroFetes/Models/Deliverer.cs b/PyroFetes/Models/Deliverer.cs index 2897ef9..34e708c 100644 --- a/PyroFetes/Models/Deliverer.cs +++ b/PyroFetes/Models/Deliverer.cs @@ -5,7 +5,7 @@ namespace PyroFetes.Models; public class Deliverer { [Key] public int Id { get; set; } - [Required] public string? Transporter { get; set; } + [Required, MaxLength(100)] public string? Transporter { get; set; } public List? DeliveryNotes { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/DeliveryNote.cs b/PyroFetes/Models/DeliveryNote.cs index eb7e70a..21e873e 100644 --- a/PyroFetes/Models/DeliveryNote.cs +++ b/PyroFetes/Models/DeliveryNote.cs @@ -5,11 +5,12 @@ namespace PyroFetes.Models; public class DeliveryNote { [Key] public int Id { get; set; } - [Required] public string? TrackingNumber { get; set; } + [Required, MaxLength(100)] public string? TrackingNumber { get; set; } public int DelivererId { get; set; } [Required] public DateOnly EstimateDeliveryDate { get; set; } [Required] public DateOnly ExpeditionDate { get; set; } [Required] public DateOnly RealDeliveryDate { get; set; } public Deliverer? Deliverer { get; set; } + public List? ProductDeliveries { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Effect.cs b/PyroFetes/Models/Effect.cs index 2d0ba45..0dcb87c 100644 --- a/PyroFetes/Models/Effect.cs +++ b/PyroFetes/Models/Effect.cs @@ -5,5 +5,7 @@ namespace PyroFetes.Models; public class Effect { [Key] public int Id { get; set; } - [Required] public string? Label { get; set; } + [Required, MaxLength(200)] public string? Label { get; set; } + + public List? ProductEffects { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Movement.cs b/PyroFetes/Models/Movement.cs index 6c53c54..b7cf0da 100644 --- a/PyroFetes/Models/Movement.cs +++ b/PyroFetes/Models/Movement.cs @@ -10,9 +10,7 @@ public class Movement [Required] public DateTime Arrival {get; set;} [Required] public int Quantity {get; set;} - [Required] public int ProductId {get; set;} - [Required] public Product? Product {get; set;} - + public List? Products { get; set; } public int? SourceWarehouseId {get; set;} public Warehouse? SourceWarehouse {get; set;} diff --git a/PyroFetes/Models/Price.cs b/PyroFetes/Models/Price.cs index 7c787bb..2ee597e 100644 --- a/PyroFetes/Models/Price.cs +++ b/PyroFetes/Models/Price.cs @@ -1,4 +1,5 @@ using System.ComponentModel.DataAnnotations; +using System.Runtime.CompilerServices; using Microsoft.EntityFrameworkCore; namespace PyroFetes.Models; diff --git a/PyroFetes/Models/Product.cs b/PyroFetes/Models/Product.cs index e7ad7ee..525195a 100644 --- a/PyroFetes/Models/Product.cs +++ b/PyroFetes/Models/Product.cs @@ -14,19 +14,29 @@ namespace PyroFetes.Models [Required] public decimal Nec { get; set; } [Required] public decimal SellingPrice { get; set; } [Required] public string? Image { get; set; } - [Required] public string? Link { get; set; } + [Required, MaxLength(200)] public string? Link { get; set; } [Required] public int MinimalQuantity { get; set; } // Relations [Required] public int ClassificationId { get; set; } - [Required] public Classification? Classification { get; set; } + public Classification? Classification { get; set; } [Required] public int ProductCategoryId { get; set; } - [Required] public ProductCategory? ProductCategory { get; set; } - - [Required] public List? Brands { get; set; } + public ProductCategory? ProductCategory { get; set; } + + [Required] public int MovementId {get; set;} + public Movement? Movement {get; set;} + + public List? ProductDeliveries { get; set; } + public List? Brands { get; set; } + public List? Movements { get; set; } + public List? ProductEffects { get; set; } + public List? ProductColors { get; set; } + public List? PurchaseProducts { get; set; } + public List? Prices { get; set; } + public List? QuotationProducts { get; set; } + public List? WarehouseProducts { get; set; } - [Required] public List? Movements { get; set; } } } \ No newline at end of file diff --git a/PyroFetes/Models/ProductCategory.cs b/PyroFetes/Models/ProductCategory.cs index 2e339ba..79bd67f 100644 --- a/PyroFetes/Models/ProductCategory.cs +++ b/PyroFetes/Models/ProductCategory.cs @@ -5,7 +5,7 @@ namespace PyroFetes.Models; public class ProductCategory { [Key] public int Id { get; set; } - [Required] public string? Label { get; set; } + [Required, MaxLength(100)] public string? Label { get; set; } - [Required] public List? Products { get; set; } + public List? Products { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ProductColor.cs b/PyroFetes/Models/ProductColor.cs index 66acf11..f93d964 100644 --- a/PyroFetes/Models/ProductColor.cs +++ b/PyroFetes/Models/ProductColor.cs @@ -6,9 +6,9 @@ namespace PyroFetes.Models; [PrimaryKey(nameof(ProductId), nameof(ColorId))] public class ProductColor { - [Required] public Product? Product { get; set; } + public Product? Product { get; set; } [Required] public int ProductId { get; set; } - [Required] public Color? Color { get; set; } + public Color? Color { get; set; } [Required] public int ColorId { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ProductDelivery.cs b/PyroFetes/Models/ProductDelivery.cs index 1151585..bfbae68 100644 --- a/PyroFetes/Models/ProductDelivery.cs +++ b/PyroFetes/Models/ProductDelivery.cs @@ -12,5 +12,4 @@ public class ProductDelivery public Product? Product { get; set; } public DeliveryNote? DeliveryNote { get; set; } -} - \ No newline at end of file +} \ No newline at end of file diff --git a/PyroFetes/Models/ProductEffect.cs b/PyroFetes/Models/ProductEffect.cs index 1c55e9a..3f269d6 100644 --- a/PyroFetes/Models/ProductEffect.cs +++ b/PyroFetes/Models/ProductEffect.cs @@ -9,7 +9,7 @@ public class ProductEffect [Required] public Product? Product { get; set; } [Required] public int ProductId { get; set; } - [Required] public Effect? Effect { get; set; } + public Effect? Effect { get; set; } [Required] public int EffectId { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ProviderContact.cs b/PyroFetes/Models/ProviderContact.cs index cdfefb3..8d21d35 100644 --- a/PyroFetes/Models/ProviderContact.cs +++ b/PyroFetes/Models/ProviderContact.cs @@ -6,7 +6,7 @@ namespace PyroFetes.Models; public class ProviderContact { public int ProviderId { get; set; } - public Provider? Provider { get; set; } + public ServiceProvider? Provider { get; set; } public int ContactId { get; set; } public Contact? Contact { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/PurchaseOrder.cs b/PyroFetes/Models/PurchaseOrder.cs index 3c997e9..815f5a0 100644 --- a/PyroFetes/Models/PurchaseOrder.cs +++ b/PyroFetes/Models/PurchaseOrder.cs @@ -5,5 +5,7 @@ namespace PyroFetes.Models; public class PurchaseOrder { [Key] public int Id { get; set; } - [Required] public string? PurchaseConditions { get; set; } + [Required, MaxLength(300)] public string? PurchaseConditions { get; set; } + + public List? PurchaseProducts { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Quotation.cs b/PyroFetes/Models/Quotation.cs index aadf24f..f1288ce 100644 --- a/PyroFetes/Models/Quotation.cs +++ b/PyroFetes/Models/Quotation.cs @@ -5,6 +5,8 @@ namespace PyroFetes.Models; public class Quotation { [Key] public int Id { get; set; } - [Required] public string? Message { get; set; } - [Required] public string? ConditionsSale { get; set; } + [Required, MaxLength(200)] public string? Message { get; set; } + [Required, MaxLength(300)] public string? ConditionsSale { get; set; } + + public List? QuotationProducts { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Provider.cs b/PyroFetes/Models/ServiceProvider.cs similarity index 76% rename from PyroFetes/Models/Provider.cs rename to PyroFetes/Models/ServiceProvider.cs index f48e2c3..2144b69 100644 --- a/PyroFetes/Models/Provider.cs +++ b/PyroFetes/Models/ServiceProvider.cs @@ -2,13 +2,12 @@ using System.ComponentModel.DataAnnotations; namespace PyroFetes.Models; -public class Provider +public class ServiceProvider { [Key] public int Id { get; set; } [Required] public decimal Price { get; set; } //Relations - - public int ProviderId { get; set; } + public int ProviderTypeId { get; set; } public ProviderType? ProviderType { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Show.cs b/PyroFetes/Models/Show.cs index 0713da7..29616e5 100644 --- a/PyroFetes/Models/Show.cs +++ b/PyroFetes/Models/Show.cs @@ -10,11 +10,15 @@ public class Show [MaxLength(500)] public string? Description { get; set; } // Link (path/URL/file name) to the pyrotechnic implementation plan - [Required, MaxLength(500)] - public string? PyrotechnicImplementationPlan { get; set; } - - public DateTime? Date { get; set; } + [Required, MaxLength(500)] public string? PyrotechnicImplementationPlan { get; set; } + + public DateOnly? Date { get; set; } + + [Required] public int CityId { get; set; } + public City? City { get; set; } + public ICollection? Staff { get; set; } public ICollection? Trucks { get; set; } - public ICollection? SoundCues { get; set; } + + public List? SoundTimecodes { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ShowServiceProvider.cs b/PyroFetes/Models/ShowServiceProvider.cs new file mode 100644 index 0000000..351c9fc --- /dev/null +++ b/PyroFetes/Models/ShowServiceProvider.cs @@ -0,0 +1,9 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class ShowServiceProvider +{ + [Key] public int Id { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/Models/Sound.cs b/PyroFetes/Models/Sound.cs index 361d3e5..3ddee3e 100644 --- a/PyroFetes/Models/Sound.cs +++ b/PyroFetes/Models/Sound.cs @@ -12,7 +12,9 @@ public class Sound [Required, MaxLength(40)] public string? Kind { get; set; } [Required, MaxLength(40)] public string? Format { get; set; } public DateTime? CreationDate { get; set; } + [Required] public int SoundCategoryId { get; set; } - public SoundCategory? Category { get; set; } - public ICollection? ShowPlacements { get; set; } + public SoundCategory? SoundCategory { get; set; } + + public List? SoundTimecodes { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/SoundCategory.cs b/PyroFetes/Models/SoundCategory.cs index 3cabd6d..52caeaf 100644 --- a/PyroFetes/Models/SoundCategory.cs +++ b/PyroFetes/Models/SoundCategory.cs @@ -5,6 +5,7 @@ namespace PyroFetes.Models; public class SoundCategory { [Key] public int Id { get; set; } - [Required, MaxLength(60)] public string Name { get; set; } = null!; - public ICollection? Sounds { get; set; } + [Required, MaxLength(100)] public string Name { get; set; } = null!; + + public List? Sounds { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/SoundTimecode.cs b/PyroFetes/Models/SoundTimecode.cs index 7537699..3411e0c 100644 --- a/PyroFetes/Models/SoundTimecode.cs +++ b/PyroFetes/Models/SoundTimecode.cs @@ -1,14 +1,16 @@ using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; namespace PyroFetes.Models; +[PrimaryKey(nameof(ShowId), nameof(SoundId))] public class SoundTimecode { - [Key] public int Id { get; set; } [Required] public int ShowId { get; set; } public Show? Show { get; set; } [Required] public int SoundId { get; set; } public Sound? Sound { get; set; } - [Required, Range(0, int.MaxValue)] public int Start { get; set; } - [Required, Range(0, int.MaxValue)] public int End { get; set; } + + [Required] public decimal Start { get; set; } + [Required] public decimal End { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Supplier.cs b/PyroFetes/Models/Supplier.cs index 9cf8fe4..f131804 100644 --- a/PyroFetes/Models/Supplier.cs +++ b/PyroFetes/Models/Supplier.cs @@ -6,10 +6,12 @@ public class Supplier { [Key] public int Id { get; set; } [Required, MaxLength(100)] public string? Name { get; set; } - [Required] public string? Email { get; set; } - [Required] public string? Phone { get; set; } - [Required] public string? Address { get; set; } + [Required, MaxLength(100)] public string? Email { get; set; } + [Required, MaxLength(30)] public string? Phone { get; set; } + [Required, MaxLength(100)] public string? Address { get; set; } [Required] public int ZipCode { get; set; } - [Required] public string? City { get; set; } + [Required, MaxLength(100)] public string? City { get; set; } [Required] public int DeliveryDelay { get; set; } + + public List? Prices { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/User.cs b/PyroFetes/Models/User.cs index a768a48..8baaa1c 100644 --- a/PyroFetes/Models/User.cs +++ b/PyroFetes/Models/User.cs @@ -6,8 +6,8 @@ public class User { [Key] public int Id { get; set; } [Required, MaxLength(100)] public string? Name { get; set; } - [Required, MinLength(12)] public string? Password { get; set; } - [Required] public string? Salt { get; set; } - [Required] public string? Email { get; set; } - [Required] public string? Fonction { get; set; } + [Required, MinLength(12), MaxLength(50)] public string? Password { get; set; } + [Required, MaxLength(100)] public string? Salt { get; set; } + [Required, MaxLength(100)] public string? Email { get; set; } + [Required, MaxLength(100)] public string? Fonction { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Warehouse.cs b/PyroFetes/Models/Warehouse.cs index 3dd817f..4a69d2d 100644 --- a/PyroFetes/Models/Warehouse.cs +++ b/PyroFetes/Models/Warehouse.cs @@ -9,10 +9,11 @@ public class Warehouse [Required] public int MaxWeight {get; set;} [Required] public int Current {get; set;} [Required] public int MinWeight {get; set;} - [Required] public string? Address { get; set; } + [Required, MaxLength(100)] public string? Address { get; set; } [Required] public int ZipCode { get; set; } - [Required] public string? City { get; set; } + [Required, MaxLength(100)] public string? City { get; set; } + public List? WarehouseProducts { get; set; } public List? Materials {get; set;} public List? MovementsSource { get; set; } public List? MovementsDestination { get; set; } diff --git a/PyroFetes/Models/WarehouseProduct.cs b/PyroFetes/Models/WarehouseProduct.cs index ca3716c..fe89d36 100644 --- a/PyroFetes/Models/WarehouseProduct.cs +++ b/PyroFetes/Models/WarehouseProduct.cs @@ -1,14 +1,15 @@ using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; namespace PyroFetes.Models; +[PrimaryKey(nameof(ProductId), nameof(WarehouseId))] public class WarehouseProduct { - [Key] public int Quantity { get; set; } - [Required] public int ProductId { get; set; } - [Required] public Product? Product { get; set; } - + public Product? Product { get; set; } [Required] public int WarehouseId { get; set; } - [Required] public Warehouse? Warehouse { get; set; } + public Warehouse? Warehouse { get; set; } + + [Required] public int Quantity { get; set; } } \ No newline at end of file diff --git a/PyroFetes/PyroFetesDbContext.cs b/PyroFetes/PyroFetesDbContext.cs index d71044c..9c25dd8 100644 --- a/PyroFetes/PyroFetesDbContext.cs +++ b/PyroFetes/PyroFetesDbContext.cs @@ -1,5 +1,6 @@ using Microsoft.EntityFrameworkCore; using PyroFetes.Models; +using ServiceProvider = PyroFetes.Models.ServiceProvider; namespace PyroFetes; @@ -13,7 +14,6 @@ public class PyroFetesDbContext : DbContext public DbSet Communications { get; set; } public DbSet Contacts { get; set; } public DbSet Customers { get; set; } - public DbSet CustomerContacts { get; set; } public DbSet CustomerTypes { get; set; } public DbSet Deliverers { get; set; } public DbSet DeliveryNotes { get; set; } @@ -28,7 +28,7 @@ public class PyroFetesDbContext : DbContext public DbSet ProductColors { get; set; } public DbSet ProductDeliveries { get; set; } public DbSet ProductEffects { get; set; } - public DbSet Providers { get; set; } + public DbSet Providers { get; set; } public DbSet ProviderContacts { get; set; } public DbSet ProviderTypes { get; set; } public DbSet PurchaseOrders { get; set; } @@ -77,20 +77,5 @@ public class PyroFetesDbContext : DbContext .WithMany(w => w.MovementsDestination) .HasForeignKey(m => m.DestinationWarehouseId) .OnDelete(DeleteBehavior.Restrict); - - modelBuilder.Entity() - .HasKey(cc => new { cc.ContactId, cc.CustomerId }); - - modelBuilder.Entity() - .HasOne(cc => cc.Customer) - .WithMany(c => c.CustomerContacts) - .HasForeignKey(cc => cc.CustomerId) - .OnDelete(DeleteBehavior.NoAction); - - modelBuilder.Entity() - .HasOne(cc => cc.Contact) - .WithMany(c => c.CustomerContacts) - .HasForeignKey(cc => cc.ContactId) - .OnDelete(DeleteBehavior.NoAction); } } \ No newline at end of file From 856d8e273322ce5da68c42de5875be7d64b9ce22 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Tue, 7 Oct 2025 23:46:57 +0100 Subject: [PATCH 37/43] =?UTF-8?q?Correction=20de=20toutes=20les=20erreurs?= =?UTF-8?q?=20de=20relations=20et=20d'=C3=A9critures=20dans=20tous?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PyroFetes/Models/Movement.cs | 2 +- PyroFetes/Models/Show.cs | 10 ++++------ PyroFetes/Models/ShowStaff.cs | 14 ++++++++++++++ PyroFetes/Models/ShowTruck.cs | 14 ++++++++++++++ PyroFetes/Models/Staff.cs | 5 +++-- PyroFetes/Models/Truck.cs | 6 +++--- PyroFetes/Models/Warehouse.cs | 2 ++ 7 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 PyroFetes/Models/ShowStaff.cs create mode 100644 PyroFetes/Models/ShowTruck.cs diff --git a/PyroFetes/Models/Movement.cs b/PyroFetes/Models/Movement.cs index b7cf0da..ec47c22 100644 --- a/PyroFetes/Models/Movement.cs +++ b/PyroFetes/Models/Movement.cs @@ -11,9 +11,9 @@ public class Movement [Required] public int Quantity {get; set;} public List? Products { get; set; } + public int? SourceWarehouseId {get; set;} public Warehouse? SourceWarehouse {get; set;} - public int? DestinationWarehouseId {get; set;} public Warehouse? DestinationWarehouse {get; set;} } \ No newline at end of file diff --git a/PyroFetes/Models/Show.cs b/PyroFetes/Models/Show.cs index 29616e5..21514d7 100644 --- a/PyroFetes/Models/Show.cs +++ b/PyroFetes/Models/Show.cs @@ -5,20 +5,18 @@ namespace PyroFetes.Models; public class Show { [Key] public int Id { get; set; } - [Required] public string? Name { get; set; } + [Required, MaxLength(100)] public string? Name { get; set; } [Required, MaxLength(120)] public string? Place { get; set; } [MaxLength(500)] public string? Description { get; set; } + public DateOnly? Date { get; set; } // Link (path/URL/file name) to the pyrotechnic implementation plan [Required, MaxLength(500)] public string? PyrotechnicImplementationPlan { get; set; } - public DateOnly? Date { get; set; } - [Required] public int CityId { get; set; } public City? City { get; set; } - public ICollection? Staff { get; set; } - public ICollection? Trucks { get; set; } - + public List? ShowStaffs { get; set; } + public List? ShowTrucks { get; set; } public List? SoundTimecodes { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ShowStaff.cs b/PyroFetes/Models/ShowStaff.cs new file mode 100644 index 0000000..60a7215 --- /dev/null +++ b/PyroFetes/Models/ShowStaff.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(StaffId), nameof(ShowId))] +public class ShowStaff +{ + public Staff? Staff { get; set; } + [Required] public int StaffId { get; set; } + + public Show? Show { get; set; } + [Required] public int ShowId { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/ShowTruck.cs b/PyroFetes/Models/ShowTruck.cs new file mode 100644 index 0000000..9f39f8a --- /dev/null +++ b/PyroFetes/Models/ShowTruck.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(ShowId), nameof(TruckId))] +public class ShowTruck +{ + public Show? Show { get; set; } + [Required] public int ShowId { get; set; } + + public Truck? Truck { get; set; } + [Required] public int TruckId { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Staff.cs b/PyroFetes/Models/Staff.cs index 670adef..e95f08b 100644 --- a/PyroFetes/Models/Staff.cs +++ b/PyroFetes/Models/Staff.cs @@ -9,7 +9,8 @@ public class Staff [Required, MaxLength(60)] public string LastName { get; set; } = null!; [Required, MaxLength(100)] public string? Profession { get; set; } [Required, MaxLength(120)] public string? Email { get; set; } - [Required] public string? F4T2NumberApproval { get; set; } + [Required, MaxLength(100)] public string? F4T2NumberApproval { get; set; } [Required] public DateOnly F4T2ExpirationDate { get; set; } - public ICollection? Shows { get; set; } + + public List? ShowStaffs { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Truck.cs b/PyroFetes/Models/Truck.cs index b0a55f8..91794a9 100644 --- a/PyroFetes/Models/Truck.cs +++ b/PyroFetes/Models/Truck.cs @@ -6,9 +6,9 @@ public class Truck { [Key] public int Id { get; set; } [Required, MaxLength(40)] public string Type { get; set; } = null!; - [Range(0, double.MaxValue)] public double? MaxExplosiveCapacity { get; set; } + [Required] public double? MaxExplosiveCapacity { get; set; } [Required, MaxLength(80)] public string? Sizes { get; set; } [Required, MaxLength(40)] public string? Status { get; set; } - [Required] public int ShowId { get; set; } - public Show? Show { get; set; } + + public List? ShowTrucks { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Warehouse.cs b/PyroFetes/Models/Warehouse.cs index 4a69d2d..c91b24e 100644 --- a/PyroFetes/Models/Warehouse.cs +++ b/PyroFetes/Models/Warehouse.cs @@ -14,6 +14,8 @@ public class Warehouse [Required, MaxLength(100)] public string? City { get; set; } public List? WarehouseProducts { get; set; } + + public List? Materials {get; set;} public List? MovementsSource { get; set; } public List? MovementsDestination { get; set; } From af92cdc524846c075bccbe17039ddea6370d71e7 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Wed, 8 Oct 2025 00:03:52 +0100 Subject: [PATCH 38/43] Correcting all type and relations in all entities --- PyroFetes/Models/Availability.cs | 6 ++++-- PyroFetes/Models/Contact.cs | 1 + PyroFetes/Models/CustomerType.cs | 2 +- PyroFetes/Models/ExperienceLevel.cs | 7 +++++-- PyroFetes/Models/HistoryOfApproval.cs | 4 +++- PyroFetes/Models/ProviderType.cs | 4 +++- PyroFetes/Models/ServiceProvider.cs | 2 +- PyroFetes/Models/Staff.cs | 4 ++++ PyroFetes/Models/StaffContact.cs | 5 +++-- 9 files changed, 25 insertions(+), 10 deletions(-) diff --git a/PyroFetes/Models/Availability.cs b/PyroFetes/Models/Availability.cs index 5d85e0d..47b0f1c 100644 --- a/PyroFetes/Models/Availability.cs +++ b/PyroFetes/Models/Availability.cs @@ -4,9 +4,11 @@ namespace PyroFetes.Models; public class Availability { - [Key] public int Id { get; set; } - [Required] public string? AvailabilityDate { get; set; } + [Key] public int Id { get; set; } + [Required] public DateOnly AvailabilityDate { get; set; } [Required] public DateOnly DeliveryDate { get; set; } [Required] public DateOnly ExpirationDate { get; set; } [Required] public DateOnly RenewallDate { get; set; } + + public List? StaffAvailabilities { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Contact.cs b/PyroFetes/Models/Contact.cs index 3644750..88ef5a4 100644 --- a/PyroFetes/Models/Contact.cs +++ b/PyroFetes/Models/Contact.cs @@ -18,4 +18,5 @@ public class Contact [Required] public int CustomerId { get; set; } public List? Communications { get; set; } + public List? StaffContacts { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/CustomerType.cs b/PyroFetes/Models/CustomerType.cs index 3e24483..197ad09 100644 --- a/PyroFetes/Models/CustomerType.cs +++ b/PyroFetes/Models/CustomerType.cs @@ -5,7 +5,7 @@ namespace PyroFetes.Models; public class CustomerType { [Key] public int Id { get; set; } - [Required] public decimal Price { get; set; } + [Required, MaxLength(100)] public string? Label { get; set; } public List? Customers { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ExperienceLevel.cs b/PyroFetes/Models/ExperienceLevel.cs index 41a1879..923f757 100644 --- a/PyroFetes/Models/ExperienceLevel.cs +++ b/PyroFetes/Models/ExperienceLevel.cs @@ -4,6 +4,9 @@ namespace PyroFetes.Models; public class ExperienceLevel { - [Key] public int Id { get; set; } - [Required] public string? Label { get; set; } + [Key] public int Id { get; set; } + [Required, MaxLength(100)] public string? Label { get; set; } + + public Staff? Staff { get; set; } + [Required] public int StaffId { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/HistoryOfApproval.cs b/PyroFetes/Models/HistoryOfApproval.cs index 8c85ef8..c8fd073 100644 --- a/PyroFetes/Models/HistoryOfApproval.cs +++ b/PyroFetes/Models/HistoryOfApproval.cs @@ -5,6 +5,8 @@ namespace PyroFetes.Models; public class HistoryOfApproval { [Key] public int Id { get; set; } - [Required] public DateOnly ExpirationDate { get; set; } [Required] public DateOnly DeliveryDate { get; set; } + [Required] public DateOnly ExpirationDate { get; set; } + + public List? StaffHistoryOfApprovals { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ProviderType.cs b/PyroFetes/Models/ProviderType.cs index 4c8f70c..0871b8a 100644 --- a/PyroFetes/Models/ProviderType.cs +++ b/PyroFetes/Models/ProviderType.cs @@ -5,5 +5,7 @@ namespace PyroFetes.Models; public class ProviderType { [Key] public int Id { get; set; } - [Required] public string? Label { get; set; } + [Required, MaxLength(100)] public string? Label { get; set; } + + public List? ServiceProviders { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ServiceProvider.cs b/PyroFetes/Models/ServiceProvider.cs index 2144b69..80b101b 100644 --- a/PyroFetes/Models/ServiceProvider.cs +++ b/PyroFetes/Models/ServiceProvider.cs @@ -8,6 +8,6 @@ public class ServiceProvider [Required] public decimal Price { get; set; } //Relations - public int ProviderTypeId { get; set; } + [Required] public int ProviderTypeId { get; set; } public ProviderType? ProviderType { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Staff.cs b/PyroFetes/Models/Staff.cs index e95f08b..a95c455 100644 --- a/PyroFetes/Models/Staff.cs +++ b/PyroFetes/Models/Staff.cs @@ -13,4 +13,8 @@ public class Staff [Required] public DateOnly F4T2ExpirationDate { get; set; } public List? ShowStaffs { get; set; } + public List? ExperienceLevels { get; set; } + public List? StaffAvailabilities { get; set; } + public List? StaffHistoryOfApprovals { get; set; } + public List? StaffContacts { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/StaffContact.cs b/PyroFetes/Models/StaffContact.cs index 3fb3f87..18ab5a9 100644 --- a/PyroFetes/Models/StaffContact.cs +++ b/PyroFetes/Models/StaffContact.cs @@ -1,3 +1,4 @@ +using System.ComponentModel.DataAnnotations; using Microsoft.EntityFrameworkCore; namespace PyroFetes.Models; @@ -5,8 +6,8 @@ namespace PyroFetes.Models; [PrimaryKey(nameof(ContactId), nameof(StaffId))] public class StaffContact { - public int StaffId { get; set; } + [Required] public int StaffId { get; set; } public Staff? Staff { get; set; } - public int ContactId { get; set; } + [Required] public int ContactId { get; set; } public Contact? Contact { get; set; } } \ No newline at end of file From 0ddf5d380a31566d52592d3093d262a6c755f9b2 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Wed, 8 Oct 2025 11:10:27 +0100 Subject: [PATCH 39/43] Correcting all errors of types, writed, and entities. --- PyroFetes/Models/Contact.cs | 1 + PyroFetes/Models/ContactServiceProvider.cs | 14 ++++++++++++++ PyroFetes/Models/Contract.cs | 15 +++++++++++++++ PyroFetes/Models/Customer.cs | 1 + PyroFetes/Models/Material.cs | 5 ++++- PyroFetes/Models/MaterialWarehouse.cs | 12 ++++++++++++ PyroFetes/Models/Product.cs | 1 + PyroFetes/Models/ProductTimecode.cs | 17 +++++++++++++++++ PyroFetes/Models/Quotation.cs | 3 +++ PyroFetes/Models/ServiceProvider.cs | 3 +++ PyroFetes/Models/Show.cs | 3 +++ PyroFetes/Models/ShowMaterial.cs | 15 +++++++++++++++ PyroFetes/Models/Warehouse.cs | 3 +-- 13 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 PyroFetes/Models/ContactServiceProvider.cs create mode 100644 PyroFetes/Models/Contract.cs create mode 100644 PyroFetes/Models/MaterialWarehouse.cs create mode 100644 PyroFetes/Models/ProductTimecode.cs create mode 100644 PyroFetes/Models/ShowMaterial.cs diff --git a/PyroFetes/Models/Contact.cs b/PyroFetes/Models/Contact.cs index 88ef5a4..e1573ad 100644 --- a/PyroFetes/Models/Contact.cs +++ b/PyroFetes/Models/Contact.cs @@ -19,4 +19,5 @@ public class Contact public List? Communications { get; set; } public List? StaffContacts { get; set; } + public List? ContactServiceProviders { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ContactServiceProvider.cs b/PyroFetes/Models/ContactServiceProvider.cs new file mode 100644 index 0000000..dc310d8 --- /dev/null +++ b/PyroFetes/Models/ContactServiceProvider.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(ContactId), nameof(ServiceProviderId))] +public class ContactServiceProvider +{ + [Required] public int ContactId { get; set; } + [Required] public int ServiceProviderId { get; set; } + + public Product? Contact { get; set; } + public DeliveryNote? ServiceProvider { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Contract.cs b/PyroFetes/Models/Contract.cs new file mode 100644 index 0000000..97cd821 --- /dev/null +++ b/PyroFetes/Models/Contract.cs @@ -0,0 +1,15 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(ShowId), nameof(ServiceProviderId))] +public class Contract +{ + [Required] public int ShowId { get; set; } + [Required] public int ServiceProviderId { get; set; } + [Required] public string? TermsAndConditions { get; set; } + + public Show? Show { get; set; } + public ServiceProvider? ServiceProvider { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Customer.cs b/PyroFetes/Models/Customer.cs index 545bca4..da6dbba 100644 --- a/PyroFetes/Models/Customer.cs +++ b/PyroFetes/Models/Customer.cs @@ -12,4 +12,5 @@ public class Customer public CustomerType? CustomerType { get; set; } public List? Contacts { get; set; } + public List? Quotations { get; set; } } diff --git a/PyroFetes/Models/Material.cs b/PyroFetes/Models/Material.cs index d1ad0a9..224e5d5 100644 --- a/PyroFetes/Models/Material.cs +++ b/PyroFetes/Models/Material.cs @@ -9,5 +9,8 @@ public class Material [Required] public int Quantity {get; set;} [Required] public int WarehouseId {get; set;} - [Required] public Warehouse? Warehouse {get; set;} + public Warehouse? Warehouse {get; set;} + + public List? ShowMaterials {get; set;} + public List? MaterialWarehouses {get; set;} } \ No newline at end of file diff --git a/PyroFetes/Models/MaterialWarehouse.cs b/PyroFetes/Models/MaterialWarehouse.cs new file mode 100644 index 0000000..6f797b9 --- /dev/null +++ b/PyroFetes/Models/MaterialWarehouse.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace PyroFetes.Models; + +public class MaterialWarehouse +{ + [Required] public int MaterialId { get; set; } + [Required] public int WarehouseId { get; set; } + + public Material? Material { get; set; } + public Warehouse? Warehouse { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Product.cs b/PyroFetes/Models/Product.cs index 525195a..04c8fc3 100644 --- a/PyroFetes/Models/Product.cs +++ b/PyroFetes/Models/Product.cs @@ -36,6 +36,7 @@ namespace PyroFetes.Models public List? Prices { get; set; } public List? QuotationProducts { get; set; } public List? WarehouseProducts { get; set; } + public List? ProductTimecodes { get; set; } } diff --git a/PyroFetes/Models/ProductTimecode.cs b/PyroFetes/Models/ProductTimecode.cs new file mode 100644 index 0000000..a4ad826 --- /dev/null +++ b/PyroFetes/Models/ProductTimecode.cs @@ -0,0 +1,17 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(ProductId), nameof(ShowId))] +public class ProductTimecode +{ + public Product? Product { get; set; } + [Required] public int ProductId { get; set; } + + public Show? Show { get; set; } + [Required] public int ShowId { get; set; } + + [Required] public decimal Start { get; set; } + [Required] public decimal End { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Models/Quotation.cs b/PyroFetes/Models/Quotation.cs index f1288ce..569c271 100644 --- a/PyroFetes/Models/Quotation.cs +++ b/PyroFetes/Models/Quotation.cs @@ -8,5 +8,8 @@ public class Quotation [Required, MaxLength(200)] public string? Message { get; set; } [Required, MaxLength(300)] public string? ConditionsSale { get; set; } + [Required] public int CustomerId { get; set; } + public Customer? Customer { get; set; } + public List? QuotationProducts { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ServiceProvider.cs b/PyroFetes/Models/ServiceProvider.cs index 80b101b..b91e0d7 100644 --- a/PyroFetes/Models/ServiceProvider.cs +++ b/PyroFetes/Models/ServiceProvider.cs @@ -10,4 +10,7 @@ public class ServiceProvider //Relations [Required] public int ProviderTypeId { get; set; } public ProviderType? ProviderType { get; set; } + + public List? Contracts { get; set; } + public List? ContactServiceProviders { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/Show.cs b/PyroFetes/Models/Show.cs index 21514d7..bc425dd 100644 --- a/PyroFetes/Models/Show.cs +++ b/PyroFetes/Models/Show.cs @@ -19,4 +19,7 @@ public class Show public List? ShowStaffs { get; set; } public List? ShowTrucks { get; set; } public List? SoundTimecodes { get; set; } + public List? ProductTimecodes { get; set; } + public List? Contracts { get; set; } + public List? ShowMaterials { get; set; } } \ No newline at end of file diff --git a/PyroFetes/Models/ShowMaterial.cs b/PyroFetes/Models/ShowMaterial.cs new file mode 100644 index 0000000..81cc82a --- /dev/null +++ b/PyroFetes/Models/ShowMaterial.cs @@ -0,0 +1,15 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Models; + +[PrimaryKey(nameof(ShowId), nameof(MaterialId))] +public class ShowMaterial +{ + [Required] public Show? Show { get; set; } + [Required] public int ShowId { get; set; } + + public Material? Material { get; set; } + [Required] public int MaterialId { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/Models/Warehouse.cs b/PyroFetes/Models/Warehouse.cs index c91b24e..1307dbc 100644 --- a/PyroFetes/Models/Warehouse.cs +++ b/PyroFetes/Models/Warehouse.cs @@ -15,8 +15,7 @@ public class Warehouse public List? WarehouseProducts { get; set; } - - public List? Materials {get; set;} + public List? MaterialWarehouses {get; set;} public List? MovementsSource { get; set; } public List? MovementsDestination { get; set; } } \ No newline at end of file From af208c152ba852fcdb65b2fd32dbce7d3cb63ceb Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Wed, 8 Oct 2025 11:13:37 +0100 Subject: [PATCH 40/43] Correcting all --- PyroFetes/Models/Movement.cs | 2 +- PyroFetes/Models/Warehouse.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/PyroFetes/Models/Movement.cs b/PyroFetes/Models/Movement.cs index ec47c22..fe26f18 100644 --- a/PyroFetes/Models/Movement.cs +++ b/PyroFetes/Models/Movement.cs @@ -11,7 +11,7 @@ public class Movement [Required] public int Quantity {get; set;} public List? Products { get; set; } - + public int? SourceWarehouseId {get; set;} public Warehouse? SourceWarehouse {get; set;} public int? DestinationWarehouseId {get; set;} diff --git a/PyroFetes/Models/Warehouse.cs b/PyroFetes/Models/Warehouse.cs index 1307dbc..8d014e7 100644 --- a/PyroFetes/Models/Warehouse.cs +++ b/PyroFetes/Models/Warehouse.cs @@ -16,6 +16,7 @@ public class Warehouse public List? WarehouseProducts { get; set; } public List? MaterialWarehouses {get; set;} + public List? MovementsSource { get; set; } public List? MovementsDestination { get; set; } } \ No newline at end of file From ad9c8aa42da250bb2ca852a4cf9dd5687914f0c4 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Wed, 8 Oct 2025 11:15:25 +0100 Subject: [PATCH 41/43] Fix in ContactServiceProvider.cs --- PyroFetes/Models/ContactServiceProvider.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyroFetes/Models/ContactServiceProvider.cs b/PyroFetes/Models/ContactServiceProvider.cs index dc310d8..cc9cd1b 100644 --- a/PyroFetes/Models/ContactServiceProvider.cs +++ b/PyroFetes/Models/ContactServiceProvider.cs @@ -9,6 +9,6 @@ public class ContactServiceProvider [Required] public int ContactId { get; set; } [Required] public int ServiceProviderId { get; set; } - public Product? Contact { get; set; } - public DeliveryNote? ServiceProvider { get; set; } + public Contact? Contact { get; set; } + public ServiceProvider? ServiceProvider { get; set; } } \ No newline at end of file From 268230daeaa13652ac339a410dc252c725f3bd18 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Wed, 8 Oct 2025 11:20:11 +0100 Subject: [PATCH 42/43] Fix --- PyroFetes/Models/Product.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/PyroFetes/Models/Product.cs b/PyroFetes/Models/Product.cs index 04c8fc3..b0f0d7f 100644 --- a/PyroFetes/Models/Product.cs +++ b/PyroFetes/Models/Product.cs @@ -29,7 +29,6 @@ namespace PyroFetes.Models public List? ProductDeliveries { get; set; } public List? Brands { get; set; } - public List? Movements { get; set; } public List? ProductEffects { get; set; } public List? ProductColors { get; set; } public List? PurchaseProducts { get; set; } From e4677b1aea8380b493f0467d7ba5b15a2b0baf26 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Wed, 8 Oct 2025 11:38:42 +0100 Subject: [PATCH 43/43] Migration added and updated --- ...0251008103414_InitialDatabase.Designer.cs} | 835 ++++++++++++----- ...e.cs => 20251008103414_InitialDatabase.cs} | 883 +++++++++++------- .../PyroFetesDbContextModelSnapshot.cs | 833 ++++++++++++----- PyroFetes/Models/MaterialWarehouse.cs | 2 + PyroFetes/PyroFetesDbContext.cs | 12 + 5 files changed, 1763 insertions(+), 802 deletions(-) rename PyroFetes/Migrations/{20251007094021_InitialDatabase.Designer.cs => 20251008103414_InitialDatabase.Designer.cs} (71%) rename PyroFetes/Migrations/{20251007094021_InitialDatabase.cs => 20251008103414_InitialDatabase.cs} (79%) diff --git a/PyroFetes/Migrations/20251007094021_InitialDatabase.Designer.cs b/PyroFetes/Migrations/20251008103414_InitialDatabase.Designer.cs similarity index 71% rename from PyroFetes/Migrations/20251007094021_InitialDatabase.Designer.cs rename to PyroFetes/Migrations/20251008103414_InitialDatabase.Designer.cs index 7b2ce88..8e971b2 100644 --- a/PyroFetes/Migrations/20251007094021_InitialDatabase.Designer.cs +++ b/PyroFetes/Migrations/20251008103414_InitialDatabase.Designer.cs @@ -12,7 +12,7 @@ using PyroFetes; namespace PyroFetes.Migrations { [DbContext(typeof(PyroFetesDbContext))] - [Migration("20251007094021_InitialDatabase")] + [Migration("20251008103414_InitialDatabase")] partial class InitialDatabase { /// @@ -33,9 +33,8 @@ namespace PyroFetes.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - b.Property("AvailabilityDate") - .IsRequired() - .HasColumnType("nvarchar(max)"); + b.Property("AvailabilityDate") + .HasColumnType("date"); b.Property("DeliveryDate") .HasColumnType("date"); @@ -74,6 +73,27 @@ namespace PyroFetes.Migrations b.ToTable("Brands"); }); + modelBuilder.Entity("PyroFetes.Models.City", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("City"); + }); + modelBuilder.Entity("PyroFetes.Models.Classification", b => { b.Property("Id") @@ -84,7 +104,8 @@ namespace PyroFetes.Migrations b.Property("Label") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -101,7 +122,8 @@ namespace PyroFetes.Migrations b.Property("Label") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -118,18 +140,26 @@ namespace PyroFetes.Migrations b.Property("Calling") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ContactId") + .HasColumnType("int"); b.Property("Email") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("Meeting") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); b.HasKey("Id"); + b.HasIndex("ContactId"); + b.ToTable("Communications"); }); @@ -143,18 +173,21 @@ namespace PyroFetes.Migrations b.Property("Address") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("City") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); - b.Property("CommunicationId") + b.Property("CustomerId") .HasColumnType("int"); b.Property("Email") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("FirstName") .IsRequired() @@ -168,23 +201,58 @@ namespace PyroFetes.Migrations b.Property("PhoneNumber") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); b.Property("Role") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); - b.Property("ZipCode") - .IsRequired() - .HasColumnType("nvarchar(max)"); + b.Property("ZipCode") + .HasColumnType("int"); b.HasKey("Id"); - b.HasIndex("CommunicationId"); + b.HasIndex("CustomerId"); b.ToTable("Contacts"); }); + modelBuilder.Entity("PyroFetes.Models.ContactServiceProvider", b => + { + b.Property("ContactId") + .HasColumnType("int"); + + b.Property("ServiceProviderId") + .HasColumnType("int"); + + b.HasKey("ContactId", "ServiceProviderId"); + + b.HasIndex("ServiceProviderId"); + + b.ToTable("ContactServiceProvider"); + }); + + modelBuilder.Entity("PyroFetes.Models.Contract", b => + { + b.Property("ShowId") + .HasColumnType("int"); + + b.Property("ServiceProviderId") + .HasColumnType("int"); + + b.Property("TermsAndConditions") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("ShowId", "ServiceProviderId"); + + b.HasIndex("ServiceProviderId"); + + b.ToTable("Contract"); + }); + modelBuilder.Entity("PyroFetes.Models.Customer", b => { b.Property("Id") @@ -193,40 +261,21 @@ namespace PyroFetes.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - b.Property("ContactId") - .HasColumnType("int"); - b.Property("CustomerTypeId") .HasColumnType("int"); b.Property("Note") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); b.HasKey("Id"); - b.HasIndex("ContactId"); - b.HasIndex("CustomerTypeId"); b.ToTable("Customers"); }); - modelBuilder.Entity("PyroFetes.Models.CustomerContact", b => - { - b.Property("ContactId") - .HasColumnType("int"); - - b.Property("CustomerId") - .HasColumnType("int"); - - b.HasKey("ContactId", "CustomerId"); - - b.HasIndex("CustomerId"); - - b.ToTable("CustomerContacts"); - }); - modelBuilder.Entity("PyroFetes.Models.CustomerType", b => { b.Property("Id") @@ -235,8 +284,10 @@ namespace PyroFetes.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - b.Property("Price") - .HasColumnType("decimal(18,2)"); + b.Property("Label") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -253,7 +304,8 @@ namespace PyroFetes.Migrations b.Property("Transporter") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -282,7 +334,8 @@ namespace PyroFetes.Migrations b.Property("TrackingNumber") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -301,7 +354,8 @@ namespace PyroFetes.Migrations b.Property("Label") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); b.HasKey("Id"); @@ -318,10 +372,16 @@ namespace PyroFetes.Migrations b.Property("Label") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StaffId") + .HasColumnType("int"); b.HasKey("Id"); + b.HasIndex("StaffId"); + b.ToTable("ExperienceLevels"); }); @@ -370,6 +430,21 @@ namespace PyroFetes.Migrations b.ToTable("Materials"); }); + modelBuilder.Entity("PyroFetes.Models.MaterialWarehouse", b => + { + b.Property("MaterialId") + .HasColumnType("int"); + + b.Property("WarehouseId") + .HasColumnType("int"); + + b.HasKey("MaterialId", "WarehouseId"); + + b.HasIndex("WarehouseId"); + + b.ToTable("MaterialWarehouse"); + }); + modelBuilder.Entity("PyroFetes.Models.Movement", b => { b.Property("Id") @@ -387,9 +462,6 @@ namespace PyroFetes.Migrations b.Property("DestinationWarehouseId") .HasColumnType("int"); - b.Property("ProductId") - .HasColumnType("int"); - b.Property("Quantity") .HasColumnType("int"); @@ -403,8 +475,6 @@ namespace PyroFetes.Migrations b.HasIndex("DestinationWarehouseId"); - b.HasIndex("ProductId"); - b.HasIndex("SourceWarehouseId"); b.ToTable("Movements"); @@ -454,11 +524,15 @@ namespace PyroFetes.Migrations b.Property("Link") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); b.Property("MinimalQuantity") .HasColumnType("int"); + b.Property("MovementId") + .HasColumnType("int"); + b.Property("Name") .IsRequired() .HasMaxLength(100) @@ -483,6 +557,8 @@ namespace PyroFetes.Migrations b.HasIndex("ClassificationId"); + b.HasIndex("MovementId"); + b.HasIndex("ProductCategoryId"); b.ToTable("Products"); @@ -498,7 +574,8 @@ namespace PyroFetes.Migrations b.Property("Label") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -553,28 +630,25 @@ namespace PyroFetes.Migrations b.ToTable("ProductEffects"); }); - modelBuilder.Entity("PyroFetes.Models.Provider", b => + modelBuilder.Entity("PyroFetes.Models.ProductTimecode", b => { - b.Property("Id") - .ValueGeneratedOnAdd() + b.Property("ProductId") .HasColumnType("int"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + b.Property("ShowId") + .HasColumnType("int"); - b.Property("Price") + b.Property("End") .HasColumnType("decimal(18,2)"); - b.Property("ProviderId") - .HasColumnType("int"); + b.Property("Start") + .HasColumnType("decimal(18,2)"); - b.Property("ProviderTypeId") - .HasColumnType("int"); + b.HasKey("ProductId", "ShowId"); - b.HasKey("Id"); + b.HasIndex("ShowId"); - b.HasIndex("ProviderTypeId"); - - b.ToTable("Providers"); + b.ToTable("ProductTimecode"); }); modelBuilder.Entity("PyroFetes.Models.ProviderContact", b => @@ -602,7 +676,8 @@ namespace PyroFetes.Migrations b.Property("Label") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -619,7 +694,8 @@ namespace PyroFetes.Migrations b.Property("PurchaseConditions") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); b.HasKey("Id"); @@ -654,14 +730,21 @@ namespace PyroFetes.Migrations b.Property("ConditionsSale") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); + + b.Property("CustomerId") + .HasColumnType("int"); b.Property("Message") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); b.HasKey("Id"); + b.HasIndex("CustomerId"); + b.ToTable("Quotations"); }); @@ -683,6 +766,27 @@ namespace PyroFetes.Migrations b.ToTable("QuotationProducts"); }); + modelBuilder.Entity("PyroFetes.Models.ServiceProvider", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Price") + .HasColumnType("decimal(18,2)"); + + b.Property("ProviderTypeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ProviderTypeId"); + + b.ToTable("Providers"); + }); + modelBuilder.Entity("PyroFetes.Models.Setting", b => { b.Property("Id") @@ -712,8 +816,11 @@ namespace PyroFetes.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - b.Property("Date") - .HasColumnType("datetime2"); + b.Property("CityId") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); b.Property("Description") .HasMaxLength(500) @@ -721,7 +828,8 @@ namespace PyroFetes.Migrations b.Property("Name") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("Place") .IsRequired() @@ -735,9 +843,56 @@ namespace PyroFetes.Migrations b.HasKey("Id"); + b.HasIndex("CityId"); + b.ToTable("Shows"); }); + modelBuilder.Entity("PyroFetes.Models.ShowMaterial", b => + { + b.Property("ShowId") + .HasColumnType("int"); + + b.Property("MaterialId") + .HasColumnType("int"); + + b.HasKey("ShowId", "MaterialId"); + + b.HasIndex("MaterialId"); + + b.ToTable("ShowMaterial"); + }); + + modelBuilder.Entity("PyroFetes.Models.ShowStaff", b => + { + b.Property("StaffId") + .HasColumnType("int"); + + b.Property("ShowId") + .HasColumnType("int"); + + b.HasKey("StaffId", "ShowId"); + + b.HasIndex("ShowId"); + + b.ToTable("ShowStaff"); + }); + + modelBuilder.Entity("PyroFetes.Models.ShowTruck", b => + { + b.Property("ShowId") + .HasColumnType("int"); + + b.Property("TruckId") + .HasColumnType("int"); + + b.HasKey("ShowId", "TruckId"); + + b.HasIndex("TruckId"); + + b.ToTable("ShowTruck"); + }); + modelBuilder.Entity("PyroFetes.Models.Sound", b => { b.Property("Id") @@ -798,8 +953,8 @@ namespace PyroFetes.Migrations b.Property("Name") .IsRequired() - .HasMaxLength(60) - .HasColumnType("nvarchar(60)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -808,27 +963,19 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.SoundTimecode", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("End") - .HasColumnType("int"); - b.Property("ShowId") .HasColumnType("int"); b.Property("SoundId") .HasColumnType("int"); - b.Property("Start") - .HasColumnType("int"); + b.Property("End") + .HasColumnType("decimal(18,2)"); - b.HasKey("Id"); + b.Property("Start") + .HasColumnType("decimal(18,2)"); - b.HasIndex("ShowId"); + b.HasKey("ShowId", "SoundId"); b.HasIndex("SoundId"); @@ -853,7 +1000,8 @@ namespace PyroFetes.Migrations b.Property("F4T2NumberApproval") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("FirstName") .IsRequired() @@ -930,18 +1078,21 @@ namespace PyroFetes.Migrations b.Property("Address") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("City") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("DeliveryDelay") .HasColumnType("int"); b.Property("Email") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("Name") .IsRequired() @@ -950,7 +1101,8 @@ namespace PyroFetes.Migrations b.Property("Phone") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); b.Property("ZipCode") .HasColumnType("int"); @@ -969,11 +1121,9 @@ namespace PyroFetes.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); b.Property("MaxExplosiveCapacity") + .IsRequired() .HasColumnType("float"); - b.Property("ShowId") - .HasColumnType("int"); - b.Property("Sizes") .IsRequired() .HasMaxLength(80) @@ -991,8 +1141,6 @@ namespace PyroFetes.Migrations b.HasKey("Id"); - b.HasIndex("ShowId"); - b.ToTable("Trucks"); }); @@ -1006,11 +1154,13 @@ namespace PyroFetes.Migrations b.Property("Email") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("Fonction") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("Name") .IsRequired() @@ -1019,11 +1169,13 @@ namespace PyroFetes.Migrations b.Property("Password") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); b.Property("Salt") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -1040,11 +1192,13 @@ namespace PyroFetes.Migrations b.Property("Address") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("City") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("Current") .HasColumnType("int"); @@ -1070,42 +1224,22 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.WarehouseProduct", b => { - b.Property("Quantity") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Quantity")); - b.Property("ProductId") .HasColumnType("int"); b.Property("WarehouseId") .HasColumnType("int"); - b.HasKey("Quantity"); + b.Property("Quantity") + .HasColumnType("int"); - b.HasIndex("ProductId"); + b.HasKey("ProductId", "WarehouseId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseProducts"); }); - modelBuilder.Entity("ShowStaff", b => - { - b.Property("ShowsId") - .HasColumnType("int"); - - b.Property("StaffId") - .HasColumnType("int"); - - b.HasKey("ShowsId", "StaffId"); - - b.HasIndex("StaffId"); - - b.ToTable("ShowStaff"); - }); - modelBuilder.Entity("PyroFetes.Models.Brand", b => { b.HasOne("PyroFetes.Models.Product", "Product") @@ -1117,55 +1251,77 @@ namespace PyroFetes.Migrations b.Navigation("Product"); }); - modelBuilder.Entity("PyroFetes.Models.Contact", b => - { - b.HasOne("PyroFetes.Models.Communication", "Communication") - .WithMany() - .HasForeignKey("CommunicationId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Communication"); - }); - - modelBuilder.Entity("PyroFetes.Models.Customer", b => + modelBuilder.Entity("PyroFetes.Models.Communication", b => { b.HasOne("PyroFetes.Models.Contact", "Contact") - .WithMany() + .WithMany("Communications") .HasForeignKey("ContactId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.Navigation("Contact"); + }); + + modelBuilder.Entity("PyroFetes.Models.Contact", b => + { + b.HasOne("PyroFetes.Models.Customer", "Customer") + .WithMany("Contacts") + .HasForeignKey("CustomerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Customer"); + }); + + modelBuilder.Entity("PyroFetes.Models.ContactServiceProvider", b => + { + b.HasOne("PyroFetes.Models.Contact", "Contact") + .WithMany("ContactServiceProviders") + .HasForeignKey("ContactId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.ServiceProvider", "ServiceProvider") + .WithMany("ContactServiceProviders") + .HasForeignKey("ServiceProviderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Contact"); + + b.Navigation("ServiceProvider"); + }); + + modelBuilder.Entity("PyroFetes.Models.Contract", b => + { + b.HasOne("PyroFetes.Models.ServiceProvider", "ServiceProvider") + .WithMany("Contracts") + .HasForeignKey("ServiceProviderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("Contracts") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ServiceProvider"); + + b.Navigation("Show"); + }); + + modelBuilder.Entity("PyroFetes.Models.Customer", b => + { b.HasOne("PyroFetes.Models.CustomerType", "CustomerType") .WithMany("Customers") .HasForeignKey("CustomerTypeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.Navigation("Contact"); - b.Navigation("CustomerType"); }); - modelBuilder.Entity("PyroFetes.Models.CustomerContact", b => - { - b.HasOne("PyroFetes.Models.Contact", "Contact") - .WithMany("CustomerContacts") - .HasForeignKey("ContactId") - .OnDelete(DeleteBehavior.NoAction) - .IsRequired(); - - b.HasOne("PyroFetes.Models.Customer", "Customer") - .WithMany("CustomerContacts") - .HasForeignKey("CustomerId") - .OnDelete(DeleteBehavior.NoAction) - .IsRequired(); - - b.Navigation("Contact"); - - b.Navigation("Customer"); - }); - modelBuilder.Entity("PyroFetes.Models.DeliveryNote", b => { b.HasOne("PyroFetes.Models.Deliverer", "Deliverer") @@ -1177,10 +1333,21 @@ namespace PyroFetes.Migrations b.Navigation("Deliverer"); }); + modelBuilder.Entity("PyroFetes.Models.ExperienceLevel", b => + { + b.HasOne("PyroFetes.Models.Staff", "Staff") + .WithMany("ExperienceLevels") + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Staff"); + }); + modelBuilder.Entity("PyroFetes.Models.Material", b => { b.HasOne("PyroFetes.Models.Warehouse", "Warehouse") - .WithMany("Materials") + .WithMany() .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1188,6 +1355,25 @@ namespace PyroFetes.Migrations b.Navigation("Warehouse"); }); + modelBuilder.Entity("PyroFetes.Models.MaterialWarehouse", b => + { + b.HasOne("PyroFetes.Models.Material", "Material") + .WithMany("MaterialWarehouses") + .HasForeignKey("MaterialId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Warehouse", "Warehouse") + .WithMany("MaterialWarehouses") + .HasForeignKey("WarehouseId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Material"); + + b.Navigation("Warehouse"); + }); + modelBuilder.Entity("PyroFetes.Models.Movement", b => { b.HasOne("PyroFetes.Models.Warehouse", "DestinationWarehouse") @@ -1195,12 +1381,6 @@ namespace PyroFetes.Migrations .HasForeignKey("DestinationWarehouseId") .OnDelete(DeleteBehavior.Restrict); - b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany("Movements") - .HasForeignKey("ProductId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - b.HasOne("PyroFetes.Models.Warehouse", "SourceWarehouse") .WithMany("MovementsSource") .HasForeignKey("SourceWarehouseId") @@ -1208,21 +1388,19 @@ namespace PyroFetes.Migrations b.Navigation("DestinationWarehouse"); - b.Navigation("Product"); - b.Navigation("SourceWarehouse"); }); modelBuilder.Entity("PyroFetes.Models.Price", b => { b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("Prices") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Supplier", "Supplier") - .WithMany() + .WithMany("Prices") .HasForeignKey("SupplierId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1240,6 +1418,12 @@ namespace PyroFetes.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.HasOne("PyroFetes.Models.Movement", "Movement") + .WithMany("Products") + .HasForeignKey("MovementId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + b.HasOne("PyroFetes.Models.ProductCategory", "ProductCategory") .WithMany("Products") .HasForeignKey("ProductCategoryId") @@ -1248,19 +1432,21 @@ namespace PyroFetes.Migrations b.Navigation("Classification"); + b.Navigation("Movement"); + b.Navigation("ProductCategory"); }); modelBuilder.Entity("PyroFetes.Models.ProductColor", b => { b.HasOne("PyroFetes.Models.Color", "Color") - .WithMany() + .WithMany("ProductColors") .HasForeignKey("ColorId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("ProductColors") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1273,13 +1459,13 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.ProductDelivery", b => { b.HasOne("PyroFetes.Models.DeliveryNote", "DeliveryNote") - .WithMany() + .WithMany("ProductDeliveries") .HasForeignKey("DeliveryNoteId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("ProductDeliveries") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1292,13 +1478,13 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.ProductEffect", b => { b.HasOne("PyroFetes.Models.Effect", "Effect") - .WithMany() + .WithMany("ProductEffects") .HasForeignKey("EffectId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("ProductEffects") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1308,13 +1494,23 @@ namespace PyroFetes.Migrations b.Navigation("Product"); }); - modelBuilder.Entity("PyroFetes.Models.Provider", b => + modelBuilder.Entity("PyroFetes.Models.ProductTimecode", b => { - b.HasOne("PyroFetes.Models.ProviderType", "ProviderType") - .WithMany() - .HasForeignKey("ProviderTypeId"); + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany("ProductTimecodes") + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); - b.Navigation("ProviderType"); + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("ProductTimecodes") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + + b.Navigation("Show"); }); modelBuilder.Entity("PyroFetes.Models.ProviderContact", b => @@ -1325,7 +1521,7 @@ namespace PyroFetes.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("PyroFetes.Models.Provider", "Provider") + b.HasOne("PyroFetes.Models.ServiceProvider", "Provider") .WithMany() .HasForeignKey("ProviderId") .OnDelete(DeleteBehavior.Cascade) @@ -1339,13 +1535,13 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.PurchaseProduct", b => { b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("PurchaseProducts") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.PurchaseOrder", "PurchaseOrder") - .WithMany() + .WithMany("PurchaseProducts") .HasForeignKey("PurchaseOrderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1355,16 +1551,27 @@ namespace PyroFetes.Migrations b.Navigation("PurchaseOrder"); }); + modelBuilder.Entity("PyroFetes.Models.Quotation", b => + { + b.HasOne("PyroFetes.Models.Customer", "Customer") + .WithMany("Quotations") + .HasForeignKey("CustomerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Customer"); + }); + modelBuilder.Entity("PyroFetes.Models.QuotationProduct", b => { b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("QuotationProducts") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Quotation", "Quotation") - .WithMany() + .WithMany("QuotationProducts") .HasForeignKey("QuotationId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1374,27 +1581,106 @@ namespace PyroFetes.Migrations b.Navigation("Quotation"); }); + modelBuilder.Entity("PyroFetes.Models.ServiceProvider", b => + { + b.HasOne("PyroFetes.Models.ProviderType", "ProviderType") + .WithMany("ServiceProviders") + .HasForeignKey("ProviderTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ProviderType"); + }); + + modelBuilder.Entity("PyroFetes.Models.Show", b => + { + b.HasOne("PyroFetes.Models.City", "City") + .WithMany("Shows") + .HasForeignKey("CityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("City"); + }); + + modelBuilder.Entity("PyroFetes.Models.ShowMaterial", b => + { + b.HasOne("PyroFetes.Models.Material", "Material") + .WithMany("ShowMaterials") + .HasForeignKey("MaterialId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("ShowMaterials") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Material"); + + b.Navigation("Show"); + }); + + modelBuilder.Entity("PyroFetes.Models.ShowStaff", b => + { + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("ShowStaffs") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Staff", "Staff") + .WithMany("ShowStaffs") + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Show"); + + b.Navigation("Staff"); + }); + + modelBuilder.Entity("PyroFetes.Models.ShowTruck", b => + { + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("ShowTrucks") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Truck", "Truck") + .WithMany("ShowTrucks") + .HasForeignKey("TruckId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Show"); + + b.Navigation("Truck"); + }); + modelBuilder.Entity("PyroFetes.Models.Sound", b => { - b.HasOne("PyroFetes.Models.SoundCategory", "Category") + b.HasOne("PyroFetes.Models.SoundCategory", "SoundCategory") .WithMany("Sounds") .HasForeignKey("SoundCategoryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.Navigation("Category"); + b.Navigation("SoundCategory"); }); modelBuilder.Entity("PyroFetes.Models.SoundTimecode", b => { b.HasOne("PyroFetes.Models.Show", "Show") - .WithMany("SoundCues") + .WithMany("SoundTimecodes") .HasForeignKey("ShowId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Sound", "Sound") - .WithMany("ShowPlacements") + .WithMany("SoundTimecodes") .HasForeignKey("SoundId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1407,13 +1693,13 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.StaffAvailability", b => { b.HasOne("PyroFetes.Models.Availability", "Availability") - .WithMany() + .WithMany("StaffAvailabilities") .HasForeignKey("AvailabilityId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Staff", "Staff") - .WithMany() + .WithMany("StaffAvailabilities") .HasForeignKey("StaffId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1426,13 +1712,13 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.StaffContact", b => { b.HasOne("PyroFetes.Models.Contact", "Contact") - .WithMany() + .WithMany("StaffContacts") .HasForeignKey("ContactId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Staff", "Staff") - .WithMany() + .WithMany("StaffContacts") .HasForeignKey("StaffId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1445,13 +1731,13 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.StaffHistoryOfApproval", b => { b.HasOne("PyroFetes.Models.HistoryOfApproval", "HistoryOfApproval") - .WithMany() + .WithMany("StaffHistoryOfApprovals") .HasForeignKey("HistoryOfApprovalId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Staff", "Staff") - .WithMany() + .WithMany("StaffHistoryOfApprovals") .HasForeignKey("StaffId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1461,27 +1747,16 @@ namespace PyroFetes.Migrations b.Navigation("Staff"); }); - modelBuilder.Entity("PyroFetes.Models.Truck", b => - { - b.HasOne("PyroFetes.Models.Show", "Show") - .WithMany("Trucks") - .HasForeignKey("ShowId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Show"); - }); - modelBuilder.Entity("PyroFetes.Models.WarehouseProduct", b => { b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("WarehouseProducts") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Warehouse", "Warehouse") - .WithMany() + .WithMany("WarehouseProducts") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1491,19 +1766,14 @@ namespace PyroFetes.Migrations b.Navigation("Warehouse"); }); - modelBuilder.Entity("ShowStaff", b => + modelBuilder.Entity("PyroFetes.Models.Availability", b => { - b.HasOne("PyroFetes.Models.Show", null) - .WithMany() - .HasForeignKey("ShowsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.Navigation("StaffAvailabilities"); + }); - b.HasOne("PyroFetes.Models.Staff", null) - .WithMany() - .HasForeignKey("StaffId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + modelBuilder.Entity("PyroFetes.Models.City", b => + { + b.Navigation("Shows"); }); modelBuilder.Entity("PyroFetes.Models.Classification", b => @@ -1511,14 +1781,25 @@ namespace PyroFetes.Migrations b.Navigation("Products"); }); + modelBuilder.Entity("PyroFetes.Models.Color", b => + { + b.Navigation("ProductColors"); + }); + modelBuilder.Entity("PyroFetes.Models.Contact", b => { - b.Navigation("CustomerContacts"); + b.Navigation("Communications"); + + b.Navigation("ContactServiceProviders"); + + b.Navigation("StaffContacts"); }); modelBuilder.Entity("PyroFetes.Models.Customer", b => { - b.Navigation("CustomerContacts"); + b.Navigation("Contacts"); + + b.Navigation("Quotations"); }); modelBuilder.Entity("PyroFetes.Models.CustomerType", b => @@ -1531,11 +1812,52 @@ namespace PyroFetes.Migrations b.Navigation("DeliveryNotes"); }); + modelBuilder.Entity("PyroFetes.Models.DeliveryNote", b => + { + b.Navigation("ProductDeliveries"); + }); + + modelBuilder.Entity("PyroFetes.Models.Effect", b => + { + b.Navigation("ProductEffects"); + }); + + modelBuilder.Entity("PyroFetes.Models.HistoryOfApproval", b => + { + b.Navigation("StaffHistoryOfApprovals"); + }); + + modelBuilder.Entity("PyroFetes.Models.Material", b => + { + b.Navigation("MaterialWarehouses"); + + b.Navigation("ShowMaterials"); + }); + + modelBuilder.Entity("PyroFetes.Models.Movement", b => + { + b.Navigation("Products"); + }); + modelBuilder.Entity("PyroFetes.Models.Product", b => { b.Navigation("Brands"); - b.Navigation("Movements"); + b.Navigation("Prices"); + + b.Navigation("ProductColors"); + + b.Navigation("ProductDeliveries"); + + b.Navigation("ProductEffects"); + + b.Navigation("ProductTimecodes"); + + b.Navigation("PurchaseProducts"); + + b.Navigation("QuotationProducts"); + + b.Navigation("WarehouseProducts"); }); modelBuilder.Entity("PyroFetes.Models.ProductCategory", b => @@ -1543,16 +1865,46 @@ namespace PyroFetes.Migrations b.Navigation("Products"); }); + modelBuilder.Entity("PyroFetes.Models.ProviderType", b => + { + b.Navigation("ServiceProviders"); + }); + + modelBuilder.Entity("PyroFetes.Models.PurchaseOrder", b => + { + b.Navigation("PurchaseProducts"); + }); + + modelBuilder.Entity("PyroFetes.Models.Quotation", b => + { + b.Navigation("QuotationProducts"); + }); + + modelBuilder.Entity("PyroFetes.Models.ServiceProvider", b => + { + b.Navigation("ContactServiceProviders"); + + b.Navigation("Contracts"); + }); + modelBuilder.Entity("PyroFetes.Models.Show", b => { - b.Navigation("SoundCues"); + b.Navigation("Contracts"); - b.Navigation("Trucks"); + b.Navigation("ProductTimecodes"); + + b.Navigation("ShowMaterials"); + + b.Navigation("ShowStaffs"); + + b.Navigation("ShowTrucks"); + + b.Navigation("SoundTimecodes"); }); modelBuilder.Entity("PyroFetes.Models.Sound", b => { - b.Navigation("ShowPlacements"); + b.Navigation("SoundTimecodes"); }); modelBuilder.Entity("PyroFetes.Models.SoundCategory", b => @@ -1560,13 +1912,38 @@ namespace PyroFetes.Migrations b.Navigation("Sounds"); }); + modelBuilder.Entity("PyroFetes.Models.Staff", b => + { + b.Navigation("ExperienceLevels"); + + b.Navigation("ShowStaffs"); + + b.Navigation("StaffAvailabilities"); + + b.Navigation("StaffContacts"); + + b.Navigation("StaffHistoryOfApprovals"); + }); + + modelBuilder.Entity("PyroFetes.Models.Supplier", b => + { + b.Navigation("Prices"); + }); + + modelBuilder.Entity("PyroFetes.Models.Truck", b => + { + b.Navigation("ShowTrucks"); + }); + modelBuilder.Entity("PyroFetes.Models.Warehouse", b => { - b.Navigation("Materials"); + b.Navigation("MaterialWarehouses"); b.Navigation("MovementsDestination"); b.Navigation("MovementsSource"); + + b.Navigation("WarehouseProducts"); }); #pragma warning restore 612, 618 } diff --git a/PyroFetes/Migrations/20251007094021_InitialDatabase.cs b/PyroFetes/Migrations/20251008103414_InitialDatabase.cs similarity index 79% rename from PyroFetes/Migrations/20251007094021_InitialDatabase.cs rename to PyroFetes/Migrations/20251008103414_InitialDatabase.cs index 0d226b1..5c5dbc7 100644 --- a/PyroFetes/Migrations/20251007094021_InitialDatabase.cs +++ b/PyroFetes/Migrations/20251008103414_InitialDatabase.cs @@ -17,7 +17,7 @@ namespace PyroFetes.Migrations { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - AvailabilityDate = table.Column(type: "nvarchar(max)", nullable: false), + AvailabilityDate = table.Column(type: "date", nullable: false), DeliveryDate = table.Column(type: "date", nullable: false), ExpirationDate = table.Column(type: "date", nullable: false), RenewallDate = table.Column(type: "date", nullable: false) @@ -27,13 +27,27 @@ namespace PyroFetes.Migrations table.PrimaryKey("PK_Availabilities", x => x.Id); }); + migrationBuilder.CreateTable( + name: "City", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + ZipCode = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_City", x => x.Id); + }); + migrationBuilder.CreateTable( name: "Classifications", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - Label = table.Column(type: "nvarchar(max)", nullable: false) + Label = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) }, constraints: table => { @@ -46,35 +60,20 @@ namespace PyroFetes.Migrations { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - Label = table.Column(type: "nvarchar(max)", nullable: false) + Label = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) }, constraints: table => { table.PrimaryKey("PK_Colors", x => x.Id); }); - migrationBuilder.CreateTable( - name: "Communications", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Calling = table.Column(type: "nvarchar(max)", nullable: false), - Email = table.Column(type: "nvarchar(max)", nullable: false), - Meeting = table.Column(type: "nvarchar(max)", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Communications", x => x.Id); - }); - migrationBuilder.CreateTable( name: "CustomerTypes", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - Price = table.Column(type: "decimal(18,2)", nullable: false) + Label = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) }, constraints: table => { @@ -87,7 +86,7 @@ namespace PyroFetes.Migrations { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - Transporter = table.Column(type: "nvarchar(max)", nullable: false) + Transporter = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) }, constraints: table => { @@ -100,34 +99,21 @@ namespace PyroFetes.Migrations { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - Label = table.Column(type: "nvarchar(max)", nullable: false) + Label = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) }, constraints: table => { table.PrimaryKey("PK_Effects", x => x.Id); }); - migrationBuilder.CreateTable( - name: "ExperienceLevels", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Label = table.Column(type: "nvarchar(max)", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_ExperienceLevels", x => x.Id); - }); - migrationBuilder.CreateTable( name: "HistoryOfApprovals", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - ExpirationDate = table.Column(type: "date", nullable: false), - DeliveryDate = table.Column(type: "date", nullable: false) + DeliveryDate = table.Column(type: "date", nullable: false), + ExpirationDate = table.Column(type: "date", nullable: false) }, constraints: table => { @@ -140,7 +126,7 @@ namespace PyroFetes.Migrations { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - Label = table.Column(type: "nvarchar(max)", nullable: false) + Label = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) }, constraints: table => { @@ -153,7 +139,7 @@ namespace PyroFetes.Migrations { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - Label = table.Column(type: "nvarchar(max)", nullable: false) + Label = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) }, constraints: table => { @@ -166,27 +152,13 @@ namespace PyroFetes.Migrations { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - PurchaseConditions = table.Column(type: "nvarchar(max)", nullable: false) + PurchaseConditions = table.Column(type: "nvarchar(300)", maxLength: 300, nullable: false) }, constraints: table => { table.PrimaryKey("PK_PurchaseOrders", x => x.Id); }); - migrationBuilder.CreateTable( - name: "Quotations", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Message = table.Column(type: "nvarchar(max)", nullable: false), - ConditionsSale = table.Column(type: "nvarchar(max)", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Quotations", x => x.Id); - }); - migrationBuilder.CreateTable( name: "Settings", columns: table => new @@ -201,30 +173,13 @@ namespace PyroFetes.Migrations table.PrimaryKey("PK_Settings", x => x.Id); }); - migrationBuilder.CreateTable( - name: "Shows", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Name = table.Column(type: "nvarchar(max)", nullable: false), - Place = table.Column(type: "nvarchar(120)", maxLength: 120, nullable: false), - Description = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), - PyrotechnicImplementationPlan = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: false), - Date = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Shows", x => x.Id); - }); - migrationBuilder.CreateTable( name: "SoundCategories", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - Name = table.Column(type: "nvarchar(60)", maxLength: 60, nullable: false) + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) }, constraints: table => { @@ -241,7 +196,7 @@ namespace PyroFetes.Migrations LastName = table.Column(type: "nvarchar(60)", maxLength: 60, nullable: false), Profession = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), Email = table.Column(type: "nvarchar(120)", maxLength: 120, nullable: false), - F4T2NumberApproval = table.Column(type: "nvarchar(max)", nullable: false), + F4T2NumberApproval = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), F4T2ExpirationDate = table.Column(type: "date", nullable: false) }, constraints: table => @@ -256,11 +211,11 @@ namespace PyroFetes.Migrations Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), - Email = table.Column(type: "nvarchar(max)", nullable: false), - Phone = table.Column(type: "nvarchar(max)", nullable: false), - Address = table.Column(type: "nvarchar(max)", nullable: false), + Email = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Phone = table.Column(type: "nvarchar(30)", maxLength: 30, nullable: false), + Address = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), ZipCode = table.Column(type: "int", nullable: false), - City = table.Column(type: "nvarchar(max)", nullable: false), + City = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), DeliveryDelay = table.Column(type: "int", nullable: false) }, constraints: table => @@ -268,6 +223,22 @@ namespace PyroFetes.Migrations table.PrimaryKey("PK_Suppliers", x => x.Id); }); + migrationBuilder.CreateTable( + name: "Trucks", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Type = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), + MaxExplosiveCapacity = table.Column(type: "float", nullable: false), + Sizes = table.Column(type: "nvarchar(80)", maxLength: 80, nullable: false), + Status = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Trucks", x => x.Id); + }); + migrationBuilder.CreateTable( name: "Users", columns: table => new @@ -275,10 +246,10 @@ namespace PyroFetes.Migrations Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), - Password = table.Column(type: "nvarchar(max)", nullable: false), - Salt = table.Column(type: "nvarchar(max)", nullable: false), - Email = table.Column(type: "nvarchar(max)", nullable: false), - Fonction = table.Column(type: "nvarchar(max)", nullable: false) + Password = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), + Salt = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Email = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Fonction = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) }, constraints: table => { @@ -295,9 +266,9 @@ namespace PyroFetes.Migrations MaxWeight = table.Column(type: "int", nullable: false), Current = table.Column(type: "int", nullable: false), MinWeight = table.Column(type: "int", nullable: false), - Address = table.Column(type: "nvarchar(max)", nullable: false), + Address = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), ZipCode = table.Column(type: "int", nullable: false), - City = table.Column(type: "nvarchar(max)", nullable: false) + City = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false) }, constraints: table => { @@ -305,28 +276,45 @@ namespace PyroFetes.Migrations }); migrationBuilder.CreateTable( - name: "Contacts", + name: "Shows", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - LastName = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), - FirstName = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), - Email = table.Column(type: "nvarchar(max)", nullable: false), - PhoneNumber = table.Column(type: "nvarchar(max)", nullable: false), - Address = table.Column(type: "nvarchar(max)", nullable: false), - ZipCode = table.Column(type: "nvarchar(max)", nullable: false), - City = table.Column(type: "nvarchar(max)", nullable: false), - Role = table.Column(type: "nvarchar(max)", nullable: false), - CommunicationId = table.Column(type: "int", nullable: false) + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Place = table.Column(type: "nvarchar(120)", maxLength: 120, nullable: false), + Description = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), + Date = table.Column(type: "date", nullable: true), + PyrotechnicImplementationPlan = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: false), + CityId = table.Column(type: "int", nullable: false) }, constraints: table => { - table.PrimaryKey("PK_Contacts", x => x.Id); + table.PrimaryKey("PK_Shows", x => x.Id); table.ForeignKey( - name: "FK_Contacts_Communications_CommunicationId", - column: x => x.CommunicationId, - principalTable: "Communications", + name: "FK_Shows_City_CityId", + column: x => x.CityId, + principalTable: "City", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Customers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Note = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + CustomerTypeId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Customers", x => x.Id); + table.ForeignKey( + name: "FK_Customers_CustomerTypes_CustomerTypeId", + column: x => x.CustomerTypeId, + principalTable: "CustomerTypes", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); @@ -337,7 +325,7 @@ namespace PyroFetes.Migrations { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - TrackingNumber = table.Column(type: "nvarchar(max)", nullable: false), + TrackingNumber = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), DelivererId = table.Column(type: "int", nullable: false), EstimateDeliveryDate = table.Column(type: "date", nullable: false), ExpeditionDate = table.Column(type: "date", nullable: false), @@ -354,43 +342,6 @@ namespace PyroFetes.Migrations onDelete: ReferentialAction.Cascade); }); - migrationBuilder.CreateTable( - name: "Products", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - References = table.Column(type: "int", nullable: false), - Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), - Duration = table.Column(type: "decimal(18,2)", nullable: false), - Caliber = table.Column(type: "decimal(18,2)", nullable: false), - ApprovalNumber = table.Column(type: "int", nullable: false), - Weight = table.Column(type: "decimal(18,2)", nullable: false), - Nec = table.Column(type: "decimal(18,2)", nullable: false), - SellingPrice = table.Column(type: "decimal(18,2)", nullable: false), - Image = table.Column(type: "nvarchar(max)", nullable: false), - Link = table.Column(type: "nvarchar(max)", nullable: false), - MinimalQuantity = table.Column(type: "int", nullable: false), - ClassificationId = table.Column(type: "int", nullable: false), - ProductCategoryId = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Products", x => x.Id); - table.ForeignKey( - name: "FK_Products_Classifications_ClassificationId", - column: x => x.ClassificationId, - principalTable: "Classifications", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_Products_ProductCategories_ProductCategoryId", - column: x => x.ProductCategoryId, - principalTable: "ProductCategories", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - migrationBuilder.CreateTable( name: "Providers", columns: table => new @@ -398,8 +349,7 @@ namespace PyroFetes.Migrations Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), Price = table.Column(type: "decimal(18,2)", nullable: false), - ProviderId = table.Column(type: "int", nullable: false), - ProviderTypeId = table.Column(type: "int", nullable: true) + ProviderTypeId = table.Column(type: "int", nullable: false) }, constraints: table => { @@ -408,28 +358,6 @@ namespace PyroFetes.Migrations name: "FK_Providers_ProviderTypes_ProviderTypeId", column: x => x.ProviderTypeId, principalTable: "ProviderTypes", - principalColumn: "Id"); - }); - - migrationBuilder.CreateTable( - name: "Trucks", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Type = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), - MaxExplosiveCapacity = table.Column(type: "float", nullable: true), - Sizes = table.Column(type: "nvarchar(80)", maxLength: 80, nullable: false), - Status = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), - ShowId = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Trucks", x => x.Id); - table.ForeignKey( - name: "FK_Trucks_Shows_ShowId", - column: x => x.ShowId, - principalTable: "Shows", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); @@ -461,23 +389,19 @@ namespace PyroFetes.Migrations }); migrationBuilder.CreateTable( - name: "ShowStaff", + name: "ExperienceLevels", columns: table => new { - ShowsId = table.Column(type: "int", nullable: false), + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Label = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), StaffId = table.Column(type: "int", nullable: false) }, constraints: table => { - table.PrimaryKey("PK_ShowStaff", x => new { x.ShowsId, x.StaffId }); + table.PrimaryKey("PK_ExperienceLevels", x => x.Id); table.ForeignKey( - name: "FK_ShowStaff_Shows_ShowsId", - column: x => x.ShowsId, - principalTable: "Shows", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_ShowStaff_Staffs_StaffId", + name: "FK_ExperienceLevels_Staffs_StaffId", column: x => x.StaffId, principalTable: "Staffs", principalColumn: "Id", @@ -554,28 +478,340 @@ namespace PyroFetes.Migrations }); migrationBuilder.CreateTable( - name: "Customers", + name: "Movements", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - Note = table.Column(type: "nvarchar(max)", nullable: false), - CustomerTypeId = table.Column(type: "int", nullable: false), + Date = table.Column(type: "datetime2", nullable: false), + Start = table.Column(type: "datetime2", nullable: false), + Arrival = table.Column(type: "datetime2", nullable: false), + Quantity = table.Column(type: "int", nullable: false), + SourceWarehouseId = table.Column(type: "int", nullable: true), + DestinationWarehouseId = table.Column(type: "int", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Movements", x => x.Id); + table.ForeignKey( + name: "FK_Movements_Warehouses_DestinationWarehouseId", + column: x => x.DestinationWarehouseId, + principalTable: "Warehouses", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Movements_Warehouses_SourceWarehouseId", + column: x => x.SourceWarehouseId, + principalTable: "Warehouses", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "ShowStaff", + columns: table => new + { + StaffId = table.Column(type: "int", nullable: false), + ShowId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ShowStaff", x => new { x.StaffId, x.ShowId }); + table.ForeignKey( + name: "FK_ShowStaff_Shows_ShowId", + column: x => x.ShowId, + principalTable: "Shows", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ShowStaff_Staffs_StaffId", + column: x => x.StaffId, + principalTable: "Staffs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ShowTruck", + columns: table => new + { + ShowId = table.Column(type: "int", nullable: false), + TruckId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ShowTruck", x => new { x.ShowId, x.TruckId }); + table.ForeignKey( + name: "FK_ShowTruck_Shows_ShowId", + column: x => x.ShowId, + principalTable: "Shows", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ShowTruck_Trucks_TruckId", + column: x => x.TruckId, + principalTable: "Trucks", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Contacts", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + LastName = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + FirstName = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Email = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + PhoneNumber = table.Column(type: "nvarchar(30)", maxLength: 30, nullable: false), + Address = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + ZipCode = table.Column(type: "int", nullable: false), + City = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Role = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + CustomerId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Contacts", x => x.Id); + table.ForeignKey( + name: "FK_Contacts_Customers_CustomerId", + column: x => x.CustomerId, + principalTable: "Customers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Quotations", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Message = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + ConditionsSale = table.Column(type: "nvarchar(300)", maxLength: 300, nullable: false), + CustomerId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Quotations", x => x.Id); + table.ForeignKey( + name: "FK_Quotations_Customers_CustomerId", + column: x => x.CustomerId, + principalTable: "Customers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Contract", + columns: table => new + { + ShowId = table.Column(type: "int", nullable: false), + ServiceProviderId = table.Column(type: "int", nullable: false), + TermsAndConditions = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Contract", x => new { x.ShowId, x.ServiceProviderId }); + table.ForeignKey( + name: "FK_Contract_Providers_ServiceProviderId", + column: x => x.ServiceProviderId, + principalTable: "Providers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Contract_Shows_ShowId", + column: x => x.ShowId, + principalTable: "Shows", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "SoundTimecodes", + columns: table => new + { + ShowId = table.Column(type: "int", nullable: false), + SoundId = table.Column(type: "int", nullable: false), + Start = table.Column(type: "decimal(18,2)", nullable: false), + End = table.Column(type: "decimal(18,2)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SoundTimecodes", x => new { x.ShowId, x.SoundId }); + table.ForeignKey( + name: "FK_SoundTimecodes_Shows_ShowId", + column: x => x.ShowId, + principalTable: "Shows", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_SoundTimecodes_Sounds_SoundId", + column: x => x.SoundId, + principalTable: "Sounds", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "MaterialWarehouse", + columns: table => new + { + MaterialId = table.Column(type: "int", nullable: false), + WarehouseId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_MaterialWarehouse", x => new { x.MaterialId, x.WarehouseId }); + table.ForeignKey( + name: "FK_MaterialWarehouse_Materials_MaterialId", + column: x => x.MaterialId, + principalTable: "Materials", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_MaterialWarehouse_Warehouses_WarehouseId", + column: x => x.WarehouseId, + principalTable: "Warehouses", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "ShowMaterial", + columns: table => new + { + ShowId = table.Column(type: "int", nullable: false), + MaterialId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ShowMaterial", x => new { x.ShowId, x.MaterialId }); + table.ForeignKey( + name: "FK_ShowMaterial_Materials_MaterialId", + column: x => x.MaterialId, + principalTable: "Materials", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ShowMaterial_Shows_ShowId", + column: x => x.ShowId, + principalTable: "Shows", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Products", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + References = table.Column(type: "int", nullable: false), + Name = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Duration = table.Column(type: "decimal(18,2)", nullable: false), + Caliber = table.Column(type: "decimal(18,2)", nullable: false), + ApprovalNumber = table.Column(type: "int", nullable: false), + Weight = table.Column(type: "decimal(18,2)", nullable: false), + Nec = table.Column(type: "decimal(18,2)", nullable: false), + SellingPrice = table.Column(type: "decimal(18,2)", nullable: false), + Image = table.Column(type: "nvarchar(max)", nullable: false), + Link = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + MinimalQuantity = table.Column(type: "int", nullable: false), + ClassificationId = table.Column(type: "int", nullable: false), + ProductCategoryId = table.Column(type: "int", nullable: false), + MovementId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Products", x => x.Id); + table.ForeignKey( + name: "FK_Products_Classifications_ClassificationId", + column: x => x.ClassificationId, + principalTable: "Classifications", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Products_Movements_MovementId", + column: x => x.MovementId, + principalTable: "Movements", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Products_ProductCategories_ProductCategoryId", + column: x => x.ProductCategoryId, + principalTable: "ProductCategories", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Communications", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Calling = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Email = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Meeting = table.Column(type: "nvarchar(300)", maxLength: 300, nullable: false), ContactId = table.Column(type: "int", nullable: false) }, constraints: table => { - table.PrimaryKey("PK_Customers", x => x.Id); + table.PrimaryKey("PK_Communications", x => x.Id); table.ForeignKey( - name: "FK_Customers_Contacts_ContactId", + name: "FK_Communications_Contacts_ContactId", + column: x => x.ContactId, + principalTable: "Contacts", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ContactServiceProvider", + columns: table => new + { + ContactId = table.Column(type: "int", nullable: false), + ServiceProviderId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ContactServiceProvider", x => new { x.ContactId, x.ServiceProviderId }); + table.ForeignKey( + name: "FK_ContactServiceProvider_Contacts_ContactId", column: x => x.ContactId, principalTable: "Contacts", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_Customers_CustomerTypes_CustomerTypeId", - column: x => x.CustomerTypeId, - principalTable: "CustomerTypes", + name: "FK_ContactServiceProvider_Providers_ServiceProviderId", + column: x => x.ServiceProviderId, + principalTable: "Providers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ProviderContacts", + columns: table => new + { + ProviderId = table.Column(type: "int", nullable: false), + ContactId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ProviderContacts", x => new { x.ContactId, x.ProviderId }); + table.ForeignKey( + name: "FK_ProviderContacts_Contacts_ContactId", + column: x => x.ContactId, + principalTable: "Contacts", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ProviderContacts_Providers_ProviderId", + column: x => x.ProviderId, + principalTable: "Providers", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); @@ -624,43 +860,6 @@ namespace PyroFetes.Migrations onDelete: ReferentialAction.Cascade); }); - migrationBuilder.CreateTable( - name: "Movements", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - Date = table.Column(type: "datetime2", nullable: false), - Start = table.Column(type: "datetime2", nullable: false), - Arrival = table.Column(type: "datetime2", nullable: false), - Quantity = table.Column(type: "int", nullable: false), - ProductId = table.Column(type: "int", nullable: false), - SourceWarehouseId = table.Column(type: "int", nullable: true), - DestinationWarehouseId = table.Column(type: "int", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Movements", x => x.Id); - table.ForeignKey( - name: "FK_Movements_Products_ProductId", - column: x => x.ProductId, - principalTable: "Products", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_Movements_Warehouses_DestinationWarehouseId", - column: x => x.DestinationWarehouseId, - principalTable: "Warehouses", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_Movements_Warehouses_SourceWarehouseId", - column: x => x.SourceWarehouseId, - principalTable: "Warehouses", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - migrationBuilder.CreateTable( name: "Prices", columns: table => new @@ -759,6 +958,32 @@ namespace PyroFetes.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "ProductTimecode", + columns: table => new + { + ProductId = table.Column(type: "int", nullable: false), + ShowId = table.Column(type: "int", nullable: false), + Start = table.Column(type: "decimal(18,2)", nullable: false), + End = table.Column(type: "decimal(18,2)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ProductTimecode", x => new { x.ProductId, x.ShowId }); + table.ForeignKey( + name: "FK_ProductTimecode_Products_ProductId", + column: x => x.ProductId, + principalTable: "Products", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ProductTimecode_Shows_ShowId", + column: x => x.ShowId, + principalTable: "Shows", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "PurchaseProducts", columns: table => new @@ -813,14 +1038,13 @@ namespace PyroFetes.Migrations name: "WarehouseProducts", columns: table => new { - Quantity = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), ProductId = table.Column(type: "int", nullable: false), - WarehouseId = table.Column(type: "int", nullable: false) + WarehouseId = table.Column(type: "int", nullable: false), + Quantity = table.Column(type: "int", nullable: false) }, constraints: table => { - table.PrimaryKey("PK_WarehouseProducts", x => x.Quantity); + table.PrimaryKey("PK_WarehouseProducts", x => new { x.ProductId, x.WarehouseId }); table.ForeignKey( name: "FK_WarehouseProducts_Products_ProductId", column: x => x.ProductId, @@ -835,99 +1059,30 @@ namespace PyroFetes.Migrations onDelete: ReferentialAction.Cascade); }); - migrationBuilder.CreateTable( - name: "ProviderContacts", - columns: table => new - { - ProviderId = table.Column(type: "int", nullable: false), - ContactId = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_ProviderContacts", x => new { x.ContactId, x.ProviderId }); - table.ForeignKey( - name: "FK_ProviderContacts_Contacts_ContactId", - column: x => x.ContactId, - principalTable: "Contacts", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_ProviderContacts_Providers_ProviderId", - column: x => x.ProviderId, - principalTable: "Providers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "SoundTimecodes", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - ShowId = table.Column(type: "int", nullable: false), - SoundId = table.Column(type: "int", nullable: false), - Start = table.Column(type: "int", nullable: false), - End = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_SoundTimecodes", x => x.Id); - table.ForeignKey( - name: "FK_SoundTimecodes_Shows_ShowId", - column: x => x.ShowId, - principalTable: "Shows", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_SoundTimecodes_Sounds_SoundId", - column: x => x.SoundId, - principalTable: "Sounds", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomerContacts", - columns: table => new - { - CustomerId = table.Column(type: "int", nullable: false), - ContactId = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomerContacts", x => new { x.ContactId, x.CustomerId }); - table.ForeignKey( - name: "FK_CustomerContacts_Contacts_ContactId", - column: x => x.ContactId, - principalTable: "Contacts", - principalColumn: "Id"); - table.ForeignKey( - name: "FK_CustomerContacts_Customers_CustomerId", - column: x => x.CustomerId, - principalTable: "Customers", - principalColumn: "Id"); - }); - migrationBuilder.CreateIndex( name: "IX_Brands_ProductId", table: "Brands", column: "ProductId"); migrationBuilder.CreateIndex( - name: "IX_Contacts_CommunicationId", - table: "Contacts", - column: "CommunicationId"); + name: "IX_Communications_ContactId", + table: "Communications", + column: "ContactId"); migrationBuilder.CreateIndex( - name: "IX_CustomerContacts_CustomerId", - table: "CustomerContacts", + name: "IX_Contacts_CustomerId", + table: "Contacts", column: "CustomerId"); migrationBuilder.CreateIndex( - name: "IX_Customers_ContactId", - table: "Customers", - column: "ContactId"); + name: "IX_ContactServiceProvider_ServiceProviderId", + table: "ContactServiceProvider", + column: "ServiceProviderId"); + + migrationBuilder.CreateIndex( + name: "IX_Contract_ServiceProviderId", + table: "Contract", + column: "ServiceProviderId"); migrationBuilder.CreateIndex( name: "IX_Customers_CustomerTypeId", @@ -939,21 +1094,26 @@ namespace PyroFetes.Migrations table: "DeliveryNotes", column: "DelivererId"); + migrationBuilder.CreateIndex( + name: "IX_ExperienceLevels_StaffId", + table: "ExperienceLevels", + column: "StaffId"); + migrationBuilder.CreateIndex( name: "IX_Materials_WarehouseId", table: "Materials", column: "WarehouseId"); + migrationBuilder.CreateIndex( + name: "IX_MaterialWarehouse_WarehouseId", + table: "MaterialWarehouse", + column: "WarehouseId"); + migrationBuilder.CreateIndex( name: "IX_Movements_DestinationWarehouseId", table: "Movements", column: "DestinationWarehouseId"); - migrationBuilder.CreateIndex( - name: "IX_Movements_ProductId", - table: "Movements", - column: "ProductId"); - migrationBuilder.CreateIndex( name: "IX_Movements_SourceWarehouseId", table: "Movements", @@ -984,11 +1144,21 @@ namespace PyroFetes.Migrations table: "Products", column: "ClassificationId"); + migrationBuilder.CreateIndex( + name: "IX_Products_MovementId", + table: "Products", + column: "MovementId"); + migrationBuilder.CreateIndex( name: "IX_Products_ProductCategoryId", table: "Products", column: "ProductCategoryId"); + migrationBuilder.CreateIndex( + name: "IX_ProductTimecode_ShowId", + table: "ProductTimecode", + column: "ShowId"); + migrationBuilder.CreateIndex( name: "IX_ProviderContacts_ProviderId", table: "ProviderContacts", @@ -1010,20 +1180,35 @@ namespace PyroFetes.Migrations column: "QuotationId"); migrationBuilder.CreateIndex( - name: "IX_ShowStaff_StaffId", + name: "IX_Quotations_CustomerId", + table: "Quotations", + column: "CustomerId"); + + migrationBuilder.CreateIndex( + name: "IX_ShowMaterial_MaterialId", + table: "ShowMaterial", + column: "MaterialId"); + + migrationBuilder.CreateIndex( + name: "IX_Shows_CityId", + table: "Shows", + column: "CityId"); + + migrationBuilder.CreateIndex( + name: "IX_ShowStaff_ShowId", table: "ShowStaff", - column: "StaffId"); + column: "ShowId"); + + migrationBuilder.CreateIndex( + name: "IX_ShowTruck_TruckId", + table: "ShowTruck", + column: "TruckId"); migrationBuilder.CreateIndex( name: "IX_Sounds_SoundCategoryId", table: "Sounds", column: "SoundCategoryId"); - migrationBuilder.CreateIndex( - name: "IX_SoundTimecodes_ShowId", - table: "SoundTimecodes", - column: "ShowId"); - migrationBuilder.CreateIndex( name: "IX_SoundTimecodes_SoundId", table: "SoundTimecodes", @@ -1044,16 +1229,6 @@ namespace PyroFetes.Migrations table: "StaffHistoryOfApprovals", column: "StaffId"); - migrationBuilder.CreateIndex( - name: "IX_Trucks_ShowId", - table: "Trucks", - column: "ShowId"); - - migrationBuilder.CreateIndex( - name: "IX_WarehouseProducts_ProductId", - table: "WarehouseProducts", - column: "ProductId"); - migrationBuilder.CreateIndex( name: "IX_WarehouseProducts_WarehouseId", table: "WarehouseProducts", @@ -1067,16 +1242,19 @@ namespace PyroFetes.Migrations name: "Brands"); migrationBuilder.DropTable( - name: "CustomerContacts"); + name: "Communications"); + + migrationBuilder.DropTable( + name: "ContactServiceProvider"); + + migrationBuilder.DropTable( + name: "Contract"); migrationBuilder.DropTable( name: "ExperienceLevels"); migrationBuilder.DropTable( - name: "Materials"); - - migrationBuilder.DropTable( - name: "Movements"); + name: "MaterialWarehouse"); migrationBuilder.DropTable( name: "Prices"); @@ -1090,6 +1268,9 @@ namespace PyroFetes.Migrations migrationBuilder.DropTable( name: "ProductEffects"); + migrationBuilder.DropTable( + name: "ProductTimecode"); + migrationBuilder.DropTable( name: "ProviderContacts"); @@ -1102,9 +1283,15 @@ namespace PyroFetes.Migrations migrationBuilder.DropTable( name: "Settings"); + migrationBuilder.DropTable( + name: "ShowMaterial"); + migrationBuilder.DropTable( name: "ShowStaff"); + migrationBuilder.DropTable( + name: "ShowTruck"); + migrationBuilder.DropTable( name: "SoundTimecodes"); @@ -1117,18 +1304,12 @@ namespace PyroFetes.Migrations migrationBuilder.DropTable( name: "StaffHistoryOfApprovals"); - migrationBuilder.DropTable( - name: "Trucks"); - migrationBuilder.DropTable( name: "Users"); migrationBuilder.DropTable( name: "WarehouseProducts"); - migrationBuilder.DropTable( - name: "Customers"); - migrationBuilder.DropTable( name: "Suppliers"); @@ -1150,50 +1331,62 @@ namespace PyroFetes.Migrations migrationBuilder.DropTable( name: "Quotations"); + migrationBuilder.DropTable( + name: "Materials"); + + migrationBuilder.DropTable( + name: "Trucks"); + + migrationBuilder.DropTable( + name: "Shows"); + migrationBuilder.DropTable( name: "Sounds"); migrationBuilder.DropTable( name: "Availabilities"); + migrationBuilder.DropTable( + name: "Contacts"); + migrationBuilder.DropTable( name: "HistoryOfApprovals"); migrationBuilder.DropTable( name: "Staffs"); - migrationBuilder.DropTable( - name: "Shows"); - migrationBuilder.DropTable( name: "Products"); - migrationBuilder.DropTable( - name: "Warehouses"); - - migrationBuilder.DropTable( - name: "Contacts"); - - migrationBuilder.DropTable( - name: "CustomerTypes"); - migrationBuilder.DropTable( name: "Deliverers"); migrationBuilder.DropTable( name: "ProviderTypes"); + migrationBuilder.DropTable( + name: "City"); + migrationBuilder.DropTable( name: "SoundCategories"); + migrationBuilder.DropTable( + name: "Customers"); + migrationBuilder.DropTable( name: "Classifications"); + migrationBuilder.DropTable( + name: "Movements"); + migrationBuilder.DropTable( name: "ProductCategories"); migrationBuilder.DropTable( - name: "Communications"); + name: "CustomerTypes"); + + migrationBuilder.DropTable( + name: "Warehouses"); } } } diff --git a/PyroFetes/Migrations/PyroFetesDbContextModelSnapshot.cs b/PyroFetes/Migrations/PyroFetesDbContextModelSnapshot.cs index 3f047d1..1f414fb 100644 --- a/PyroFetes/Migrations/PyroFetesDbContextModelSnapshot.cs +++ b/PyroFetes/Migrations/PyroFetesDbContextModelSnapshot.cs @@ -30,9 +30,8 @@ namespace PyroFetes.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - b.Property("AvailabilityDate") - .IsRequired() - .HasColumnType("nvarchar(max)"); + b.Property("AvailabilityDate") + .HasColumnType("date"); b.Property("DeliveryDate") .HasColumnType("date"); @@ -71,6 +70,27 @@ namespace PyroFetes.Migrations b.ToTable("Brands"); }); + modelBuilder.Entity("PyroFetes.Models.City", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("City"); + }); + modelBuilder.Entity("PyroFetes.Models.Classification", b => { b.Property("Id") @@ -81,7 +101,8 @@ namespace PyroFetes.Migrations b.Property("Label") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -98,7 +119,8 @@ namespace PyroFetes.Migrations b.Property("Label") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -115,18 +137,26 @@ namespace PyroFetes.Migrations b.Property("Calling") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ContactId") + .HasColumnType("int"); b.Property("Email") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("Meeting") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); b.HasKey("Id"); + b.HasIndex("ContactId"); + b.ToTable("Communications"); }); @@ -140,18 +170,21 @@ namespace PyroFetes.Migrations b.Property("Address") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("City") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); - b.Property("CommunicationId") + b.Property("CustomerId") .HasColumnType("int"); b.Property("Email") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("FirstName") .IsRequired() @@ -165,23 +198,58 @@ namespace PyroFetes.Migrations b.Property("PhoneNumber") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); b.Property("Role") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); - b.Property("ZipCode") - .IsRequired() - .HasColumnType("nvarchar(max)"); + b.Property("ZipCode") + .HasColumnType("int"); b.HasKey("Id"); - b.HasIndex("CommunicationId"); + b.HasIndex("CustomerId"); b.ToTable("Contacts"); }); + modelBuilder.Entity("PyroFetes.Models.ContactServiceProvider", b => + { + b.Property("ContactId") + .HasColumnType("int"); + + b.Property("ServiceProviderId") + .HasColumnType("int"); + + b.HasKey("ContactId", "ServiceProviderId"); + + b.HasIndex("ServiceProviderId"); + + b.ToTable("ContactServiceProvider"); + }); + + modelBuilder.Entity("PyroFetes.Models.Contract", b => + { + b.Property("ShowId") + .HasColumnType("int"); + + b.Property("ServiceProviderId") + .HasColumnType("int"); + + b.Property("TermsAndConditions") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("ShowId", "ServiceProviderId"); + + b.HasIndex("ServiceProviderId"); + + b.ToTable("Contract"); + }); + modelBuilder.Entity("PyroFetes.Models.Customer", b => { b.Property("Id") @@ -190,40 +258,21 @@ namespace PyroFetes.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - b.Property("ContactId") - .HasColumnType("int"); - b.Property("CustomerTypeId") .HasColumnType("int"); b.Property("Note") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); b.HasKey("Id"); - b.HasIndex("ContactId"); - b.HasIndex("CustomerTypeId"); b.ToTable("Customers"); }); - modelBuilder.Entity("PyroFetes.Models.CustomerContact", b => - { - b.Property("ContactId") - .HasColumnType("int"); - - b.Property("CustomerId") - .HasColumnType("int"); - - b.HasKey("ContactId", "CustomerId"); - - b.HasIndex("CustomerId"); - - b.ToTable("CustomerContacts"); - }); - modelBuilder.Entity("PyroFetes.Models.CustomerType", b => { b.Property("Id") @@ -232,8 +281,10 @@ namespace PyroFetes.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - b.Property("Price") - .HasColumnType("decimal(18,2)"); + b.Property("Label") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -250,7 +301,8 @@ namespace PyroFetes.Migrations b.Property("Transporter") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -279,7 +331,8 @@ namespace PyroFetes.Migrations b.Property("TrackingNumber") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -298,7 +351,8 @@ namespace PyroFetes.Migrations b.Property("Label") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); b.HasKey("Id"); @@ -315,10 +369,16 @@ namespace PyroFetes.Migrations b.Property("Label") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StaffId") + .HasColumnType("int"); b.HasKey("Id"); + b.HasIndex("StaffId"); + b.ToTable("ExperienceLevels"); }); @@ -367,6 +427,21 @@ namespace PyroFetes.Migrations b.ToTable("Materials"); }); + modelBuilder.Entity("PyroFetes.Models.MaterialWarehouse", b => + { + b.Property("MaterialId") + .HasColumnType("int"); + + b.Property("WarehouseId") + .HasColumnType("int"); + + b.HasKey("MaterialId", "WarehouseId"); + + b.HasIndex("WarehouseId"); + + b.ToTable("MaterialWarehouse"); + }); + modelBuilder.Entity("PyroFetes.Models.Movement", b => { b.Property("Id") @@ -384,9 +459,6 @@ namespace PyroFetes.Migrations b.Property("DestinationWarehouseId") .HasColumnType("int"); - b.Property("ProductId") - .HasColumnType("int"); - b.Property("Quantity") .HasColumnType("int"); @@ -400,8 +472,6 @@ namespace PyroFetes.Migrations b.HasIndex("DestinationWarehouseId"); - b.HasIndex("ProductId"); - b.HasIndex("SourceWarehouseId"); b.ToTable("Movements"); @@ -451,11 +521,15 @@ namespace PyroFetes.Migrations b.Property("Link") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); b.Property("MinimalQuantity") .HasColumnType("int"); + b.Property("MovementId") + .HasColumnType("int"); + b.Property("Name") .IsRequired() .HasMaxLength(100) @@ -480,6 +554,8 @@ namespace PyroFetes.Migrations b.HasIndex("ClassificationId"); + b.HasIndex("MovementId"); + b.HasIndex("ProductCategoryId"); b.ToTable("Products"); @@ -495,7 +571,8 @@ namespace PyroFetes.Migrations b.Property("Label") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -550,28 +627,25 @@ namespace PyroFetes.Migrations b.ToTable("ProductEffects"); }); - modelBuilder.Entity("PyroFetes.Models.Provider", b => + modelBuilder.Entity("PyroFetes.Models.ProductTimecode", b => { - b.Property("Id") - .ValueGeneratedOnAdd() + b.Property("ProductId") .HasColumnType("int"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + b.Property("ShowId") + .HasColumnType("int"); - b.Property("Price") + b.Property("End") .HasColumnType("decimal(18,2)"); - b.Property("ProviderId") - .HasColumnType("int"); + b.Property("Start") + .HasColumnType("decimal(18,2)"); - b.Property("ProviderTypeId") - .HasColumnType("int"); + b.HasKey("ProductId", "ShowId"); - b.HasKey("Id"); + b.HasIndex("ShowId"); - b.HasIndex("ProviderTypeId"); - - b.ToTable("Providers"); + b.ToTable("ProductTimecode"); }); modelBuilder.Entity("PyroFetes.Models.ProviderContact", b => @@ -599,7 +673,8 @@ namespace PyroFetes.Migrations b.Property("Label") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -616,7 +691,8 @@ namespace PyroFetes.Migrations b.Property("PurchaseConditions") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); b.HasKey("Id"); @@ -651,14 +727,21 @@ namespace PyroFetes.Migrations b.Property("ConditionsSale") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); + + b.Property("CustomerId") + .HasColumnType("int"); b.Property("Message") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); b.HasKey("Id"); + b.HasIndex("CustomerId"); + b.ToTable("Quotations"); }); @@ -680,6 +763,27 @@ namespace PyroFetes.Migrations b.ToTable("QuotationProducts"); }); + modelBuilder.Entity("PyroFetes.Models.ServiceProvider", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Price") + .HasColumnType("decimal(18,2)"); + + b.Property("ProviderTypeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ProviderTypeId"); + + b.ToTable("Providers"); + }); + modelBuilder.Entity("PyroFetes.Models.Setting", b => { b.Property("Id") @@ -709,8 +813,11 @@ namespace PyroFetes.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - b.Property("Date") - .HasColumnType("datetime2"); + b.Property("CityId") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); b.Property("Description") .HasMaxLength(500) @@ -718,7 +825,8 @@ namespace PyroFetes.Migrations b.Property("Name") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("Place") .IsRequired() @@ -732,9 +840,56 @@ namespace PyroFetes.Migrations b.HasKey("Id"); + b.HasIndex("CityId"); + b.ToTable("Shows"); }); + modelBuilder.Entity("PyroFetes.Models.ShowMaterial", b => + { + b.Property("ShowId") + .HasColumnType("int"); + + b.Property("MaterialId") + .HasColumnType("int"); + + b.HasKey("ShowId", "MaterialId"); + + b.HasIndex("MaterialId"); + + b.ToTable("ShowMaterial"); + }); + + modelBuilder.Entity("PyroFetes.Models.ShowStaff", b => + { + b.Property("StaffId") + .HasColumnType("int"); + + b.Property("ShowId") + .HasColumnType("int"); + + b.HasKey("StaffId", "ShowId"); + + b.HasIndex("ShowId"); + + b.ToTable("ShowStaff"); + }); + + modelBuilder.Entity("PyroFetes.Models.ShowTruck", b => + { + b.Property("ShowId") + .HasColumnType("int"); + + b.Property("TruckId") + .HasColumnType("int"); + + b.HasKey("ShowId", "TruckId"); + + b.HasIndex("TruckId"); + + b.ToTable("ShowTruck"); + }); + modelBuilder.Entity("PyroFetes.Models.Sound", b => { b.Property("Id") @@ -795,8 +950,8 @@ namespace PyroFetes.Migrations b.Property("Name") .IsRequired() - .HasMaxLength(60) - .HasColumnType("nvarchar(60)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -805,27 +960,19 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.SoundTimecode", b => { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("End") - .HasColumnType("int"); - b.Property("ShowId") .HasColumnType("int"); b.Property("SoundId") .HasColumnType("int"); - b.Property("Start") - .HasColumnType("int"); + b.Property("End") + .HasColumnType("decimal(18,2)"); - b.HasKey("Id"); + b.Property("Start") + .HasColumnType("decimal(18,2)"); - b.HasIndex("ShowId"); + b.HasKey("ShowId", "SoundId"); b.HasIndex("SoundId"); @@ -850,7 +997,8 @@ namespace PyroFetes.Migrations b.Property("F4T2NumberApproval") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("FirstName") .IsRequired() @@ -927,18 +1075,21 @@ namespace PyroFetes.Migrations b.Property("Address") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("City") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("DeliveryDelay") .HasColumnType("int"); b.Property("Email") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("Name") .IsRequired() @@ -947,7 +1098,8 @@ namespace PyroFetes.Migrations b.Property("Phone") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); b.Property("ZipCode") .HasColumnType("int"); @@ -966,11 +1118,9 @@ namespace PyroFetes.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); b.Property("MaxExplosiveCapacity") + .IsRequired() .HasColumnType("float"); - b.Property("ShowId") - .HasColumnType("int"); - b.Property("Sizes") .IsRequired() .HasMaxLength(80) @@ -988,8 +1138,6 @@ namespace PyroFetes.Migrations b.HasKey("Id"); - b.HasIndex("ShowId"); - b.ToTable("Trucks"); }); @@ -1003,11 +1151,13 @@ namespace PyroFetes.Migrations b.Property("Email") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("Fonction") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("Name") .IsRequired() @@ -1016,11 +1166,13 @@ namespace PyroFetes.Migrations b.Property("Password") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); b.Property("Salt") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.HasKey("Id"); @@ -1037,11 +1189,13 @@ namespace PyroFetes.Migrations b.Property("Address") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("City") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("Current") .HasColumnType("int"); @@ -1067,42 +1221,22 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.WarehouseProduct", b => { - b.Property("Quantity") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Quantity")); - b.Property("ProductId") .HasColumnType("int"); b.Property("WarehouseId") .HasColumnType("int"); - b.HasKey("Quantity"); + b.Property("Quantity") + .HasColumnType("int"); - b.HasIndex("ProductId"); + b.HasKey("ProductId", "WarehouseId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseProducts"); }); - modelBuilder.Entity("ShowStaff", b => - { - b.Property("ShowsId") - .HasColumnType("int"); - - b.Property("StaffId") - .HasColumnType("int"); - - b.HasKey("ShowsId", "StaffId"); - - b.HasIndex("StaffId"); - - b.ToTable("ShowStaff"); - }); - modelBuilder.Entity("PyroFetes.Models.Brand", b => { b.HasOne("PyroFetes.Models.Product", "Product") @@ -1114,55 +1248,77 @@ namespace PyroFetes.Migrations b.Navigation("Product"); }); - modelBuilder.Entity("PyroFetes.Models.Contact", b => - { - b.HasOne("PyroFetes.Models.Communication", "Communication") - .WithMany() - .HasForeignKey("CommunicationId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Communication"); - }); - - modelBuilder.Entity("PyroFetes.Models.Customer", b => + modelBuilder.Entity("PyroFetes.Models.Communication", b => { b.HasOne("PyroFetes.Models.Contact", "Contact") - .WithMany() + .WithMany("Communications") .HasForeignKey("ContactId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.Navigation("Contact"); + }); + + modelBuilder.Entity("PyroFetes.Models.Contact", b => + { + b.HasOne("PyroFetes.Models.Customer", "Customer") + .WithMany("Contacts") + .HasForeignKey("CustomerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Customer"); + }); + + modelBuilder.Entity("PyroFetes.Models.ContactServiceProvider", b => + { + b.HasOne("PyroFetes.Models.Contact", "Contact") + .WithMany("ContactServiceProviders") + .HasForeignKey("ContactId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.ServiceProvider", "ServiceProvider") + .WithMany("ContactServiceProviders") + .HasForeignKey("ServiceProviderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Contact"); + + b.Navigation("ServiceProvider"); + }); + + modelBuilder.Entity("PyroFetes.Models.Contract", b => + { + b.HasOne("PyroFetes.Models.ServiceProvider", "ServiceProvider") + .WithMany("Contracts") + .HasForeignKey("ServiceProviderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("Contracts") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ServiceProvider"); + + b.Navigation("Show"); + }); + + modelBuilder.Entity("PyroFetes.Models.Customer", b => + { b.HasOne("PyroFetes.Models.CustomerType", "CustomerType") .WithMany("Customers") .HasForeignKey("CustomerTypeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.Navigation("Contact"); - b.Navigation("CustomerType"); }); - modelBuilder.Entity("PyroFetes.Models.CustomerContact", b => - { - b.HasOne("PyroFetes.Models.Contact", "Contact") - .WithMany("CustomerContacts") - .HasForeignKey("ContactId") - .OnDelete(DeleteBehavior.NoAction) - .IsRequired(); - - b.HasOne("PyroFetes.Models.Customer", "Customer") - .WithMany("CustomerContacts") - .HasForeignKey("CustomerId") - .OnDelete(DeleteBehavior.NoAction) - .IsRequired(); - - b.Navigation("Contact"); - - b.Navigation("Customer"); - }); - modelBuilder.Entity("PyroFetes.Models.DeliveryNote", b => { b.HasOne("PyroFetes.Models.Deliverer", "Deliverer") @@ -1174,10 +1330,21 @@ namespace PyroFetes.Migrations b.Navigation("Deliverer"); }); + modelBuilder.Entity("PyroFetes.Models.ExperienceLevel", b => + { + b.HasOne("PyroFetes.Models.Staff", "Staff") + .WithMany("ExperienceLevels") + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Staff"); + }); + modelBuilder.Entity("PyroFetes.Models.Material", b => { b.HasOne("PyroFetes.Models.Warehouse", "Warehouse") - .WithMany("Materials") + .WithMany() .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1185,6 +1352,25 @@ namespace PyroFetes.Migrations b.Navigation("Warehouse"); }); + modelBuilder.Entity("PyroFetes.Models.MaterialWarehouse", b => + { + b.HasOne("PyroFetes.Models.Material", "Material") + .WithMany("MaterialWarehouses") + .HasForeignKey("MaterialId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Warehouse", "Warehouse") + .WithMany("MaterialWarehouses") + .HasForeignKey("WarehouseId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Material"); + + b.Navigation("Warehouse"); + }); + modelBuilder.Entity("PyroFetes.Models.Movement", b => { b.HasOne("PyroFetes.Models.Warehouse", "DestinationWarehouse") @@ -1192,12 +1378,6 @@ namespace PyroFetes.Migrations .HasForeignKey("DestinationWarehouseId") .OnDelete(DeleteBehavior.Restrict); - b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany("Movements") - .HasForeignKey("ProductId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - b.HasOne("PyroFetes.Models.Warehouse", "SourceWarehouse") .WithMany("MovementsSource") .HasForeignKey("SourceWarehouseId") @@ -1205,21 +1385,19 @@ namespace PyroFetes.Migrations b.Navigation("DestinationWarehouse"); - b.Navigation("Product"); - b.Navigation("SourceWarehouse"); }); modelBuilder.Entity("PyroFetes.Models.Price", b => { b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("Prices") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Supplier", "Supplier") - .WithMany() + .WithMany("Prices") .HasForeignKey("SupplierId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1237,6 +1415,12 @@ namespace PyroFetes.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.HasOne("PyroFetes.Models.Movement", "Movement") + .WithMany("Products") + .HasForeignKey("MovementId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + b.HasOne("PyroFetes.Models.ProductCategory", "ProductCategory") .WithMany("Products") .HasForeignKey("ProductCategoryId") @@ -1245,19 +1429,21 @@ namespace PyroFetes.Migrations b.Navigation("Classification"); + b.Navigation("Movement"); + b.Navigation("ProductCategory"); }); modelBuilder.Entity("PyroFetes.Models.ProductColor", b => { b.HasOne("PyroFetes.Models.Color", "Color") - .WithMany() + .WithMany("ProductColors") .HasForeignKey("ColorId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("ProductColors") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1270,13 +1456,13 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.ProductDelivery", b => { b.HasOne("PyroFetes.Models.DeliveryNote", "DeliveryNote") - .WithMany() + .WithMany("ProductDeliveries") .HasForeignKey("DeliveryNoteId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("ProductDeliveries") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1289,13 +1475,13 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.ProductEffect", b => { b.HasOne("PyroFetes.Models.Effect", "Effect") - .WithMany() + .WithMany("ProductEffects") .HasForeignKey("EffectId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("ProductEffects") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1305,13 +1491,23 @@ namespace PyroFetes.Migrations b.Navigation("Product"); }); - modelBuilder.Entity("PyroFetes.Models.Provider", b => + modelBuilder.Entity("PyroFetes.Models.ProductTimecode", b => { - b.HasOne("PyroFetes.Models.ProviderType", "ProviderType") - .WithMany() - .HasForeignKey("ProviderTypeId"); + b.HasOne("PyroFetes.Models.Product", "Product") + .WithMany("ProductTimecodes") + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); - b.Navigation("ProviderType"); + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("ProductTimecodes") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + + b.Navigation("Show"); }); modelBuilder.Entity("PyroFetes.Models.ProviderContact", b => @@ -1322,7 +1518,7 @@ namespace PyroFetes.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("PyroFetes.Models.Provider", "Provider") + b.HasOne("PyroFetes.Models.ServiceProvider", "Provider") .WithMany() .HasForeignKey("ProviderId") .OnDelete(DeleteBehavior.Cascade) @@ -1336,13 +1532,13 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.PurchaseProduct", b => { b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("PurchaseProducts") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.PurchaseOrder", "PurchaseOrder") - .WithMany() + .WithMany("PurchaseProducts") .HasForeignKey("PurchaseOrderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1352,16 +1548,27 @@ namespace PyroFetes.Migrations b.Navigation("PurchaseOrder"); }); + modelBuilder.Entity("PyroFetes.Models.Quotation", b => + { + b.HasOne("PyroFetes.Models.Customer", "Customer") + .WithMany("Quotations") + .HasForeignKey("CustomerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Customer"); + }); + modelBuilder.Entity("PyroFetes.Models.QuotationProduct", b => { b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("QuotationProducts") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Quotation", "Quotation") - .WithMany() + .WithMany("QuotationProducts") .HasForeignKey("QuotationId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1371,27 +1578,106 @@ namespace PyroFetes.Migrations b.Navigation("Quotation"); }); + modelBuilder.Entity("PyroFetes.Models.ServiceProvider", b => + { + b.HasOne("PyroFetes.Models.ProviderType", "ProviderType") + .WithMany("ServiceProviders") + .HasForeignKey("ProviderTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ProviderType"); + }); + + modelBuilder.Entity("PyroFetes.Models.Show", b => + { + b.HasOne("PyroFetes.Models.City", "City") + .WithMany("Shows") + .HasForeignKey("CityId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("City"); + }); + + modelBuilder.Entity("PyroFetes.Models.ShowMaterial", b => + { + b.HasOne("PyroFetes.Models.Material", "Material") + .WithMany("ShowMaterials") + .HasForeignKey("MaterialId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("ShowMaterials") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Material"); + + b.Navigation("Show"); + }); + + modelBuilder.Entity("PyroFetes.Models.ShowStaff", b => + { + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("ShowStaffs") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Staff", "Staff") + .WithMany("ShowStaffs") + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Show"); + + b.Navigation("Staff"); + }); + + modelBuilder.Entity("PyroFetes.Models.ShowTruck", b => + { + b.HasOne("PyroFetes.Models.Show", "Show") + .WithMany("ShowTrucks") + .HasForeignKey("ShowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PyroFetes.Models.Truck", "Truck") + .WithMany("ShowTrucks") + .HasForeignKey("TruckId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Show"); + + b.Navigation("Truck"); + }); + modelBuilder.Entity("PyroFetes.Models.Sound", b => { - b.HasOne("PyroFetes.Models.SoundCategory", "Category") + b.HasOne("PyroFetes.Models.SoundCategory", "SoundCategory") .WithMany("Sounds") .HasForeignKey("SoundCategoryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.Navigation("Category"); + b.Navigation("SoundCategory"); }); modelBuilder.Entity("PyroFetes.Models.SoundTimecode", b => { b.HasOne("PyroFetes.Models.Show", "Show") - .WithMany("SoundCues") + .WithMany("SoundTimecodes") .HasForeignKey("ShowId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Sound", "Sound") - .WithMany("ShowPlacements") + .WithMany("SoundTimecodes") .HasForeignKey("SoundId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1404,13 +1690,13 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.StaffAvailability", b => { b.HasOne("PyroFetes.Models.Availability", "Availability") - .WithMany() + .WithMany("StaffAvailabilities") .HasForeignKey("AvailabilityId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Staff", "Staff") - .WithMany() + .WithMany("StaffAvailabilities") .HasForeignKey("StaffId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1423,13 +1709,13 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.StaffContact", b => { b.HasOne("PyroFetes.Models.Contact", "Contact") - .WithMany() + .WithMany("StaffContacts") .HasForeignKey("ContactId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Staff", "Staff") - .WithMany() + .WithMany("StaffContacts") .HasForeignKey("StaffId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1442,13 +1728,13 @@ namespace PyroFetes.Migrations modelBuilder.Entity("PyroFetes.Models.StaffHistoryOfApproval", b => { b.HasOne("PyroFetes.Models.HistoryOfApproval", "HistoryOfApproval") - .WithMany() + .WithMany("StaffHistoryOfApprovals") .HasForeignKey("HistoryOfApprovalId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Staff", "Staff") - .WithMany() + .WithMany("StaffHistoryOfApprovals") .HasForeignKey("StaffId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1458,27 +1744,16 @@ namespace PyroFetes.Migrations b.Navigation("Staff"); }); - modelBuilder.Entity("PyroFetes.Models.Truck", b => - { - b.HasOne("PyroFetes.Models.Show", "Show") - .WithMany("Trucks") - .HasForeignKey("ShowId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Show"); - }); - modelBuilder.Entity("PyroFetes.Models.WarehouseProduct", b => { b.HasOne("PyroFetes.Models.Product", "Product") - .WithMany() + .WithMany("WarehouseProducts") .HasForeignKey("ProductId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("PyroFetes.Models.Warehouse", "Warehouse") - .WithMany() + .WithMany("WarehouseProducts") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -1488,19 +1763,14 @@ namespace PyroFetes.Migrations b.Navigation("Warehouse"); }); - modelBuilder.Entity("ShowStaff", b => + modelBuilder.Entity("PyroFetes.Models.Availability", b => { - b.HasOne("PyroFetes.Models.Show", null) - .WithMany() - .HasForeignKey("ShowsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.Navigation("StaffAvailabilities"); + }); - b.HasOne("PyroFetes.Models.Staff", null) - .WithMany() - .HasForeignKey("StaffId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + modelBuilder.Entity("PyroFetes.Models.City", b => + { + b.Navigation("Shows"); }); modelBuilder.Entity("PyroFetes.Models.Classification", b => @@ -1508,14 +1778,25 @@ namespace PyroFetes.Migrations b.Navigation("Products"); }); + modelBuilder.Entity("PyroFetes.Models.Color", b => + { + b.Navigation("ProductColors"); + }); + modelBuilder.Entity("PyroFetes.Models.Contact", b => { - b.Navigation("CustomerContacts"); + b.Navigation("Communications"); + + b.Navigation("ContactServiceProviders"); + + b.Navigation("StaffContacts"); }); modelBuilder.Entity("PyroFetes.Models.Customer", b => { - b.Navigation("CustomerContacts"); + b.Navigation("Contacts"); + + b.Navigation("Quotations"); }); modelBuilder.Entity("PyroFetes.Models.CustomerType", b => @@ -1528,11 +1809,52 @@ namespace PyroFetes.Migrations b.Navigation("DeliveryNotes"); }); + modelBuilder.Entity("PyroFetes.Models.DeliveryNote", b => + { + b.Navigation("ProductDeliveries"); + }); + + modelBuilder.Entity("PyroFetes.Models.Effect", b => + { + b.Navigation("ProductEffects"); + }); + + modelBuilder.Entity("PyroFetes.Models.HistoryOfApproval", b => + { + b.Navigation("StaffHistoryOfApprovals"); + }); + + modelBuilder.Entity("PyroFetes.Models.Material", b => + { + b.Navigation("MaterialWarehouses"); + + b.Navigation("ShowMaterials"); + }); + + modelBuilder.Entity("PyroFetes.Models.Movement", b => + { + b.Navigation("Products"); + }); + modelBuilder.Entity("PyroFetes.Models.Product", b => { b.Navigation("Brands"); - b.Navigation("Movements"); + b.Navigation("Prices"); + + b.Navigation("ProductColors"); + + b.Navigation("ProductDeliveries"); + + b.Navigation("ProductEffects"); + + b.Navigation("ProductTimecodes"); + + b.Navigation("PurchaseProducts"); + + b.Navigation("QuotationProducts"); + + b.Navigation("WarehouseProducts"); }); modelBuilder.Entity("PyroFetes.Models.ProductCategory", b => @@ -1540,16 +1862,46 @@ namespace PyroFetes.Migrations b.Navigation("Products"); }); + modelBuilder.Entity("PyroFetes.Models.ProviderType", b => + { + b.Navigation("ServiceProviders"); + }); + + modelBuilder.Entity("PyroFetes.Models.PurchaseOrder", b => + { + b.Navigation("PurchaseProducts"); + }); + + modelBuilder.Entity("PyroFetes.Models.Quotation", b => + { + b.Navigation("QuotationProducts"); + }); + + modelBuilder.Entity("PyroFetes.Models.ServiceProvider", b => + { + b.Navigation("ContactServiceProviders"); + + b.Navigation("Contracts"); + }); + modelBuilder.Entity("PyroFetes.Models.Show", b => { - b.Navigation("SoundCues"); + b.Navigation("Contracts"); - b.Navigation("Trucks"); + b.Navigation("ProductTimecodes"); + + b.Navigation("ShowMaterials"); + + b.Navigation("ShowStaffs"); + + b.Navigation("ShowTrucks"); + + b.Navigation("SoundTimecodes"); }); modelBuilder.Entity("PyroFetes.Models.Sound", b => { - b.Navigation("ShowPlacements"); + b.Navigation("SoundTimecodes"); }); modelBuilder.Entity("PyroFetes.Models.SoundCategory", b => @@ -1557,13 +1909,38 @@ namespace PyroFetes.Migrations b.Navigation("Sounds"); }); + modelBuilder.Entity("PyroFetes.Models.Staff", b => + { + b.Navigation("ExperienceLevels"); + + b.Navigation("ShowStaffs"); + + b.Navigation("StaffAvailabilities"); + + b.Navigation("StaffContacts"); + + b.Navigation("StaffHistoryOfApprovals"); + }); + + modelBuilder.Entity("PyroFetes.Models.Supplier", b => + { + b.Navigation("Prices"); + }); + + modelBuilder.Entity("PyroFetes.Models.Truck", b => + { + b.Navigation("ShowTrucks"); + }); + modelBuilder.Entity("PyroFetes.Models.Warehouse", b => { - b.Navigation("Materials"); + b.Navigation("MaterialWarehouses"); b.Navigation("MovementsDestination"); b.Navigation("MovementsSource"); + + b.Navigation("WarehouseProducts"); }); #pragma warning restore 612, 618 } diff --git a/PyroFetes/Models/MaterialWarehouse.cs b/PyroFetes/Models/MaterialWarehouse.cs index 6f797b9..4f49ba9 100644 --- a/PyroFetes/Models/MaterialWarehouse.cs +++ b/PyroFetes/Models/MaterialWarehouse.cs @@ -1,7 +1,9 @@ using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; namespace PyroFetes.Models; +[PrimaryKey(nameof(MaterialId), nameof(WarehouseId))] public class MaterialWarehouse { [Required] public int MaterialId { get; set; } diff --git a/PyroFetes/PyroFetesDbContext.cs b/PyroFetes/PyroFetesDbContext.cs index 9c25dd8..b5ce8c7 100644 --- a/PyroFetes/PyroFetesDbContext.cs +++ b/PyroFetes/PyroFetesDbContext.cs @@ -77,5 +77,17 @@ public class PyroFetesDbContext : DbContext .WithMany(w => w.MovementsDestination) .HasForeignKey(m => m.DestinationWarehouseId) .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(mw => mw.Material) + .WithMany(m => m.MaterialWarehouses) + .HasForeignKey(mw => mw.MaterialId) + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(mw => mw.Warehouse) + .WithMany(w => w.MaterialWarehouses) + .HasForeignKey(mw => mw.WarehouseId) + .OnDelete(DeleteBehavior.Restrict); } } \ No newline at end of file