diff --git a/PyroFetes/DTO/Show/Request/CreateShowDto.cs b/PyroFetes/DTO/Show/Request/CreateShowDto.cs new file mode 100644 index 0000000..5230f53 --- /dev/null +++ b/PyroFetes/DTO/Show/Request/CreateShowDto.cs @@ -0,0 +1,10 @@ +namespace PF3.DTO.Show.Request; + +public class CreateShowDto +{ + public string? Name { get; set; } + public string? Place { get; set; } + public string? Description { get; set; } + public string? PyrotechnicImplementationPlan { get; set; } + public DateTime? Date { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Show/Request/IdShowDto.cs b/PyroFetes/DTO/Show/Request/IdShowDto.cs new file mode 100644 index 0000000..ebf5e37 --- /dev/null +++ b/PyroFetes/DTO/Show/Request/IdShowDto.cs @@ -0,0 +1,6 @@ +namespace PF3.DTO.Show.Request; + +public class IdShowDto +{ + public int? Id { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Show/Request/UpdateShowDto.cs b/PyroFetes/DTO/Show/Request/UpdateShowDto.cs new file mode 100644 index 0000000..ac3c132 --- /dev/null +++ b/PyroFetes/DTO/Show/Request/UpdateShowDto.cs @@ -0,0 +1,11 @@ +namespace PF3.DTO.Show.Request; + +public class UpdateShowDto +{ + public int? Id { get; set; } + public string? Name { get; set; } + public string? Place { get; set; } + public string? Description { get; set; } + public string? PyrotechnicImplementationPlan { get; set; } + public DateTime? Date { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Show/Response/ReadShowDto.cs b/PyroFetes/DTO/Show/Response/ReadShowDto.cs new file mode 100644 index 0000000..4e91893 --- /dev/null +++ b/PyroFetes/DTO/Show/Response/ReadShowDto.cs @@ -0,0 +1,11 @@ +namespace PF3.DTO.Show.Response; + +public class ReadShowDto +{ + public int? Id { get; set; } + public string? Name { get; set; } + public string? Place { get; set; } + public string? Description { get; set; } + public string? PyrotechnicImplementationPlan { get; set; } + public DateTime? Date { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Sound/Request/CreateSoundDto.cs b/PyroFetes/DTO/Sound/Request/CreateSoundDto.cs new file mode 100644 index 0000000..e1775ae --- /dev/null +++ b/PyroFetes/DTO/Sound/Request/CreateSoundDto.cs @@ -0,0 +1,14 @@ +namespace PF3.DTO.SoundCategory.Request; + +public class CreateSoundDto +{ + public string? Name { get; set; } + public string? Type { get; set; } + public string? Artist { get; set; } + public string? Duration { get; set; } + public string? Kind { get; set; } + public string? Format { get; set; } + public DateTime? CreationDate { get; set; } + public string? SoundCategoryId { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/DTO/Sound/Request/IdSoundto.cs b/PyroFetes/DTO/Sound/Request/IdSoundto.cs new file mode 100644 index 0000000..41bad0b --- /dev/null +++ b/PyroFetes/DTO/Sound/Request/IdSoundto.cs @@ -0,0 +1,6 @@ +namespace PF3.DTO.SoundCategory.Request; + +public class IdSoundto +{ + public int? Id { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Sound/Request/UpdateSoundDto.cs b/PyroFetes/DTO/Sound/Request/UpdateSoundDto.cs new file mode 100644 index 0000000..2382b13 --- /dev/null +++ b/PyroFetes/DTO/Sound/Request/UpdateSoundDto.cs @@ -0,0 +1,15 @@ +namespace PF3.DTO.SoundCategory.Request; + +public class UpdateSoundDto +{ + public int? Id { get; set; } + public string? Name { get; set; } + public string? Type { get; set; } + public string? Artist { get; set; } + public string? Duration { get; set; } + public string? Kind { get; set; } + public string? Format { get; set; } + public DateTime? CreationDate { get; set; } + public string? SoundCategoryId { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/DTO/Sound/Response/ReadSoundDto.cs b/PyroFetes/DTO/Sound/Response/ReadSoundDto.cs new file mode 100644 index 0000000..0ee013d --- /dev/null +++ b/PyroFetes/DTO/Sound/Response/ReadSoundDto.cs @@ -0,0 +1,15 @@ +namespace PF3.DTO.SoundCategory.Response; + +public class ReadSoundDto +{ + public int? Id { get; set; } + public string? Name { get; set; } + public string? Type { get; set; } + public string? Artist { get; set; } + public string? Duration { get; set; } + public string? Kind { get; set; } + public string? Format { get; set; } + public DateTime? CreationDate { get; set; } + public string? SoundCategoryId { get; set; } + +} \ No newline at end of file diff --git a/PyroFetes/DTO/SoundCategory/Request/CreateSoundCategoryDto.cs b/PyroFetes/DTO/SoundCategory/Request/CreateSoundCategoryDto.cs new file mode 100644 index 0000000..743d458 --- /dev/null +++ b/PyroFetes/DTO/SoundCategory/Request/CreateSoundCategoryDto.cs @@ -0,0 +1,6 @@ +namespace PF3.DTO.SoundCategory.Request; + +public class CreateSoundCategoryDto +{ + public string? Name { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/SoundCategory/Request/IdSoundCategoryDto.cs b/PyroFetes/DTO/SoundCategory/Request/IdSoundCategoryDto.cs new file mode 100644 index 0000000..d2aad4f --- /dev/null +++ b/PyroFetes/DTO/SoundCategory/Request/IdSoundCategoryDto.cs @@ -0,0 +1,6 @@ +namespace PF3.DTO.SoundCategory.Request; + +public class IdSoundCategoryDto +{ + public int? Id { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/SoundCategory/Request/UpdateSoundCategoryDto.cs b/PyroFetes/DTO/SoundCategory/Request/UpdateSoundCategoryDto.cs new file mode 100644 index 0000000..43e7e1f --- /dev/null +++ b/PyroFetes/DTO/SoundCategory/Request/UpdateSoundCategoryDto.cs @@ -0,0 +1,7 @@ +namespace PF3.DTO.SoundCategory.Request; + +public class UpdateSoundCategoryDto +{ + public int? Id { get; set; } + public string? Name { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/SoundCategory/Response/ReadSoundCategoryDto.cs b/PyroFetes/DTO/SoundCategory/Response/ReadSoundCategoryDto.cs new file mode 100644 index 0000000..c113b6f --- /dev/null +++ b/PyroFetes/DTO/SoundCategory/Response/ReadSoundCategoryDto.cs @@ -0,0 +1,7 @@ +namespace PF3.DTO.SoundCategory.Response; + +public class ReadSoundCategoryDto +{ + public int? Id { get; set; } + public string? Name { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/SoundTimecode/Request/CreateSoundTimecodeDto.cs b/PyroFetes/DTO/SoundTimecode/Request/CreateSoundTimecodeDto.cs new file mode 100644 index 0000000..54093b2 --- /dev/null +++ b/PyroFetes/DTO/SoundTimecode/Request/CreateSoundTimecodeDto.cs @@ -0,0 +1,9 @@ +namespace PF3.DTO.SoundTimecode.Request; + +public class CreateSoundTimecodeDto +{ + public int ShowId { get; set; } + public int SoundId { get; set; } + public int Start { get; set; } + public int End { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/SoundTimecode/Request/IdSoundTimecodeDto.cs b/PyroFetes/DTO/SoundTimecode/Request/IdSoundTimecodeDto.cs new file mode 100644 index 0000000..3f86699 --- /dev/null +++ b/PyroFetes/DTO/SoundTimecode/Request/IdSoundTimecodeDto.cs @@ -0,0 +1,6 @@ +namespace PF3.DTO.SoundTimecode.Request; + +public class IdSoundTimecodeDto +{ + public int? Id { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/SoundTimecode/Request/UpdateSoundTimecodeDto.cs b/PyroFetes/DTO/SoundTimecode/Request/UpdateSoundTimecodeDto.cs new file mode 100644 index 0000000..9352795 --- /dev/null +++ b/PyroFetes/DTO/SoundTimecode/Request/UpdateSoundTimecodeDto.cs @@ -0,0 +1,10 @@ +namespace PF3.DTO.SoundTimecode.Request; + +public class UpdateSoundTimecodeDto +{ + public int? Id { get; set; } + public int ShowId { get; set; } + public int SoundId { get; set; } + public int Start { get; set; } + public int End { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/SoundTimecode/Response/ReadSoundTimecodeDto.cs b/PyroFetes/DTO/SoundTimecode/Response/ReadSoundTimecodeDto.cs new file mode 100644 index 0000000..cf32366 --- /dev/null +++ b/PyroFetes/DTO/SoundTimecode/Response/ReadSoundTimecodeDto.cs @@ -0,0 +1,10 @@ +namespace PF3.DTO.SoundTimecode.Response; + +public class ReadSoundTimecodeDto +{ + public int? Id { get; set; } + public int? ShowId { get; set; } + public int? SoundId { get; set; } + public int Start { get; set; } + public int End { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Staff/Request/CreateStaffDto.cs b/PyroFetes/DTO/Staff/Request/CreateStaffDto.cs new file mode 100644 index 0000000..c68747d --- /dev/null +++ b/PyroFetes/DTO/Staff/Request/CreateStaffDto.cs @@ -0,0 +1,9 @@ +namespace PF3.DTO.Staff.Request; + +public class CreateStaffDto +{ + public string? FirstName { get; set; } + public string? LastName { get; set; } + public string? Profession { get; set; } + public string? Email { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Staff/Request/IdStaffDto.cs b/PyroFetes/DTO/Staff/Request/IdStaffDto.cs new file mode 100644 index 0000000..8f8ae83 --- /dev/null +++ b/PyroFetes/DTO/Staff/Request/IdStaffDto.cs @@ -0,0 +1,6 @@ +namespace PF3.DTO.Staff.Request; + +public class IdStaffDto +{ + public int? Id { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Staff/Request/UpdateStaffDto.cs b/PyroFetes/DTO/Staff/Request/UpdateStaffDto.cs new file mode 100644 index 0000000..31fa354 --- /dev/null +++ b/PyroFetes/DTO/Staff/Request/UpdateStaffDto.cs @@ -0,0 +1,10 @@ +namespace PF3.DTO.Staff.Request; + +public class UpdateStaffDto +{ + public int? Id { get; set; } + public string? FirstName { get; set; } + public string? LastName { get; set; } + public string? Profession { get; set; } + public string? Email { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Staff/Response/ReadStaffDto.cs b/PyroFetes/DTO/Staff/Response/ReadStaffDto.cs new file mode 100644 index 0000000..c11a6ab --- /dev/null +++ b/PyroFetes/DTO/Staff/Response/ReadStaffDto.cs @@ -0,0 +1,10 @@ +namespace PF3.DTO.Staff.Response; + +public class ReadStaffDto +{ + public int? Id { get; set; } + public string? FirstName { get; set; } + public string? LastName { get; set; } + public string? Profession { get; set; } + public string? Email { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Truck/Request/CreateTruckDto.cs b/PyroFetes/DTO/Truck/Request/CreateTruckDto.cs new file mode 100644 index 0000000..c71313d --- /dev/null +++ b/PyroFetes/DTO/Truck/Request/CreateTruckDto.cs @@ -0,0 +1,10 @@ +namespace PF3.DTO.Truck.Request; + +public class CreateTruckDto +{ + public string? Type { get; set; } + public string? MaxExplosiveCapacity { get; set; } + public string? Sizes { get; set; } + public string? Statut { get; set; } + public int? ShowId { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Truck/Request/IdTruckDto.cs b/PyroFetes/DTO/Truck/Request/IdTruckDto.cs new file mode 100644 index 0000000..4ce547b --- /dev/null +++ b/PyroFetes/DTO/Truck/Request/IdTruckDto.cs @@ -0,0 +1,6 @@ +namespace PF3.DTO.Truck.Request; + +public class IdTruckDto +{ + public int? Id { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Truck/Request/UpdateTruckDto.cs b/PyroFetes/DTO/Truck/Request/UpdateTruckDto.cs new file mode 100644 index 0000000..4ddf924 --- /dev/null +++ b/PyroFetes/DTO/Truck/Request/UpdateTruckDto.cs @@ -0,0 +1,11 @@ +namespace PF3.DTO.Truck.Request; + +public class UpdateTruckDto +{ + public int? Id { get; set; } + public string? Type { get; set; } + public string? MaxExplosiveCapacity { get; set; } + public string? Sizes { get; set; } + public string? Statut { get; set; } + public int? ShowId { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/DTO/Truck/Response/ReadTruckDto.cs b/PyroFetes/DTO/Truck/Response/ReadTruckDto.cs new file mode 100644 index 0000000..110208a --- /dev/null +++ b/PyroFetes/DTO/Truck/Response/ReadTruckDto.cs @@ -0,0 +1,11 @@ +namespace PF3.DTO.Truck.Response; + +public class ReadTruckDto +{ + public int? Id { get; set; } + public string? Type { get; set; } + public string? MaxExplosiveCapacity { get; set; } + public string? Sizes { get; set; } + public string? Statut { get; set; } + public int? ShowId { get; set; } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/SoundCategory/CreateSoundCategoryEndpoint.cs b/PyroFetes/Endpoints/SoundCategory/CreateSoundCategoryEndpoint.cs new file mode 100644 index 0000000..0bc516c --- /dev/null +++ b/PyroFetes/Endpoints/SoundCategory/CreateSoundCategoryEndpoint.cs @@ -0,0 +1,34 @@ +using FastEndpoints; +using PF3.DTO.SoundCategory.Request; +using PF3.DTO.SoundCategory.Response; +using PF3.Models; + +namespace PF3.Endpoints.SoundCategory; + +public class CreateSoundCategoryEndpoint(PF3DbContext pf3DbContext) : Endpoint +{ + public override void Configure() + { + Post("/api/soundcategorys"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CreateSoundCategoryDto req, CancellationToken ct) + { + var soundCategory = new Models.SoundCategory + { + Name = req.Name, + }; + + pf3DbContext.SoundsCategorys.Add(soundCategory); + await pf3DbContext.SaveChangesAsync(ct); + + var result = new ReadSoundCategoryDto + { + Id = soundCategory.Id, + Name = soundCategory.Name + }; + + await Send.OkAsync(result, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/SoundCategory/DeleteSoundCategoryEndpoint.cs b/PyroFetes/Endpoints/SoundCategory/DeleteSoundCategoryEndpoint.cs new file mode 100644 index 0000000..416c271 --- /dev/null +++ b/PyroFetes/Endpoints/SoundCategory/DeleteSoundCategoryEndpoint.cs @@ -0,0 +1,29 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PF3.DTO.SoundCategory.Request; + +namespace PF3.Endpoints.SoundCategory; + +public class DeleteSoundCategoryEndpoint(PF3DbContext pf3DbContext) : Endpoint +{ + public override void Configure() + { + Delete("/api/soundcategorys/{Id}"); + AllowAnonymous(); + } + + public override async Task HandleAsync(IdSoundCategoryDto req, CancellationToken ct) + { + var soundCategory = await pf3DbContext.SoundsCategorys.FirstOrDefaultAsync(st => st.Id == req.Id, ct); + if (soundCategory is null) + { + await Send.NotFoundAsync(ct); + return; + } + + pf3DbContext.SoundsCategorys.Remove(soundCategory); + await pf3DbContext.SaveChangesAsync(ct); + + await Send.OkAsync(ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/SoundCategory/GetAllSoundCategoryEndpoint.cs b/PyroFetes/Endpoints/SoundCategory/GetAllSoundCategoryEndpoint.cs new file mode 100644 index 0000000..4dd534d --- /dev/null +++ b/PyroFetes/Endpoints/SoundCategory/GetAllSoundCategoryEndpoint.cs @@ -0,0 +1,27 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PF3.DTO.SoundCategory.Response; + +namespace PF3.Endpoints.SoundCategory; + +public class GetAllSoundCategorysEndpoint(PF3DbContext pf3DbContext) : EndpointWithoutRequest> +{ + public override void Configure() + { + Get("/api/soundcategorys"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CancellationToken ct) + { + var soundCategorys = await pf3DbContext.SoundsCategorys.ToListAsync(ct); + + var result = soundCategorys.Select(sC => new ReadSoundCategoryDto + { + Id = sC.Id, + Name = sC.Name + }).ToList(); + + await Send.OkAsync(result, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/SoundCategory/GetSoundCategoryEndpoint.cs b/PyroFetes/Endpoints/SoundCategory/GetSoundCategoryEndpoint.cs new file mode 100644 index 0000000..b4d2e69 --- /dev/null +++ b/PyroFetes/Endpoints/SoundCategory/GetSoundCategoryEndpoint.cs @@ -0,0 +1,35 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PF3.DTO.SoundCategory.Request; +using PF3.DTO.SoundCategory.Response; + +namespace PF3.Endpoints.SoundCategory; + +public class GetSoundCategoryEndpoint(PF3DbContext pf3DbContext) : Endpoint +{ + public override void Configure() + { + Get("/api/soundcategorys/{Id}"); + AllowAnonymous(); + } + + public override async Task HandleAsync(IdSoundCategoryDto req, CancellationToken ct) + { + var soundCategory = await pf3DbContext.SoundsCategorys + .Where(sc => sc.Id == req.Id) + .Select(sc => new ReadSoundCategoryDto + { + Id = sc.Id, + Name = sc.Name, + }) + .FirstOrDefaultAsync(ct); + + if (soundCategory is null) + { + await Send.NotFoundAsync(ct); + return; + } + + await Send.OkAsync(soundCategory, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/SoundCategory/UpdateSoundCategoryEndpoint.cs b/PyroFetes/Endpoints/SoundCategory/UpdateSoundCategoryEndpoint.cs new file mode 100644 index 0000000..83ff0c0 --- /dev/null +++ b/PyroFetes/Endpoints/SoundCategory/UpdateSoundCategoryEndpoint.cs @@ -0,0 +1,37 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PF3.DTO.SoundCategory.Request; +using PF3.DTO.SoundCategory.Response; + +namespace PF3.Endpoints.SoundCategory; + +public class UpdateSoundCategoryEndpoint(PF3DbContext pf3DbContext) : Endpoint +{ + public override void Configure() + { + Patch("/api/soundcategorys/{Id}/name"); + AllowAnonymous(); + } + + public override async Task HandleAsync(UpdateSoundCategoryDto req, CancellationToken ct) + { + var soundCategory = await pf3DbContext.SoundsCategorys.FirstOrDefaultAsync(st => st.Id == req.Id, ct); + if (soundCategory is null) + { + await Send.NotFoundAsync(ct); + return; + } + + soundCategory.Name = req.Name; + + await pf3DbContext.SaveChangesAsync(ct); + + var result = new ReadSoundCategoryDto + { + Id = soundCategory.Id, + Name = soundCategory.Name + }; + + await Send.OkAsync(result, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Staff/CreateStaffEndpoint.cs b/PyroFetes/Endpoints/Staff/CreateStaffEndpoint.cs new file mode 100644 index 0000000..08fee1c --- /dev/null +++ b/PyroFetes/Endpoints/Staff/CreateStaffEndpoint.cs @@ -0,0 +1,40 @@ +using FastEndpoints; +using PF3.DTO.Staff.Request; +using PF3.DTO.Staff.Response; + +namespace PF3.Endpoints.Staff; + +public class CreateStaffEndpoint(PF3DbContext pf3DbContext):Endpoint +{ + public override void Configure() + { + Post("/api/staff"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CreateStaffDto req, CancellationToken ct) + { + var staff = new Models.Staff + { + FirstName = req.FirstName, + LastName = req.LastName, + Profession = req.Profession, + Email = req.Email + }; + + pf3DbContext.Staffs.Add(staff); + await pf3DbContext.SaveChangesAsync(ct); + + var result = new ReadStaffDto() + { + Id = staff.Id, + FirstName = req.FirstName, + LastName = req.LastName, + Profession = req.Profession, + Email = req.Email + }; + + await Send.OkAsync(result, ct); + + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Staff/DeleteStaffEndpoint.cs b/PyroFetes/Endpoints/Staff/DeleteStaffEndpoint.cs new file mode 100644 index 0000000..b81e9de --- /dev/null +++ b/PyroFetes/Endpoints/Staff/DeleteStaffEndpoint.cs @@ -0,0 +1,29 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PF3.DTO.Staff.Request; + +namespace PF3.Endpoints.Staff; + +public class DeleteStaffEndpoint(PF3DbContext pf3DbContext) : Endpoint +{ + public override void Configure() + { + Delete("/api/staff/{Id}"); + AllowAnonymous(); + } + + public override async Task HandleAsync(IdStaffDto req, CancellationToken ct) + { + var staff = await pf3DbContext.Staffs.FirstOrDefaultAsync(s => s.Id == req.Id, ct); + if (staff is null) + { + await Send.NotFoundAsync(ct); + return; + } + + pf3DbContext.Staffs.Remove(staff); + await pf3DbContext.SaveChangesAsync(ct); + + await Send.OkAsync(ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Staff/GetAllStaffEndpoint.cs b/PyroFetes/Endpoints/Staff/GetAllStaffEndpoint.cs new file mode 100644 index 0000000..b8c85d7 --- /dev/null +++ b/PyroFetes/Endpoints/Staff/GetAllStaffEndpoint.cs @@ -0,0 +1,30 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PF3.DTO.Staff.Response; + +namespace PF3.Endpoints.Staff; + +public class GetAllStaffEndpoint(PF3DbContext pf3DbContext) : EndpointWithoutRequest> +{ + public override void Configure() + { + Get("/api/staff"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CancellationToken ct) + { + var staffs = await pf3DbContext.Staffs.ToListAsync(ct); + + var result = staffs.Select(s => new ReadStaffDto + { + Id = s.Id, + FirstName = s.FirstName, + LastName = s.LastName, + Profession = s.Profession, + Email = s.Email + }).ToList(); + + await Send.OkAsync(result, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Staff/GetStaffEndpoint.cs b/PyroFetes/Endpoints/Staff/GetStaffEndpoint.cs new file mode 100644 index 0000000..67624c8 --- /dev/null +++ b/PyroFetes/Endpoints/Staff/GetStaffEndpoint.cs @@ -0,0 +1,38 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PF3.DTO.Staff.Request; +using PF3.DTO.Staff.Response; + +namespace PF3.Endpoints.Staff; + +public class GetStaffEndpoint(PF3DbContext pf3DbContext) : Endpoint +{ + public override void Configure() + { + Get("/api/staff/{Id}"); + AllowAnonymous(); + } + + public override async Task HandleAsync(IdStaffDto req, CancellationToken ct) + { + var staff = await pf3DbContext.Staffs + .Where(s => s.Id == req.Id) + .Select(s => new ReadStaffDto + { + Id = s.Id, + FirstName = s.FirstName, + LastName = s.LastName, + Profession = s.Profession, + Email = s.Email + }) + .FirstOrDefaultAsync(ct); + + if (staff is null) + { + await Send.NotFoundAsync(ct); + return; + } + + await Send.OkAsync(staff, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Staff/UpdateStaffEndpoint.cs b/PyroFetes/Endpoints/Staff/UpdateStaffEndpoint.cs new file mode 100644 index 0000000..3af1977 --- /dev/null +++ b/PyroFetes/Endpoints/Staff/UpdateStaffEndpoint.cs @@ -0,0 +1,43 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PF3.DTO.Staff.Request; +using PF3.DTO.Staff.Response; + +namespace PF3.Endpoints.Staff; + +public class UpdateStaffEndpoint(PF3DbContext pf3DbContext) : Endpoint +{ + public override void Configure() + { + Put("/api/staff/{Id}"); + AllowAnonymous(); + } + + public override async Task HandleAsync(UpdateStaffDto req, CancellationToken ct) + { + var staff = await pf3DbContext.Staffs.FirstOrDefaultAsync(s => s.Id == req.Id, ct); + if (staff is null) + { + await Send.NotFoundAsync(ct); + return; + } + + staff.FirstName = req.FirstName; + staff.LastName = req.LastName; + staff.Profession = req.Profession; + staff.Email = req.Email; + + await pf3DbContext.SaveChangesAsync(ct); + + var result = new ReadStaffDto + { + Id = staff.Id, + FirstName = staff.FirstName, + LastName = staff.LastName, + Profession = staff.Profession, + Email = staff.Email + }; + + await Send.OkAsync(result, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Truck/CreateTruckEndpoint.cs b/PyroFetes/Endpoints/Truck/CreateTruckEndpoint.cs new file mode 100644 index 0000000..d12b66b --- /dev/null +++ b/PyroFetes/Endpoints/Truck/CreateTruckEndpoint.cs @@ -0,0 +1,41 @@ +using FastEndpoints; +using PF3.DTO.Truck.Request; +using PF3.DTO.Truck.Response; +using PyroFetes; + +namespace PF3.Endpoints.Truck; + +public class CreateTruckEndpoint(PF3DbContext pf3DbContext):Endpoint +{ + public override void Configure() + { + Post("/api/truck"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CreateTruckDto req, CancellationToken ct) + { + var truck = new Models.Truck + { + Type = req.Type, + MaxExplosiveCapacity = req.MaxExplosiveCapacity, + Sizes = req.Sizes, + Statut = req.Statut + }; + + pf3DbContext.Trucks.Add(truck); + await pf3DbContext.SaveChangesAsync(ct); + + var result = new ReadTruckDto() + { + Id = truck.Id, + Type = truck.Type, + MaxExplosiveCapacity = truck.MaxExplosiveCapacity, + Sizes = truck.Sizes, + Statut = truck.Statut + }; + + await Send.OkAsync(result, ct); + + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Truck/DeleteTruckEndpoint.cs b/PyroFetes/Endpoints/Truck/DeleteTruckEndpoint.cs new file mode 100644 index 0000000..90cba0e --- /dev/null +++ b/PyroFetes/Endpoints/Truck/DeleteTruckEndpoint.cs @@ -0,0 +1,24 @@ +using PF3.DTO.Truck.Request; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PF3; + +namespace ApiLibrary.Endpoints.Truck; + +public class DeleteTruckEndpoint(PF3DbContext pf3DbContext) : Endpoint +{ + public override void Configure() + { + Delete("/api/trucks/{@Id}", x => new { x.Id }); + } + + public override async Task HandleAsync(IdTruckDto req, CancellationToken ct) + { + var truck = await pf3DbContext.Trucks.FirstOrDefaultAsync(a => a.Id == req.Id, ct); + + pf3DbContext.Trucks.Remove(truck); + await pf3DbContext.SaveChangesAsync(ct); + + await Send.OkAsync(ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Truck/GetAllTruckEndpoint.cs b/PyroFetes/Endpoints/Truck/GetAllTruckEndpoint.cs new file mode 100644 index 0000000..a6d2e65 --- /dev/null +++ b/PyroFetes/Endpoints/Truck/GetAllTruckEndpoint.cs @@ -0,0 +1,33 @@ +using PF3.DTO.Truck.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PF3; + +namespace PF3.Endpoints.Truck; + +public class GetAllTrucksEndpoint(PF3DbContext pf3DbContext) : EndpointWithoutRequest> +{ + public override void Configure() + { + Get("/api/trucks"); + } + + public override async Task HandleAsync(CancellationToken ct) + { + var trucks = await pf3DbContext.Trucks.ToListAsync(ct); + + var result = trucks + .Select(truck => new ReadTruckDto + { + Id = truck.Id, + Type = truck.Type, + MaxExplosiveCapacity = truck.MaxExplosiveCapacity, + Sizes = truck.Sizes, + Statut = truck.Statut, + ShowId = truck.ShowId + }) + .ToList(); + + await Send.OkAsync(result, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Truck/GetTruckEndpoint.cs b/PyroFetes/Endpoints/Truck/GetTruckEndpoint.cs new file mode 100644 index 0000000..b228ea5 --- /dev/null +++ b/PyroFetes/Endpoints/Truck/GetTruckEndpoint.cs @@ -0,0 +1,39 @@ +using PF3.DTO.Truck.Request; +using PF3.DTO.Truck.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PF3; + +namespace PF3.Endpoints.Truck; + +public class GetTruckEndpoint(PF3DbContext pf3DbContext) : Endpoint +{ + public override void Configure() + { + Get("/api/trucks/{@Id}"); + } + + public override async Task HandleAsync(IdTruckDto req, CancellationToken ct) + { + var truck = await pf3DbContext.Trucks + .Where(t => t.Id == req.Id) + .Select(t => new ReadTruckDto + { + Id = t.Id, + Type = t.Type, + MaxExplosiveCapacity = t.MaxExplosiveCapacity, + Sizes = t.Sizes, + Statut = t.Statut, + ShowId = t.ShowId + }) + .FirstOrDefaultAsync(ct); + + if (truck is null) + { + await Send.NotFoundAsync(ct); + return; + } + + await Send.OkAsync(truck, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Truck/UpdateTruckEndpoint.cs b/PyroFetes/Endpoints/Truck/UpdateTruckEndpoint.cs new file mode 100644 index 0000000..3a6fce9 --- /dev/null +++ b/PyroFetes/Endpoints/Truck/UpdateTruckEndpoint.cs @@ -0,0 +1,48 @@ +using PF3.DTO.Truck.Request; +using PF3.DTO.Truck.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PF3; + +namespace PF3.Endpoints.Truck; + +public class UpdateTruckEndpoint(PF3DbContext pf3DbContext) : Endpoint +{ + public override void Configure() + { + Put("/api/trucks/{id}"); + } + + public override async Task HandleAsync(UpdateTruckDto req, CancellationToken ct) + { + var id = Route("id"); + + var truck = await pf3DbContext.Trucks.FirstOrDefaultAsync(t => t.Id == id, ct); + + if (truck is null) + { + await Send.NotFoundAsync(ct); + return; + } + + truck.Type = req.Type; + truck.MaxExplosiveCapacity = req.MaxExplosiveCapacity; + truck.Sizes = req.Sizes; + truck.Statut = req.Statut; + truck.ShowId = req.ShowId; + + await pf3DbContext.SaveChangesAsync(ct); + + var result = new ReadTruckDto + { + Id = truck.Id, + Type = truck.Type, + MaxExplosiveCapacity = truck.MaxExplosiveCapacity, + Sizes = truck.Sizes, + Statut = truck.Statut, + ShowId = truck.ShowId + }; + + await Send.OkAsync(result, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/PyroFetes.csproj b/PyroFetes/PyroFetes.csproj index 60e4770..e90efe4 100644 --- a/PyroFetes/PyroFetes.csproj +++ b/PyroFetes/PyroFetes.csproj @@ -17,4 +17,10 @@ + + + + + +