예제 #1
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;
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            List <SolicitudEnvio> LstSolicitudes = new List <SolicitudEnvio>();
            IFormatProvider       culture        = new CultureInfo("ES-MX", true);

            Configuraciones    configuraciones = new Configuraciones();
            ConfiguracionesDTO Configuracion   = configuraciones.ObtenerConfiguraciones();

            configuraciones.Bitacora();
            string Comando = string.Empty;

            do
            {
                Console.WriteLine("Seleccione el origen de los envíos:");
                Comando = Console.ReadLine();
                try
                {
                    AdaptadorLectura Adaptador = new AdaptadorLectura(Comando, culture);
                    Adaptador.ObtenerPaquetes(ref LstSolicitudes);
                }
                catch (Exception Ex)
                {
                    Console.WriteLine(Ex.Message);
                    Comando = string.Empty;
                }
            }while (Comando == string.Empty);


            foreach (SolicitudEnvio solicitud in LstSolicitudes)
            {
                try
                {
                    FactoryEnvios   factoryEnvios = new FactoryEnvios(solicitud, Configuracion);
                    IEnviosPaquetes Envio         = factoryEnvios.CrearEnvio();
                    Console.WriteLine(Envio.ProcesarEnvios());
                    Console.WriteLine("");
                }

                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine();
                }
            }
            Console.WriteLine("finalizado...");
            Console.ReadKey();
        }
        public ConfiguracionesDTO ObtenerConfiguraciones()
        {
            StreamReader reader = new StreamReader(File.OpenRead(AppDomain.CurrentDomain.BaseDirectory + "../../Config.json"));



            var cEnvios = reader.ReadToEnd();
            //JObject parsed = JObject.Parse(cEnvios);
            //var JSonPedidos = parsed["Pedidos"];
            ConfiguracionesDTO Configuracion = new ConfiguracionesDTO();

            //foreach (var Envio in JSonPedidos)
            //{



            //}

            return(Configuracion);
        }
예제 #4
0
        public ActionResult GetConfiguracion(int idProducto, string codigo = "")
        {
            ConfiguracionesDTO model = new ConfiguracionesDTO();
            var configuracion        = db.formulacion_comodin.Where(m => m.ID_PRODUCTO == idProducto).Include(m => m.atributo_subatributo);
            var carasDistintas       = configuracion.Select(m => m.ID_PIEZA).Distinct().ToList();

            model.ListaCaras = new List <caraDTO>();
            model.idProducto = idProducto;

            string[] ArrayCode   = { };
            string[] ArrayM      = { };
            string[] ArrayT      = { };
            string[] ArrayA      = { };
            Boolean  configurado = false;

            try
            {
                if (codigo != "")
                {
                    var selecionados = new atributoSeleccionadosDTO();
                    configurado = true;
                    ArrayCode   = codigo.Split('/');
                    ArrayM      = ArrayCode[0].Split('M').Where(m => m != "").ToArray();
                    ArrayT      = ArrayCode[1].Split('T').Where(m => m != "").ToArray();
                    ArrayA      = ArrayCode[2].Split('A').Where(m => m != "").ToArray();
                }


                int numCara = 0;
                foreach (int idCara in carasDistintas)
                {
                    caraDTO cara = new caraDTO();
                    cara.ListaComodines = new List <comodinDTO>();
                    cara.idProducto     = idProducto;
                    cara.idCara         = idCara;
                    cara.cara           = db.piezas_configurables.FirstOrDefault(m => m.ID == idCara).NOMBRE;

                    var comodinesporCara = configuracion.Where(m => m.ID_PIEZA == idCara);

                    foreach (formulacion_comodin comodin in comodinesporCara)
                    {
                        var atributoByComodin = comodin.atributo_subatributo;
                        if (atributoByComodin.Count > 0)
                        {
                            comodinDTO cmdnDTO = new comodinDTO();
                            cmdnDTO.listaCombos   = new List <combosDTO>();
                            cmdnDTO.idFormulacion = comodin.ID;
                            cmdnDTO.idAtributo    = comodin.ID_COMODIN;
                            cmdnDTO.startLevel    = atributoByComodin.FirstOrDefault(m => m.ID == comodin.ID_COMODIN).NIVEL;
                            cmdnDTO.endLevel      = atributoByComodin.Max(m => m.NIVEL);

                            var atributoIncial = atributoByComodin.FirstOrDefault(m => m.NIVEL == cmdnDTO.startLevel); //indica el contenido del primer combo


                            var CodigotipoAtributo = atributoByComodin.FirstOrDefault(m => m.NIVEL == 0).CODIGO;

                            int?idPadre  = null;
                            int numCombo = 0;

                            for (int i = 0; i < cmdnDTO.endLevel; i++)
                            {
                                int       nivel = i + 1;
                                combosDTO combo = new combosDTO();
                                combo.nombre  = atributoIncial.NOMBRE;
                                combo.nivel   = nivel;
                                combo.numCmbo = numCombo;
                                if (i == cmdnDTO.endLevel - 1)
                                {
                                    combo.ultimoCmbo = true;
                                }

                                if (configurado)
                                {
                                    String cod = "";
                                    switch (CodigotipoAtributo)
                                    {
                                    case "M":
                                        if (i == 0)
                                        {
                                            idPadre = 2;
                                        }
                                        cod = ArrayM[numCara].Substring(i * 2, 2);
                                        break;

                                    case "T":
                                        if (i == 0)
                                        {
                                            idPadre = 3;
                                        }
                                        if (i == 2)
                                        {
                                            cod = ArrayT[numCara].Substring(i * 2, 3);
                                        }
                                        else
                                        {
                                            cod = ArrayT[numCara].Substring(i * 2, 2);
                                        }

                                        break;

                                    case "A":
                                        if (i == 0)
                                        {
                                            idPadre = 4;
                                        }
                                        cod = ArrayA[numCara].Substring(i * 2, 2);
                                        break;
                                    }

                                    combo.seleccionado = atributoByComodin.FirstOrDefault(m => m.NIVEL == nivel && m.CODIGO == cod && m.ID_PADRE == idPadre).ID;
                                    idPadre            = combo.seleccionado;
                                }

                                if (i >= cmdnDTO.startLevel)
                                {
                                    cmdnDTO.listaCombos.Add(combo);
                                    numCombo++;
                                }
                            }


                            cara.ListaComodines.Add(cmdnDTO);
                        }
                    }
                    model.ListaCaras.Add(cara);
                    numCara++;
                }
            }
            catch (Exception e)
            {
                var err = e;
            }
            return(PartialView("~/Views/Cotizacion/Cotizaciones/Partials/_SeleccionarConfiguracion.cshtml", model));
            //return Json(ListaCaras, JsonRequestBehavior.AllowGet);
        }