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
            };
        }
Ejemplo n.º 2
0
        public void ObtenerResultado()
        {
            EmpresaFactory     FabricaEmpresa;
            MensajesService    srvMensajes;
            ITransporteFactory FabricaTransporte = new TransporteFactory();
            IColorTexto        colorTextoError   = new TextoRojo();

            foreach (var item in lstDatosPedido)
            {
                try
                {
                    item.dtFechaActual = DateTime.Now;
                    ITransporte entTransporte = FabricaTransporte.ObtenerTransporte(item.cMedioTransporte, entDatosConfig);
                    FabricaEmpresa = new EmpresaFactory(entTransporte, item, entDatosConfig);
                    EmpresaAbstract Empresa = FabricaEmpresa.ObtenerEmpresa(item.cPaqueteria);
                    item.dtFechaEntrega   = Empresa.ObtenerFechaEntrega(item.dtFechaPedido);
                    item.tsTiempoTraslado = Empresa.tsTiempoTraslado;
                    item.dCostoEnvio      = Empresa.ObtenerCostoEnvio();
                    srvMensajes           = new MensajesService(item);
                    srvMensajes.GenerarMensaje();
                }
                catch (Exception ex)
                {
                    colorTextoError.ObtenerColor();
                    if (string.IsNullOrWhiteSpace(ex.Message))
                    {
                        Console.WriteLine(string.Format("{0} no ofrece el servicio de transporte {1}, te recomendamos cotizar en otra empresa", item.cPaqueteria, item.cMedioTransporte));
                    }
                    else
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            }
        }
 public CentroLogisticaBuilder WithTransporteCreado(ITransporte transporte)
 {
     _centroLogisticaMock
     .Setup(x => x.CrearTransporte())
     .Returns(transporte);
     return(this);
 }
        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
            });
        }
        // The client code works with an instance of a concrete creator, albeit
        // through its base interface. As long as the client keeps working with
        // the creator via the base interface, you can pass it any creator's
        // subclass.
        public void Crear(Logistica logistica)
        {
            ITransporte transporte = logistica.CrearTransporte(true);

            Console.WriteLine("Client: I'm not aware of the creator's class," +
                              "but it still works.\n" + transporte);
            Console.ReadLine();
        }
        private double CalcularCostoPorTrasnporte(ITransporte transporte, double distancia)
        {
            double costoTrasporte;

            costoTrasporte = transporte.CostoKilometro * distancia;

            return(costoTrasporte);
        }
        public double CalcularCostoEnvio(ITransporte transporte, double distancia, IPaqueteria paqueteria)
        {
            double costoEnvio;

            costoEnvio = CalcularCostoPorTrasnporte(transporte, distancia) * CalcularMargenUtilidad(paqueteria);

            return(costoEnvio);
        }
Ejemplo n.º 8
0
        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 void CrearTransporte_Caso_CrearCamion()
        {
            LogisticaTerrestre logisticaTerrestre = new LogisticaTerrestre();

            ITransporte camion = logisticaTerrestre.CrearTransporte(true);
            string      tipo   = camion.ObtenerTipo();

            Assert.Equal(TipoLogistica.Camion, tipo);
        }
Ejemplo n.º 10
0
 public Fedex(ITransporte entTransporte, decimal _dDistancia, DateTime _dtFechaActual, Paqueterias _entPaqueteria)
 {
     this.entTransporte = entTransporte;
     this.entPaqueteria = _entPaqueteria;
     ValidaTransporte();
     base.dDistancia      = _dDistancia;
     base.dtFechaActual   = _dtFechaActual;
     this.dMargenUtilidad = _entPaqueteria.MargenUtilidad;
 }
Ejemplo n.º 11
0
        public void CrearTransporte_Caso_CrearBarco()
        {
            LogisticaMaritima logisticaTerrestre = new LogisticaMaritima();

            ITransporte barco = logisticaTerrestre.CrearTransporte(true);
            string      tipo  = barco.ObtenerTipo();

            Assert.Equal(TipoLogistica.Barco, tipo);
        }
Ejemplo n.º 12
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;
        }
        public override bool AddTransporte(ITransporte transporte)
        {
            bool respuesta = true;

            if (!(transporte is Barco) || !(transporte is Tren))
            {
                respuesta = false;
            }

            return(respuesta);
        }
Ejemplo n.º 14
0
        private void ValidarTransporte(string _cTransporte)
        {
            bool existe = RequestPaqueteria.lstTransporte.ContainsValue(_cTransporte.ToUpper().Trim());

            if (!existe)
            {
                throw new Exception($"DHL no ofrece el servicio por {_cTransporte}, te recomendamos cotizar en otra empresa.");
            }

            transporte = transporteFabrica.CrearInstancia(_cTransporte);
        }
Ejemplo n.º 15
0
 protected override void When()
 {
     try
     {
         _result = _sut.CrearTransporte();
     }
     catch (Exception exception)
     {
         _exception = exception;
     }
 }
