e7bda29ef3
- 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.
101 lines
3.7 KiB
C#
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 });
|
|
}
|
|
}
|