diff --git a/PyroFetes/DTO/Brand/Request/CreateBrandDto.cs b/PyroFetes/DTO/Brand/Request/CreateBrandDto.cs new file mode 100644 index 0000000..bf455c5 --- /dev/null +++ b/PyroFetes/DTO/Brand/Request/CreateBrandDto.cs @@ -0,0 +1,7 @@ +namespace API.DTO.Brand.Request; + +public class CreateBrandDto +{ + public string? Name { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/DTO/Brand/Request/UpdateBrandDto.cs b/PyroFetes/DTO/Brand/Request/UpdateBrandDto.cs new file mode 100644 index 0000000..4773281 --- /dev/null +++ b/PyroFetes/DTO/Brand/Request/UpdateBrandDto.cs @@ -0,0 +1,8 @@ +namespace API.DTO.Brand.Request; + +public class UpdateBrandDto +{ + public int Id { get; set; } + public string? Name { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/DTO/Brand/Response/GetBrandDto.cs b/PyroFetes/DTO/Brand/Response/GetBrandDto.cs new file mode 100644 index 0000000..4e12c35 --- /dev/null +++ b/PyroFetes/DTO/Brand/Response/GetBrandDto.cs @@ -0,0 +1,8 @@ +namespace API.DTO.Brand.Response; + +public class GetBrandDto +{ + public int Id { get; set; } + public string? Name { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/DTO/Classification/Request/CreateClassificationDto.cs b/PyroFetes/DTO/Classification/Request/CreateClassificationDto.cs new file mode 100644 index 0000000..a351241 --- /dev/null +++ b/PyroFetes/DTO/Classification/Request/CreateClassificationDto.cs @@ -0,0 +1,7 @@ +namespace API.DTO.Classification.Request; + +public class CreateClassificationDto +{ + public string? Label { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/DTO/Classification/Request/UpdateClassificationDto.cs b/PyroFetes/DTO/Classification/Request/UpdateClassificationDto.cs new file mode 100644 index 0000000..2ecc0a6 --- /dev/null +++ b/PyroFetes/DTO/Classification/Request/UpdateClassificationDto.cs @@ -0,0 +1,8 @@ +namespace API.DTO.Classification.Request; + +public class UpdateClassificationDto +{ + public int Id { get; set; } + public string? Label { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/DTO/Classification/Response/GetClassificationDto.cs b/PyroFetes/DTO/Classification/Response/GetClassificationDto.cs new file mode 100644 index 0000000..f86f615 --- /dev/null +++ b/PyroFetes/DTO/Classification/Response/GetClassificationDto.cs @@ -0,0 +1,8 @@ +namespace API.DTO.Classification.Response; + +public class GetClassificationDto +{ + public int Id { get; set; } + public string? Label { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/DTO/Color/Request/CreateColorDto.cs b/PyroFetes/DTO/Color/Request/CreateColorDto.cs new file mode 100644 index 0000000..943d708 --- /dev/null +++ b/PyroFetes/DTO/Color/Request/CreateColorDto.cs @@ -0,0 +1,6 @@ +namespace API.DTO.Color.Request; + +public class CreateColorDto +{ + public string? Label { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Color/Request/UpdateColorDto.cs b/PyroFetes/DTO/Color/Request/UpdateColorDto.cs new file mode 100644 index 0000000..3a3b3c5 --- /dev/null +++ b/PyroFetes/DTO/Color/Request/UpdateColorDto.cs @@ -0,0 +1,7 @@ +namespace API.DTO.Color.Request; + +public class UpdateColorDto +{ + public int Id { get; set; } + public string? Label { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Color/Response/GetColorDto.cs b/PyroFetes/DTO/Color/Response/GetColorDto.cs new file mode 100644 index 0000000..61b49ac --- /dev/null +++ b/PyroFetes/DTO/Color/Response/GetColorDto.cs @@ -0,0 +1,7 @@ +namespace API.DTO.Color.Response; + +public class GetColorDto +{ + public int Id { get; set; } + public string? Label { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Effect/Request/CreateEffectDto.cs b/PyroFetes/DTO/Effect/Request/CreateEffectDto.cs new file mode 100644 index 0000000..43621e6 --- /dev/null +++ b/PyroFetes/DTO/Effect/Request/CreateEffectDto.cs @@ -0,0 +1,6 @@ +namespace API.DTO.Effect.Request; + +public class CreateEffectDto +{ + public string? Label { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Effect/Request/UpdateEffectDto.cs b/PyroFetes/DTO/Effect/Request/UpdateEffectDto.cs new file mode 100644 index 0000000..40a2957 --- /dev/null +++ b/PyroFetes/DTO/Effect/Request/UpdateEffectDto.cs @@ -0,0 +1,7 @@ +namespace API.DTO.Effect.Request; + +public class UpdateEffectDto +{ + public int Id { get; set; } + public string? Label { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Effect/Response/GetEffectDto.cs b/PyroFetes/DTO/Effect/Response/GetEffectDto.cs new file mode 100644 index 0000000..d37051d --- /dev/null +++ b/PyroFetes/DTO/Effect/Response/GetEffectDto.cs @@ -0,0 +1,7 @@ +namespace API.DTO.Effect.Response; + +public class GetEffectDto +{ + public int Id { get; set; } + public string? Label { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Material/Request/CreateMaterialDto.cs b/PyroFetes/DTO/Material/Request/CreateMaterialDto.cs new file mode 100644 index 0000000..f85e178 --- /dev/null +++ b/PyroFetes/DTO/Material/Request/CreateMaterialDto.cs @@ -0,0 +1,7 @@ +namespace API.DTO.Material.Request; + +public class CreateMaterialDto +{ + public string? Label { get; set; } + public int Quantity { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Material/Request/UpdateMaterialDto.cs b/PyroFetes/DTO/Material/Request/UpdateMaterialDto.cs new file mode 100644 index 0000000..249223b --- /dev/null +++ b/PyroFetes/DTO/Material/Request/UpdateMaterialDto.cs @@ -0,0 +1,8 @@ +namespace API.DTO.Material.Request; + +public class UpdateMaterialDto +{ + public int Id { get; set; } + public string? Label { get; set; } + public int Quantity { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Material/Response/GetMaterialDto.cs b/PyroFetes/DTO/Material/Response/GetMaterialDto.cs new file mode 100644 index 0000000..6bf7a37 --- /dev/null +++ b/PyroFetes/DTO/Material/Response/GetMaterialDto.cs @@ -0,0 +1,8 @@ +namespace API.DTO.Material.Response; + +public class GetMaterialDto +{ + public int Id { get; set; } + public string? Label { get; set; } + public int Quantity { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Movement/Request/CreateMovementDto.cs b/PyroFetes/DTO/Movement/Request/CreateMovementDto.cs new file mode 100644 index 0000000..043b1e0 --- /dev/null +++ b/PyroFetes/DTO/Movement/Request/CreateMovementDto.cs @@ -0,0 +1,10 @@ +namespace API.DTO.Movement.Request; + +public class CreateMovementDto +{ + public DateTime Date { get; set; } + public DateTime Start {get; set;} + public DateTime Arrival {get; set;} + public int Quantity {get; set;} + +} \ No newline at end of file diff --git a/PyroFetes/DTO/Movement/Request/UpdateMovementDto.cs b/PyroFetes/DTO/Movement/Request/UpdateMovementDto.cs new file mode 100644 index 0000000..f932ec9 --- /dev/null +++ b/PyroFetes/DTO/Movement/Request/UpdateMovementDto.cs @@ -0,0 +1,11 @@ +namespace API.DTO.Movement.Request; + +public class UpdateMovementDto +{ + 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;} + +} \ No newline at end of file diff --git a/PyroFetes/DTO/Movement/Response/GetMovementDto.cs b/PyroFetes/DTO/Movement/Response/GetMovementDto.cs new file mode 100644 index 0000000..3d8f452 --- /dev/null +++ b/PyroFetes/DTO/Movement/Response/GetMovementDto.cs @@ -0,0 +1,11 @@ +namespace API.DTO.Movement.Response; + +public class GetMovementDto +{ + 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;} + +} \ No newline at end of file diff --git a/PyroFetes/DTO/Product/Request/CreateProductDto.cs b/PyroFetes/DTO/Product/Request/CreateProductDto.cs new file mode 100644 index 0000000..137eb75 --- /dev/null +++ b/PyroFetes/DTO/Product/Request/CreateProductDto.cs @@ -0,0 +1,18 @@ +namespace API.DTO.Product.Request; + +public class CreateProductDto +{ + 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; } + + public int ClassificationId { get; set;} + public int ProductCategoryId { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Product/Request/UpdateProductDto.cs b/PyroFetes/DTO/Product/Request/UpdateProductDto.cs new file mode 100644 index 0000000..b648fbb --- /dev/null +++ b/PyroFetes/DTO/Product/Request/UpdateProductDto.cs @@ -0,0 +1,18 @@ +namespace API.DTO.Product.Request; + +public class UpdateProductDto +{ + public int Id { get; set; } + public int Reference { 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; } + public int ClassificationId { get; set;} + public int ProductCategoryId { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Product/Response/GetProductDto.cs b/PyroFetes/DTO/Product/Response/GetProductDto.cs new file mode 100644 index 0000000..dd4a979 --- /dev/null +++ b/PyroFetes/DTO/Product/Response/GetProductDto.cs @@ -0,0 +1,20 @@ +namespace API.DTO.Product.Response; + +public class GetProductDto +{ + public int Id { get; set; } + public int Reference { 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; } + public int ClassificationId { get; set;} + public string? ClassificationLabel { get; set; } + public int ProductCategoryId { get; set; } + public string? ProductCategoryLabel { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/ProductCategory/Request/CreateProductCategoryDto.cs b/PyroFetes/DTO/ProductCategory/Request/CreateProductCategoryDto.cs new file mode 100644 index 0000000..cf5ebe9 --- /dev/null +++ b/PyroFetes/DTO/ProductCategory/Request/CreateProductCategoryDto.cs @@ -0,0 +1,6 @@ +namespace API.DTO.ProductCategory.Request; + +public class CreateProductCategoryDto +{ + public string? Label { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/ProductCategory/Request/UpdateProductCategoryDto.cs b/PyroFetes/DTO/ProductCategory/Request/UpdateProductCategoryDto.cs new file mode 100644 index 0000000..2856e23 --- /dev/null +++ b/PyroFetes/DTO/ProductCategory/Request/UpdateProductCategoryDto.cs @@ -0,0 +1,7 @@ +namespace API.DTO.ProductCategory.Request; + +public class UpdateProductCategoryDto +{ + public int Id { get; set; } + public string? Label { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/ProductCategory/Response/GetProductCategoryDto.cs b/PyroFetes/DTO/ProductCategory/Response/GetProductCategoryDto.cs new file mode 100644 index 0000000..ee64f0a --- /dev/null +++ b/PyroFetes/DTO/ProductCategory/Response/GetProductCategoryDto.cs @@ -0,0 +1,8 @@ +namespace API.DTO.ProductCategory.Response; + +public class GetProductCategoryDto +{ + public int Id { get; set; } + public string? Label { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/DTO/Supplier/Request/CreateSupplierDto.cs b/PyroFetes/DTO/Supplier/Request/CreateSupplierDto.cs new file mode 100644 index 0000000..25a94a4 --- /dev/null +++ b/PyroFetes/DTO/Supplier/Request/CreateSupplierDto.cs @@ -0,0 +1,11 @@ +namespace API.DTO.Supplier.Request; + +public class CreateSupplierDto +{ + 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/DTO/Supplier/Request/UpdateSupplierDto.cs b/PyroFetes/DTO/Supplier/Request/UpdateSupplierDto.cs new file mode 100644 index 0000000..20ae5f0 --- /dev/null +++ b/PyroFetes/DTO/Supplier/Request/UpdateSupplierDto.cs @@ -0,0 +1,12 @@ +namespace API.DTO.Supplier.Request; + +public class UpdateSupplierDto +{ + 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/DTO/Supplier/Response/GetSupplierDto.cs b/PyroFetes/DTO/Supplier/Response/GetSupplierDto.cs new file mode 100644 index 0000000..ddc2365 --- /dev/null +++ b/PyroFetes/DTO/Supplier/Response/GetSupplierDto.cs @@ -0,0 +1,12 @@ +namespace API.DTO.Supplier.Response; + +public class GetSupplierDto +{ + 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/DTO/Warehouse/Request/CreateWarehouseDto.cs b/PyroFetes/DTO/Warehouse/Request/CreateWarehouseDto.cs new file mode 100644 index 0000000..9f2e7cb --- /dev/null +++ b/PyroFetes/DTO/Warehouse/Request/CreateWarehouseDto.cs @@ -0,0 +1,12 @@ +namespace API.DTO.Warehouse.Request; + +public class CreateWarehouseDto +{ + 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; } +} diff --git a/PyroFetes/DTO/Warehouse/Request/UpdateWarehouseDto.cs b/PyroFetes/DTO/Warehouse/Request/UpdateWarehouseDto.cs new file mode 100644 index 0000000..a154737 --- /dev/null +++ b/PyroFetes/DTO/Warehouse/Request/UpdateWarehouseDto.cs @@ -0,0 +1,13 @@ +namespace API.DTO.Warehouse.Request; + +public class UpdateWarehouseDto +{ + 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; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Warehouse/Response/GetWarehouseDto.cs b/PyroFetes/DTO/Warehouse/Response/GetWarehouseDto.cs new file mode 100644 index 0000000..77df53c --- /dev/null +++ b/PyroFetes/DTO/Warehouse/Response/GetWarehouseDto.cs @@ -0,0 +1,13 @@ +namespace API.DTO.Warehouse.Response; + +public class GetWarehouseDto +{ + 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; } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Brand/CreateBrandEndpoint.cs b/PyroFetes/Endpoints/Brand/CreateBrandEndpoint.cs new file mode 100644 index 0000000..19756c9 --- /dev/null +++ b/PyroFetes/Endpoints/Brand/CreateBrandEndpoint.cs @@ -0,0 +1,35 @@ +using API.DTO.Brand.Request; +using API.DTO.Brand.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.Brand; + +public class CreateBrandEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Post("/api/brands"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CreateBrandDto req, CancellationToken ct) + { + + Models.Brand brand = new () + { + Name = req.Name + }; + + pyrofetesdbcontext.Brands.Add(brand); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + Console.WriteLine("Marque créé avec succès !"); + + GetBrandDto responseDto = new () + { + Name = req.Name + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Brand/DeleteBrandEndpoint.cs b/PyroFetes/Endpoints/Brand/DeleteBrandEndpoint.cs new file mode 100644 index 0000000..eb4fa26 --- /dev/null +++ b/PyroFetes/Endpoints/Brand/DeleteBrandEndpoint.cs @@ -0,0 +1,38 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Brand; + +public class DeleteBrandRequest +{ + public int Id { get; set; } +} + +public class DeleteBrandEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Delete("/api/brands/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(DeleteBrandRequest req, CancellationToken ct) + { + + Models.Brand? brandToDelete = await pyrofetesdbcontext + .Brands + .SingleOrDefaultAsync(a => a.Id == req.Id, cancellationToken: ct); + + if (brandToDelete == null) + { + Console.WriteLine($"Aucune marque avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + pyrofetesdbcontext.Brands.Remove(brandToDelete); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + await Send.NoContentAsync(ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Brand/GetAllBrandsEndpoint.cs b/PyroFetes/Endpoints/Brand/GetAllBrandsEndpoint.cs new file mode 100644 index 0000000..2f7be29 --- /dev/null +++ b/PyroFetes/Endpoints/Brand/GetAllBrandsEndpoint.cs @@ -0,0 +1,28 @@ +using API.DTO.Brand.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Brand; + +public class GetAllBrandsEndpoint(PyroFetesDbContext pyrofetesdbcontext) : EndpointWithoutRequest> +{ + public override void Configure() + { + Get("/api/brands"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CancellationToken ct) + { + + List responseDto = await pyrofetesdbcontext.Brands + .Select(a => new GetBrandDto + { + Id = a.Id, + Name = a.Name, + } + ).ToListAsync(ct); + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Brand/GetBrandEndpoint.cs b/PyroFetes/Endpoints/Brand/GetBrandEndpoint.cs new file mode 100644 index 0000000..0e8dc22 --- /dev/null +++ b/PyroFetes/Endpoints/Brand/GetBrandEndpoint.cs @@ -0,0 +1,42 @@ +using API.DTO.Brand.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Brand; + +public class GetBrandRequest +{ + public int Id { get; set; } +} + +public class GetBrandEndpoint(PyroFetesDbContext pyrofetesdbcontext) :Endpoint +{ + public override void Configure() + { + Get("/api/brands/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(GetBrandRequest req, CancellationToken ct) + { + + Models.Brand? brand = await pyrofetesdbcontext + .Brands + .SingleOrDefaultAsync(a => a.Id == req.Id, cancellationToken: ct); + + if (brand == null) + { + Console.WriteLine($"Aucune marque avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + GetBrandDto responseDto = new() + { + Id = req.Id, + Name = brand.Name + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Brand/UpdateBrandEndpoint.cs b/PyroFetes/Endpoints/Brand/UpdateBrandEndpoint.cs new file mode 100644 index 0000000..4e3b63f --- /dev/null +++ b/PyroFetes/Endpoints/Brand/UpdateBrandEndpoint.cs @@ -0,0 +1,34 @@ +using API.DTO.Brand.Request; +using API.DTO.Brand.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.Brand; + +public class UpdateBrandEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Post("/api/brands"); + AllowAnonymous(); + } + + public override async Task HandleAsync(UpdateBrandDto req, CancellationToken ct) + { + + Models.Brand brand = new() + { + Name = req.Name + }; + pyrofetesdbcontext.Add(brand); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + GetBrandDto response = new() + { + Id = req.Id, + Name = req.Name + }; + + await Send.OkAsync(response, ct); + + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Classification/CreateClassificationEndpoint.cs b/PyroFetes/Endpoints/Classification/CreateClassificationEndpoint.cs new file mode 100644 index 0000000..34184dc --- /dev/null +++ b/PyroFetes/Endpoints/Classification/CreateClassificationEndpoint.cs @@ -0,0 +1,35 @@ +using API.DTO.Classification.Request; +using API.DTO.Classification.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.Classification; + +public class CreateClassificationEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Post("/api/classifications"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CreateClassificationDto req, CancellationToken ct) + { + + Models.Classification classification = new () + { + Label = req.Label + }; + + pyrofetesdbcontext.Classifications.Add(classification); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + Console.WriteLine("Classification créée avec succès !"); + + GetClassificationDto responseDto = new () + { + Label = req.Label + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Classification/DeleteClassificationEndpoint.cs b/PyroFetes/Endpoints/Classification/DeleteClassificationEndpoint.cs new file mode 100644 index 0000000..0982278 --- /dev/null +++ b/PyroFetes/Endpoints/Classification/DeleteClassificationEndpoint.cs @@ -0,0 +1,38 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Classification; + +public class DeleteClassificationRequest +{ + public int Id { get; set; } +} + +public class DeleteClassificationEndpoint(PyroFetesDbContext libraryDbContext) : Endpoint +{ + public override void Configure() + { + Delete("/api/classifications/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(DeleteClassificationRequest req, CancellationToken ct) + { + + Models.Classification? classificationToDelete = await libraryDbContext + .Classifications + .SingleOrDefaultAsync(a => a.Id == req.Id, cancellationToken: ct); + + if (classificationToDelete == null) + { + Console.WriteLine($"Aucune classification avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + libraryDbContext.Classifications.Remove(classificationToDelete); + await libraryDbContext.SaveChangesAsync(ct); + + await Send.NoContentAsync(ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Classification/GetAllClassificationsEndpoint.cs b/PyroFetes/Endpoints/Classification/GetAllClassificationsEndpoint.cs new file mode 100644 index 0000000..b96ab3a --- /dev/null +++ b/PyroFetes/Endpoints/Classification/GetAllClassificationsEndpoint.cs @@ -0,0 +1,28 @@ +using API.DTO.Classification.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Classification; + +public class GetAllClassificationsEndpoint(PyroFetesDbContext pyrofetesdbcontext) : EndpointWithoutRequest> +{ + public override void Configure() + { + Get("/api/classifications"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CancellationToken ct) + { + + List responseDto = await pyrofetesdbcontext.Classifications + .Select(a => new GetClassificationDto + { + Id = a.Id, + Label = a.Label, + } + ).ToListAsync(ct); + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Classification/GetClassificationEndpoint.cs b/PyroFetes/Endpoints/Classification/GetClassificationEndpoint.cs new file mode 100644 index 0000000..fd7dafd --- /dev/null +++ b/PyroFetes/Endpoints/Classification/GetClassificationEndpoint.cs @@ -0,0 +1,42 @@ +using API.DTO.Classification.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Classification; + +public class GetClassificationRequest +{ + public int Id { get; set; } +} + +public class GetClassificationEndpoint(PyroFetesDbContext pyrofetesdbcontext) :Endpoint +{ + public override void Configure() + { + Get("/api/classifications/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(GetClassificationRequest req, CancellationToken ct) + { + + Models.Classification? classification = await pyrofetesdbcontext + .Classifications + .SingleOrDefaultAsync(a => a.Id == req.Id, cancellationToken: ct); + + if (classification == null) + { + Console.WriteLine($"Aucune classification avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + GetClassificationDto responseDto = new() + { + Id = req.Id, + Label = classification.Label + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Classification/UpdateClassificationEndpoint.cs b/PyroFetes/Endpoints/Classification/UpdateClassificationEndpoint.cs new file mode 100644 index 0000000..ba1d0d3 --- /dev/null +++ b/PyroFetes/Endpoints/Classification/UpdateClassificationEndpoint.cs @@ -0,0 +1,34 @@ +using API.DTO.Classification.Request; +using API.DTO.Classification.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.Classification; + +public class UpdateClassificationEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Post("/api/classifications"); + AllowAnonymous(); + } + + public override async Task HandleAsync(UpdateClassificationDto req, CancellationToken ct) + { + + Models.Classification classification = new() + { + Label = req.Label + }; + pyrofetesdbcontext.Add(classification); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + GetClassificationDto response = new() + { + Id = req.Id, + Label = req.Label + }; + + await Send.OkAsync(response, ct); + + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Movement/CreateMovementEndpoint.cs b/PyroFetes/Endpoints/Movement/CreateMovementEndpoint.cs new file mode 100644 index 0000000..d8e838f --- /dev/null +++ b/PyroFetes/Endpoints/Movement/CreateMovementEndpoint.cs @@ -0,0 +1,41 @@ +using API.DTO.Movement.Request; +using API.DTO.Movement.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.Movement; + +public class CreateMovementEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Post("/api/movements"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CreateMovementDto req, CancellationToken ct) + { + + Models.Movement movement = new () + { + Date = req.Date, + Start = req.Start, + Arrival = req.Arrival, + Quantity = req.Quantity + }; + + pyrofetesdbcontext.Movements.Add(movement); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + Console.WriteLine("Movement créée avec succès !"); + + GetMovementDto responseDto = new () + { + Date = req.Date, + Start = req.Start, + Arrival = req.Arrival, + Quantity = req.Quantity + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Movement/DeleteMovementEndpoint.cs b/PyroFetes/Endpoints/Movement/DeleteMovementEndpoint.cs new file mode 100644 index 0000000..c49bd04 --- /dev/null +++ b/PyroFetes/Endpoints/Movement/DeleteMovementEndpoint.cs @@ -0,0 +1,38 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Movement; + +public class DeleteMovementRequest +{ + public int Id { get; set; } +} + +public class DeleteMovementEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Delete("/api/Movements/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(DeleteMovementRequest req, CancellationToken ct) + { + + Models.Movement? movementToDelete = await pyrofetesdbcontext + .Movements + .SingleOrDefaultAsync(a => a.Id == req.Id, cancellationToken: ct); + + if (movementToDelete == null) + { + Console.WriteLine($"Aucune mouvement avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + pyrofetesdbcontext.Movements.Remove(movementToDelete); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + await Send.NoContentAsync(ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Movement/GetAllMovementsEndpoint.cs b/PyroFetes/Endpoints/Movement/GetAllMovementsEndpoint.cs new file mode 100644 index 0000000..da0d977 --- /dev/null +++ b/PyroFetes/Endpoints/Movement/GetAllMovementsEndpoint.cs @@ -0,0 +1,31 @@ +using API.DTO.Movement.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Movement; + +public class GetAllMovementsEndpoint(PyroFetesDbContext pyrofetesdbcontext) : EndpointWithoutRequest> +{ + public override void Configure() + { + Get("/api/movements"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CancellationToken ct) + { + + List responseDto = await pyrofetesdbcontext.Movements + .Select(a => new GetMovementDto + { + Id = a.Id, + Date = a.Date, + Start = a.Start, + Arrival = a.Arrival, + Quantity = a.Quantity + } + ).ToListAsync(ct); + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Movement/GetMovementEndpoint.cs b/PyroFetes/Endpoints/Movement/GetMovementEndpoint.cs new file mode 100644 index 0000000..33e60ec --- /dev/null +++ b/PyroFetes/Endpoints/Movement/GetMovementEndpoint.cs @@ -0,0 +1,45 @@ +using API.DTO.Movement.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Movement; + +public class GetMovementRequest +{ + public int Id { get; set; } +} + +public class GetMovementEndpoint(PyroFetesDbContext pyrofetesdbcontext) :Endpoint +{ + public override void Configure() + { + Get("/api/movements/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(GetMovementRequest req, CancellationToken ct) + { + + Models.Movement? movement = await pyrofetesdbcontext + .Movements + .SingleOrDefaultAsync(a => a.Id == req.Id, cancellationToken: ct); + + if (movement == null) + { + Console.WriteLine($"Aucun mouvement avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + GetMovementDto responseDto = new() + { + Id = req.Id, + Date = movement.Date, + Start = movement.Start, + Arrival = movement.Arrival, + Quantity = movement.Quantity + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Movement/UpdateMovementEndpoint.cs b/PyroFetes/Endpoints/Movement/UpdateMovementEndpoint.cs new file mode 100644 index 0000000..151ffc9 --- /dev/null +++ b/PyroFetes/Endpoints/Movement/UpdateMovementEndpoint.cs @@ -0,0 +1,40 @@ +using API.DTO.Movement.Request; +using API.DTO.Movement.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.Movement; + +public class UpdateMovementEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Post("/api/movements"); + AllowAnonymous(); + } + + public override async Task HandleAsync(UpdateMovementDto req, CancellationToken ct) + { + + Models.Movement movement = new() + { + Date = req.Date, + Start = req.Start, + Arrival = req.Arrival, + Quantity = req.Quantity + }; + pyrofetesdbcontext.Add(movement); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + GetMovementDto response = new() + { + Id = req.Id, + Date = req.Date, + Start = req.Start, + Arrival = req.Arrival, + Quantity = req.Quantity + }; + + await Send.OkAsync(response, ct); + + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Product/CreateProductEndpoint.cs b/PyroFetes/Endpoints/Product/CreateProductEndpoint.cs new file mode 100644 index 0000000..931e3e9 --- /dev/null +++ b/PyroFetes/Endpoints/Product/CreateProductEndpoint.cs @@ -0,0 +1,57 @@ +using API.DTO.Product.Request; +using API.DTO.Product.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.Product; + +public class CreateProductEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Post("/api/products"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CreateProductDto req, CancellationToken ct) + { + Models.Product product = new () + { + References = req.References, + Name = req.Name!, + Duration = req.Duration, + Caliber = req.Caliber, + ApprovalNumber = req.ApprovalNumber, + Weight = req.Weight, + Nec = req.Nec, + SellingPrice = req.SellingPrice, + Image = req.Image!, + Link = req.Link!, + ProductCategoryId = req.ProductCategoryId, + ClassificationId = req.ClassificationId + }; + + pyrofetesdbcontext.Products.Add(product); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + Console.WriteLine("Product créé avec succès !"); + + GetProductDto responseDto = new () + { + Id = product.Id, + Reference = req.References, + Name = req.Name, + Duration = req.Duration, + Caliber = req.Caliber, + ApprovalNumber = req.ApprovalNumber, + Weight = req.Weight, + Nec = req.Nec, + SellingPrice = req.SellingPrice, + Image = req.Image, + Link = req.Link, + ProductCategoryId = req.ProductCategoryId, + ClassificationId = req.ClassificationId + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Product/DeleteProductEndpoint.cs b/PyroFetes/Endpoints/Product/DeleteProductEndpoint.cs new file mode 100644 index 0000000..cf425ea --- /dev/null +++ b/PyroFetes/Endpoints/Product/DeleteProductEndpoint.cs @@ -0,0 +1,37 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Product; + +public class DeleteProductRequest +{ + public int Id { get; set; } +} + +public class DeleteProductEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Delete("/api/products/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(DeleteProductRequest req, CancellationToken ct) + { + Models.Product? productToDelete = await pyrofetesdbcontext + .Products + .SingleOrDefaultAsync(p => p.Id == req.Id, cancellationToken: ct); + + if (productToDelete == null) + { + Console.WriteLine($"Aucun produit avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + pyrofetesdbcontext.Products.Remove(productToDelete); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + await Send.NoContentAsync(ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Product/GetAllProductsEndpoint.cs b/PyroFetes/Endpoints/Product/GetAllProductsEndpoint.cs new file mode 100644 index 0000000..5a19eca --- /dev/null +++ b/PyroFetes/Endpoints/Product/GetAllProductsEndpoint.cs @@ -0,0 +1,40 @@ +using API.DTO.Product.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Product; + +public class GetAllProductsEndpoint(PyroFetesDbContext pyrofetesdbcontext) : EndpointWithoutRequest> +{ + public override void Configure() + { + Get("/api/products"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CancellationToken ct) + { + List responseDto = await pyrofetesdbcontext.Products + .Select(p => new GetProductDto() + { + Id = p.Id, + Reference = p.References, + Name = p.Name, + Duration = p.Duration, + Caliber = p.Caliber, + ApprovalNumber = p.ApprovalNumber, + Weight = p.Weight, + Nec = p.Nec, + SellingPrice = p.SellingPrice, + Image = p.Image, + Link = p.Link, + ClassificationId = p.ClassificationId, + ClassificationLabel = p.Classification!.Label, + ProductCategoryId = p.ProductCategoryId, + ProductCategoryLabel = p.ProductCategory!.Label, + } + ).ToListAsync(ct); + + await Send.OkAsync(responseDto, ct); + } +} diff --git a/PyroFetes/Endpoints/Product/GetProductEndpoint.cs b/PyroFetes/Endpoints/Product/GetProductEndpoint.cs new file mode 100644 index 0000000..2ca8089 --- /dev/null +++ b/PyroFetes/Endpoints/Product/GetProductEndpoint.cs @@ -0,0 +1,55 @@ +using API.DTO.Product.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Product; + +public class GetProductRequest +{ + public int Id { get; set; } +} + + +public class GetProductEndpoint(PyroFetesDbContext pyrofetesdbcontext) :Endpoint +{ + public override void Configure() + { + Get("/api/product/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(GetProductRequest req, CancellationToken ct) + { + Models.Product? product = await pyrofetesdbcontext + .Products.Include(product => product.Classification).Include(product => product.ProductCategory) + .SingleOrDefaultAsync(p => p.Id == req.Id, cancellationToken: ct); + + if (product == null) + { + Console.WriteLine($"Aucun produit avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + GetProductDto responseDto = new() + { + Id = product.Id, + Reference = product.References, + Name = product.Name, + Duration = product.Duration, + Caliber = product.Caliber, + ApprovalNumber = product.ApprovalNumber, + Weight = product.Weight, + Nec = product.Nec, + SellingPrice = product.SellingPrice, + Image = product.Image, + Link = product.Link, + ClassificationId = product.ClassificationId, + ClassificationLabel = product.Classification!.Label, + ProductCategoryId = product.ProductCategoryId, + ProductCategoryLabel = product.ProductCategory!.Label, + }; + + await Send.OkAsync(responseDto, ct); + } +} diff --git a/PyroFetes/Endpoints/Product/UpdateProductEndpoint.cs b/PyroFetes/Endpoints/Product/UpdateProductEndpoint.cs new file mode 100644 index 0000000..0c079ff --- /dev/null +++ b/PyroFetes/Endpoints/Product/UpdateProductEndpoint.cs @@ -0,0 +1,58 @@ +using API.DTO.Product.Request; +using API.DTO.Product.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Product; + +public class UpdateProductEndpoint(PyroFetesDbContext pyrofetesdbcontext) :Endpoint +{ + public override void Configure() + { + Put("/api/products/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(UpdateProductDto req, CancellationToken ct) + { + Models.Product? productToEdit = await pyrofetesdbcontext + .Products + .SingleOrDefaultAsync(p => p.Id == req.Id, cancellationToken: ct); + + if (productToEdit == null) + { + Console.WriteLine($"Aucun produit avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + productToEdit.References = req.Reference; + productToEdit.Name = req.Name; + productToEdit.Duration = req.Duration; + productToEdit.Caliber = req.Caliber; + productToEdit.ApprovalNumber = req.ApprovalNumber; + productToEdit.Weight = req.Weight; + productToEdit.Nec = req.Nec; + productToEdit.SellingPrice = req.SellingPrice; + productToEdit.Image = req.Image; + productToEdit.Link = req.Link; + await pyrofetesdbcontext.SaveChangesAsync(ct); + + GetProductDto responseDto = new() + { + Id = req.Id, + Reference = req.Reference, + Name = req.Name, + Duration = req.Duration, + Caliber = req.Caliber, + ApprovalNumber = req.ApprovalNumber, + Weight = req.Weight, + Nec = req.Nec, + SellingPrice = req.SellingPrice, + Image = req.Image, + Link = req.Link + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/ProductCategory/CreateProductCategoryEndpoint.cs b/PyroFetes/Endpoints/ProductCategory/CreateProductCategoryEndpoint.cs new file mode 100644 index 0000000..b1009f9 --- /dev/null +++ b/PyroFetes/Endpoints/ProductCategory/CreateProductCategoryEndpoint.cs @@ -0,0 +1,37 @@ +using API.DTO.ProductCategory.Request; +using API.DTO.ProductCategory.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.ProductCategory; + +public class CreateProductCategoryEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Post("/api/productcategories"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CreateProductCategoryDto req, CancellationToken ct) + { + Models.ProductCategory productCategory = new () + { + Label = req.Label, + + }; + + pyrofetesdbcontext.ProductCategories.Add(productCategory); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + Console.WriteLine("Category créé avec succès !"); + + GetProductCategoryDto responseDto = new () + { + Id = productCategory.Id, + Label = productCategory.Label + + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/ProductCategory/DeleteProductCategoryEndpoint.cs b/PyroFetes/Endpoints/ProductCategory/DeleteProductCategoryEndpoint.cs new file mode 100644 index 0000000..9b00562 --- /dev/null +++ b/PyroFetes/Endpoints/ProductCategory/DeleteProductCategoryEndpoint.cs @@ -0,0 +1,36 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.ProductCategory; + +public class DeleteProductCategoryRequest +{ + public int Id { get; set; } +} + +public class DeleteProductCategoryEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Delete("/api/productcategories/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(DeleteProductCategoryRequest req, CancellationToken ct) + { + Models.ProductCategory? productCategoryToDelete = await pyrofetesdbcontext + .ProductCategories + .SingleOrDefaultAsync(pc => pc.Id == req.Id, cancellationToken: ct); + + if (productCategoryToDelete == null) + { + await Send.NotFoundAsync(ct); + return; + } + + pyrofetesdbcontext.ProductCategories.Remove(productCategoryToDelete); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + await Send.NoContentAsync(ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/ProductCategory/GetAllProductCategoriesEndpoint.cs b/PyroFetes/Endpoints/ProductCategory/GetAllProductCategoriesEndpoint.cs new file mode 100644 index 0000000..d0039c6 --- /dev/null +++ b/PyroFetes/Endpoints/ProductCategory/GetAllProductCategoriesEndpoint.cs @@ -0,0 +1,27 @@ +using API.DTO.ProductCategory.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.ProductCategory; + +public class GetAllProductCategoriesEndpoint(PyroFetesDbContext pyrofetesdbcontext) : EndpointWithoutRequest> +{ + public override void Configure() + { + Get("/api/productcategories"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CancellationToken ct) + { + List responseDto = await pyrofetesdbcontext.ProductCategories + .Select(pc => new GetProductCategoryDto() + { + Id = pc.Id, + Label = pc.Label + } + ).ToListAsync(ct); + + await Send.OkAsync(responseDto, ct); + } +} diff --git a/PyroFetes/Endpoints/ProductCategory/GetProductCategoryEndpoint.cs b/PyroFetes/Endpoints/ProductCategory/GetProductCategoryEndpoint.cs new file mode 100644 index 0000000..f2d823b --- /dev/null +++ b/PyroFetes/Endpoints/ProductCategory/GetProductCategoryEndpoint.cs @@ -0,0 +1,42 @@ +using API.DTO.ProductCategory.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.ProductCategory; + +public class GetProductCategoryRequest +{ + public int Id { get; set; } +} + + +public class GetProductCategoryEndpoint(PyroFetesDbContext pyrofetesdbcontext) :Endpoint +{ + public override void Configure() + { + Get("/api/productcategory/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(GetProductCategoryRequest req, CancellationToken ct) + { + Models.ProductCategory? productCategory = await pyrofetesdbcontext + .ProductCategories + .SingleOrDefaultAsync(pc => pc.Id == req.Id, cancellationToken: ct); + + if (productCategory == null) + { + await Send.NotFoundAsync(ct); + return; + } + + GetProductCategoryDto responseDto = new() + { + Id = productCategory.Id, + Label = productCategory.Label + + }; + + await Send.OkAsync(responseDto, ct); + } +} diff --git a/PyroFetes/Endpoints/ProductCategory/UpdateProductCategoryEndpoint.cs b/PyroFetes/Endpoints/ProductCategory/UpdateProductCategoryEndpoint.cs new file mode 100644 index 0000000..e5d7e21 --- /dev/null +++ b/PyroFetes/Endpoints/ProductCategory/UpdateProductCategoryEndpoint.cs @@ -0,0 +1,39 @@ +using API.DTO.ProductCategory.Request; +using API.DTO.ProductCategory.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.ProductCategory; + +public class UpdateProductCategoryEndpoint(PyroFetesDbContext pyrofetesdbcontext) :Endpoint +{ + public override void Configure() + { + Put("/api/productcategory/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(UpdateProductCategoryDto req, CancellationToken ct) + { + Models.ProductCategory? productCategoryToEdit = await pyrofetesdbcontext + .ProductCategories + .SingleOrDefaultAsync(pc => pc.Id == req.Id, cancellationToken: ct); + + if (productCategoryToEdit == null) + { + await Send.NotFoundAsync(ct); + return; + } + + productCategoryToEdit.Label = req.Label; + await pyrofetesdbcontext.SaveChangesAsync(ct); + + GetProductCategoryDto responseDto = new() + { + Id = req.Id, + Label = req.Label, + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Supplier/CreateSupplierEndpoint.cs b/PyroFetes/Endpoints/Supplier/CreateSupplierEndpoint.cs new file mode 100644 index 0000000..761eb4a --- /dev/null +++ b/PyroFetes/Endpoints/Supplier/CreateSupplierEndpoint.cs @@ -0,0 +1,48 @@ +using API.DTO.Supplier.Request; +using API.DTO.Supplier.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.Supplier; + +public class CreateSupplierEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Post("/api/suppliers"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CreateSupplierDto req, CancellationToken ct) + { + // Création d'un nouvel objet Supplier + Models.Supplier supplier = new() + { + Name = req.Name, + Email = req.Email, + Phone = req.PhoneNumber, + Address = req.Adress, + ZipCode = req.ZipCode, + City = req.City + }; + + // Ajout à la base et sauvegarde + pyrofetesdbcontext.Suppliers.Add(supplier); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + Console.WriteLine("Fournisseur créé avec succès !"); + + // Préparation de la réponse + GetSupplierDto responseDto = new() + { + Id = supplier.Id, + Name = supplier.Name, + Email = supplier.Email, + PhoneNumber = supplier.Phone, + Adress = supplier.Address, + ZipCode = supplier.ZipCode, + City = supplier.City + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Supplier/DeleteSupplierEndpoint.cs b/PyroFetes/Endpoints/Supplier/DeleteSupplierEndpoint.cs new file mode 100644 index 0000000..dbeb8db --- /dev/null +++ b/PyroFetes/Endpoints/Supplier/DeleteSupplierEndpoint.cs @@ -0,0 +1,37 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Supplier; + +public class DeleteSupplierRequest +{ + public int Id { get; set; } +} + +public class DeleteSupplierEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Delete("/api/suppliers/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(DeleteSupplierRequest req, CancellationToken ct) + { + Models.Supplier? supplierToDelete = await pyrofetesdbcontext + .Suppliers + .SingleOrDefaultAsync(s => s.Id == req.Id, cancellationToken: ct); + + if (supplierToDelete == null) + { + Console.WriteLine($"Aucun fournisseur avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + pyrofetesdbcontext.Suppliers.Remove(supplierToDelete); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + await Send.NoContentAsync(ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Supplier/GetAllSupplierEndpoint.cs b/PyroFetes/Endpoints/Supplier/GetAllSupplierEndpoint.cs new file mode 100644 index 0000000..51df593 --- /dev/null +++ b/PyroFetes/Endpoints/Supplier/GetAllSupplierEndpoint.cs @@ -0,0 +1,32 @@ +using API.DTO.Supplier.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Supplier; + +public class GetAllSuppliersEndpoint(PyroFetesDbContext pyrofetesdbcontext) : EndpointWithoutRequest> +{ + public override void Configure() + { + Get("/api/suppliers"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CancellationToken ct) + { + List responseDto = await pyrofetesdbcontext.Suppliers + .Select(s => new GetSupplierDto + { + Id = s.Id, + Name = s.Name!, + Email = s.Email!, + PhoneNumber = s.Phone!, + Adress = s.Address!, + ZipCode = s.ZipCode, + City = s.City! + }) + .ToListAsync(ct); + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Supplier/GetSupplierEndpoint.cs b/PyroFetes/Endpoints/Supplier/GetSupplierEndpoint.cs new file mode 100644 index 0000000..878e8ba --- /dev/null +++ b/PyroFetes/Endpoints/Supplier/GetSupplierEndpoint.cs @@ -0,0 +1,46 @@ +using API.DTO.Supplier.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Supplier; + +public class GetSupplierRequest +{ + public int Id { get; set; } +} + +public class GetSupplierEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Get("/api/suppliers/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(GetSupplierRequest req, CancellationToken ct) + { + Models.Supplier? supplier = await pyrofetesdbcontext + .Suppliers + .SingleOrDefaultAsync(s => s.Id == req.Id, cancellationToken: ct); + + if (supplier == null) + { + Console.WriteLine($"Aucun fournisseur avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + GetSupplierDto responseDto = new() + { + Id = supplier.Id, + Name = supplier.Name!, + Email = supplier.Email!, + PhoneNumber = supplier.Phone!, + Adress = supplier.Address!, + ZipCode = supplier.ZipCode, + City = supplier.City! + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Supplier/UpdateSupplierEndpoint.cs b/PyroFetes/Endpoints/Supplier/UpdateSupplierEndpoint.cs new file mode 100644 index 0000000..e835fce --- /dev/null +++ b/PyroFetes/Endpoints/Supplier/UpdateSupplierEndpoint.cs @@ -0,0 +1,52 @@ +using API.DTO.Supplier.Request; +using API.DTO.Supplier.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Supplier; + +public class UpdateSupplierEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Put("/api/suppliers/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(UpdateSupplierDto req, CancellationToken ct) + { + Models.Supplier? supplierToEdit = await pyrofetesdbcontext + .Suppliers + .SingleOrDefaultAsync(s => s.Id == req.Id, cancellationToken: ct); + + if (supplierToEdit == null) + { + Console.WriteLine($"Aucun fournisseur avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + // Mise à jour des propriétés + supplierToEdit.Name = req.Name; + supplierToEdit.Email = req.Email; + supplierToEdit.Phone = req.PhoneNumber; + supplierToEdit.Address = req.Adress; + supplierToEdit.ZipCode = req.ZipCode; + supplierToEdit.City = req.City; + + await pyrofetesdbcontext.SaveChangesAsync(ct); + + GetSupplierDto responseDto = new() + { + Id = supplierToEdit.Id, + Name = supplierToEdit.Name, + Email = supplierToEdit.Email, + PhoneNumber = supplierToEdit.Phone, + Adress = supplierToEdit.Address, + ZipCode = supplierToEdit.ZipCode, + City = supplierToEdit.City + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Warehouse/CreateWarehouseEndpoint.cs b/PyroFetes/Endpoints/Warehouse/CreateWarehouseEndpoint.cs new file mode 100644 index 0000000..2c46f85 --- /dev/null +++ b/PyroFetes/Endpoints/Warehouse/CreateWarehouseEndpoint.cs @@ -0,0 +1,47 @@ +using API.DTO.Warehouse.Request; +using API.DTO.Warehouse.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.Warehouse; + +public class CreateWarehouseEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Post("/api/warehouse"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CreateWarehouseDto req, CancellationToken ct) + { + Models.Warehouse warehouse = new() + { + Name = req.Name, + MaxWeight = req.MaxWeight, + Current = req.Current, + MinWeight = req.MinWeight, + Address = req.Adress, + ZipCode = req.ZipCode, + City = req.City + }; + + pyrofetesdbcontext.Warehouses.Add(warehouse); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + Console.WriteLine("Entrepôt créé avec succès !"); + + GetWarehouseDto responseDto = new() + { + Id = warehouse.Id, + Name = warehouse.Name, + MaxWeight = warehouse.MaxWeight, + Current = warehouse.Current, + MinWeight = warehouse.MinWeight, + Adress = warehouse.Address, + ZipCode = warehouse.ZipCode, + City = warehouse.City + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Warehouse/DeleteWarehouseEndpoint.cs b/PyroFetes/Endpoints/Warehouse/DeleteWarehouseEndpoint.cs new file mode 100644 index 0000000..758096b --- /dev/null +++ b/PyroFetes/Endpoints/Warehouse/DeleteWarehouseEndpoint.cs @@ -0,0 +1,37 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Warehouse; + +public class DeleteWarehouseRequest +{ + public int Id { get; set; } +} + +public class DeleteWarehouseEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Delete("/api/warehouse/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(DeleteWarehouseRequest req, CancellationToken ct) + { + Models.Warehouse? warehouseToDelete = await pyrofetesdbcontext + .Warehouses + .SingleOrDefaultAsync(w => w.Id == req.Id, cancellationToken: ct); + + if (warehouseToDelete == null) + { + Console.WriteLine($"Aucun entrepôt avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + pyrofetesdbcontext.Warehouses.Remove(warehouseToDelete); + await pyrofetesdbcontext.SaveChangesAsync(ct); + + await Send.NoContentAsync(ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Warehouse/GetAllWarehouseEndpoint.cs b/PyroFetes/Endpoints/Warehouse/GetAllWarehouseEndpoint.cs new file mode 100644 index 0000000..0d98e6f --- /dev/null +++ b/PyroFetes/Endpoints/Warehouse/GetAllWarehouseEndpoint.cs @@ -0,0 +1,33 @@ +using API.DTO.Warehouse.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Warehouse; + +public class GetAllWarehouseEndpoint(PyroFetesDbContext pyrofetesdbcontext) : EndpointWithoutRequest> +{ + public override void Configure() + { + Get("/api/warehouses"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CancellationToken ct) + { + List responseDto = await pyrofetesdbcontext.Warehouses + .Select(w => new GetWarehouseDto + { + Id = w.Id, + Name = w.Name, + MaxWeight = w.MaxWeight, + Current = w.Current, + MinWeight = w.MinWeight, + Adress = w.Address, + ZipCode = w.ZipCode, + City = w.City + }) + .ToListAsync(ct); + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Warehouse/GetWarehouseEndpoint.cs b/PyroFetes/Endpoints/Warehouse/GetWarehouseEndpoint.cs new file mode 100644 index 0000000..b24e007 --- /dev/null +++ b/PyroFetes/Endpoints/Warehouse/GetWarehouseEndpoint.cs @@ -0,0 +1,47 @@ +using API.DTO.Warehouse.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Warehouse; + +public class GetWarehouseRequest +{ + public int Id { get; set; } +} + +public class GetWarehouseEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Get("/api/warehouses/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(GetWarehouseRequest req, CancellationToken ct) + { + Models.Warehouse? warehouse = await pyrofetesdbcontext + .Warehouses + .SingleOrDefaultAsync(w => w.Id == req.Id, cancellationToken: ct); + + if (warehouse == null) + { + Console.WriteLine($"Aucun entrepôt avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + GetWarehouseDto responseDto = new() + { + Id = warehouse.Id, + Name = warehouse.Name!, + MaxWeight = warehouse.MaxWeight, + Current = warehouse.Current, + MinWeight = warehouse.MinWeight, + Adress = warehouse.Address!, + ZipCode = warehouse.ZipCode, + City = warehouse.City! + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Warehouse/UpdateWarehouseEndpoint.cs b/PyroFetes/Endpoints/Warehouse/UpdateWarehouseEndpoint.cs new file mode 100644 index 0000000..0864bd6 --- /dev/null +++ b/PyroFetes/Endpoints/Warehouse/UpdateWarehouseEndpoint.cs @@ -0,0 +1,54 @@ +using API.DTO.Warehouse.Request; +using API.DTO.Warehouse.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace PyroFetes.Endpoints.Warehouse; + +public class UpdateWarehouseEndpoint(PyroFetesDbContext pyrofetesdbcontext) : Endpoint +{ + public override void Configure() + { + Put("/api/warehouses/{@id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(UpdateWarehouseDto req, CancellationToken ct) + { + Models.Warehouse? warehouseToEdit = await pyrofetesdbcontext + .Warehouses + .SingleOrDefaultAsync(w => w.Id == req.Id, cancellationToken: ct); + + if (warehouseToEdit == null) + { + Console.WriteLine($"Aucun entrepôt avec l'ID {req.Id} trouvé."); + await Send.NotFoundAsync(ct); + return; + } + + // Mise à jour des champs + warehouseToEdit.Name = req.Name; + warehouseToEdit.MaxWeight = req.MaxWeight; + warehouseToEdit.Current = req.Current; + warehouseToEdit.MinWeight = req.MinWeight; + warehouseToEdit.Address = req.Adress; + warehouseToEdit.ZipCode = req.ZipCode; + warehouseToEdit.City = req.City; + + await pyrofetesdbcontext.SaveChangesAsync(ct); + + GetWarehouseDto responseDto = new() + { + Id = warehouseToEdit.Id, + Name = warehouseToEdit.Name, + MaxWeight = warehouseToEdit.MaxWeight, + Current = warehouseToEdit.Current, + MinWeight = warehouseToEdit.MinWeight, + Adress = warehouseToEdit.Address, + ZipCode = warehouseToEdit.ZipCode, + City = warehouseToEdit.City + }; + + await Send.OkAsync(responseDto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/PyroFetes.csproj b/PyroFetes/PyroFetes.csproj index 60e4770..b301a92 100644 --- a/PyroFetes/PyroFetes.csproj +++ b/PyroFetes/PyroFetes.csproj @@ -7,6 +7,8 @@ + +