Ejemplo n.º 16
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);
            }
        }
Ejemplo n.º 17
0
 internal void Enviar(ITransporte transporte)
 {
     if (transporte.PorcentajeCarga() >= 0.5)
     {
         transporte.Cargar(this.Peso);
         this.SeEnvio = true;
     }
     else
     {
         this.SeEnvio = false;
     }
 }
Ejemplo n.º 18
0
        public void CrearTransporte_CreacionAvion_ObjetoAvionCreadoCorrectamente()
        {
            //Arrange
            string NombreExp        = "Avión";
            double costoKilometro   = 10;
            double velocidadEntrega = 600;

            //Act
            AvionFactory avionFactory = new AvionFactory();
            ITransporte  avion        = avionFactory.CrearTransporte();

            //Assert
            Assert.AreEqual(NombreExp, avion.Nombre);
            Assert.AreEqual(costoKilometro, avion.CostoXKilometro);
            Assert.AreEqual(velocidadEntrega, avion.VelocidadEntrega);
        }
Ejemplo n.º 19
0
        public void CrearTransporte_CreacionBarco_ObjetoBarcoCreadoCorrectamente()
        {
            //Arrange
            string NombreExp        = "Barco";
            double costoKilometro   = 1;
            double velocidadEntrega = 46;

            //Act
            BarcoFactory barcoFactory = new BarcoFactory();
            ITransporte  barco        = barcoFactory.CrearTransporte();

            //Assert
            Assert.AreEqual(NombreExp, barco.Nombre);
            Assert.AreEqual(costoKilometro, barco.CostoXKilometro);
            Assert.AreEqual(velocidadEntrega, barco.VelocidadEntrega);
        }
Ejemplo n.º 20
0
        public void CrearTransporte_CreacionTren_ObjetoTrenCreadoCorrectamente()
        {
            //Arrange
            string NombreExp        = "Tren";
            double costoKilometro   = 5;
            double velocidadEntrega = 80;

            //Act
            TrenFactory trenFactory = new TrenFactory();
            ITransporte tren        = trenFactory.CrearTransporte();

            //Assert
            Assert.AreEqual(NombreExp, tren.Nombre);
            Assert.AreEqual(costoKilometro, tren.CostoXKilometro);
            Assert.AreEqual(velocidadEntrega, tren.VelocidadEntrega);
        }
Ejemplo n.º 21
0
        public ITransporte CrearInstancia(string cTransporte)
        {
            ITransporte transporte = null;

            switch (cTransporte.ToUpper().Trim())
            {
            case "BARCO":
                transporte = new TransporteBarco();
                break;

            case "TREN":
                transporte = new TransporteTren();
                break;

            case "AVION":
                transporte = new TransporteAvion();
                break;
            }

            return(transporte);
        }
Ejemplo n.º 22
0
 public BridgeTransporte(ITransporte _Transporte)
 {
     Transporte = _Transporte;
 }
Ejemplo n.º 23
0
 static void SobreTransporte(ITransporte t) // aqui qualquer objeto que implemente a interface ITransporte pode ser informado
 {
     t.andar();
 }
Ejemplo n.º 24
0
        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));
        }
Ejemplo n.º 25
0
 public EmpresaFactory(ITransporte _Transporte, DatosPedido _Datos, DatosConfiguracion _entDatosConfig)
 {
     Transporte     = _Transporte;
     DatosPedido    = _Datos;
     entDatosConfig = _entDatosConfig;
 }
Ejemplo n.º 26
0
 public PuentePaqueteriaTransporte(ITransporte _Transporte)
 {
     Transporte = _Transporte;
 }
Ejemplo n.º 27
0
 public void RePoblarPedido(IPedido pedido, DateTime fechaActual, int margenUtilidad, ITransporte transporte)
 {
     pedido.EscalaTiempo = _obtenedorEscala.ObtenerEscalaTiempo(fechaActual, pedido.FechaHora);
     pedido.Tiempo       = _obtenedorTipoEvento.ObtenerTipoEvento(fechaActual, pedido.FechaHora);
     pedido.Duracion     = _obtenedorDuracion.ObtenerDuracion(fechaActual, pedido.FechaHora, pedido.EscalaTiempo);
     pedido.Costo        = _calculador.CalcularCosto(transporte.CostoKm, pedido.Distancia, margenUtilidad);
     pedido.FechaEntrega = _calculador.CalcularFechaEntrega(pedido.FechaHora, pedido.Duracion, pedido.EscalaTiempo);
 }
Ejemplo n.º 28
0
 public void AgregarTransporte(ITransporte transporte)
 {
     Transportes.TryAdd(transporte.TipoTransporte, transporte);
 }
Ejemplo n.º 29
0
 public void AgregarTransporte(ITransporte transporte)
 {
     _transportes.Add(transporte);
 }
Ejemplo n.º 30
0
 public void RemoverTransporte(ITransporte transporte)
 {
     Transportes.Remove(transporte.TipoTransporte);
 }