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));
        }
Beispiel #2
0
 /// <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") }));
        }
Beispiel #4
0
 protected override void OnKeyDown(KeyEventArgs e)
 {
     if (e.Key == Key.Escape)
     {
         viewModel.SearchPhrase = "";
         SearchPhrase.Focus();
     }
     base.OnKeyDown(e);
 }
Beispiel #5
0
        public void Normalize()
        {
            SearchPhrase = SearchPhrase.EmptyToNull();
            Sort         = Sort.EmptyToNull();
            SortOrder    = SortOrder.EmptyToNull();

            if (!string.IsNullOrEmpty(SearchPhrase))
            {
                SearchPhrase = SearchPhrase.EscapeSearchTerm();
            }
        }
Beispiel #6
0
 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 }));
        }
Beispiel #10
0
        /// <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);
        }
Beispiel #12
0
        /// <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
            }
        }