public ActionResult Edit(AddEditSearchPhraseModel model) { SearchPhrase searchPhrase = model.ToEntity(db); if (searchPhrase == null) { return(HttpNotFound()); } SearchPhrase phrase = db.SearchPhrases.Where(x => x.Phrase == searchPhrase.Phrase && x.SearchPhraseId != searchPhrase.SearchPhraseId).FirstOrDefault(); if (phrase != null) { ModelState.AddModelError("SearchPhrase", AppGlobal.Language.GetText(this, "SearchPhraseNotUnique", "Search Phrase is already in use")); } if (model.SelectedQualificationLevels.Count() == 0 && model.SelectedStudyModes.Count() == 0 && model.SelectedAttendanceTypes.Count() == 0 && model.SelectedAttendancePatterns.Count() == 0) { ModelState.AddModelError("", AppGlobal.Language.GetText(this, "MustSelectReplacement", "You must select at least 1 Qualification Level, Study Mode, Attendance Mode or Attendance Pattern.")); } if (ModelState.IsValid) { db.Entry(searchPhrase).State = !model.SearchPhraseId.HasValue ? System.Data.Entity.EntityState.Added : System.Data.Entity.EntityState.Modified; db.SaveChanges(); ShowGenericSavedMessage(); return(RedirectToAction("Index")); } AddListsToModel(model); return(View(model)); }
/// <summary> /// Unarchives the <see cref="SearchPhrase"/> and also manages status of it's associated <see cref="Course"/> /// </summary> /// <param name="SearchPhrase">The <see cref="SearchPhrase"/> object</param> /// <param name="db">The <see cref="ProviderPortalEntities"/> object</param> public static void Unarchive(this SearchPhrase SearchPhrase, ProviderPortalEntities db) { SearchPhrase.RecordStatusId = (Int32)Constants.RecordStatus.Live; SearchPhrase.ModifiedByUserId = Permission.GetCurrentUserId(); SearchPhrase.ModifiedDateTimeUtc = DateTime.UtcNow; db.Entry(SearchPhrase).State = EntityState.Modified; }
public NewtonsoftJsonResult MoveDown(Int32 id) { SearchPhrase searchPhrase = db.SearchPhrases.Find(id); if (searchPhrase == null) { return(Json(new { Success = 0, Message = AppGlobal.Language.GetText(this, "UnableToMoveUp", "Unable to move search phrase") })); } SearchPhrase swapPhrase = db.SearchPhrases.Where(x => x.Ordinal > searchPhrase.Ordinal).OrderBy(x => x.Ordinal).FirstOrDefault(); if (swapPhrase != null) { Int32 swapOrdinal = swapPhrase.Ordinal; swapPhrase.Ordinal = searchPhrase.Ordinal; searchPhrase.Ordinal = swapOrdinal; db.Entry(searchPhrase).State = System.Data.Entity.EntityState.Modified; db.Entry(swapPhrase).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); return(Json(new { Success = 1, Message = String.Format(AppGlobal.Language.GetText(this, "MovedDownToX", "Moved search phrase down to number: {0}"), swapOrdinal) })); } return(Json(new { Success = 0, Message = AppGlobal.Language.GetText(this, "UnableToMoveUp", "Unable to move search phrase") })); }
protected override void OnKeyDown(KeyEventArgs e) { if (e.Key == Key.Escape) { viewModel.SearchPhrase = ""; SearchPhrase.Focus(); } base.OnKeyDown(e); }
public void Normalize() { SearchPhrase = SearchPhrase.EmptyToNull(); Sort = Sort.EmptyToNull(); SortOrder = SortOrder.EmptyToNull(); if (!string.IsNullOrEmpty(SearchPhrase)) { SearchPhrase = SearchPhrase.EscapeSearchTerm(); } }
public AddEditSearchPhraseModel(SearchPhrase searchPhrase) : this() { SearchPhraseId = searchPhrase.SearchPhraseId; SearchPhrase = searchPhrase.Phrase; SelectedQualificationLevels = searchPhrase.QualificationLevels.Select(x => x.QualificationLevelId).ToArray(); SelectedStudyModes = searchPhrase.StudyModes.Select(x => x.StudyModeId).ToArray(); SelectedAttendanceTypes = searchPhrase.AttendanceTypes.Select(x => x.AttendanceTypeId).ToArray(); SelectedAttendancePatterns = searchPhrase.AttendancePatterns.Select(x => x.AttendancePatternId).ToArray(); RecordStatusId = searchPhrase.RecordStatusId; RemovePhraseFromSearch = searchPhrase.RemovePhraseFromSearch; }
public ActionResult Edit(Int32 id) { SearchPhrase searchPhrase = db.SearchPhrases.Find(id); if (searchPhrase == null) { return(HttpNotFound()); } AddEditSearchPhraseModel model = new AddEditSearchPhraseModel(searchPhrase); AddListsToModel(model); return(View(model)); }
public ActionResult Delete(Int32 id) { SearchPhrase searchPhrase = db.SearchPhrases.Find(id); if (searchPhrase == null) { return(HttpNotFound()); } searchPhrase.Delete(db); db.SaveChanges(); ShowGenericSavedMessage(true); return(RedirectToAction("Index")); }
public ActionResult Unarchive(Int32 id) { SearchPhrase searchPhrase = db.SearchPhrases.Find(id); if (searchPhrase == null) { return(HttpNotFound()); } searchPhrase.Unarchive(db); db.SaveChanges(); ShowGenericSavedMessage(true); return(RedirectToAction("Edit", "SearchPhrase", new { Id = searchPhrase.SearchPhraseId })); }
/// <summary> /// Deletes the <see cref="SearchPhrase"/> and also manages status of it's associated <see cref="Course"/> /// </summary> /// <param name="SearchPhrase">The <see cref="SearchPhrase"/> object</param> /// <param name="db">The <see cref="ProviderPortalEntities"/> object</param> public static void Delete(this SearchPhrase SearchPhrase, ProviderPortalEntities db) { foreach (QualificationLevel qualLevel in SearchPhrase.QualificationLevels.ToList()) { SearchPhrase.QualificationLevels.Remove(qualLevel); } foreach (StudyMode studyMode in SearchPhrase.StudyModes.ToList()) { SearchPhrase.StudyModes.Remove(studyMode); } foreach (AttendanceType attendanceType in SearchPhrase.AttendanceTypes.ToList()) { SearchPhrase.AttendanceTypes.Remove(attendanceType); } foreach (AttendancePattern attendancePattern in SearchPhrase.AttendancePatterns.ToList()) { SearchPhrase.AttendancePatterns.Remove(attendancePattern); } db.Entry(SearchPhrase).State = EntityState.Deleted; }
public static SearchPhrase ToEntity(this AddEditSearchPhraseModel model, ProviderPortalEntities db) { SearchPhrase searchPhrase = new SearchPhrase(); if (model.SearchPhraseId.HasValue) { searchPhrase = db.SearchPhrases.Find(model.SearchPhraseId); if (searchPhrase == null) { return(null); } } searchPhrase.Phrase = model.SearchPhrase; searchPhrase.RemovePhraseFromSearch = model.RemovePhraseFromSearch; if (model.SearchPhraseId.HasValue) { searchPhrase.ModifiedByUserId = Permission.GetCurrentUserId(); searchPhrase.ModifiedDateTimeUtc = DateTime.UtcNow; } else { searchPhrase.CreatedByUserId = Permission.GetCurrentUserId(); searchPhrase.CreatedDateTimeUtc = DateTime.UtcNow; Int32 nextOrdinal = 1; SearchPhrase maxOrdinal = db.SearchPhrases.OrderByDescending(x => x.Ordinal).FirstOrDefault(); if (maxOrdinal != null) { nextOrdinal = maxOrdinal.Ordinal + 1; } searchPhrase.Ordinal = nextOrdinal; searchPhrase.RecordStatusId = (Int32)Constants.RecordStatus.Live; } // Remove any existing and not selected Qualification Levels List <QualificationLevel> existingQualificationLevels = searchPhrase.QualificationLevels.ToList(); foreach (QualificationLevel qualificationLevel in existingQualificationLevels.Where(x => !model.SelectedQualificationLevels.Contains(x.QualificationLevelId))) { searchPhrase.QualificationLevels.Remove(qualificationLevel); } // Add any new Qualification Levels foreach (Int32 qlId in model.SelectedQualificationLevels) { QualificationLevel ql = searchPhrase.QualificationLevels.FirstOrDefault(x => x.QualificationLevelId == qlId); if (ql == null) { ql = db.QualificationLevels.Find(qlId); if (ql != null) { searchPhrase.QualificationLevels.Add(ql); } } } // Remove any existing and not selected Study Modes List <StudyMode> existingStudyModes = searchPhrase.StudyModes.ToList(); foreach (StudyMode studyMode in existingStudyModes.Where(x => !model.SelectedStudyModes.Contains(x.StudyModeId))) { searchPhrase.StudyModes.Remove(studyMode); } // Add any new Study Modes foreach (Int32 smId in model.SelectedStudyModes) { StudyMode sm = searchPhrase.StudyModes.FirstOrDefault(x => x.StudyModeId == smId); if (sm == null) { sm = db.StudyModes.Find(smId); if (sm != null) { searchPhrase.StudyModes.Add(sm); } } } // Remove any existing and not selected Attendance Types List <AttendanceType> existingAttendanceTypes = searchPhrase.AttendanceTypes.ToList(); foreach (AttendanceType attendanceType in existingAttendanceTypes.Where(x => !model.SelectedAttendanceTypes.Contains(x.AttendanceTypeId))) { searchPhrase.AttendanceTypes.Remove(attendanceType); } // Add any new Attendance Types foreach (Int32 atId in model.SelectedAttendanceTypes) { AttendanceType at = searchPhrase.AttendanceTypes.FirstOrDefault(x => x.AttendanceTypeId == atId); if (at == null) { at = db.AttendanceTypes.Find(atId); if (at != null) { searchPhrase.AttendanceTypes.Add(at); } } } // Remove any existing and not selected Attendance Patterns List <AttendancePattern> existingAttendancePatterns = searchPhrase.AttendancePatterns.ToList(); foreach (AttendancePattern attendancePattern in existingAttendancePatterns.Where(x => !model.SelectedAttendancePatterns.Contains(x.AttendancePatternId))) { searchPhrase.AttendancePatterns.Remove(attendancePattern); } // Add any new Attendance Patterns foreach (Int32 apId in model.SelectedAttendancePatterns) { AttendancePattern ap = searchPhrase.AttendancePatterns.FirstOrDefault(x => x.AttendancePatternId == apId); if (ap == null) { ap = db.AttendancePatterns.Find(apId); if (ap != null) { searchPhrase.AttendancePatterns.Add(ap); } } } return(searchPhrase); }
/// <summary> /// gets new record to be saved /// </summary> public async Task GetNewRecordAsync() { _log.Called(); string phrase = SearchPhrase.Replace("<name>", NameList[PhraseNo]); LoadingPage = true; HowManySearches++; WebBrowser.Load("https://www.google.com/"); _pageLoadedEventHandler = async(sender, args) => { if (args.IsLoading == false) { WebBrowser.LoadingStateChanged -= _pageLoadedEventHandler; try { if (StopCT.IsCancellationRequested) { StopCT.ThrowIfCancellationRequested(); //cancellation } Pause(); //if paused await _scrapService.EnterPhraseAsync(ClickerInput, WebBrowser, phrase); Pause(); //if paused await _scrapService.ClickSearchBtnAsync(ClickerInput, WebBrowser); Pause(); //if paused bool isCaptcha = await CheckForCaptchaAsync(); Pause(); //if paused if (!isCaptcha) { await GetAndSaveResultAsync(); } else { throw new Exception("Captcha detected"); } Pause(); //if paused } catch (OperationCanceledException e) { _log.Info("Method STOP cancelled: " + e.Message); } catch (Exception e) { if (e.Message == "Captcha detected" && !StopCT.IsCancellationRequested) { _log.Info(e.Message); ClickerInput = true; await ResolveCaptchaAsync(); ClickerInput = false; } else { _log.Error(e.Message); } } finally { LoadingPage = false; } } }; WebBrowser.LoadingStateChanged += _pageLoadedEventHandler; while (LoadingPage) { await Task.Delay(50); //if still crawling } }