Esempio n. 1
0
        public IDetallesPedido CrearDetallesPedido(IPedido pedido, IMedioTransporte medioTransporte, double margenUtilidad)
        {
            DetallesPedido detallesPedido = new DetallesPedido();

            detallesPedido.TiempoTraslado = _manejadorPaqueteria.CalcularTiempoTraslado(pedido.Distancia, medioTransporte.VelocidadEntrega);
            detallesPedido.FechaEntrega   = _manejadorPaqueteria.CalcularFechaEntrega(pedido.FechaPedido, detallesPedido.TiempoTraslado);
            detallesPedido.CostoEnvio     = _manejadorPaqueteria.CalcularCostoEnvio(medioTransporte.CostoKilometro, pedido.Distancia, margenUtilidad);
            detallesPedido.Cotizacion     = _verificadorPrecios.CotizadorPrecios(detallesPedido.CostoEnvio, pedido);


            return(detallesPedido);
        }
        public string CotizadorPrecios(double costoOriginal, IPedido pedido)
        {
            string             mensaje     = string.Empty;
            List <IPaqueteria> paqueterias = _paqueteriaService.ObtenerPaqueterias();

            foreach (IPaqueteria paqueteria in paqueterias.Where(x => x.NombreEmpresa.ToLowerInvariant() != pedido.Paqueteria.ToLowerInvariant()))
            {
                IMedioTransporte transporte = paqueteria.MediosTransportes
                                              .FirstOrDefault(x => x.Nombre.ToLowerInvariant() == pedido.MedioTransporte.ToLowerInvariant());

                if (transporte != null)
                {
                    double cotizacion = _manejadorPaqueteria.CalcularCostoEnvio(transporte.CostoKilometro, pedido.Distancia, paqueteria.MargenUtilidad);
                    if (costoOriginal > cotizacion)
                    {
                        mensaje = $"Si hubieras pedido en {paqueteria.NombreEmpresa} te hubiera costado (${cotizacion}).";
                    }
                }
            }

            return(mensaje);
        }