private IList <IEntryTerm> CreateEntryTerms(IEnumerable <ISearchResult> termsResult, ILanguage language, int id) { IList <IEntryTerm> entryTerms = new List <IEntryTerm>(); var terms = termsResult.Where(t => t.Id == id && t.Language.Locale.TwoLetterISOLanguageName == language.Locale.TwoLetterISOLanguageName).ToList(); foreach (var searchResult in terms) { var term = (SearchResultModel)searchResult; var entryTerm = new EntryTerm { Value = term.Text, Fields = SetEntryFields(term, 2) }; entryTerms.Add(entryTerm); } return(entryTerms); }
// Create Entry terms for the entry languages private IList <IEntryTerm> CreateEntryTerms(ILanguage language, ILanguage sourceLanguage, int id) { IList <IEntryTerm> entryTerms = new List <IEntryTerm>(); var terms = _termsResult.Where(t => t.Id == id).ToList(); // if language is Source language, create entryTerm with value from source language text // otherwise create entry terms for the target language search results if (language.Name.Equals(sourceLanguage.Name)) { var sourceLangTerm = terms.FirstOrDefault(t => t.Language.Name.Equals(sourceLanguage.Locale.Parent.DisplayName)); if (sourceLangTerm != null) { var entryTerm = new EntryTerm { Value = sourceLangTerm.Text, Fields = SetEntryFields((SearchResultModel)sourceLangTerm) }; entryTerms.Add(entryTerm); } } else { // add IEntryTerm only for the current ISearchResult term(otherwise it will duplicate all the term for each ISearchResult term) foreach (SearchResultModel term in terms) { // add terms for the target if (!term.Language.Name.Equals(sourceLanguage.Locale.Parent.DisplayName)) { var entryTerm = new EntryTerm { Value = term.Text, Fields = SetEntryFields(term) }; entryTerms.Add(entryTerm); } } } return(entryTerms); }
public void AddAndEdit(IEntry entry, ExcelDataGrid excelDataGrid) { try { if (_providerSettings.IsReadOnly) { MessageBox.Show("Terminology Provider is configured as read only!", "Read Only", MessageBoxButtons.OK); return; } if (!_providerSettings.IsFileReady()) { MessageBox.Show( @"The excel file configured as a terminology provider appears to be also opened in the Excel application. Please close the file!", @"Excel file is used by another process", MessageBoxButtons.OK); return; } var terms = sourceListView.Objects.Cast <ExcelEntry>().ToList(); var selectedTerm = terms.FirstOrDefault(item => item.Id == entry.Id); var excelTerm = new ExcelTerm { SourceCulture = _providerSettings.SourceLanguage, TargetCulture = _providerSettings.TargetLanguage, Target = excelDataGrid.Term }; var source = (ExcelEntry)entry; source.IsDirty = true; excelTerm.Source = source.SearchText; var exist = false; var targetlanguage = selectedTerm?.Languages.Cast <ExcelEntryLanguage>() .FirstOrDefault(x => !x.IsSource); if (targetlanguage != null) { foreach (var term in targetlanguage.Terms) { if (term.Value == excelDataGrid.Term) { exist = true; } } if (exist == false) { var termToAdd = new EntryTerm { Value = excelDataGrid.Term }; targetlanguage.Terms.Add(termToAdd); terms[entry.Id].Languages = selectedTerm.Languages; } } JumpToTerm(entry); Task.Run(Save); } catch (Exception ex) { throw ex; } }
public void AddAndEdit(IEntry entry, ExcelDataGrid excelDataGrid) { try { var selectedTerm = _terms.FirstOrDefault(item => item.Id == entry.Id); var termToAdd = new EntryTerm { Value = excelDataGrid.Term }; var excelTerm = new ExcelTerm { SourceCulture = entry.Languages[0].Locale, TargetCulture = entry.Languages[1].Locale, Target = excelDataGrid.Term }; var source = (ExcelEntry) entry; excelTerm.Source = source.SearchText; var exist = false; if (selectedTerm != null) { foreach (var term in selectedTerm.Languages[1].Terms) { if (term.Value == excelDataGrid.Term) { exist = true; } } if (exist == false) { selectedTerm.Languages[1].Terms.Add(termToAdd); _terms[entry.Id].Languages = selectedTerm.Languages; } } JumpToTerm(entry); Task.Run(Save); } catch (Exception ex) { TelemetryService.Instance.AddException(ex); throw; } }