Beispiel #1
0
        public ActionResult Search()
        {
            AgentsSearchViewModel viewModel = new AgentsSearchViewModel();

            viewModel.CaptchaImage = CaptchaImageCache.GenerateCaptchaImage();
            return(View(viewModel));
        }
Beispiel #2
0
        public FileResult Image(string id)
        {
            CaptchaImage captchaImage = CaptchaImageCache.GetCachedCaptcha(id);

            using (MemoryStream stream = new MemoryStream())
            {
                if (captchaImage != null)
                {
                    using (Bitmap bitmap = captchaImage.RenderImage())
                    {
                        bitmap.Save(stream, ImageFormat.Png);
                    }
                }
                else
                {
                    LogContext.LogInformation("Iamge is not found in cache (CaptchaController method Image)", "CaptchaController", "captchaImage.Id = " + id);
                }
                return(File(stream.ToArray(), "image/png"));
            }
        }
Beispiel #3
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));
        }