35 lines
998 B
C#
35 lines
998 B
C#
using BookHive.Models;
|
|
using BookHive.Repositories;
|
|
using BookHive.Specifications.Loans;
|
|
using FastEndpoints;
|
|
|
|
namespace BookHive.Endpoints.Loans;
|
|
|
|
public class PatchReturnLoanRequest
|
|
{
|
|
public int Id { get; set; }
|
|
public DateOnly ReturnDate { get; set; }
|
|
}
|
|
|
|
public class PatchReturnLoanEndpoint(LoanRepository loanRepository) : Endpoint<PatchReturnLoanRequest>
|
|
{
|
|
public override void Configure()
|
|
{
|
|
Patch("/loans/{@Id}/return/", x => new { x.Id });
|
|
AllowAnonymous();
|
|
}
|
|
|
|
public override async Task HandleAsync(PatchReturnLoanRequest req, CancellationToken ct)
|
|
{
|
|
Loan? loan = await loanRepository.SingleOrDefaultAsync(new GetLoanByIdSpec(req.Id), ct);
|
|
if (loan is null)
|
|
{
|
|
await Send.NotFoundAsync(ct);
|
|
await Send.OkAsync(cancellation: ct);
|
|
}
|
|
|
|
loan?.ReturnDate = req.ReturnDate;
|
|
await loanRepository.SaveChangesAsync(ct);
|
|
await Send.OkAsync(cancellation: ct);
|
|
}
|
|
} |