parent
08e7c8f5ec
commit
102207c514
@ -0,0 +1,7 @@ |
||||
using CORRESPONSALBackend.DTO.Reportes.CuentasCerradas; |
||||
|
||||
namespace CORRESPONSALBackend.Contracts.Reportes.CuentasCerradas{ |
||||
public interface IReporteCuentasCerradasRepository{ |
||||
public Task<IEnumerable<DTOCuentasCerradas>> GetCuentasCerradas(string Inicio, string Fin, int TipoOperacion, int NoCliente, int IdCorresponsal); |
||||
} |
||||
} |
@ -0,0 +1,7 @@ |
||||
using CORRESPONSALBackend.DTO.Reportes.CuentasCerradas; |
||||
|
||||
namespace CORRESPONSALBackend.Contracts.Reportes.CuentasCerradas{ |
||||
public interface IReporteCuentasCerradasService{ |
||||
public Task<MemoryStream> GetExcel(IEnumerable<DTOCuentasCerradas> cuentas); |
||||
} |
||||
} |
@ -0,0 +1,30 @@ |
||||
using CORRESPONSALBackend.Contracts.Reportes.CuentasCerradas; |
||||
using Microsoft.AspNetCore.Authorization; |
||||
using Microsoft.AspNetCore.Mvc; |
||||
|
||||
namespace CORRESPONSALBackend.Controllers.Reportes{ |
||||
[Authorize] |
||||
[Route("api/[controller]")]
|
||||
[ApiController] |
||||
public class ReporteCuentasCerradasController : ControllerBase{ |
||||
private readonly IReporteCuentasCerradasService _service; |
||||
private readonly IReporteCuentasCerradasRepository _repository; |
||||
public ReporteCuentasCerradasController(IReporteCuentasCerradasService service, IReporteCuentasCerradasRepository repository){ |
||||
_service = service; |
||||
_repository = repository; |
||||
} |
||||
|
||||
[HttpGet("GetExcel")] |
||||
public async Task<IActionResult> ReporteCuentasCerradas([FromQuery] string Inicio, string Fin, int TipoOperacion, int NoCliente, int IdCorresponsal){ |
||||
try{ |
||||
var cuentas = await _repository.GetCuentasCerradas(Inicio, Fin, TipoOperacion, NoCliente, IdCorresponsal); |
||||
var stream = await _service.GetExcel(cuentas); |
||||
stream.Position = 0; |
||||
return File(stream, "application/octet-stream", $"Reporte.xlsx"); |
||||
}catch(Exception ex){ |
||||
return BadRequest(ex.Message); |
||||
} |
||||
} |
||||
|
||||
} |
||||
} |
@ -0,0 +1,23 @@ |
||||
namespace CORRESPONSALBackend.DTO.Reportes.CuentasCerradas{ |
||||
public class DTOCuentasCerradas{ |
||||
public string Trafico { get; set; } |
||||
public string TipoOperacion { get; set; } |
||||
public string Cliente { get; set; } |
||||
public string Proveedor { get; set; } |
||||
public string Corresponsal { get; set; } |
||||
public string Aduana { get; set; } |
||||
public string Patente { get; set; } |
||||
public string Pedimento { get; set; } |
||||
public string FechaPago { get; set; } |
||||
public string Facturas { get; set; } |
||||
public string Descripcion { get; set; } |
||||
public string FechaAlta { get; set; } |
||||
public string Clave { get; set; } |
||||
public string ValorMn { get; set; } |
||||
public string ValorDls { get; set; } |
||||
public string TipoCambio { get; set; } |
||||
public string ValorComercial { get; set; } |
||||
public string Fracciones { get; set; } |
||||
public string Caja { get; set; } |
||||
} |
||||
} |
@ -0,0 +1,28 @@ |
||||
using System.Data; |
||||
using CORRESPONSALBackend.Context; |
||||
using CORRESPONSALBackend.Contracts.Reportes.CuentasCerradas; |
||||
using CORRESPONSALBackend.DTO.Reportes.CuentasCerradas; |
||||
using Dapper; |
||||
|
||||
namespace CORRESPONSALBackend.Repository.Reportes.CuentasCerradas{ |
||||
public class ReporteCuentasCerradasRepository : IReporteCuentasCerradasRepository |
||||
{ |
||||
private readonly DapperContext _context; |
||||
public ReporteCuentasCerradasRepository(DapperContext context) { _context = context; } |
||||
public async Task<IEnumerable<DTOCuentasCerradas>> GetCuentasCerradas(string Inicio, string Fin, int TipoOperacion, int NoCliente, int IdCorresponsal) |
||||
{ |
||||
var query = "[Reportes.CuentasCerradas]"; |
||||
using var connection = _context.CreateConnection(); |
||||
var entrada = await connection.QueryAsync<DTOCuentasCerradas>(query, new |
||||
{ |
||||
@Inicio = Inicio, |
||||
@Fin = Fin, |
||||
@NoCliente = NoCliente, |
||||
@TipoOperacion = TipoOperacion, |
||||
@IdCorresponsal = IdCorresponsal |
||||
}, |
||||
commandType: CommandType.StoredProcedure); |
||||
return entrada; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,39 @@ |
||||
using CORRESPONSALBackend.Contracts.Reportes.CuentasCerradas; |
||||
using CORRESPONSALBackend.DTO.Reportes.CuentasCerradas; |
||||
using OfficeOpenXml; |
||||
using OfficeOpenXml.Style; |
||||
using OfficeOpenXml.Table; |
||||
|
||||
namespace CORRESPONSALBackend.Services.Reportes.CuentasCerradas{ |
||||
public class ReporteCuentasCerradasService : IReporteCuentasCerradasService |
||||
{ |
||||
public async Task<MemoryStream> GetExcel(IEnumerable<DTOCuentasCerradas> cuentas) |
||||
{ |
||||
try{ |
||||
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; |
||||
using (ExcelPackage excelPackage = new ExcelPackage()){ |
||||
var worksheet = excelPackage.Workbook.Worksheets.Add("sheet1"); |
||||
worksheet.Cells["A1"].LoadFromCollection(cuentas, true); |
||||
//Se crea la tabla en el rango de celdas donde se mostrara la inforamcion. |
||||
ExcelRange range = worksheet.Cells[1, 1,cuentas.Count() + 1, 19]; |
||||
ExcelTable tab = worksheet.Tables.Add(range, "Table1"); |
||||
tab.TableStyle = TableStyles.Light1; |
||||
worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns(); |
||||
worksheet.Column(10).Width = 100; |
||||
worksheet.Column(10).Style.WrapText = true; |
||||
worksheet.Column(11).Width = 100; |
||||
worksheet.Column(11).Style.WrapText = true; |
||||
worksheet.Column(19).Width = 100; |
||||
worksheet.Column(19).Style.WrapText = true; |
||||
worksheet.Cells[worksheet.Dimension.Address].Style.VerticalAlignment = ExcelVerticalAlignment.Center; |
||||
excelPackage.Workbook.Calculate(); |
||||
var stream = new MemoryStream(); |
||||
excelPackage.SaveAs(stream); |
||||
return stream; |
||||
} |
||||
}catch(Exception ex){ |
||||
throw new Exception(ex.Message); |
||||
} |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue