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)); } }
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); }
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); }
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); }
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); }
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)); } }
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); }
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); } }
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); }
public int SaveAnalysedFit(string publicID, string userName, FittingAnalyzed fitAnalysed) { LogicaShoppingLists logica = new LogicaShoppingLists(); return(logica.SaveAnalisedFit(publicID, fitAnalysed, userName)); }