Exemple #1
0
        public ActionResult UseAnalysedFit(string fitName)
        {
            try
            {
                //Obtenemos la fit del diccionario guardado en sesión, si no está, lanzamos un error
                IDictionary <string, FittingAnalyzed> diccFits = (IDictionary <string, FittingAnalyzed>)Session["lastAnalysedFits"];
                FittingAnalyzed fit = null;
                if ((diccFits != null) && diccFits.ContainsKey(fitName))
                {
                    fit = diccFits[fitName];
                }
                if (fit == null)
                {
                    throw new ApplicationException("The fit is not recorded in our archives, try to analyse it again.");
                }

                //Guardamos la fit en base de datos
                AgenteShoppingList agente = new AgenteShoppingList();
                int            fitID      = agente.SaveAnalysedFit(null, User.Identity.Name, fit);
                AgenteFittings agenteFit  = new AgenteFittings();
                int            groupId    = agenteFit.GetFitMarketGroupID(fitID);

                return(NavigateMarketGroup(groupId, fitID, fitName));
            }
            catch (Exception ex)
            {
                return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, ex.Message));
            }
        }
Exemple #2
0
        public eshFitting MountFittingFromFittingAnalysed(FittingAnalyzed fit)
        {
            RepositorioItems repo = new RepositorioItems();

            eshFitting salida = new eshFitting();

            salida.name        = fit.Name;
            salida.description = fit.Description;
            invType shipType = repo.SelectItemTypePorName(fit.Ship);

            if (shipType == null)
            {
                throw new ApplicationException(Messages.err_nombreItemAnalizadaNoExiste);
            }
            salida.shipTypeID = shipType.typeID;
            salida.shipVolume = RepositorioItems.GetVolume(shipType);

            double totalVol = salida.shipVolume;

            foreach (var item in fit.Items)
            {
                eshFittingHardware fhwd = MountFittingHardware(item, repo);
                salida.eshFittingHardwares.Add(fhwd);
                totalVol += fhwd.volume;
            }
            salida.volume = totalVol;


            return(salida);
        }
Exemple #3
0
        public IEnumerable <FittingAnalyzed> ToFitList(string fitExterna)
        {
            IList <FittingAnalyzed> listaSalida = new List <FittingAnalyzed>();

            SlotActual = Enumerados.TipoSlot.Ship;
            string[] lines = fitExterna.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);

            FittingAnalyzed fit          = null;
            List <string>   lineasSlot   = new List <string>();
            bool            changingSlot = false;

            foreach (var item in lines)
            {
                if (SlotActual == Enumerados.TipoSlot.Ship)
                {
                    if (!string.IsNullOrEmpty(item))
                    {
                        fit = ObtenerFit(item);
                        listaSalida.Add(fit);
                        SlotActual   = this.GetNextSlot(SlotActual);
                        changingSlot = true;
                    }
                    continue;
                }
                if (string.IsNullOrEmpty(item))
                {
                    if (!changingSlot)
                    {
                        IEnumerable <FittingHardwareAnalyzed> slot = ObtenerFittingHardwareSlot(lineasSlot, SlotActual);
                        foreach (var fha in slot)
                        {
                            fit.Items.Add(fha);
                        }
                        SlotActual = this.GetNextSlot(SlotActual);
                        lineasSlot.Clear();
                    }
                    else
                    {
                        changingSlot = true;
                    }
                }
                else
                {
                    changingSlot = false;
                    lineasSlot.Add(item);
                }
            }
            if (lineasSlot != null && lineasSlot.Count > 0)
            {
                IEnumerable <FittingHardwareAnalyzed> slot = ObtenerFittingHardwareSlot(lineasSlot, SlotActual);
                foreach (var fha in slot)
                {
                    fit.Items.Add(fha);
                }
            }
            return(listaSalida);
        }
Exemple #4
0
        IEnumerable <FittingAnalyzed> IConversorFit.ToFitList(string fitExterna)
        {
            IList <FittingAnalyzed> listaSalida = new List <FittingAnalyzed>();

            XDocument doc = XDocument.Parse(fitExterna);
            IEnumerable <XElement> fitsXml = doc.Descendants("fitting");

            foreach (var item in fitsXml)
            {
                FittingAnalyzed fit = ObtenerFit(item);
                listaSalida.Add(fit);
            }
            return(listaSalida);
        }
Exemple #5
0
        private FittingAnalyzed ObtenerFit(XElement item)
        {
            FittingAnalyzed fit = new FittingAnalyzed();

            fit.Name = item.Attribute("name").Value;

            //obtenemos la descripción
            XElement descXml = item.Descendants("description").FirstOrDefault();

            fit.Description = descXml == null ? null : descXml.Value;

            //obtenemos el tipo de nave
            XElement shipXml = item.Descendants("shipType").FirstOrDefault();

            fit.Ship = shipXml == null ? null : shipXml.Attribute("value").Value;


            IEnumerable <XElement> itemsHardwareXml = item.Descendants("hardware");
            Dictionary <string, FittingHardwareAnalyzed> dicItems =
                new Dictionary <string, FittingHardwareAnalyzed>();

            foreach (var itemHwdXml in itemsHardwareXml)
            {
                FittingHardwareAnalyzed fitHardware = null;
                fitHardware = ExtraerFittingHwdDesdeItemHwdXml(itemHwdXml);
                //Utilizamos el diccionario como caché para apilar las unidades de elementos con el mismo nombre
                if (dicItems.ContainsKey(fitHardware.Name))
                {
                    dicItems[fitHardware.Name].Units += fitHardware.Units;
                }
                else
                {
                    dicItems.Add(fitHardware.Name, fitHardware);
                }
            }

            //Una vez obtenido el diccionario con las unidades apiladas, montamos la lista de salida
            foreach (var itemHwd in dicItems)
            {
                fit.Items.Add(itemHwd.Value);
            }
            return(fit);
        }
