Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
 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);
     }
 }
Esempio n. 3
0
 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);
     }
 }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
 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);
     }
 }
Esempio n. 6
0
 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);
     }
 }
Esempio n. 7
0
 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);
     }
 }
Esempio n. 8
0
 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);
     }
 }
Esempio n. 9
0
        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);
        }
Esempio n. 11
0
 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);
     }
 }
Esempio n. 12
0
        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);
            }
        }
Esempio n. 13
0
 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);
     }
 }
Esempio n. 14
0
 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);
     }
 }
Esempio n. 15
0
        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;
            }
        }
Esempio n. 16
0
        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);
            }
        }