using Domain.Dtos.Sales;
using Domain.Entities;
using Domain.Generics;

namespace Models.Interfaces
{
    public interface IPhSDeliveryNoteRepository
    {
        Task<PagedResult<DeliveryNoteSummaryDto>> SearchAsync(
            int? customerId,
            string? customerText,
            string? deliveryNoteNumber,
            int? quoteId,
            string? quoteNumber,
            DateTime? issueDateFrom,
            DateTime? issueDateTo,
            string? status,
            int page = 1,
            int pageSize = 50);

        Task<DeliveryNoteDto?> GetDtoByIdAsync(int id);
        Task<DeliveryNoteDto?> GetDtoByDeliveryNoteNumberAsync(string deliveryNoteNumber);
        Task<IEnumerable<DeliveryNoteDto>> GetDtosByQuoteIdAsync(int quoteId);

        Task<bool> ExistsByDeliveryNoteNumberAsync(string deliveryNoteNumber);
        Task<EDeliveryNote> CreateAsync(EDeliveryNote entity);
    }
}
