phronCare/Models/Interfaces/IPhLSMProductRepository.cs
Leandro Hernan Rojas 369190695b
All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (push) Successful in 26m25s
Add Massive Import Products
2025-07-14 16:16:05 -03:00

53 lines
2.1 KiB
C#

using Domain.Dtos.Stock;
using Domain.Entities;
using Domain.Generics;
namespace Models.Interfaces
{
public interface IPhLSMProductRepository
{
/// <summary>
/// Realiza una búsqueda paginada de productos según los parámetros provistos.
/// </summary>
/// <param name="searchParams">Parámetros de búsqueda y paginación.</param>
/// <returns>Página de productos que cumplen con los filtros.</returns>
Task<PagedResult<ELSProduct>> SearchAsync(LSProductSearchParams searchParams);
/// <summary>
/// Obtiene un producto por su identificador único.
/// </summary>
/// <param name="id">ID del producto.</param>
/// <returns>Producto encontrado o null si no existe.</returns>
Task<ELSProduct?> GetByIdAsync(int id);
/// <summary>
/// Inserta una lista de productos importados. Devuelve la cantidad de insertados y los omitidos/skipped.
/// </summary>
/// <param name="items">Lista de productos a importar (vista previa validada).</param>
/// <returns>Resultado de la importación con cantidades y errores.</returns>
Task<ProductImportResultDto> ImportProductsAsync(List<ProductImportPreviewDto> items);
/// <summary>
/// Crea un nuevo producto en la base de datos.
/// </summary>
/// <param name="entity">Entidad de producto a crear.</param>
/// <returns>Producto creado.</returns>
Task<ELSProduct> CreateAsync(ELSProduct entity);
/// <summary>
/// Actualiza un producto existente.
/// </summary>
/// <param name="entity">Entidad de producto con los datos actualizados.</param>
/// <returns>True si la actualización fue exitosa.</returns>
Task<bool> UpdateAsync(ELSProduct entity);
/// <summary>
/// Elimina un producto por su identificador único.
/// </summary>
/// <param name="id">ID del producto a eliminar.</param>
/// <returns>True si la eliminación fue exitosa.</returns>
Task<bool> DeleteAsync(int id);
}
}