Files
lux/EgwCoreLib.Lux.Data/Repository/Sales/IOfferRepository.cs
T
Samuele E. Locatelli (W11-AI) c762b4e74b Continuo con fix manuali su correzioni
2026-03-25 17:21:26 +01:00

89 lines
3.7 KiB
C#

namespace EgwCoreLib.Lux.Data.Repository.Sales
{
/// <summary>
/// Interfaccia per la gestione delle offerte.
/// </summary>
public interface IOfferRepository : IBaseRepository
{
/// <summary>
/// Inserisce una nuova offerta nel database.
/// </summary>
/// <param name="entity">L'offerta da inserire.</param>
/// <returns>True se l'inserimento ha successo, false altrimenti.</returns>
Task<bool> AddAsync(OfferModel entity);
/// <summary>
/// Segna come scadute le offerte la cui data di validità è passata e che sono ancora aperte.
/// </summary>
/// <returns>True se almeno un'offerta è stata aggiornata, false altrimenti.</returns>
Task<bool> CheckExpiredAsync();
/// <summary>
/// Esegue il cloning completo di un'Offerta e di tutte le relative righe.
/// </summary>
/// <param name="rec2clone">L'offerta da clonare.</param>
/// <returns>True se il cloning ha successo, false altrimenti.</returns>
Task<bool> CloneAsync(OfferModel rec2clone);
/// <summary>
/// Elimina un'offerta dal database.
/// </summary>
/// <param name="entity">L'offerta da eliminare.</param>
/// <returns>True se l'eliminazione ha successo, false altrimenti.</returns>
Task<bool> DeleteAsync(OfferModel entity);
/// <summary>
/// Recupera l'elenco di tutte le offerte.
/// </summary>
/// <returns>L'elenco di tutte le offerte con clienti, rivenditori e righe associate.</returns>
Task<List<OfferModel>> GetAllAsync();
/// <summary>
/// Recupera l'elenco degli elementi BOM (Bill of Materials) utilizzati nelle offerte.
/// </summary>
/// <returns>L'elenco degli elementi BOM.</returns>
Task<List<ItemModel>> GetBomItemsAsync();
/// <summary>
/// Recupera un'offerta per il suo identificatore.
/// </summary>
/// <param name="recId">L'identificatore dell'offerta.</param>
/// <returns>L'offerta corrispondente, o null se non esiste.</returns>
Task<OfferModel?> GetByIdAsync(int recId);
/// <summary>
/// Recupera le offerte inserite in un intervallo di date specifico.
/// </summary>
/// <param name="inizio">La data di inizio del periodo.</param>
/// <param name="fine">La data di fine del periodo.</param>
/// <returns>L'elenco delle offerte nell'intervallo specificato.</returns>
Task<List<OfferModel>> GetFiltAsync(DateTime inizio, DateTime fine);
/// <summary>
/// Recupera l'elenco dei gruppi di articoli.
/// </summary>
/// <returns>L'elenco dei gruppi di articoli.</returns>
Task<List<ItemGroupModel>> GetItemGroupsAsync();
/// <summary>
/// Recupera le righe dell'offerta per un'offerta specifica.
/// </summary>
/// <param name="recId">L'identificatore dell'offerta.</param>
/// <returns>L'elenco delle righe dell'offerta.</returns>
Task<List<OfferRowModel>> GetRowsAsync(int recId);
/// <summary>
/// Aggiorna in batch le righe di un'offerta.
/// </summary>
/// <param name="rows">L'elenco delle righe da aggiornare.</param>
/// <returns>True se l'aggiornamento ha successo, false altrimenti.</returns>
Task<bool> SaveRowsAsync(List<OfferRowModel> rows);
/// <summary>
/// Aggiorna un'offerta esistente nel database.
/// </summary>
/// <param name="entity">L'offerta aggiornata.</param>
/// <returns>True se l'aggiornamento ha successo, false altrimenti.</returns>
Task<bool> UpdateAsync(OfferModel entity);
}
}