Beispiel #1
0
        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
            };
        }
Beispiel #4
0
 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;
            }
        }
Beispiel #9
0
        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;
        }
Beispiel #10
0
        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);
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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;
 }
Beispiel #15
0
 public TransportadorBarco(IPaqueteria _svrPaqueteria) : base(_svrPaqueteria)
 {
 }
Beispiel #16
0
 public PuentePaqueteria(IPaqueteria _paqueteria)
 {
     Paqueteria = _paqueteria;
 }
Beispiel #17
0
 public TransportadorAvion(IPaqueteria _svrPaqueteria) : base(_svrPaqueteria)
 {
 }
Beispiel #18
0
 public Empresa(IPaqueteria _paqueteria)
 {
     this.paqueteria = _paqueteria;
 }
Beispiel #19
0
 private double ObtenerCostoEnvio(double distancia, IPaqueteria paqueteria)
 {
     return(_calculadorCostoEnvio.CalcularCostoEnvio(paqueteria.Transporte, distancia, paqueteria));
 }
Beispiel #20
0
 public ITransporte BuscarTransporte(IPaqueteria paqueteria, string nombreTransporte)
 {
     return(paqueteria.Transportes.FirstOrDefault(x => x.Nombre.ToLower() == nombreTransporte.ToLower()));
 }
 public BridgePaqueteria(IPaqueteria _paqueteria)
 {
     Paqueteria = _paqueteria;
 }