// EN: Repository interface for Reservation aggregate.
// VI: Interface repository cho aggregate Reservation.

using FnbEngine.Domain.SeedWork;

namespace FnbEngine.Domain.AggregatesModel.ReservationAggregate;

public interface IReservationRepository : IRepository<Reservation>
{
    Task<Reservation> AddAsync(Reservation reservation, CancellationToken cancellationToken = default);
    void Update(Reservation reservation);
    Task<Reservation?> GetByIdAsync(Guid id, CancellationToken cancellationToken = default);
    Task<IEnumerable<Reservation>> GetByShopAsync(Guid shopId, DateTime? date = null, CancellationToken cancellationToken = default);
}
