Files
rm-ventas/backend/src/Ventas.API/Controllers/CotizacionController.cs
T
Nurfog e7bda29ef3 Refactor services to use repository pattern for database operations
- Updated EmpresaReportService to utilize ICatalogoRepository for stored procedure calls.
- Refactored InformeService to include new method for executing Crystal Reports stored procedures.
- Simplified LeadService by removing direct database connections and using ILeadRepository and ILeadQueryRepository.
- Modified ReportService to leverage ICatalogoRepository for querying stored procedures.
- Streamlined UsuarioService to use IUsuarioRepository for user authentication and profile retrieval.
- Added new CatalogoService to handle various catalog-related queries and operations.
- Introduced ArqueoRepository and CatalogoRepository for managing database interactions.
- Created DTOs for various entities including Alumno, Contrato, Cotizacion, Descuento, Documento, Empresa, and Propuesta.
- Implemented BaseController and ErrorController for standardized API responses and error handling.
- Added QuestPDF package for PDF generation capabilities.
2026-07-08 13:57:29 -04:00

101 lines
3.7 KiB
C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Ventas.Core.DTOs;
using Ventas.Services;
namespace Ventas.API.Controllers;
[ApiController]
[Route("api/[controller]")]
[Authorize]
public class CotizacionController : ControllerBase
{
private readonly CotizacionService _cotizacionService;
public CotizacionController(CotizacionService cotizacionService)
{
_cotizacionService = cotizacionService;
}
[HttpPost]
public async Task<IActionResult> Ingresar([FromBody] CotizacionIngresoRequest request)
{
var result = await _cotizacionService.IngresarAsync(request.ApoderadoId, request.VendedorId, request.SolicitudDescuento, request.Descuento, request.TipoDescuento, request.Fecha, request.Alumnos, request.Curso, request.Monto, request.Validez, request.LeadId);
return Ok(new { id = result });
}
[HttpPost("detalle")]
public async Task<IActionResult> IngresarDetalle([FromBody] CotizacionDetalleRequest request)
{
var result = await _cotizacionService.IngresarDetalleAsync(request.CotizacionId, request.AlumnoId, request.CursoId, request.Cantidad, request.Tarifa);
return Ok(new { mensaje = result });
}
[HttpPost("detalle-sin-curso")]
public async Task<IActionResult> DetalleSinCurso([FromBody] CotizacionDetalleSinCursoRequest request)
{
var result = await _cotizacionService.DetalleSinCursoAsync(request.CotizacionId, request.AlumnoId, request.ApoderadoId, request.ProgramaId, request.Cantidad, request.Tarifa, request.SedeId);
return Ok(new { mensaje = result });
}
[HttpGet("lead/{lead}")]
public async Task<IActionResult> BuscarPorLead(int lead)
{
var result = await _cotizacionService.BuscarAsync(lead);
return Ok(result);
}
[HttpGet("lead/{lead}/sin-curso")]
public async Task<IActionResult> BuscarSinCurso(int lead)
{
var result = await _cotizacionService.BuscarSinCursoAsync(lead);
return Ok(result);
}
[HttpGet("buscar")]
public async Task<IActionResult> BuscarInfo([FromQuery] string tipoBusqueda, [FromQuery] string nombre)
{
var result = await _cotizacionService.BuscarInfoAsync(tipoBusqueda, nombre);
return Ok(result);
}
[HttpGet("{id}/detalle")]
public async Task<IActionResult> Detalle(int id)
{
var result = await _cotizacionService.DetalleAsync(id);
return Ok(result);
}
[HttpPost("{id}/pagar")]
public async Task<IActionResult> Pagar(int id)
{
var result = await _cotizacionService.PersonaPagarAsync(id);
return Ok(new { mensaje = result });
}
[HttpPut("{id}/desactivar")]
public async Task<IActionResult> Desactivar(int id)
{
var result = await _cotizacionService.DesactivarAsync(id);
return Ok(new { mensaje = result });
}
[HttpPost("empresa")]
public async Task<IActionResult> CotizacionEmpIngreso([FromBody] CotizacionEmpRequest request)
{
var result = await _cotizacionService.CotizacionEmpIngresoAsync(
request.EmpresaId, request.Vendedor, request.Alumnos, request.Curso,
request.EmpresaMonto, request.OticMonto, request.AlumnoMonto,
request.CotizacionTipo, request.Validez, request.DescuentoId,
request.EstadoId, request.OticId, request.Motivo);
return Ok(new { id = result });
}
[HttpPut("{id}/estado")]
public async Task<IActionResult> ActualizarEstado(int id, [FromBody] CotizacionEstadoUpdateRequest request)
{
var result = await _cotizacionService.ActualizaEstadoCotizacionAsync(request.Tipo, id, request.ValorA ?? "", request.ValorB);
return Ok(new { mensaje = result });
}
}