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

namespace Models.Interfaces
{
    public interface IPhSQuoteHeaderRepository
    {
        Task<PagedResult<EQuoteHeader>> GetAllAsync(int page = 1, int pageSize = 50);
        Task<EQuoteHeader?> GetByIdAsync(int id);
        Task<EQuoteHeader?> GetByQuoteNumberAsync(string quoteNumber);
        Task<IEnumerable<EQuoteHeader>> GetByCustomerIdAsync(int customerId);
        Task UpdateAsync(EQuoteHeader quoteHeader);
        Task DeleteAsync(int id);
        // Ajustes
        //Task<IEnumerable<EQuoteAdjustment>> GetAdjustmentsByQuoteIdAsync(int quoteId);
        //Task<EQuoteAdjustment> AddAdjustmentAsync(EQuoteAdjustment adjustment);
        //Task UpdateAdjustmentAsync(EQuoteAdjustment adjustment);
        //Task DeleteAdjustmentAsync(int adjustmentId);
        ///// <summary>
        ///// Obtiene todos los impuestos asociados a un presupuesto dado por su ID.
        ///// </summary>
        //Task<IEnumerable<EQuoteTax>> GetTaxesByQuoteIdAsync(int quoteId);

        ///// <summary>
        ///// Agrega un nuevo impuesto al presupuesto correspondiente.
        ///// </summary>
        //Task<EQuoteTax> AddTaxAsync(EQuoteTax tax);

        ///// <summary>
        ///// Actualiza los datos de un impuesto existente en un presupuesto.
        ///// </summary>
        //Task UpdateTaxAsync(EQuoteTax tax);

        ///// <summary>
        ///// Elimina un impuesto asociado a un presupuesto a partir de su ID.
        ///// </summary>
        //Task DeleteTaxAsync(int taxId);
        //Task<string> CreateFullQuoteAsync(EQuoteHeader quote, int formSeriesId);
        //Task<IDbContextTransaction> BeginTransactionAsync();
    }
}