Exemple #6
0
        public ActionResult UseAnalysedFit(string fitName)
        {
            try
            {
                //Obtenemos la fit del diccionario guardado en sesión, si no está, lanzamos un error
                IDictionary <string, FittingAnalyzed> diccFits = (IDictionary <string, FittingAnalyzed>)Session["lastAnalysedFits"];
                FittingAnalyzed fit = null;
                if ((diccFits != null) && diccFits.ContainsKey(fitName))
                {
                    fit = diccFits[fitName];
                }
                if (fit == null)
                {
                    throw new ApplicationException("The fit is not recorded in our archives, try to analyse it again.");
                }

                //Guardamos la fit en base de datos
                AgenteShoppingList agente   = new AgenteShoppingList();
                string             userName = null;
                if (Request.IsAuthenticated)
                {
                    userName = User.Identity.Name;
                }
                int       fitID;
                EVFitting evfit = null;
                try
                {
                    fitID = agente.SaveAnalysedFit(EstadoUsuario.CurrentListPublicId, userName, fit);
                    evfit = agente.SelectFitPorID(EstadoUsuario.CurrentListPublicId, fitID);
                }
                catch (Exception ex)
                {
                    return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, ex.Message));
                }

                return(PartialView("PVFitInShoppingList", evfit));
            }
            catch (Exception ex)
            {
                return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, ex.Message));
            }
        }
Exemple #7
0
        public IEnumerable <FittingAnalyzed> ToFitList(string fitExterna)
        {
            string nombre = null;

            string cadenaDNA = ObtenerCadenaDNAFromXML(fitExterna, out nombre);

            if (cadenaDNA == null)
            {
                cadenaDNA = ObtenerCadenaDNA(fitExterna, out nombre);
            }

            if (string.IsNullOrEmpty(cadenaDNA))
            {
                throw new FittingFormatNotRecognisedException(Messages.err_notRecognisedFormat);
            }

            DNAIntermediateFit dnaFit = new DNAIntermediateFit();

            dnaFit.Name = nombre;
            int ishipSeparator = cadenaDNA.IndexOf(':');

            dnaFit.ShipID = int.Parse(cadenaDNA.Substring(0, ishipSeparator));

            cadenaDNA = cadenaDNA.Substring(ishipSeparator + 1);

            dnaFit.Items = GetModules(cadenaDNA);

            IList <FittingHardwareAnalyzed> fwas    = ObtenerFittingHardwareFromDNAModules(dnaFit.Items);
            List <FittingAnalyzed>          listaFA = new List <FittingAnalyzed>();

            FittingAnalyzed fa = new FittingAnalyzed();

            fa.Items = fwas;
            fa.Ship  = GetShipName(dnaFit.ShipID);
            fa.Name  = (!string.IsNullOrEmpty(dnaFit.Name)) ? dnaFit.Name : string.Format("{0}-{1}", fa.Ship, DateTime.Now.ToString());

            listaFA.Add(fa);

            return(listaFA);
        }
Exemple #8
0
        private FittingAnalyzed ObtenerFit(string fitExterna)
        {
            try
            {
                fitExterna = fitExterna.TrimStart('[');
                fitExterna = fitExterna.TrimEnd(']');
                string[] nombres = fitExterna.Split(',');

                string nombreNave = nombres[0].Trim();
                string nombreFit  = nombres[1].Trim();

                FittingAnalyzed fitting = new FittingAnalyzed();
                fitting.Name = nombreFit;
                fitting.Ship = nombreNave;

                return(fitting);
            }
            catch (Exception ex)
            {
                throw new FittingFormatNotRecognisedException(Messages.err_notRecognisedFormat, ex);
            }
        }
Exemple #9
0
        public int SaveAnalisedFit(string listPublicId, FittingAnalyzed fitAnalysed, string userName = null)
        {
            EveShoppingContext contexto = new EveShoppingContext();

            eshShoppingList lista = null;
            eshFitting      fit   = null;

            using (TransactionScope scope = new TransactionScope())
            {
                fit = MountFittingFromFittingAnalysed(fitAnalysed);

                RepositorioShoppingLists repo = new RepositorioShoppingLists(contexto);
                if (!string.IsNullOrEmpty(listPublicId))
                {
                    lista = repo.SelectShopingListPorPublicID(listPublicId);
                    eshShoppingListFitting relation = new eshShoppingListFitting();
                    fit.eshShoppingListFittings.Add(relation);
                    relation.eshShoppingList = lista;
                    relation.units           = 1;
                    repo.ShoppingListUpdated(lista.shoppingListID);
                }

                if (!string.IsNullOrEmpty(userName))
                {
                    UserProfile up = contexto.UserProfiles.Where(u => u.UserName == userName).FirstOrDefault();
                    if (up == null)
                    {
                        throw new ApplicationException(Messages.err_usuarioNoExiste);
                    }
                    fit.userID = up.UserId;
                }

                repo.CrearFitting(fit);

                scope.Complete();
            }
            return(fit.fittingID);
        }
Exemple #10
0
        public int SaveAnalysedFit(string publicID, string userName, FittingAnalyzed fitAnalysed)
        {
            LogicaShoppingLists logica = new LogicaShoppingLists();

            return(logica.SaveAnalisedFit(publicID, fitAnalysed, userName));
        }