public ActionResult Search() { AgentsSearchViewModel viewModel = new AgentsSearchViewModel(); viewModel.CaptchaImage = CaptchaImageCache.GenerateCaptchaImage(); return(View(viewModel)); }
public ActionResult Search(AgentsSearchViewModel viewModel) { CaptchaImage image = CaptchaImageCache.GetAndRemoveCachedCaptcha(viewModel.CaptchaId); // If image exists in cache (wasn't removed during timeout) if (image == null) { LogContext.LogInformation("Image is not found in cache (AgentsController method Search[HttpPost])", "AgentsController", "captchaImage.Id = " + viewModel.CaptchaId); // Redirect to search again return(RedirectToAction("Search")); } if (string.Equals(image.Text, viewModel.CaptchaText, StringComparison.OrdinalIgnoreCase)) { string searchText = viewModel.SearchText; if (!string.IsNullOrWhiteSpace(searchText)) { searchText = searchText.Trim(); try { using (new Performance(ms => ViewBag.DbTime = ms)) { // Data access viewModel.Agents = AgentSearch.GetAgents(searchText); } if (viewModel.Agents == null) { ViewBag.Error = "Поиск может быть выполнен по ФИО или номеру сертификата. Пожалуйста уточните запрос."; } else if (viewModel.Agents.Count == 0) { ViewBag.Error = "По вашему запросу не найдено ни одного совпадения."; } else if (viewModel.Agents.Count > ConfigurationHelper.MaxAgentsSearchResultSetLength) { ViewBag.Error = "Вашему запросу соответствует слишком много результатов поиска. Пожалуйста, уточните свой запрос."; viewModel.Agents = null; } } catch (Exception ex) { LogContext.LogException(ex, "AgentRegisterOpenPart", "Was handled in AgentsController Search catch block"); ViewBag.Error = "Произошла системная ошибка. Попробуйте воспользоваться поиском позднее. Приносим извинения за неудобства."; viewModel.Agents = null; } } else { ViewBag.Error = "Поисковая строка не задана."; } } else { ViewBag.CaptchaError = "Текст не совпадает с указанным на изображении."; } viewModel.CaptchaImage = CaptchaImageCache.GenerateCaptchaImage(); return(View(viewModel)); }