public void Update8500(TanChemicalVM newChemicalNameVM) { try { if (SelectedTanChemicalVM != null && SelectedTanChemicalVM.ChemicalType == ChemicalType.S8500 && SelectedTanChemicalVM.NUM > 8000) { var newlySelectedTanChemicalVM = TanChemicalVMList.Where(c => c.RegNumber == newChemicalNameVM.RegNumber).FirstOrDefault(); if (newlySelectedTanChemicalVM != null) { newlySelectedTanChemicalVM.NUM = SelectedTanChemicalVM.NUM; newlySelectedTanChemicalVM.Id = SelectedTanChemicalVM.Id; SelectedTanChemicalVM.NUM = 0; SelectedTanChemicalVM.Id = Guid.Empty; SelectedTanChemicalVM = null; SelectedTanChemicalVM = newlySelectedTanChemicalVM; UpdateChemicalName(newlySelectedTanChemicalVM); UpdateChemicalsView(); } } } catch (Exception ex) { Log.This(ex); } }
public static void AddTanChemicalToList(List <TanChemical> TanChemicals, TanChemicalVM chemical, int TanId) { try { TanChemicals.Add(new TanChemical { ChemicalType = chemical.ChemicalType, CompoundNo = chemical.CompoundNo, GenericName = chemical.GenericName, Id = chemical.Id, ImagePath = chemical.ImagePath, MetaData = chemical.ChemicalmataData, Name = chemical.Name, NUM = chemical.NUM, RegNumber = chemical.RegNumber, TanId = TanId, MolString = chemical.MolString, InchiKey = chemical.InChiKey, Formula = chemical.MolFormula }); ((App.Current.MainWindow as MainWindow).DataContext as MainVM).TanVM.UpdateUnusedNUMs(); ((App.Current.MainWindow as MainWindow).DataContext as MainVM).TanVM.UpdateNumsView(); } catch (Exception ex) { Log.This(ex); } }
public static void ResetTanChemicalDict() { try { TanChemicalDict.Clear(); foreach (var entry in S.ChemicalDict) { var tanChemicalVM = new TanChemicalVM { AllImagePaths = entry.Value.AllImagePaths, ChemicalmataData = entry.Value.ChemicalmataData, ChemicalType = entry.Value.ChemicalType, CompoundNo = entry.Value.CompoundNo, GenericName = entry.Value.GenericName, Id = entry.Value.Id, ImagePath = entry.Value.ImagePath, Images = entry.Value.Images, InChiKey = entry.Value.InChiKey, MolString = entry.Value.MolString, Name = entry.Value.Name, NUM = entry.Value.NUM, RegNumber = entry.Value.RegNumber, SearchName = entry.Value.SearchName, StructureType = entry.Value.StructureType }; TanChemicalDict[entry.Key] = tanChemicalVM; } } catch (Exception ex) { Log.This(ex); } }
public void Add8000Chemical(TanChemicalVM newChemical) { try { var mainViewModel = (App.Current.MainWindow as MainWindow).DataContext as MainVM; if (TanChemicalVMList != null) { //generate new 8000 number int seriesNumber = 8001; var maxSeriesNumChecmical = TanChemicalVMList. Where(rp => rp.ChemicalType == ChemicalType.S8000) .OrderBy(rp => rp.NUM).LastOrDefault(); if (maxSeriesNumChecmical != null && maxSeriesNumChecmical.NUM < 8499) { seriesNumber = maxSeriesNumChecmical.NUM + 1; } else if (maxSeriesNumChecmical != null && maxSeriesNumChecmical.NUM >= 8499) { seriesNumber = 7001; var _7000SeriesNumChecmical = TanChemicalVMList. Where(rp => rp.ChemicalType == ChemicalType.S8000 && rp.NUM < 8000) .OrderBy(rp => rp.NUM).LastOrDefault(); if (_7000SeriesNumChecmical != null && _7000SeriesNumChecmical.NUM < 8500) { seriesNumber = _7000SeriesNumChecmical.NUM + 1; } } TanChemicalVM c = new TanChemicalVM(); c.ChemicalType = ChemicalType.S8000; c.RegNumber = String.Empty; c.SearchName = string.IsNullOrEmpty(newChemical.Name) ? (string.IsNullOrEmpty(newChemical.GenericName) ? newChemical.CompoundNo : newChemical.GenericName) : newChemical.Name; c.Name = string.IsNullOrEmpty(newChemical.Name) ? (string.IsNullOrEmpty(newChemical.GenericName) ? newChemical.CompoundNo : newChemical.GenericName) : newChemical.Name; c.NUM = seriesNumber; c.InChiKey = newChemical.InChiKey; c.ChemicalmataData = newChemical.ChemicalmataData; c.CompoundNo = newChemical.CompoundNo; c.GenericName = newChemical.GenericName; c.Id = newChemical.Id; c.ChemicalmataData = newChemical.ChemicalmataData; c.MolString = newChemical.MolString; c.MolFormula = newChemical.MolFormula; TanChemicalVMList.Add(c); mainViewModel.S8000Chemicals.Add(c); TanChemical tanchemical = (from p in mainViewModel.TanVM.TanChemicals where p.Id == newChemical.Id select p).FirstOrDefault(); if (tanchemical == null) { TanChemicalsCrud.AddTanChemicalToList(mainViewModel.TanVM.TanChemicals, c, mainViewModel.TanVM.Id); } mainViewModel.TanVM.PerformAutoSave("8000 chemical generated"); Clear8000EditArea(); SelectedTabIndex = 0; } } catch (Exception ex) { Log.This(ex); } }
private void PopupViewModel_PublishNUMAssign(object sender, TanChemicalVM e) { try { var sameRegChemical = TanChemicalVMList.Where(c => c.RegNumber == e.RegNumber).FirstOrDefault(); if (sameRegChemical != null) { sameRegChemical.NUM = e.NUM; } } catch (Exception ex) { Log.This(ex); } }
private void Edit8500VM_Edit8500DialogChemicalSelected(object sender, TanChemicalVM e) { try { if (e != null && popupViewModel != null) { popupViewModel.Update8500(e); } edit8500Window.Hide(); } catch (Exception ex) { Log.This(ex); } }
private void PopupViewModel_ChemEditorStuctureChanged(object sender, TanChemicalVM e) { try { if (e != null && e.ChemicalType == ChemicalType.S8000) { EditChemicalString = true; chemEditor.MolfileString = popupViewModel.MolString; EditChemicalString = false; } } catch (Exception ex) { Log.This(ex); } }
public void UpdateChemicalName(TanChemicalVM newlySelectedTanChemicalVM) { try { var mainViewModel = (App.Current.MainWindow as MainWindow).DataContext as MainVM; if (mainViewModel != null && mainViewModel.TanVM != null && mainViewModel.TanVM.TanChemicals != null) { var currentTanChemical = mainViewModel.TanVM.TanChemicals.Where(tc => tc.Id == newlySelectedTanChemicalVM.Id).FirstOrDefault(); if (currentTanChemical != null) { currentTanChemical.CompoundNo = newlySelectedTanChemicalVM.CompoundNo; currentTanChemical.GenericName = newlySelectedTanChemicalVM.GenericName; currentTanChemical.OtherName = newlySelectedTanChemicalVM.SearchName; currentTanChemical.ImagePath = newlySelectedTanChemicalVM.ImagePath; currentTanChemical.MolString = newlySelectedTanChemicalVM.MolString; currentTanChemical.Name = newlySelectedTanChemicalVM.Name; currentTanChemical.RegNumber = newlySelectedTanChemicalVM.RegNumber; currentTanChemical.MetaData = newlySelectedTanChemicalVM.ChemicalmataData; } var reactionParticipants = mainViewModel.TanVM.ReactionParticipants.OfNum(newlySelectedTanChemicalVM.NUM); if (reactionParticipants != null) { foreach (var participant in reactionParticipants) { participant.Name = newlySelectedTanChemicalVM.Name; participant.Reg = newlySelectedTanChemicalVM.RegNumber; } } mainViewModel.TanVM.PerformAutoSave($"{newlySelectedTanChemicalVM.ChemicalType.ToString()} Chemical Updated"); } } catch (Exception ex) { Log.This(ex); } }
public static Tuple <TanChemicalVM, ObservableCollection <ImagesVM> > GetTanChemicalVMFromTanchemical(TanChemical num) { var chemical = new TanChemicalVM(); var images = new ObservableCollection <ImagesVM>(); Tuple <TanChemicalVM, ObservableCollection <ImagesVM> > returnObjet; try { chemical.ChemicalType = num.ChemicalType; chemical.MolString = num.MolString; chemical.RegNumber = num.RegNumber; chemical.ImagePath = num.ChemicalType == ChemicalType.NUM ? num.FirstImagePath : num.ImagePath; chemical.AllImagePaths = num.Substancepaths.Select(s => s.ImagePath).Distinct().ToList(); if (chemical.AllImagePaths == null || chemical.AllImagePaths.Count() == 0) { images.Add(new ImagesVM { ChemicalType = num.ChemicalType, ImagePath = null, MolString = num.MolString, RegNumber = num.RegNumber }); } else { foreach (var path in chemical.AllImagePaths) { images.Add(new ImagesVM { ChemicalType = num.ChemicalType, ImagePath = path, MolString = num.MolString, RegNumber = num.RegNumber }); } } } catch (Exception ex) { Log.This(ex); } returnObjet = new Tuple <TanChemicalVM, ObservableCollection <ImagesVM> >(chemical, images); return(returnObjet); }
public static ReactionParticipantVM ValidateWithCVT1(Dictionary <ParticipantType, List <ReactionParticipantVM> > otherstageReactants, List <RsnVM> Rsns, ReactionVM SelectedReaction, TanChemicalVM chemicalName, ParticipantType participanttype) { var groupedValidations = S.GetGroupedCVTs(); if (otherstageReactants != null && otherstageReactants.Any()) { foreach (var type in otherstageReactants.Keys) { if (groupedValidations.ContainsKey(participanttype) && groupedValidations[participanttype].Select(s => s.ExistingType).Contains(type)) { var cvt = groupedValidations[participanttype].Where(c => c.ExistingType == type).FirstOrDefault(); List <int> StageNumbers = PressureValidations.GetStageDisplayOrdersFromFreetexts(Rsns.ToList(), SelectedReaction, cvt.AssociatedFreeText); if (StageNumbers.Contains(SelectedReaction.SelectedStage.DisplayOrder)) { var rsnVM = Rsns.Where(rsn => rsn.Reaction.Id == SelectedReaction.Id && rsn.Stage != null && StageNumbers.Contains(rsn.Stage.DisplayOrder) && rsn.SelectedChemical == null && rsn.FreeText.SafeContainsLower(cvt.AssociatedFreeText)).FirstOrDefault(); if (rsnVM != null) { rsnVM.SelectedChemical = chemicalName; } return(null); } else { return(otherstageReactants[type].FirstOrDefault()); } } else { return(otherstageReactants.Select(s => s.Value).FirstOrDefault().FirstOrDefault()); } } } return(null); }
public void AddParticipant(object participant) { try { var StartTime = DateTime.Now; Debug.WriteLine($"Add Participant Started at {StartTime.DMYHMT()}"); var mainViewModel = (App.Current.MainWindow as MainWindow).DataContext as MainVM; if (SelectedTanChemicalVM != null && mainViewModel.TanVM != null && mainViewModel.IsParticipatTypeSelected) { if (S.AllowedDuplicateChemicals.Where(c => SelectedTanChemicalVM.SearchName.Contains(c)).Count() > 0) { var ListOfNames = SelectedTanChemicalVM.SearchName.Split(new string[] { "; " }, StringSplitOptions.RemoveEmptyEntries); DuplicateNamesList dnList = new Views.DuplicateNamesList(); (dnList.DataContext as DuplicateNamesVM).DuplicateNamesView = new ObservableCollection <Names>(ListOfNames.Select(s => new Names { Name = s })); dnList.ShowDialog(); if ((dnList.DataContext as DuplicateNamesVM).DialogStatus) { SelectedTanChemicalVM.Name = (dnList.DataContext as DuplicateNamesVM).SelectedName.Name; } else { return; } } if (SelectedTanChemicalVM.RegNumber == "5137553") { AppInfoBox.ShowInfoMessage("You can't add Aliquat 336. If still you want please Add RSN as 'Aliquat 336 Used'"); return; } if (SelectedTanChemicalVM.RegNumber == "69849452") { AppInfoBox.ShowInfoMessage("Davis reagent (REGNUM: 69849452) cannot be used in RSD, please capture in RSN"); return; } //this is required only for 8500 series. All other series will have Num values. if (SelectedTanChemicalVM != null && SelectedTanChemicalVM.NUM == 0) { var numChemical = TanChemicalVMList.Where(cn => cn.ChemicalType == ChemicalType.NUM && cn.RegNumber == SelectedTanChemicalVM.RegNumber).FirstOrDefault(); if (numChemical != null) { StringBuilder sb = new StringBuilder(); sb.Append($"Selected chemical already Present in NUMS section with num {numChemical.NUM}"); AppInfoBox.ShowInfoMessage(sb.ToString()); return; } SelectedTanChemicalVM.Id = Guid.NewGuid(); var maxNum = TanChemicalVMList. Where(rp => rp.ChemicalType == ChemicalType.S8500). Select(rp => rp.NUM). Max(); if (maxNum > 0) { SelectedTanChemicalVM.NUM = maxNum + 1; } else { SelectedTanChemicalVM.NUM = 8501; } TanChemical tanchemical = (from p in mainViewModel.TanVM.TanChemicals where p.RegNumber == SelectedTanChemicalVM.RegNumber select p).FirstOrDefault(); if (tanchemical == null) { TanChemicalsCrud.AddTanChemicalToList(mainViewModel.TanVM.TanChemicals, SelectedTanChemicalVM, mainViewModel.TanVM.Id); } if (!AddAsParticipant) { mainViewModel.TanVM.PerformAutoSave("8500 Chemical Added"); } } var chemical = TanChemicalVMList.Where(cn => cn.ChemicalType == ChemicalType.NUM && cn.RegNumber == SelectedTanChemicalVM.RegNumber && SelectedTanChemicalVM.ChemicalType != ChemicalType.NUM).FirstOrDefault(); if (chemical != null) { SelectedTanChemicalVM = chemical; } if (SelectedTanChemicalVM.RegNumber == "30525894" && SelectedTanChemicalVM.ChemicalType == ChemicalType.NUM) { SelectedTanChemicalVM = TanChemicalVMList.Where(cn => cn.ChemicalType == ChemicalType.S9000 && cn.RegNumber == "50000").FirstOrDefault(); SelectedTanChemicalVM.Name = S.PARA_FORM; } Debug.WriteLine($"Before adding Participant to Json {System.DateTime.Now}"); if (SelectedTanChemicalVM != null && AddAsParticipant) { (App.Current.MainWindow as MainWindow).ChemicalNameAdded(SelectedTanChemicalVM); } ReactionValidations.AddJonesReAgentRSN(mainViewModel.TanVM); Debug.WriteLine($"After adding Participant to Json {System.DateTime.Now}"); Debug.WriteLine($"Add Participant Done in {(DateTime.Now - StartTime).TotalSeconds} seconds"); } } catch (Exception ex) { Log.This(ex); } }
private void PopupViewModel_TANLoaded(object sender, Tan tan) { try { var mainViewModel = (App.Current.MainWindow as MainWindow).DataContext as MainVM; var startTime = DateTime.Now; var list = new List <TanChemicalVM>(); T.ResetTanChemicalDict(); foreach (var tanChemical in tan.TanChemicals) { string imagePath = null; if (tanChemical.Substancepaths != null && tanChemical.Substancepaths.Count > 0) { imagePath = tanChemical.Substancepaths.First().ImagePath; } var chemical = new TanChemicalVM { ChemicalType = tanChemical.ChemicalType, Id = tanChemical.Id, ImagePath = imagePath, Name = tanChemical.Name, NUM = tanChemical.NUM, RegNumber = tanChemical.RegNumber, SearchName = tanChemical.Name, CompoundNo = tanChemical.CompoundNo, GenericName = tanChemical.GenericName, StructureType = StructureType.MOL, MolString = tanChemical.MolString, MolFormula = tanChemical.Formula, AllImagePaths = tanChemical.Substancepaths.Select(s => s.ImagePath).Distinct().ToList(), ChemicalmataData = tanChemical.MetaData != null ? new List <TanChemicalMetaData>(tanChemical.MetaData) : null, InChiKey = tanChemical.InchiKey }; list.Add(chemical); } var regNumbersOfTanChemicals = tan.TanChemicals.Where(c => c.ChemicalType != ChemicalType.NUM).Select(c => c.RegNumber).ToList(); var chemicalDict = S.ChemicalDict; var dictOfchemicalsExceptTanNums = from storeChmical in chemicalDict where !regNumbersOfTanChemicals.Contains(storeChmical.Key) select storeChmical; var S8500ChemicalsFrom = dictOfchemicalsExceptTanNums.Select(s => s.Value).Where(tc => tc.ChemicalType == ChemicalType.S8500 && tc.NUM > 0); if (S8500ChemicalsFrom.Any()) { AppInfoBox.ShowInfoMessage("Static store chemical has updated"); } var participants = tan.TanChemicals.Where(p => p.ChemicalType == ChemicalType.S8000 && tan.Participants.Select(rp => rp.ParticipantId).ToList().Contains(p.Id)).Select(p => p.Id).ToList(); foreach (var chemical in list) { if (chemical.ChemicalType != ChemicalType.S8000) { var OrgRefChemical = S.Find(chemical.RegNumber); if (!string.IsNullOrEmpty(chemical.RegNumber) && OrgRefChemical != null && chemical.ChemicalType != ChemicalType.NUM) { chemical.SearchName = OrgRefChemical.SearchName; } } } foreach (var entry in dictOfchemicalsExceptTanNums) { var tanChemicalVM = new TanChemicalVM { AllImagePaths = entry.Value.AllImagePaths, ChemicalmataData = entry.Value.ChemicalmataData, ChemicalType = entry.Value.ChemicalType, CompoundNo = entry.Value.CompoundNo, GenericName = entry.Value.GenericName, Id = entry.Value.Id, ImagePath = entry.Value.ImagePath, Images = entry.Value.Images, InChiKey = entry.Value.InChiKey, MolString = entry.Value.MolString, Name = entry.Value.Name, NUM = entry.Value.NUM, RegNumber = entry.Value.RegNumber, SearchName = entry.Value.SearchName, StructureType = entry.Value.StructureType, MolFormula = entry.Value.MolFormula }; list.Add(tanChemicalVM); } TanChemicalVMList = new ObservableCollection <TanChemicalVM>(list); UpdateChemicalsView(); mainViewModel.S8000Chemicals = new ObservableCollection <Models.TanChemicalVM>(list.Where(chem => chem.ChemicalType == ChemicalType.S8000 && participants.Contains(chem.Id)).ToList()); } catch (Exception ex) { Log.This(ex); } }
private void Add8000SeriesChemical(object s) { try { if (!string.IsNullOrEmpty(MolString)) { if (S8000Metas != null && S8000Metas.Count > 0 && S8000Metas.Where(meta => !meta.ValidClass()).Count() == 0 && (!string.IsNullOrEmpty(SubstanceName) || !string.IsNullOrEmpty(CompoundNum) || !string.IsNullOrEmpty(GenericName))) { if ((EditingChemicalId == Guid.Empty && !string.IsNullOrEmpty(SubstanceName) && (from cn in TanChemicalVMList where cn.Name.SafeEqualsLower(SubstanceName) select cn).Any())) { AppInfoBox.ShowInfoMessage("Substance name Already exist in Chemical Names List"); return; } if ((EditingChemicalId == Guid.Empty && !string.IsNullOrEmpty(GenericName) && (from cn in TanChemicalVMList where cn.GenericName.SafeEqualsLower(GenericName) select cn).Any())) { AppInfoBox.ShowInfoMessage("GenericName Already exist in Chemical Names List"); return; } if ((EditingChemicalId == Guid.Empty && !string.IsNullOrEmpty(CompoundNum) && (from cn in TanChemicalVMList where cn.GenericName.SafeEqualsLower(CompoundNum) select cn).Any())) { AppInfoBox.ShowInfoMessage("CompoundNum Already exist in Chemical Names List"); return; } var inchiKey = MolToInchi.Mol2Inchi(MolString); if (!String.IsNullOrEmpty(inchiKey)) { var chemical = T.FindByInchiKey(inchiKey); if (chemical != null) { AppInfoBox.ShowInfoMessage(chemical.GetDuplicateChemicalString(inchiKey)); return; } chemical = TanChemicalVMList.Where(cn => cn.InChiKey != null && cn.InChiKey == inchiKey).FirstOrDefault(); if (chemical != null && EditingChemicalId == Guid.Empty) { AppInfoBox.ShowInfoMessage(chemical.GetDuplicateChemicalString(inchiKey)); return; } } var mainViewModel = (App.Current.MainWindow as MainWindow).DataContext as MainVM; var MetaDataList = new List <TanChemicalMetaData>(); foreach (var item in S8000Metas) { var tanChemicalMeta = new TanChemicalMetaData { Id = Guid.NewGuid(), ColumnNo = item.Column, Figure = item.Figure, FootNote = item.FootNote, LineNo = item.Line, OtherNotes = item.Other, PageNo = item.Page, ParaNo = item.Para, Scheme = item.Scheme, Sheet = item.Sheet, TableNo = item.Table }; MetaDataList.Add(tanChemicalMeta); } if (EditingChemicalId != Guid.Empty) { var EditedChemical = TanChemicalVMList.Where(i => i.Id == EditingChemicalId).FirstOrDefault(); if (EditedChemical != null) { EditedChemical.Name = SubstanceName; EditedChemical.SearchName = string.IsNullOrEmpty(SubstanceName) ? (string.IsNullOrEmpty(GenericName) ? CompoundNum : GenericName) : SubstanceName; EditedChemical.ChemicalType = ChemicalType.S8000; EditedChemical.CompoundNo = CompoundNum; EditedChemical.GenericName = GenericName; EditedChemical.StructureType = StructureType.CGM; EditedChemical.ChemicalmataData = MetaDataList; EditedChemical.MolString = MolString; EditedChemical.MolFormula = MolFormula; EditedChemical.InChiKey = inchiKey; } UpdateChemicalName(EditedChemical); SelectedTanChemicalVM = null; SelectedTanChemicalVM = EditedChemical; mainViewModel.TanVM.UpdateUnusedNUMs(); mainViewModel.TanVM.UpdateNumsView(); Clear8000EditArea(); SelectedTabIndex = 0; } else { var newChemical = new TanChemicalVM { Id = Guid.NewGuid(), Name = SubstanceName, SearchName = SubstanceName, ChemicalType = ChemicalType.S8000, CompoundNo = CompoundNum, GenericName = GenericName, StructureType = StructureType.CGM, ChemicalmataData = MetaDataList, MolString = MolString, MolFormula = MolFormula, InChiKey = inchiKey }; foreach (var item in MetaDataList) { item.TanChemicalId = newChemical.Id; } Add8000Chemical(newChemical); } EditingChemicalId = Guid.Empty; } else { AppInfoBox.ShowInfoMessage("New Chemical data missed. To save new chemical SubstanceName/CompoundNum/GenericName and PageNo are mandatory."); } } else { AppInfoBox.ShowInfoMessage("Please draw structure to add"); } } catch (Exception ex) { Log.This(ex); } }
private void EditTanChemical(object s) { try { var mainViewModel = (App.Current.MainWindow as MainWindow).DataContext as MainVM; if (SelectedTanChemicalVM != null) { if (SelectedTanChemicalVM.ChemicalType == ChemicalType.S8000) { EditingChemicalId = SelectedTanChemicalVM.Id; SubstanceName = SelectedTanChemicalVM.Name; CompoundNum = SelectedTanChemicalVM.CompoundNo; GenericName = SelectedTanChemicalVM.GenericName; MolString = SelectedTanChemicalVM.MolString; List <S8000MetaVM> MetaList = new List <S8000MetaVM>(); foreach (var item in SelectedTanChemicalVM.ChemicalmataData) { var metavm = new S8000MetaVM { Column = item.ColumnNo, Figure = item.Figure, FootNote = item.FootNote, Id = item.Id, Line = item.LineNo, Other = item.OtherNotes, Page = item.PageNo, Para = item.ParaNo, Scheme = item.Scheme, Sheet = item.Sheet, Table = item.TableNo }; MetaList.Add(metavm); } S8000Metas = new ObservableCollection <ViewModels.S8000MetaVM>(MetaList); SelectedTabIndex = 1; } else if (SelectedTanChemicalVM.ChemicalType == ChemicalType.S8500) { if (SelectedTanChemicalVM.NUM > 8500) { var s8500Chemicals = new List <TanChemicalVM>(); var chemicalName = new TanChemicalVM(SelectedTanChemicalVM); foreach (var e in TanChemicalVMList.Where(c => c.ChemicalType == ChemicalType.S8500 && c.NUM == 0)) { s8500Chemicals.Add(new TanChemicalVM(e)); } EditS8500Chemical.Invoke(this, new EditChemicalName { ChemicalNameVM = chemicalName, ChoosableChemicalVMs = s8500Chemicals }); var AllNumsList = TanChemicalVMList.Where(tc => tc.NUM > 0).Select(tc => tc.NUM); var duplicateNumsList = AllNumsList.GroupBy(num => num); if (AllNumsList.Count() != duplicateNumsList.Count()) { Log.This(new Exception("Duplicate Nums were generated")); } } else { AppInfoBox.ShowInfoMessage("NUM Not Generated For This Chemical . ."); } } else { AppInfoBox.ShowInfoMessage("Only 8500 And 8000 NUMs Are Editable . ."); } } } catch (Exception ex) { Log.This(ex); } }
private static ReactionParticipantViewVM GetParticipantView(ReactionParticipantVM participant) { try { var mainViewModel = (App.Current.MainWindow as MainWindow).DataContext as MainVM; var participantView = new ReactionParticipantViewVM(); participantView.ShortName = participant.Num.ToString(); participantView.TooltipText = participant.Reg + " - " + participant.Name; participantView.Name = participant.Name + "(" + participant.Num + ")"; participantView.Formula = participant.Formula; participantView.Num = participant.Num; participantView.StageVM = participant.StageVM; participantView.Reg = participant.Reg; participantView.NextImagePath = PLUS_ICON; #region Color if (participant.ParticipantType == ParticipantType.Product) { participantView.BorderBrush = StyleConstants.ProductBrush; participantView.BgColor = StyleConstants.ProductColor.Name; } else if (participant.ParticipantType == ParticipantType.Reactant) { participantView.BorderBrush = StyleConstants.ReactantBrush; participantView.BgColor = StyleConstants.ReactantColor.Name; } else if (participant.ParticipantType == ParticipantType.Agent) { participantView.BorderBrush = StyleConstants.AgentBrush; } else if (participant.ParticipantType == ParticipantType.Catalyst) { participantView.BorderBrush = StyleConstants.CatalystBrush; } else if (participant.ParticipantType == ParticipantType.Solvent) { participantView.BorderBrush = StyleConstants.SolventBrush; } #endregion #region Chemical Name TanChemicalVM chemicalName = null; if (participant.ChemicalType == ChemicalType.S8500 || participant.ChemicalType == ChemicalType.S9000) { chemicalName = S.Find(participant.Reg); } else if (participant.ChemicalType == ChemicalType.NUM || participant.ChemicalType == ChemicalType.S8000) { var tanChemical = (from p in mainViewModel.TanVM.TanChemicals where p.NUM == participant.Num select p).FirstOrDefault(); if (tanChemical != null) { chemicalName = new Models.TanChemicalVM { RegNumber = tanChemical.RegNumber, NUM = tanChemical.NUM, ChemicalType = tanChemical.ChemicalType, Name = tanChemical.Name, ImagePath = tanChemical.ImagePath, MolString = tanChemical.MolString, AllImagePaths = tanChemical.Substancepaths.Select(s => s.ImagePath).Distinct().ToList(), StereoChemisrty = tanChemical.ABSSterio }; } } participantView.ChemicalName = chemicalName; #endregion return(participantView); } catch (Exception ex) { Log.This(ex); throw; } }
public static void LoadSeriesData() { try { allSeriesNames.Clear(); Dictionary <string, string> DictNamePrioroty = NamePriorities.GroupBy(n => n.RegNumber).ToDictionary(n => n.Key, n => n.FirstOrDefault().Name); Dictionary <string, TanChemicalVM> registerNumWiseChemicalNameDict = new Dictionary <string, TanChemicalVM>(); #region Series 8500 if (File.Exists(C.FilePath8500)) { XmlDocument doc = new XmlDocument(); doc.Load(C.NetworkFilePath8500); XmlNode series8500Node = doc.DocumentElement.SelectSingleNode("/Series8500"); foreach (XmlNode tableNode in series8500Node.ChildNodes) { TanChemicalVM vm = new TanChemicalVM(); vm.InChiKey = tableNode.SelectSingleNode("INCHI_KEY")?.InnerText; vm.RegNumber = tableNode.SelectSingleNode("REG_NO")?.InnerText; vm.Name = tableNode.SelectSingleNode("ORGREF_NAME")?.InnerText; vm.SearchName = vm.Name; vm.ChemicalType = ChemicalType.S8500; allSeriesNames.Add(vm); } } else { AppErrorBox.ShowErrorMessage("8500 Series File is not found !", String.Empty); } #endregion #region Series 9000 if (File.Exists(C.FilePath9000)) { XmlDocument doc = new XmlDocument(); doc.Load(C.NetworkFilePath9000); XmlNode series9000Node = doc.DocumentElement.SelectSingleNode("/Series9000"); foreach (XmlNode tableNode in series9000Node.ChildNodes) { TanChemicalVM vm = new TanChemicalVM(); var numText = tableNode.SelectSingleNode("NUM")?.InnerText; int num; Int32.TryParse(numText, out num); vm.NUM = num; vm.InChiKey = tableNode.SelectSingleNode("INCHI_KEY")?.InnerText; vm.RegNumber = tableNode.SelectSingleNode("REG_NO")?.InnerText; vm.Name = tableNode.SelectSingleNode("ORGREF_NAME")?.InnerText; vm.SearchName = vm.Name; vm.ChemicalType = ChemicalType.S9000; allSeriesNames.Add(vm); } } else { AppErrorBox.ShowErrorMessage("9000 Series File is not found !", String.Empty); } #endregion //Make synonyms from chemical names having same register numbers. foreach (TanChemicalVM c in allSeriesNames) { c.Name = DictNamePrioroty.ContainsKey(c.RegNumber) ? DictNamePrioroty[c.RegNumber] : c.Name; if (registerNumWiseChemicalNameDict.ContainsKey(c.RegNumber)) { TanChemicalVM existingChemicalName = registerNumWiseChemicalNameDict[c.RegNumber]; existingChemicalName.SearchName = String.Join("; ", existingChemicalName.SearchName, c.SearchName); } else { registerNumWiseChemicalNameDict[c.RegNumber] = c; } } AppChemicalDict.Clear(); foreach (var entry in registerNumWiseChemicalNameDict) { AppChemicalDict[entry.Key] = entry.Value; } } catch (Exception ex) { Log.This(ex); } }