using Dapper; using Npgsql; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace Ventas.API.Controllers; [ApiController] [Route("api/[controller]")] [Authorize] public class CursoController : ControllerBase { private readonly string _connectionString; public CursoController(IConfiguration configuration) { _connectionString = configuration.GetConnectionString("Default")!; } private async Task>> QuerySpAsync(string sp, object parameters) { using var connection = new NpgsqlConnection(_connectionString); var rows = await connection.QueryAsync(sp, parameters, commandType: System.Data.CommandType.StoredProcedure); return rows.Select(r => (Dictionary)(IDictionary)r!); } [HttpGet] public async Task Buscar([FromQuery] string tipoBusqueda, [FromQuery] string nombre) => Ok(await QuerySpAsync("sige_sam_v3.BuscarCurso", new { tipobusqueda = tipoBusqueda, cursonombre = nombre })); [HttpGet("horario")] public async Task BuscarHorario([FromQuery] int sede, [FromQuery] int curso) => Ok(await QuerySpAsync("sam.WEB_Horarios_ecommerce", new { cursoid = curso, sedeid = sede })); [HttpGet("fechas-disponibles")] public async Task FechaDisponibles([FromQuery] int curso, [FromQuery] int sede) => Ok(await QuerySpAsync("sige_sam_v3.EcommerceFechas", new { cursoid = curso, sedeid = sede })); [HttpGet("apertura")] public async Task BuscarApertura( [FromQuery] string tipoBusqueda, [FromQuery] int codigoCurso, [FromQuery] int periodo, [FromQuery] int year, [FromQuery] int producto, [FromQuery] int sede, [FromQuery] int jornada, [FromQuery] int asignacionProfe, [FromQuery] DateTime fecha) => Ok(await QuerySpAsync("sige_sam_v3.BuscarCursosAperturados", new { tipobusqueda = tipoBusqueda, codigocurso = codigoCurso, periodo, yearperiodo = year, producto, sede, jornada, asignacion = asignacionProfe, fechatermino = fecha })); }