Clasificaciones - AndresRamos/ARSoftware.Contpaqi.Comercial GitHub Wiki

Modelos

admClasificaciones

La clase admClasificaciones representa el modelo de SQL con el esquema completo de la tabla de clasificaciones en la base de datos. Se utiliza principalmente para consultar el catalogo de clasificaciones cuando se necesita obtener el esquema completo.

public partial class admClasificaciones
{
    public int CIDCLASIFICACION { get; set; }
    public string CNOMBRECLASIFICACION { get; set; } = null!;
}

Consultas

Repositorios

El proyecto incluye repositorios que implementan la interfaz IClasificacionRepository<T> que proporciona metodos que puedes utilizar para consultar el catalogo clasificaciones.

Los repositorios disponibles para SDK son:

  • ClasificacionSdkRepository<T> - Implementa IClasificacionRepository<T>

El repositorio ClasificacionSdkRepository<T> utiliza reflection para buscar los valores de la propiedades del tipo T en el modelo de SQL admClasificaciones por lo que debes asegurarte que las propiedades del tipo T tengan el mismo nombre que las columnas de la tabla admClasificaciones en la base de datos.

Los repositorios disponibles para SQL son:

  • ClasificacionSqlRepository<T> - Implementa IClasificacionSqlRepository<T>. IClasificacionSqlRepository<T> hereda de IClasificacionRepository<T> y define las versiones asincronas de los metodos para beneficiarse del uso de Entity Framework Core.

El repositorio ClasificacionSqlRepository<T> utiliza AutoMapper para proyectar el modelo de SQL admClasificaciones al tipo del parametro T por lo debes crear una configuracion de mapeo con AutoMapper para que funcione.

IClasificacionRepository<T>

/// <summary>
///     Interfaz de repositorio que define métodos para consultar clasificaciones.
/// </summary>
/// <typeparam name="T">
///     El tipo de clasificación utilizado por el repositorio.
/// </typeparam>
public interface IClasificacionRepository<T> where T : class, new()
{
    /// <summary>
    ///     Busca una clasificación por id.
    /// </summary>
    /// <param name="idClasificacion">
    ///     Id de la clasificación a buscar.
    /// </param>
    /// <returns>
    ///     Una clasificación, o <see langword="null" /> si no existe una clasificación con el id proporcionado.
    /// </returns>
    T? BuscarPorId(int idClasificacion);

    /// <summary>
    ///     Busca una clasificación por tipo y número.
    /// </summary>
    /// <param name="tipoClasificacion">
    ///     Tipo de la clasificación a buscar.
    /// </param>
    /// <param name="numeroClasificacion">
    ///     Número de la clasificación a buscar.
    /// </param>
    /// <returns>
    ///     Una clasificación, o <see langword="null" /> si no existe una clasificación con el tipo y número proporcionados.
    /// </returns>
    T? BuscarPorTipoYNumero(TipoClasificacion tipoClasificacion, NumeroClasificacion numeroClasificacion);

    /// <summary>
    ///     Busca todas las clasificaciones de un tipo.
    /// </summary>
    /// <param name="tipoClasificacion">
    ///     Tipo de las clasificaciones a buscar.
    /// </param>
    /// <returns>
    ///     Lista de clasificaciones.
    /// </returns>
    List<T> TraerPorTipo(TipoClasificacion tipoClasificacion);

    /// <summary>
    ///     Busca todas las clasificaciones.
    /// </summary>
    /// <returns>
    ///     Lista de clasificaciones.
    /// </returns>
    List<T> TraerTodo();
}

IClasificacionSqlRepository<T>

/// <inheritdoc cref="IClasificacionRepository{T}" />
public interface IClasificacionSqlRepository<T> : IClasificacionRepository<T> where T : class, new()
{
    /// <summary>
    ///     Busca una clasificación por id.
    /// </summary>
    /// <param name="idClasificacion">
    ///     Id de la clasificación a buscar.
    /// </param>
    /// <param name="cancellationToken">
    ///     Token de cancelación.
    /// </param>
    /// <returns>
    ///     Una clasificación, o <see langword="null" /> si no existe una clasificación con el id proporcionado.
    /// </returns>
    Task<T?> BuscarPorIdAsyc(int idClasificacion, CancellationToken cancellationToken);

    /// <summary>
    ///     Busca una clasificación por tipo y número.
    /// </summary>
    /// <param name="tipoClasificacion">
    ///     Tipo de la clasificación a buscar.
    /// </param>
    /// <param name="numeroClasificacion">
    ///     Número de la clasificación a buscar.
    /// </param>
    /// <param name="cancellationToken">
    ///     Token de cancelación.
    /// </param>
    /// <returns>
    ///     Una clasificación, o <see langword="null" /> si no existe una clasificación con el tipo y número proporcionados.
    /// </returns>
    Task<T?> BuscarPorTipoYNumeroAsync(TipoClasificacion tipoClasificacion, NumeroClasificacion numeroClasificacion,
        CancellationToken cancellationToken);

    /// <summary>
    ///     Busca todas las clasificaciones de un tipo.
    /// </summary>
    /// <param name="tipoClasificacion">
    ///     Tipo de las clasificaciones a buscar.
    /// </param>
    /// <param name="cancellationToken">
    ///     Token de cancelación.
    /// </param>
    /// <returns>
    ///     Lista de clasificaciones.
    /// </returns>
    Task<List<T>> TraerPorTipoAsync(TipoClasificacion tipoClasificacion, CancellationToken cancellationToken);

    /// <summary>
    ///     Busca todas las clasificaciones.
    /// </summary>
    /// <param name="cancellationToken">
    ///     Token de cancelación.
    /// </param>
    /// <returns>
    ///     Lista de clasificaciones.
    /// </returns>
    Task<List<T>> TraerTodoAsync(CancellationToken cancellationToken);
}

Dependency Injection

public sealed class BuscarClasificacionesConRepositorio
{
    private readonly IClasificacionRepository<admClasificaciones> _clasificacionRepository;
    // private readonly IClasificacionRepository<TuModelo> _clasificacionRepository;

    public BuscarClasificacionesConRepositorio(IClasificacionRepository<admClasificaciones> clasificacionRepository)
    {
        _clasificacionRepository = clasificacionRepository;
    }
}

Buscar Por Id

public void BuscarPorId()
{
    var idClasificacion = 1;

    admClasificaciones? clasificacion = _clasificacionRepository.BuscarPorId(idClasificacion);

    _logger.LogInformation("{@Clasificacion}", clasificacion);
}

Buscar Por Tipo Y Numero

public void BuscarPorTipoYNumero()
{
    var tipoClasificacion = TipoClasificacion.Producto;
    var numeroClasificacion = NumeroClasificacion.Uno;

    admClasificaciones? clasificacion = _clasificacionRepository.BuscarPorTipoYNumero(tipoClasificacion, numeroClasificacion);

    _logger.LogInformation("{@Clasificacion}", clasificacion);
}

Traer Por Tipo

public void TraerPorTipo()
{
    var tipoClasificacion = TipoClasificacion.Producto;

    List<admClasificaciones> clasificaciones = _clasificacionRepository.TraerPorTipo(tipoClasificacion);

    _logger.LogInformation("{@Clasificaciones}", clasificaciones);
}

Traer Todo

public void TraerTodo()
{
    List<admClasificaciones> clasificaciones = _clasificacionRepository.TraerTodo();

    _logger.LogInformation("{@Clasificaciones}", clasificaciones);
}
⚠️ **GitHub.com Fallback** ⚠️