Example #1
0
        public IActionResult LeaveFeedback(LeaveFeedbackViewModel model)
        {
            if (!_settings.ShowFeedback)
            {
                return(RedirectToAction(nameof(Index), Name));
            }

            if (_settings.ShowCaptchaText)
            {
                HelpdeskCacheItem helpdeskCache = GetCachedHelpdeskItem(true);

                if (!model.CaptchaText.Equals(helpdeskCache.CaptchaText, StringComparison.CurrentCultureIgnoreCase))
                {
                    ModelState.AddModelError(nameof(model.CaptchaText), Languages.LanguageStrings.CodeNotValid);
                }
            }

            if (ModelState.IsValid)
            {
                if (_helpdeskProvider.SubmitFeedback(UserId(), model.Name, model.Feedback))
                {
                    GrowlAdd(Languages.LanguageStrings.FeedbackSubmitted);
                    return(RedirectToAction(nameof(Index)));
                }

                ModelState.AddModelError(String.Empty, Languages.LanguageStrings.FeedbackFailed);
            }

            return(View(GetFeedbackModel()));
        }
Example #2
0
        public ActionResult GetCaptchaImage()
        {
            HelpdeskCacheItem loginCacheItem = GetCachedHelpdeskItem(false);

            if (loginCacheItem == null)
            {
                return(StatusCode(400));
            }

            CaptchaImage ci = new CaptchaImage(loginCacheItem.CaptchaText, 240, 60, "Century Schoolbook");

            try
            {
                // Write the image to the response stream in JPEG format.
                using (MemoryStream ms = new MemoryStream())
                {
                    ci.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

                    return(File(ms.ToArray(), "image/png"));
                }
            }
            catch (Exception err)
            {
                if (!err.Message.Contains("Specified method is not supported."))
                {
                    throw;
                }
            }
            finally
            {
                ci.Dispose();
            }

            return(null);
        }
Example #3
0
        private LeaveFeedbackViewModel GetFeedbackModel()
        {
            HelpdeskCacheItem helpdeskCache = GetCachedHelpdeskItem(true);

            helpdeskCache.CaptchaText = GetRandomWord(_settings.CaptchaWordLength, CaptchaCharacters);

            return(new LeaveFeedbackViewModel(GetModelData(), _settings.ShowCaptchaText));
        }
Example #4
0
        private FindTicketViewModel GetFindTicketViewModel()
        {
            HelpdeskCacheItem helpdeskCache = GetCachedHelpdeskItem(true);

            helpdeskCache.CaptchaText = GetRandomWord(_settings.CaptchaWordLength, CaptchaCharacters);
            helpdeskCache.Requests++;

            return(new FindTicketViewModel(GetModelData(),
                                           _settings.ShowCaptchaText && helpdeskCache.Requests > 1));
        }
        public IActionResult FindTicket(FindTicketViewModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (!_settings.ShowTickets)
            {
                return(RedirectToAction(nameof(Index), Name));
            }

            if (!Shared.Utilities.IsValidEmail(model.Email))
            {
                ModelState.AddModelError(nameof(model.Email), Languages.LanguageStrings.InvalidEmailAddress);
            }

            HelpdeskCacheItem helpdeskCache = GetCachedHelpdeskItem(true);

            if (_settings.ShowCaptchaText && helpdeskCache.Requests > 1)
            {
                if (!model.CaptchaText.Equals(helpdeskCache.CaptchaText, StringComparison.CurrentCultureIgnoreCase))
                {
                    ModelState.AddModelError(nameof(model.CaptchaText), Languages.LanguageStrings.CodeNotValid);
                }
            }

            if (ModelState.IsValid)
            {
                HelpdeskTicket ticket = _helpdeskProvider.GetTicket(model.Email, model.Key);

                if (ticket != null)
                {
                    return(RedirectToAction(nameof(ViewTicket), Name, new { ticket.Id }));
                }

                GrowlAdd(Languages.LanguageStrings.TicketNotFound);
            }

            return(View(GetFindTicketViewModel()));
        }
Example #6
0
        private HelpdeskCacheItem GetCachedHelpdeskItem(bool createIfNotExist)
        {
            HelpdeskCacheItem Result = null;

            string cacheId = GetSessionId();

            CacheItem helpdeskCache = _helpdeskCache.Get(cacheId);

            if (helpdeskCache != null)
            {
                Result = (HelpdeskCacheItem)helpdeskCache.Value;
            }
            else if (createIfNotExist && helpdeskCache == null)
            {
                Result        = new HelpdeskCacheItem();
                helpdeskCache = new CacheItem(cacheId, Result);
                _helpdeskCache.Add(cacheId, helpdeskCache);
            }

            return(Result);
        }
Example #7
0
        public IActionResult SubmitTicket(SubmitTicketViewModel model)
        {
            if (!_settings.ShowTickets)
            {
                return(RedirectToAction(nameof(Index), Name));
            }

            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (String.IsNullOrEmpty(model.CaptchaText))
            {
                ModelState.AddModelError(nameof(model.CaptchaText), Languages.LanguageStrings.CodeNotValid);
            }

            if (_settings.ShowCaptchaText)
            {
                HelpdeskCacheItem helpdeskCache = GetCachedHelpdeskItem(true);

                if (!model.CaptchaText.Equals(helpdeskCache.CaptchaText, StringComparison.CurrentCultureIgnoreCase))
                {
                    ModelState.AddModelError(nameof(model.CaptchaText), Languages.LanguageStrings.CodeNotValid);
                }
            }

            if (ModelState.IsValid)
            {
                if (_helpdeskProvider.SubmitTicket(UserId(), model.Department, model.Priority,
                                                   model.Username, model.Email, model.Subject, model.Message, out HelpdeskTicket ticket))
                {
                    return(RedirectToAction(nameof(ViewTicket), Name, new { ticket.Id }));
                }

                ModelState.AddModelError(String.Empty, Languages.LanguageStrings.OopsError);
            }

            return(View(GetSubmitTicketViewModel(model.Subject, model.Message, model.Username, model.Email)));
        }