Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public ActionResult Search()
 {
     AgentsSearchViewModel viewModel = new AgentsSearchViewModel();
     viewModel.CaptchaImage = CaptchaImageCache.GenerateCaptchaImage();
     return View(viewModel);
 }