using Imprink.Domain.Entities; using Imprink.Domain.Models; namespace Imprink.Domain.Repositories; public interface IOrderRepository { Task GetByIdAsync(Guid id, CancellationToken cancellationToken = default); Task GetByIdWithDetailsAsync(Guid id, CancellationToken cancellationToken = default); Task> GetByUserIdAsync(string userId, CancellationToken cancellationToken = default); Task> GetByUserIdWithDetailsAsync(string userId, CancellationToken cancellationToken = default); Task> GetByMerchantIdAsync(string merchantId, CancellationToken cancellationToken = default); Task> GetByMerchantIdWithDetailsAsync(string merchantId, CancellationToken cancellationToken = default); Task> GetByDateRangeAsync(DateTime startDate, DateTime endDate, CancellationToken cancellationToken = default); Task> GetByStatusAsync(int statusId, CancellationToken cancellationToken = default); Task> GetByShippingStatusAsync(int shippingStatusId, CancellationToken cancellationToken = default); Task AddAsync(Order order, CancellationToken cancellationToken = default); Task UpdateAsync(Order order, CancellationToken cancellationToken = default); Task DeleteAsync(Guid id, CancellationToken cancellationToken = default); Task ExistsAsync(Guid id, CancellationToken cancellationToken = default); Task UpdateStatusAsync(Guid orderId, int statusId, CancellationToken cancellationToken = default); Task UpdateShippingStatusAsync(Guid orderId, int shippingStatusId, CancellationToken cancellationToken = default); Task AssignMerchantAsync(Guid orderId, string merchantId, CancellationToken cancellationToken = default); Task UnassignMerchantAsync(Guid orderId, CancellationToken cancellationToken = default); }