Feat: Baja Lógica de Distribuidores (Selectores Dropdown)
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 8m32s

This commit is contained in:
2026-03-23 14:09:26 -03:00
parent 9201d7222b
commit 5212e31a03
17 changed files with 289 additions and 53 deletions

View File

@@ -56,20 +56,22 @@ namespace GestionIntegral.Api.Services.Distribucion
Depto = data.Distribuidor.Depto,
Telefono = data.Distribuidor.Telefono,
Email = data.Distribuidor.Email,
Localidad = data.Distribuidor.Localidad
Localidad = data.Distribuidor.Localidad,
Baja = data.Distribuidor.Baja,
FechaBaja = data.Distribuidor.FechaBaja
};
}
public async Task<IEnumerable<DistribuidorDto>> ObtenerTodosAsync(string? nombreFilter, string? nroDocFilter)
public async Task<IEnumerable<DistribuidorDto>> ObtenerTodosAsync(string? nombreFilter, string? nroDocFilter, bool? soloActivos = true)
{
var data = await _distribuidorRepository.GetAllAsync(nombreFilter, nroDocFilter);
var data = await _distribuidorRepository.GetAllAsync(nombreFilter, nroDocFilter, soloActivos);
// Filtrar nulos y asegurar al compilador que no hay nulos en la lista final
return data.Select(MapToDto).Where(dto => dto != null).Select(dto => dto!);
}
public async Task<IEnumerable<DistribuidorDropdownDto>> GetAllDropdownAsync()
public async Task<IEnumerable<DistribuidorDropdownDto>> GetAllDropdownAsync(bool? soloActivos = true)
{
var data = await _distribuidorRepository.GetAllDropdownAsync();
var data = await _distribuidorRepository.GetAllDropdownAsync(soloActivos);
// Asegurar que el resultado no sea nulo y no contiene elementos nulos
if (data == null)
{
@@ -223,6 +225,31 @@ namespace GestionIntegral.Api.Services.Distribucion
}
}
public async Task<(bool Exito, string? Error)> ToggleBajaAsync(int id, bool darDeBaja, DateTime? fechaBaja, int idUsuario)
{
var distribuidorExistente = await _distribuidorRepository.GetByIdSimpleAsync(id);
if (distribuidorExistente == null) return (false, "Distribuidor no encontrado.");
using var connection = _connectionFactory.CreateConnection();
if (connection is System.Data.Common.DbConnection dbConn) await dbConn.OpenAsync(); else connection.Open();
using var transaction = connection.BeginTransaction();
try
{
var toggled = await _distribuidorRepository.ToggleBajaAsync(id, darDeBaja, fechaBaja, idUsuario, transaction);
if (!toggled) throw new DataException("Error al cambiar estado de baja.");
transaction.Commit();
_logger.LogInformation("Distribuidor ID {IdDistribuidor} dado de {Estado} por Usuario ID {IdUsuario}.", id, darDeBaja ? "baja" : "alta", idUsuario);
return (true, null);
}
catch (KeyNotFoundException) { try { transaction.Rollback(); } catch { } return (false, "Distribuidor no encontrado."); }
catch (Exception ex)
{
try { transaction.Rollback(); } catch { }
_logger.LogError(ex, "Error ToggleBajaAsync Distribuidor ID: {IdDistribuidor}", id);
return (false, $"Error interno: {ex.Message}");
}
}
public async Task<IEnumerable<DistribuidorHistorialDto>> ObtenerHistorialAsync(
DateTime? fechaDesde, DateTime? fechaHasta,
int? idUsuarioModifico, string? tipoModificacion,