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); }