public IActionResult ConsultarPorId([FromBody] CalcularPrecioDiaRendimientoRequestDTO request)
        {
            Guid guid = Guid.NewGuid();

            _log.RegistrarEvento($"{guid.ToString()}{Environment.NewLine}{Newtonsoft.Json.JsonConvert.SerializeObject(request)}");

            CalculoPrecioDiaRendimientoResponseDTO response = new CalculoPrecioDiaRendimientoResponseDTO();

            try
            {
                response.Result.Data = _PrecioDiaRendimientoService.CalcularPrecioDiaRendimiento(request);

                response.Result.Success = true;
            }
            catch (ResultException ex)
            {
                response.Result = new Result()
                {
                    Success = true, ErrCode = ex.Result.ErrCode, Message = ex.Result.Message
                };
            }
            catch (Exception ex)
            {
                response.Result = new Result()
                {
                    Success = false, Message = "Ocurrio un problema en el servicio, intentelo nuevamente."
                };
                _log.RegistrarEvento(ex, guid.ToString());
            }

            _log.RegistrarEvento($"{guid.ToString()}{Environment.NewLine}{Newtonsoft.Json.JsonConvert.SerializeObject(response)}");

            return(Ok(response));
        }
        public CalculoPrecioDiaRendimientoDTO CalcularPrecioDiaRendimiento(CalcularPrecioDiaRendimientoRequestDTO request)
        {
            CalculoPrecioDiaRendimientoDTO calculoPrecioDiaRendimientoDTO = new CalculoPrecioDiaRendimientoDTO();

            decimal precioPromedio = _IContratoRepository.CalcularPrecioDiaContrato(request.EmpresaId);

            calculoPrecioDiaRendimientoDTO.PrecioPromedioContrato = Math.Round(precioPromedio, 2);

            decimal tipoCambio = _ITipoCambioDiaRepository.ObtenerTipoCambioDia(request.EmpresaId);


            calculoPrecioDiaRendimientoDTO.TipoCambio = tipoCambio;

            List <CalculoPrecioDiaRendimientoBE> precios = new List <CalculoPrecioDiaRendimientoBE>();

            int valorConstante = 46;

            string monedaId = "01";


            if (monedaId != "01")
            {
                tipoCambio = 1;
            }

            List <ConsultaDetalleTablaBE> lista = _IMaestroRepository.ConsultarDetalleTablaDeTablas(request.EmpresaId, "ES").ToList();

            lista = lista.Where(a => a.CodigoTabla.Equals("RangoPreciosCafePergamino")).ToList();

            foreach (ConsultaDetalleTablaBE rangoPrecio in lista)
            {
                if (!string.IsNullOrEmpty(rangoPrecio.Val1) && !string.IsNullOrEmpty(rangoPrecio.Val2))
                {
                    CalculoPrecioDiaRendimientoBE precio = new CalculoPrecioDiaRendimientoBE();
                    precio.RendimientoInicio = Convert.ToDecimal(rangoPrecio.Val1);
                    precio.RendimientoFin    = Convert.ToDecimal(rangoPrecio.Val2);
                    precio.KGPergamino       = Math.Round(valorConstante / (precio.RendimientoInicio / 100), 2);
                    precio.PrecioDia         = Math.Round((precioPromedio / precio.KGPergamino) * tipoCambio, 2);
                    precio.MonedaId          = monedaId;

                    precios.Add(precio);
                }
            }



            //CalculoPrecioDiaRendimientoBE precio1 = new CalculoPrecioDiaRendimientoBE();
            //precio1.RendimientoInicio = 64.00M;
            //precio1.RendimientoFin = 65.99M;
            //precio1.KGPergamino = Math.Round(valorConstante /(precio1.RendimientoInicio/100), 2);
            //precio1.PrecioDia = Math.Round((precioPromedio / precio1.KGPergamino)*tipoCambio, 2);
            //precio1.MonedaId = monedaId;

            //CalculoPrecioDiaRendimientoBE precio2 = new CalculoPrecioDiaRendimientoBE();
            //precio2.RendimientoInicio = 66.00M;
            //precio2.RendimientoFin = 67.99M;
            //precio2.KGPergamino = Math.Round(valorConstante / (precio2.RendimientoInicio / 100),2);
            //precio2.PrecioDia = Math.Round((precioPromedio / precio2.KGPergamino)* tipoCambio, 2);
            //precio2.MonedaId = monedaId;



            //CalculoPrecioDiaRendimientoBE precio3 = new CalculoPrecioDiaRendimientoBE();
            //precio3.RendimientoInicio = 68.00M;
            //precio3.RendimientoFin = 69.99M;
            //precio3.KGPergamino = Math.Round(valorConstante / (precio3.RendimientoInicio / 100), 2);
            //precio3.PrecioDia = Math.Round((precioPromedio / precio3.KGPergamino) * tipoCambio, 2);
            //precio3.MonedaId = monedaId;


            //CalculoPrecioDiaRendimientoBE precio4 = new CalculoPrecioDiaRendimientoBE();
            //precio4.RendimientoInicio = 70.00M;
            //precio4.RendimientoFin = 71.99M;
            //precio4.KGPergamino = Math.Round(valorConstante / (precio4.RendimientoInicio / 100), 2);
            //precio4.PrecioDia = Math.Round((precioPromedio / precio4.KGPergamino) * tipoCambio, 2);
            //precio4.MonedaId = monedaId;

            //CalculoPrecioDiaRendimientoBE precio5 = new CalculoPrecioDiaRendimientoBE();
            //precio5.RendimientoInicio = 72.00M;
            //precio5.RendimientoFin = 73.99M;
            //precio5.KGPergamino = Math.Round(valorConstante / (precio5.RendimientoInicio / 100), 2);
            //precio5.PrecioDia = Math.Round((precioPromedio / precio5.KGPergamino) * tipoCambio, 2);
            //precio5.MonedaId = monedaId;



            //CalculoPrecioDiaRendimientoBE precio6 = new CalculoPrecioDiaRendimientoBE();
            //precio6.RendimientoInicio = 74.00M;
            //precio6.RendimientoFin = 75.99M;
            //precio6.KGPergamino = Math.Round(valorConstante / (precio6.RendimientoInicio / 100), 2);
            //precio6.PrecioDia = Math.Round((precioPromedio / precio6.KGPergamino) * tipoCambio, 2);
            //precio6.MonedaId = monedaId;


            //CalculoPrecioDiaRendimientoBE precio7 = new CalculoPrecioDiaRendimientoBE();
            //precio7.RendimientoInicio = 76.00M;
            //precio7.RendimientoFin = 77.99M;
            //precio7.KGPergamino = Math.Round(valorConstante / (precio7.RendimientoInicio / 100), 2);
            //precio7.PrecioDia = Math.Round((precioPromedio / precio7.KGPergamino) * tipoCambio, 2);
            //precio7.MonedaId = monedaId;


            //CalculoPrecioDiaRendimientoBE precio8 = new CalculoPrecioDiaRendimientoBE();
            //precio8.RendimientoInicio = 78.00M;
            //precio8.RendimientoFin = 79.99M;
            //precio8.KGPergamino = Math.Round(valorConstante / (precio8.RendimientoInicio / 100), 2);
            //precio8.PrecioDia = Math.Round((precioPromedio / precio8.KGPergamino) * tipoCambio, 2);
            //precio8.MonedaId = monedaId;


            //CalculoPrecioDiaRendimientoBE precio9 = new CalculoPrecioDiaRendimientoBE();

            //precio9.RendimientoInicio = 80.00M;
            //precio9.RendimientoFin = 80.00M;
            //precio9.KGPergamino = Math.Round(valorConstante / (precio9.RendimientoInicio / 100), 2);
            //precio9.PrecioDia = Math.Round((precioPromedio / precio9.KGPergamino) * tipoCambio, 2);
            //precio9.MonedaId = monedaId;


            //precios.Add(precio1);
            //precios.Add(precio2);
            //precios.Add(precio3);
            //precios.Add(precio4);
            //precios.Add(precio5);
            //precios.Add(precio6);
            //precios.Add(precio7);
            //precios.Add(precio8);
            //precios.Add(precio9);

            calculoPrecioDiaRendimientoDTO.CalculoPrecioDiaRendimiento = precios;


            return(calculoPrecioDiaRendimientoDTO);
        }
        public List <PorcentajeRendimientoBE> ConsultarPorcentajeRendimiento(CalcularPrecioDiaRendimientoRequestDTO request)
        {
            List <PorcentajeRendimientoBE> rendimientos = new List <PorcentajeRendimientoBE>();

            int valorConstante = 46;


            List <ConsultaDetalleTablaBE> lista = _IMaestroRepository.ConsultarDetalleTablaDeTablas(request.EmpresaId, String.Empty).ToList();

            lista = lista.Where(a => a.CodigoTabla.Equals("RangoPreciosCafePergamino")).ToList();

            foreach (ConsultaDetalleTablaBE rangoPrecio in lista)
            {
                if (!string.IsNullOrEmpty(rangoPrecio.Val1) && !string.IsNullOrEmpty(rangoPrecio.Val2))
                {
                    PorcentajeRendimientoBE rendimiento = new PorcentajeRendimientoBE();
                    rendimiento.RendimientoInicio = Convert.ToDecimal(rangoPrecio.Val1);
                    rendimiento.RendimientoFin    = Convert.ToDecimal(rangoPrecio.Val2);
                    rendimiento.KGPergamino       = Math.Round(valorConstante / (rendimiento.RendimientoInicio / 100), 2);

                    rendimientos.Add(rendimiento);
                }
            }


            //PorcentajeRendimientoBE rendimiento1 = new PorcentajeRendimientoBE();
            //rendimiento1.RendimientoInicio = 64.00M;
            //rendimiento1.RendimientoFin = 65.99M;
            //rendimiento1.KGPergamino = Math.Round(valorConstante / (rendimiento1.RendimientoInicio / 100), 2);


            //PorcentajeRendimientoBE rendimiento2 = new PorcentajeRendimientoBE();
            //rendimiento2.RendimientoInicio = 66.00M;
            //rendimiento2.RendimientoFin = 67.99M;
            //rendimiento2.KGPergamino = Math.Round(valorConstante / (rendimiento2.RendimientoInicio / 100), 2);

            //PorcentajeRendimientoBE rendimiento3 = new PorcentajeRendimientoBE();
            //rendimiento3.RendimientoInicio = 68.00M;
            //rendimiento3.RendimientoFin = 69.99M;
            //rendimiento3.KGPergamino = Math.Round(valorConstante / (rendimiento3.RendimientoInicio / 100), 2);

            //PorcentajeRendimientoBE rendimiento4 = new PorcentajeRendimientoBE();
            //rendimiento4.RendimientoInicio = 70.00M;
            //rendimiento4.RendimientoFin = 71.99M;
            //rendimiento4.KGPergamino = Math.Round(valorConstante / (rendimiento4.RendimientoInicio / 100), 2);


            //PorcentajeRendimientoBE rendimiento5 = new PorcentajeRendimientoBE();
            //rendimiento5.RendimientoInicio = 72.00M;
            //rendimiento5.RendimientoFin = 73.99M;
            //rendimiento5.KGPergamino = Math.Round(valorConstante / (rendimiento5.RendimientoInicio / 100), 2);


            //PorcentajeRendimientoBE rendimiento6 = new PorcentajeRendimientoBE();
            //rendimiento6.RendimientoInicio = 74.00M;
            //rendimiento6.RendimientoFin = 75.99M;
            //rendimiento6.KGPergamino = Math.Round(valorConstante / (rendimiento6.RendimientoInicio / 100), 2);



            //PorcentajeRendimientoBE rendimiento7 = new PorcentajeRendimientoBE();
            //rendimiento7.RendimientoInicio = 76.00M;
            //rendimiento7.RendimientoFin = 77.99M;
            //rendimiento7.KGPergamino = Math.Round(valorConstante / (rendimiento7.RendimientoInicio / 100), 2);


            //PorcentajeRendimientoBE rendimiento8 = new PorcentajeRendimientoBE();
            //rendimiento8.RendimientoInicio = 78.00M;
            //rendimiento8.RendimientoFin = 79.99M;
            //rendimiento8.KGPergamino = Math.Round(valorConstante / (rendimiento8.RendimientoInicio / 100), 2);

            //PorcentajeRendimientoBE rendimiento9 = new PorcentajeRendimientoBE();

            //rendimiento9.RendimientoInicio = 80.00M;
            //rendimiento9.RendimientoFin = 80.00M;
            //rendimiento9.KGPergamino = Math.Round(valorConstante / (rendimiento9.RendimientoInicio / 100), 2);



            //rendimientos.Add(rendimiento1);
            //rendimientos.Add(rendimiento2);
            //rendimientos.Add(rendimiento3);
            //rendimientos.Add(rendimiento4);
            //rendimientos.Add(rendimiento5);
            //rendimientos.Add(rendimiento6);
            //rendimientos.Add(rendimiento7);
            //rendimientos.Add(rendimiento8);
            //rendimientos.Add(rendimiento9);



            return(rendimientos);
        }