public IHttpActionResult GetProduccionDetail([FromUri] ProduccionRequest request) { BSProduccionDetalle bsPrimaCoaseguro = null; try { IProduccionDetalle client = new ImpProduccionDetalle(); if (request == null) { request = new ProduccionRequest(); } bsPrimaCoaseguro = client.GetProduccionDetalle(request.CodigoCompania, request.CodigoRamo, request.CodigoRegion, request.CodigoBroker); return(Ok(bsPrimaCoaseguro)); } catch (Exception ex) { log.Error("Se ha presentado el siguiente error: " + ex.Message); throw new HttpResponseException(Error.getErrorGenerico("A ocurrido un error al intentar procesar la informacion.")); } }
public BSProduccionDetalle GetProduccionDetalle(int CodigoCompania, String CodigoRamo, int CodigoRegion, int CodigoBroker) { String fechaActualizacion = ""; var coaseguroList = new List <Coaseguro>(); BSProduccionDetalle response = new BSProduccionDetalle(); List <BSDataCoaseguroPorPeriodo> DataCoasegPorPeriodo = new List <BSDataCoaseguroPorPeriodo>(); List <BSDataCoaseguroPorCompania> DataCoasegPorCompania = new List <BSDataCoaseguroPorCompania>(); List <BSDataCoaseguroPorRamo> DataCoasegPorRamo = new List <BSDataCoaseguroPorRamo>(); List <BSDataCoaseguroPorRegion> DataCoasegPorRegion = new List <BSDataCoaseguroPorRegion>(); try { var DetalleProduccion = ProxyProduccionDetalle.Instance.GetProduccionDetalle(CodigoCompania, CodigoRamo, CodigoRegion, CodigoBroker, evaluarParametros(CodigoCompania, CodigoRamo, CodigoRegion, CodigoBroker)); if (DetalleProduccion == null) { return(response); } var listPeriodosAgrupados = DetalleProduccion.DataCoasegPorPeriodo.GroupBy(x => x.MesCodigo).Distinct().ToList(); var listCompaniasAgrupadas = DetalleProduccion.DataCoasegPorCompania; var listRegionAgrupadas = DetalleProduccion.DataCoasegPorRegion; var listRamosAgrupadas = DetalleProduccion.DataCoasegPorRamo; foreach (var listAgrupadas in listPeriodosAgrupados) { foreach (var entity in listAgrupadas) { if (!DataCoasegPorPeriodo.Exists(x => x.CodigoMes == entity.MesCodigo)) { DataCoasegPorPeriodo.Add(formatearObjecto(entity, listAgrupadas)); fechaActualizacion = entity.FechaActualizacion; } } } for (int i = 0; i < listCompaniasAgrupadas.Count; i++) { String montoPEN = "0"; String montoUSD = "0"; if (i + 1 != listCompaniasAgrupadas.Count && listCompaniasAgrupadas.ElementAt(i).CodigoCompania == listCompaniasAgrupadas.ElementAt(i + 1).CodigoCompania) { montoPEN = listCompaniasAgrupadas.ElementAt(i + 1).MontoPEN; montoUSD = listCompaniasAgrupadas.ElementAt(i + 1).MontoUSD; } DataCoasegPorCompania.Add(new BSDataCoaseguroPorCompania() { CodigoCompania = listCompaniasAgrupadas.ElementAt(i).CodigoCompania, NombreCompania = listCompaniasAgrupadas.ElementAt(i).NombreCompania, MontoPEN = listCompaniasAgrupadas.ElementAt(i).MontoPEN, MontoUSD = listCompaniasAgrupadas.ElementAt(i).MontoUSD, MontoAnteriorPEN = montoPEN, MontoAnteriorUSD = montoUSD }); } for (int i = 0; i < listRamosAgrupadas.Count; i++) { String montoPEN = "0"; String montoUSD = "0"; if (i + 1 != listRamosAgrupadas.Count && listRamosAgrupadas.ElementAt(i).CodigoRamo == listRamosAgrupadas.ElementAt(i + 1).CodigoRamo) { montoPEN = listRamosAgrupadas.ElementAt(i + 1).MontoPEN; montoUSD = listRamosAgrupadas.ElementAt(i + 1).MontoUSD; } DataCoasegPorRamo.Add(new BSDataCoaseguroPorRamo() { CodigoRamo = listRamosAgrupadas.ElementAt(i).CodigoRamo, NombreRamo = listRamosAgrupadas.ElementAt(i).NombreRamo, MontoPEN = listRamosAgrupadas.ElementAt(i).MontoPEN, MontoUSD = listRamosAgrupadas.ElementAt(i).MontoUSD, MontoAnteriorPEN = montoPEN, MontoAnteriorUSD = montoUSD }); } for (int i = 0; i < listRegionAgrupadas.Count; i++) { String montoPEN = "0"; String montoUSD = "0"; if (i + 1 != listRegionAgrupadas.Count && listRegionAgrupadas.ElementAt(i).CodigoRegion == listRegionAgrupadas.ElementAt(i + 1).CodigoRegion) { montoPEN = listRegionAgrupadas.ElementAt(i + 1).MontoPEN; montoUSD = listRegionAgrupadas.ElementAt(i + 1).MontoUSD; } DataCoasegPorRegion.Add(new BSDataCoaseguroPorRegion() { CodigoRegion = listRegionAgrupadas.ElementAt(i).CodigoRegion, NombreRegion = listRegionAgrupadas.ElementAt(i).NombreRegion, MontoPEN = listRegionAgrupadas.ElementAt(i).MontoPEN, MontoUSD = listRegionAgrupadas.ElementAt(i).MontoUSD, MontoAnteriorPEN = montoPEN, MontoAnteriorUSD = montoUSD }); } response = new BSProduccionDetalle() { FechaActualizacion = fechaActualizacion, DataCoasegPorPeriodo = DataCoasegPorPeriodo.OrderByDescending(x => x.CodigoMes).ToList(), DataCoasegPorRegion = DataCoasegPorRegion.Distinct(new BSDataCoaseguroPorRegion()).OrderBy(x => x.CodigoRegion).ToList(), DataCoasegPorRamo = DataCoasegPorRamo.Distinct(new BSDataCoaseguroPorRamo()).OrderBy(x => x.CodigoRamo).ToList(), DataCoasegPorCompania = DataCoasegPorCompania.Distinct(new BSDataCoaseguroPorCompania()).ToList() }; } catch (Exception ex) { throw ex; } return(response); }