diff --git a/PyroFetes/DTO/Staff/Request/CreateStaffDto.cs b/PyroFetes/DTO/Staff/Request/CreateStaffDto.cs index 8fdbdf5..63e33ad 100644 --- a/PyroFetes/DTO/Staff/Request/CreateStaffDto.cs +++ b/PyroFetes/DTO/Staff/Request/CreateStaffDto.cs @@ -3,5 +3,5 @@ namespace PyroFetes.DTO.Staff.Request; public class CreateStaffDto { public string? F4T2NumberApproval { get; set; } - public string? F4T2ExpirationDate { get; set; } + public DateOnly F4T2ExpirationDate { get; set; } } \ No newline at end of file diff --git a/PyroFetes/DTO/Staff/Request/GetStaffRequest.cs b/PyroFetes/DTO/Staff/Request/GetStaffRequest.cs index b8b1799..83fbbab 100644 --- a/PyroFetes/DTO/Staff/Request/GetStaffRequest.cs +++ b/PyroFetes/DTO/Staff/Request/GetStaffRequest.cs @@ -2,5 +2,5 @@ namespace PyroFetes.DTO.Staff.Request; public class GetStaffRequest { - public string? Label { get; set; } + 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 index 82d0685..7a580ca 100644 --- a/PyroFetes/DTO/Staff/Request/UpdateStaffDto.cs +++ b/PyroFetes/DTO/Staff/Request/UpdateStaffDto.cs @@ -4,5 +4,5 @@ public class UpdateStaffDto { public int Id { get; set; } public string? F4T2NumberApproval { get; set; } - public string? F4T2ExpirationDate { get; set; } + public DateOnly F4T2ExpirationDate { get; set; } } \ No newline at end of file diff --git a/PyroFetes/DTO/Staff/Response/GetStaffDto.cs b/PyroFetes/DTO/Staff/Response/GetStaffDto.cs index 0e64206..ae10f74 100644 --- a/PyroFetes/DTO/Staff/Response/GetStaffDto.cs +++ b/PyroFetes/DTO/Staff/Response/GetStaffDto.cs @@ -3,4 +3,6 @@ namespace PyroFetes.DTO.Staff.Response; public class GetStaffDto { public int Id { get; set; } + public string? F4T2NumberApproval { get; set; } + public DateOnly F4T2ExpirationDate { get; set; } } \ 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..06f6e64 --- /dev/null +++ b/PyroFetes/Endpoints/Staff/CreateStaffEndpoint.cs @@ -0,0 +1,34 @@ +using FastEndpoints; +using PyroFetes.DTO.Staff.Request; +using PyroFetes.DTO.Staff.Response; + +namespace PyroFetes.Endpoints.Staff; + +public class CreateStaffEndpoint(PyroFetesDbContext pyroFetesDbContext) : Endpoint +{ + public override void Configure() + { + Post("/api/availabilities"); + AllowAnonymous(); + } + + + public override async Task HandleAsync(CreateStaffDto req, CancellationToken ct) + { + Models.Staff staff = new() + { + F4T2NumberApproval = req.F4T2NumberApproval, + F4T2ExpirationDate = req.F4T2ExpirationDate, + }; + pyroFetesDbContext.Add(staff); + await pyroFetesDbContext.SaveChangesAsync(ct); + + GetStaffDto response = new() + { + F4T2NumberApproval = staff.F4T2NumberApproval, + F4T2ExpirationDate = staff.F4T2ExpirationDate, + }; + + await Send.OkAsync(response, 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..1af08ee --- /dev/null +++ b/PyroFetes/Endpoints/Staff/DeleteStaffEndpoint.cs @@ -0,0 +1,30 @@ +using Microsoft.EntityFrameworkCore; +using PyroFetes.DTO.Staff.Request; +using PyroFetes.DTO.Staff.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.Staff; + +public class DeleteStaffEndpoint(PyroFetesDbContext pyroFetesDbContext) : Endpoint +{ + public override void Configure() + { + Delete ("/api/staff/{@Id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(GetStaffRequest req, CancellationToken ct) + { + Models.Staff? databaseStaff = await pyroFetesDbContext.Staffs.SingleOrDefaultAsync(x => x.Id == req.Id, cancellationToken: ct); + + if (databaseStaff == null) + { + await Send.NotFoundAsync(ct); + return; + } + pyroFetesDbContext.Staffs.Remove(databaseStaff); + await pyroFetesDbContext.SaveChangesAsync(ct); + + await Send.NoContentAsync(ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Staff/GetAllStaffsEndpoint.cs b/PyroFetes/Endpoints/Staff/GetAllStaffsEndpoint.cs new file mode 100644 index 0000000..479b670 --- /dev/null +++ b/PyroFetes/Endpoints/Staff/GetAllStaffsEndpoint.cs @@ -0,0 +1,27 @@ +using FastEndpoints; +using Microsoft.EntityFrameworkCore; +using PyroFetes.DTO.Staff.Response; + +namespace PyroFetes.Endpoints.Staff; + +public class GetAllStaffsEndpoint(PyroFetesDbContext pyroFetesDbContext) : EndpointWithoutRequest> +{ + public override void Configure() + { + Get ("/api/availabilities"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CancellationToken ct) + { + List staff = await pyroFetesDbContext.Staffs.Select(x => new GetStaffDto() + { + Id = x.Id, + F4T2NumberApproval = x.F4T2NumberApproval, + F4T2ExpirationDate = x.F4T2ExpirationDate, + + }).ToListAsync(ct); + + await Send.OkAsync(staff, 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..73e95fe --- /dev/null +++ b/PyroFetes/Endpoints/Staff/GetStaffEndpoint.cs @@ -0,0 +1,35 @@ +using Microsoft.EntityFrameworkCore; +using PyroFetes.DTO.Staff.Request; +using PyroFetes.DTO.Staff.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.Staff; + +public class GetStaffEndpoint(PyroFetesDbContext pyroFetesDbContext) : Endpoint +{ + public override void Configure() + { + Get ("/api/Staffs/{@Id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(GetStaffRequest database, CancellationToken ct) + { + Models.Staff? databaseStaff = await pyroFetesDbContext.Staffs.SingleOrDefaultAsync(x => x.Id == database.Id, cancellationToken: ct); + + if (databaseStaff == null) + { + await Send.NotFoundAsync(ct); + return; + } + + GetStaffDto dto = new() + { + Id = databaseStaff.Id, + F4T2NumberApproval = databaseStaff.F4T2NumberApproval, + F4T2ExpirationDate = databaseStaff.F4T2ExpirationDate, + }; + + await Send.OkAsync(dto, ct); + } +} \ No newline at end of file diff --git a/PyroFetes/Endpoints/Staff/UpdateStaffRequest.cs b/PyroFetes/Endpoints/Staff/UpdateStaffRequest.cs new file mode 100644 index 0000000..eb9ef7f --- /dev/null +++ b/PyroFetes/Endpoints/Staff/UpdateStaffRequest.cs @@ -0,0 +1,41 @@ +using Microsoft.EntityFrameworkCore; +using PyroFetes.DTO.Staff.Request; +using PyroFetes.DTO.Staff.Response; +using FastEndpoints; + +namespace PyroFetes.Endpoints.Staff; + +public class UpdateStaffRequest(PyroFetesDbContext pyroFetesDbContext) : Endpoint +{ + public override void Configure() + { + Put ("/api/Staffs/{@Id}", x => new { x.Id }); + AllowAnonymous(); + } + + public override async Task HandleAsync(UpdateStaffDto req, CancellationToken ct) + { + Models.Staff? databaseStaff = await pyroFetesDbContext.Staffs.SingleOrDefaultAsync(x => x.Id == req.Id, cancellationToken: ct); + + if (databaseStaff == null) + { + await Send.NotFoundAsync(ct); + return; + } + else + { + databaseStaff.F4T2NumberApproval = req.F4T2NumberApproval; + databaseStaff.F4T2ExpirationDate = req.F4T2ExpirationDate; + } + await pyroFetesDbContext.SaveChangesAsync(ct); + + GetStaffDto dto = new() + { + Id = databaseStaff.Id, + F4T2NumberApproval = req.F4T2NumberApproval, + F4T2ExpirationDate = req.F4T2ExpirationDate, + }; + + await Send.OkAsync(dto, ct); + } +} \ No newline at end of file