/// <summary> /// Extracts the phrase (if found) in the given language. /// </summary> /// <param name="translation"></param> /// <param name="languageText"></param> /// <returns>If found, returns phrase in given language. Otherwise, returns null.</returns> public static PhraseEdit ExtractPhrase(TranslationEdit translation, string languageText) { var results = (from phrase in translation.Phrases where phrase.Language.Text == languageText select phrase).FirstOrDefault(); return(results); }
public void DataPortal_Create(Criteria.PhraseTextLanguageTextPairsCriteria criteria) { //INITIALIZE TRANSLATION CREATOR RetrieverId = Guid.NewGuid(); Translation = TranslationEdit.NewTranslationEdit(); //FILL TRANSLATION.PHRASES WITH EMPTY PHRASES for (int i = 0; i < criteria.PhraseTextLanguageTextPairs.Count; i++) { Translation.Phrases.AddNew(); } //FILL IN THE PHRASE DATA for (int j = 0; j < criteria.PhraseTextLanguageTextPairs.Count; j++) { //EXTRACT DATA FROM TUPLE var pair = criteria.PhraseTextLanguageTextPairs[j]; var phraseText = pair.Item1; var languageText = pair.Item2; //ENTER DATA INTO THE BLANK PHRASES var phraseEdit = Translation.Phrases[j]; phraseEdit.Text = phraseText; //DO THE LANGUAGE //TRY TO GET LANGUAGE EDIT FROM DB var allLanguages = LanguageList.GetAll(); var results = from languageEdit in allLanguages where languageEdit.Text == languageText select languageEdit; if (results.Count() > 0) { //THE LANGUAGE ALREADY EXISTS (OMG I'M TIRED AND THIS IS TERRIBLE) var childLanguageEdit = results.First(); phraseEdit.Language = childLanguageEdit; } else { //THE LANGUAGE DOES NOT EXIST YET phraseEdit.Language.Id = Guid.NewGuid(); phraseEdit.Language.Text = languageText; } } //SAVE THE TRANSLATION (SYNC CUZ WE'RE ON THE SERVER) Translation = Translation.Save(); }
public void DataPortal_Create() { RetrieverId = Guid.NewGuid(); Translation = TranslationEdit.NewTranslationEdit(); var phraseA = Translation.Phrases.AddNew(); phraseA.LanguageId = LanguageEdit.GetDefaultLanguageId(); //phraseA.Language = LanguageEdit.GetLanguageEdit(phraseA.LanguageId); phraseA.Language = DataPortal.FetchChild <LanguageEdit>(phraseA.LanguageId); var phraseB = Translation.Phrases.AddNew(); phraseB.LanguageId = LanguageEdit.GetDefaultLanguageId(); //phraseB.Language = LanguageEdit.GetLanguageEdit(phraseB.LanguageId); phraseB.Language = DataPortal.FetchChild <LanguageEdit>(phraseB.LanguageId); }
public void DataPortal_Create(Criteria.ListOfPhrasesCriteria phrasesCriteria) { //INITIALIZE TRANSLATION CREATOR RetrieverId = Guid.NewGuid(); Translation = TranslationEdit.NewTranslationEdit(); //WILL USE THIS TO POPULATE THE TRANSLATION List <PhraseEdit> phrasesToUse = new List <PhraseEdit>(phrasesCriteria.Phrases); //FILL TRANSLATION.PHRASES WITH EMPTY PHRASES for (int i = 0; i < phrasesToUse.Count; i++) { Translation.Phrases.AddNew(); } //RETRIEVE ANY ALREADY-EXISTING PHRASES IN DB var retriever = PhrasesByTextAndLanguageRetriever.CreateNew(phrasesCriteria); for (int i = 0; i < phrasesToUse.Count; i++) { var phraseToAdd = phrasesToUse[i]; //IF THE RETRIEVEDPHRASES CONTAINS TO THE KEY (WHICH IT SHOULD) //AND THE RETRIEVER FOUND AN ALREADY EXISTING PHRASE IN DB, //THEN REPLACE PHRASETOADD WITH THAT DB PHRASE if (retriever.RetrievedPhrases.ContainsKey(phraseToAdd.Id) && retriever.RetrievedPhrases[phraseToAdd.Id] != null) { phraseToAdd = retriever.RetrievedPhrases[phraseToAdd.Id]; } var translationChildPhrase = Translation.Phrases[i]; var dto = phraseToAdd.CreateDto(); translationChildPhrase.LoadFromDtoBypassPropertyChecks(dto); } }
public void DataPortal_Create(Criteria.TranslationPairSearchCriteria criteria) { RetrieverId = Guid.NewGuid(); Translation = null; //Translation = TranslationEdit.NewTranslationEdit(); using (var dalManager = DalFactory.GetDalManager()) { var phraseDal = dalManager.GetProvider <IPhraseDal>(); Result <ICollection <PhraseDto> > result = phraseDal.GetAll(); if (!result.IsSuccess) { Exception error = result.GetExceptionFromInfo(); if (error != null) { throw error; } else { throw new FetchFailedException(result.Msg); } } var allPhraseDtos = result.Obj; //WE HAVE A LIST OF ALL THE PHRASES. NOW SEARCH THROUGH FOR OUR PHRASES. //PHRASE A var foundPhraseADto = (from phraseDto in allPhraseDtos where phraseDto.Text == criteria.PhraseA.Text && phraseDto.LanguageId == criteria.PhraseA.LanguageId select phraseDto).FirstOrDefault(); if (foundPhraseADto == null) { //PHRASE A WAS NOT FOUND IN DB, SO THERE IS NO TRANSLATION. return; } //PHRASE B var foundPhraseBDto = (from phraseDto in allPhraseDtos where phraseDto.Text == criteria.PhraseB.Text && phraseDto.LanguageId == criteria.PhraseB.LanguageId select phraseDto).FirstOrDefault(); if (foundPhraseBDto == null) { //PHRASE A WAS NOT FOUND IN DB, SO THERE IS NO TRANSLATION. return; } //WE FOUND BOTH PHRASES, NOW WE LOOK FOR TRANSLATION WITH PHRASE A. WE WILL THEN //LOOK WITHIN THOSE RESULTS FOR PHRASE B. WE WILL THEN NARROW ANY POSSIBLE MULTIPLE //TRANSLATIONS WITH CONTEXT TEXT. //LOOK FOR TRANSLATION WITH PHRASE A var phraseAEdit = DataPortal.Fetch <PhraseEdit>(foundPhraseADto.Id); var translationsContainingPhraseA = TranslationList.GetAllTranslationsContainingPhraseById(phraseAEdit); //IF WE FIND NO TRANSLATIONS WITH PHRASE A, THEN WE RETURN WITH NO TRANSLATION FOUND if (translationsContainingPhraseA.Count == 0) { return; } //WE FOUND TRANSLATIONS WITH PHRASE A //NOW LOOK WITHIN RESULTS FOR PHRASE B var translationsWithBothPhrases = (from translation in translationsContainingPhraseA where (from phrase in translation.Phrases where phrase.Id == foundPhraseBDto.Id select phrase).Count() > 0 select translation); //THERE ARE NO TRANSLATIONS WITH BOTH PHRASES, SO RETURN WITH TRANSLATION == NULL if (translationsWithBothPhrases.Count() == 0) { return; } //WE FOUND TRANSLATIONS CONTAINING BOTH PHRASES, //AND WE MUST NOW CHECK AGAINST CONTEXT (IF PROVIDED) if (!string.IsNullOrEmpty(criteria.ContextText)) { //CONTEXT TEXT HAS BEEN PROVIDED //WE CHOOSE [SQL].FIRSTORDEFAULT() BECAUSE IF WE CANNOT MATCH THE CONTEXT, THEN OUR SEARCH //SHOULD RETURN NULL Translation = (from t in translationsWithBothPhrases where t.ContextPhrase != null && t.ContextPhrase.Text == criteria.ContextText select t).FirstOrDefault(); } else { //CONTEXT TEXT HAS NOT BEEN PROVIDED //WE KNOW WE HAVE FOUND AT LEAST ONE, AND THIS SETS TRANSLATION TO THE FIRST TRANSLATION FOUND. Translation = translationsWithBothPhrases.First(); } } }