public void CrearMensajePaqueteria(IPedido pedido, IPaqueteria paqueteria) { IMedioTransporte medioTransporte = paqueteria.MediosTransportes.FirstOrDefault(x => x.Nombre.ToLowerInvariant() == pedido.MedioTransporte.ToLowerInvariant()); if (medioTransporte == null) { throw new ArgumentException($"{paqueteria.NombreEmpresa} no ofrece el servicio de transporte por {pedido.MedioTransporte}, te recomendamos cotizar en otra empresa."); } IDetallesPedido detallesPedido = _creardorDetallesPedido.CrearDetallesPedido(pedido, medioTransporte, paqueteria.MargenUtilidad); string rangoTiempo = _manejadorRangoTiempo.ObtenerRangoTiempo(detallesPedido.FechaEntrega, DateTime.Now); bool fechaEntregaMenorActual = _validadorFecha.ValidarFechaActual(detallesPedido.FechaEntrega); _constructorRespuestaPedido.Reset(); _constructorRespuestaPedido.ConstruirExpresion1(fechaEntregaMenorActual); _constructorRespuestaPedido.ConstruirOrigen(pedido.Origen); _constructorRespuestaPedido.ConstruirExpresion2(fechaEntregaMenorActual); _constructorRespuestaPedido.ConstruirExpresion3(fechaEntregaMenorActual); _constructorRespuestaPedido.AsignarRangoTiempo(rangoTiempo); _constructorRespuestaPedido.ConstruirExpresion4(fechaEntregaMenorActual); _constructorRespuestaPedido.ConstuirCostoEnvio(detallesPedido.CostoEnvio.ToString()); _constructorRespuestaPedido.AsignarColorMensaje(fechaEntregaMenorActual); _constructorRespuestaPedido.ConstuirDestino(pedido.Destino); _constructorRespuestaPedido.AgregarOpcionEconomica(detallesPedido.Cotizacion); _constructorRespuestaPedido.ConstruirFinal(pedido.Paqueteria); }
public List <IPaqueteria> ObtenerPaqueterias() { ITransporteFactory transporteFactory = new BarcoFactory(); ITransporte barco = transporteFactory.CrearTransporte(); transporteFactory = new TrenFactory(); ITransporte tren = transporteFactory.CrearTransporte(); transporteFactory = new AvionFactory(); ITransporte avion = transporteFactory.CrearTransporte(); IPaqueteriaFactory factory = new FedexFactory(); IPaqueteria fedex = factory.CrearPaqueteria(); fedex.AgregarTransporte(barco); factory = new DhlFactory(); IPaqueteria dhl = factory.CrearPaqueteria(); dhl.AgregarTransporte(avion); dhl.AgregarTransporte(barco); factory = new EstafetaFactory(); IPaqueteria estafeta = factory.CrearPaqueteria(); estafeta.AgregarTransporte(tren); estafeta.AgregarTransporte(barco); return(new List <IPaqueteria>() { fedex, dhl, estafeta }); }
public void Setup() { _envioService = new Mock <IEnvioService>(); _administradorMensaje = new Mock <IAdministradorMensaje>(); _rastreoService = new RastreoService(_envioService.Object, _administradorMensaje.Object); _pedido = new PedidoDto() { Destino = "Destino", Origen = "Origen", Distancia = 80, Paqueteria = "Paqueteria", Transporte = "Transporte" }; _paqueteria = new Fedex() { Nombre = "Fedex", MargenUtilidad = 40 }; _transporte = new Barco() { CostoXKilometro = 1, Nombre = "Barco", VelocidadEntrega = 46 }; }
public Pedido(string origen, string destino, double distancia, DateTime fechaPedido, IPaqueteria paqueteria) { Origen = origen; Destino = destino; Distancia = distancia; FechaPedido = fechaPedido; Paqueteria = paqueteria; }
public MensajeDto ObtenerMensajeRastreo(PedidoDto pedido, IPaqueteria paqueteria, ITransporte transporte) { double tiempoTraslado = _envioService.CalcularTiempoTraslado(pedido.Distancia, transporte.VelocidadEntrega); DateTime fechaEntrega = _envioService.CalcularFechaEntrega(pedido.Fecha, tiempoTraslado); double costoEnvio = _envioService.CalcularCostoEnvio(pedido.Distancia, paqueteria.MargenUtilidad, transporte.CostoXKilometro); return(_administradorMensaje.ObtenerMensajeEnvio(pedido, fechaEntrega, costoEnvio)); }
private double CalcularMargenUtilidad(IPaqueteria paqueteria) { double margenUtilidad; margenUtilidad = (paqueteria.Utilidad + 1) / 100; return(margenUtilidad); }
public double CalcularCostoEnvio(ITransporte transporte, double distancia, IPaqueteria paqueteria) { double costoEnvio; costoEnvio = CalcularCostoPorTrasnporte(transporte, distancia) * CalcularMargenUtilidad(paqueteria); return(costoEnvio); }
public FactoryEnvios(SolicitudEnvio _solicitudEnvio, ConfiguracionesDTO _configuraciones) { SolicitudEnvio = _solicitudEnvio; PaqueteriaCompetencia = new List <IPaqueteria>(); Tiempos = crearformatosTiempo(); Mensajes = new ErrorMensaje(); switch (SolicitudEnvio.cPaqueteria) { case "Fedex": Paqueteria = new Fedex(SolicitudEnvio.cTransporte, SolicitudEnvio.dtFechaEnvio, _configuraciones.ConfiguracionFedex); PaqueteriaCompetencia.Add(new DHL(SolicitudEnvio.cTransporte, SolicitudEnvio.dtFechaEnvio, _configuraciones.ConfiguracionDHL)); PaqueteriaCompetencia.Add(new Estafeta(SolicitudEnvio.cTransporte, SolicitudEnvio.dtFechaEnvio, _configuraciones.ConfiguracionEstafeta)); break; case "DHL": Paqueteria = new DHL(SolicitudEnvio.cTransporte, SolicitudEnvio.dtFechaEnvio, _configuraciones.ConfiguracionDHL); PaqueteriaCompetencia.Add(new Fedex(SolicitudEnvio.cTransporte, SolicitudEnvio.dtFechaEnvio, _configuraciones.ConfiguracionFedex)); PaqueteriaCompetencia.Add(new Estafeta(SolicitudEnvio.cTransporte, SolicitudEnvio.dtFechaEnvio, _configuraciones.ConfiguracionEstafeta)); break; case "Estafeta": Paqueteria = new Estafeta(SolicitudEnvio.cTransporte, SolicitudEnvio.dtFechaEnvio, _configuraciones.ConfiguracionEstafeta); PaqueteriaCompetencia.Add(new Fedex(SolicitudEnvio.cTransporte, SolicitudEnvio.dtFechaEnvio, _configuraciones.ConfiguracionFedex)); PaqueteriaCompetencia.Add(new DHL(SolicitudEnvio.cTransporte, SolicitudEnvio.dtFechaEnvio, _configuraciones.ConfiguracionDHL)); break; default: throw new Exception(string.Format(Mensajes.ImprimirMensajeEnvio(), MostrarValidacionPaqueteria())); break; } if (!Paqueteria.ValidarTransporte()) { throw new Exception(string.Format(Mensajes.ImprimirMensajeEnvio(), MostrarValidaciontransporte())); } switch (SolicitudEnvio.cTransporte) { case "Marítimo": Transporte = new Maritimo(SolicitudEnvio.dDistancia, SolicitudEnvio.dtFechaEnvio, _configuraciones.ConfiguracionMaritimo); break; case "Terrestre": Transporte = new Terrestre(SolicitudEnvio.dDistancia, SolicitudEnvio.dtFechaEnvio, _configuraciones.ConfiguracionTerrestre); break; case "Aéreo": Transporte = new Aereo(SolicitudEnvio.dDistancia, SolicitudEnvio.dtFechaEnvio, _configuraciones.ConfiguracionAereo); break; default: throw new Exception(string.Format(Mensajes.ImprimirMensajeEnvio(), MostrarValidaciontransporte())); break; } }
public Envios(IPaqueteria _Paqueteria, ITransporte _Transporte, IFormatoTiempo _FormatoTiempo, SolicitudEnvio _solicitudEnvio) { solicitudEnvio = _solicitudEnvio; Paqueteria = _Paqueteria; cPaqueteria = solicitudEnvio.cPaqueteria; FormatoTiempo = _FormatoTiempo; this.LstOpciones = new Dictionary <string, decimal>(); this.Transporte = _Transporte; }
static void Main(string[] args) { ContenedorDependencias contenedor = new ContenedorDependencias(); IArchivoService archivoService = contenedor.GetServiceProvider().GetService <IArchivoService>(); IValidadorFormatoPedido validadorFormatoPedido = contenedor.GetServiceProvider().GetService <IValidadorFormatoPedido>(); IRastreoService rastreoService = contenedor.GetServiceProvider().GetService <IRastreoService>(); IImpresoraMensaje impresoraMensaje = contenedor.GetServiceProvider().GetService <IImpresoraMensaje>(); ITransporteService transporteService = contenedor.GetServiceProvider().GetService <ITransporteService>(); IPaqueteriasService paqueteriasService = contenedor.GetServiceProvider().GetService <IPaqueteriasService>(); string path = Directory.GetCurrentDirectory() + "/../../../Pedidos.txt"; try { List <string> lineas = archivoService.ObtenerLineas(path); PedidoDto pedido; MensajeDto mensajeDto; if (lineas != null) { foreach (string linea in lineas) { pedido = validadorFormatoPedido.ValidarFormatoPedido(linea); mensajeDto = new MensajeDto() { Color = ConsoleColor.Red }; IPaqueteria paqueteria = paqueteriasService.BuscarPaqueteria(pedido.Paqueteria); if (paqueteria == null) { mensajeDto.Mensaje = string.Format("La Paquetería: [{0}] no se encuentra registrada en nuestra red de distribución.", pedido.Paqueteria); } else { ITransporte transporte = transporteService.BuscarTransporte(paqueteria, pedido.Transporte); if (transporte == null) { mensajeDto.Mensaje = string.Format("La paqueteria: [{0}] no ofrece el servicio de transporte [{1}], te recomendamos cotizar en otra empresa.", pedido.Paqueteria, pedido.Transporte); } else { mensajeDto = rastreoService.ObtenerMensajeRastreo(pedido, paqueteria, transporte); } } impresoraMensaje.ImprimirMensaje(mensajeDto); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public void CrearPaqueteria_CreacionEstafeta_ObjetoEstafetaCreadoCorrectamente() { //Arrange string nombreExp = "Estafeta"; double margenUtilidad = 20; //Act EstafetaFactory estafetaFactory = new EstafetaFactory(); IPaqueteria paqueteria = estafetaFactory.CrearPaqueteria(); //Assert Assert.AreEqual(nombreExp, paqueteria.Nombre); Assert.AreEqual(margenUtilidad, paqueteria.MargenUtilidad); }
public void CrearPaqueteria_CreacionDhl_ObjetoDhlCreadoCorrectamente() { //Arrange string nombreExp = "Dhl"; double margenUtilidad = 40; //Act DhlFactory dhlFactory = new DhlFactory(); IPaqueteria paqueteria = dhlFactory.CrearPaqueteria(); //Assert Assert.AreEqual(nombreExp, paqueteria.Nombre); Assert.AreEqual(margenUtilidad, paqueteria.MargenUtilidad); }
public void CrearPaqueteria_CreacionFedex_ObjetoFedexCreadoCorrectamente() { //Arrange string nombreExp = "Fedex"; double margenUtilidad = 50; //Act FedexFactory factory = new FedexFactory(); IPaqueteria paqueteria = factory.CrearPaqueteria(); //Assert Assert.AreEqual(nombreExp, paqueteria.Nombre); Assert.AreEqual(margenUtilidad, paqueteria.MargenUtilidad); }
public TransportadorBridge(IPaqueteria _svrPaqueteria) { this.svrPaqueteria = _svrPaqueteria; }
public TransportadorBarco(IPaqueteria _svrPaqueteria) : base(_svrPaqueteria) { }
public PuentePaqueteria(IPaqueteria _paqueteria) { Paqueteria = _paqueteria; }
public TransportadorAvion(IPaqueteria _svrPaqueteria) : base(_svrPaqueteria) { }
public Empresa(IPaqueteria _paqueteria) { this.paqueteria = _paqueteria; }
private double ObtenerCostoEnvio(double distancia, IPaqueteria paqueteria) { return(_calculadorCostoEnvio.CalcularCostoEnvio(paqueteria.Transporte, distancia, paqueteria)); }
public ITransporte BuscarTransporte(IPaqueteria paqueteria, string nombreTransporte) { return(paqueteria.Transportes.FirstOrDefault(x => x.Nombre.ToLower() == nombreTransporte.ToLower())); }
public BridgePaqueteria(IPaqueteria _paqueteria) { Paqueteria = _paqueteria; }