Nueva mejoras Y estabilidad

This commit is contained in:
2025-12-26 22:27:20 -06:00
parent 203859b22a
commit ac96cb1f23
23 changed files with 1841 additions and 480 deletions

View File

@@ -1,41 +1,30 @@
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using MieSystem.Data.Interfaces;
using MieSystem.Models;
using MieSystem.Models.ViewModels;
using MieSystem.Services;
namespace MieSystem.Controllers
{
public class AsistenciaController : Controller
{
private readonly IExpedienteRepository _expedienteRepository;
private readonly IAsistenciaRepository _asistenciaRepository;
public AsistenciaController(
IExpedienteRepository expedienteRepository,
IAsistenciaRepository asistenciaRepository)
private readonly ExpedienteService expedienteService;
private readonly AsistenciaService asistenciaService;
public AsistenciaController(ExpedienteService expedienteService, AsistenciaService asistenciaService)
{
_expedienteRepository = expedienteRepository;
_asistenciaRepository = asistenciaRepository;
this.expedienteService = expedienteService;
this.asistenciaService = asistenciaService;
}
public async Task<IActionResult> Index(int? año, int? mes, string diasSemana = null)
{
// Valores por defecto: mes actual
var fechaActual = DateTime.Now;
var añoSeleccionado = año ?? fechaActual.Year;
var mesSeleccionado = mes ?? fechaActual.Month;
// Obtener todos los niños activos
var expedientes = await _expedienteRepository.GetActivosAsync();
var expedientes = await expedienteService.GetActivosAsync();
// Obtener días del mes seleccionado
var diasDelMes = GetDiasDelMes(añoSeleccionado, mesSeleccionado);
// Filtrar por días de semana si se especifica
if (!string.IsNullOrEmpty(diasSemana))
{
var diasFiltro = diasSemana.Split(',')
@@ -45,7 +34,7 @@ namespace MieSystem.Controllers
}
// Obtener asistencias para el mes
var asistencias = await _asistenciaRepository.GetAsistenciasPorMesAsync(
var asistencias = await asistenciaService.GetAsistenciasPorMesAsync(
añoSeleccionado, mesSeleccionado);
// Crear diccionario para acceso rápido
@@ -53,7 +42,7 @@ namespace MieSystem.Controllers
foreach (var asistencia in asistencias)
{
var key = $"{asistencia.ExpedienteId}_{asistencia.Fecha:yyyy-MM-dd}";
dictAsistencias[key] = asistencia.Estado;
dictAsistencias[key] = asistencia.Estado.ToString();
}
// Crear modelo de vista
@@ -89,11 +78,11 @@ namespace MieSystem.Controllers
{
ExpedienteId = expedienteId,
Fecha = fechaDate,
Estado = estado,
Estado = estado[0],
UsuarioRegistro = User.Identity?.Name ?? "Sistema"
};
var resultado = await _asistenciaRepository.GuardarAsistenciaAsync(asistencia);
var resultado = await asistenciaService.SaveAsync(asistencia);
return Json(new { success = resultado, message = "Asistencia guardada" });
}
@@ -116,13 +105,13 @@ namespace MieSystem.Controllers
{
ExpedienteId = asistenciaDto.ExpedienteId,
Fecha = asistenciaDto.Fecha,
Estado = asistenciaDto.Estado,
Estado = asistenciaDto.Estado[0],
UsuarioRegistro = User.Identity?.Name ?? "Sistema"
};
asistenciasModel.Add(asistencia);
}
var resultado = await _asistenciaRepository.GuardarAsistenciasMasivasAsync(asistenciasModel);
var resultado = asistenciaService.GuardarAsistenciasMasivasAsync(asistenciasModel);
return Json(new
{
@@ -141,7 +130,7 @@ namespace MieSystem.Controllers
{
try
{
var estadisticas = await _asistenciaRepository.GetEstadisticasMesAsync(año, mes);
var estadisticas = await asistenciaService.GetEstadisticasMesAsync(año, mes);
return Json(estadisticas);
}
catch (Exception ex)