Newer
Older
ReservationPattern / ReservationSaga / ExpireReservation.cs
@Derek Comartin Derek Comartin on 16 Feb 2022 775 bytes Init
using NServiceBus;

namespace ReservationSaga;

public class ExpireReservation : ICommand
{
    public string Username { get; set; }
}

public class ExpireReservationHandler : IHandleMessages<ExpireReservation>
{
    private readonly UsernameReservation _usernameReservation;

    public ExpireReservationHandler(UsernameReservation usernameReservation)
    {
        _usernameReservation = usernameReservation;
    }

    public Task Handle(ExpireReservation message, IMessageHandlerContext context)
    {
        if (_usernameReservation.IsReserved(message.Username))
        {
            Console.WriteLine($"Async: Expire Reservation for {message.Username}");
            _usernameReservation.Expire(message.Username);
        }
        return Task.CompletedTask;
    }
}