2025-07-14 16:16:05 -03:00
|
|
|
|
using Domain.Dtos.Stock;
|
|
|
|
|
|
using Domain.Entities;
|
2025-06-30 16:15:08 -03:00
|
|
|
|
using Domain.Generics;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Models.Interfaces
|
|
|
|
|
|
{
|
|
|
|
|
|
public interface IPhLSMProductRepository
|
|
|
|
|
|
{
|
2025-07-14 16:16:05 -03:00
|
|
|
|
/// <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>
|
2025-06-30 16:15:08 -03:00
|
|
|
|
Task<PagedResult<ELSProduct>> SearchAsync(LSProductSearchParams searchParams);
|
2025-07-14 16:16:05 -03:00
|
|
|
|
|
|
|
|
|
|
/// <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>
|
2025-06-30 16:15:08 -03:00
|
|
|
|
Task<ELSProduct?> GetByIdAsync(int id);
|
2025-07-14 16:16:05 -03:00
|
|
|
|
|
|
|
|
|
|
/// <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>
|
2025-06-30 16:15:08 -03:00
|
|
|
|
Task<ELSProduct> CreateAsync(ELSProduct entity);
|
2025-07-14 16:16:05 -03:00
|
|
|
|
|
|
|
|
|
|
/// <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>
|
2025-06-30 16:15:08 -03:00
|
|
|
|
Task<bool> UpdateAsync(ELSProduct entity);
|
2025-07-14 16:16:05 -03:00
|
|
|
|
|
|
|
|
|
|
/// <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>
|
2025-06-30 16:15:08 -03:00
|
|
|
|
Task<bool> DeleteAsync(int id);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-07-14 16:16:05 -03:00
|
|
|
|
|