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())); }
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); }
private LeaveFeedbackViewModel GetFeedbackModel() { HelpdeskCacheItem helpdeskCache = GetCachedHelpdeskItem(true); helpdeskCache.CaptchaText = GetRandomWord(_settings.CaptchaWordLength, CaptchaCharacters); return(new LeaveFeedbackViewModel(GetModelData(), _settings.ShowCaptchaText)); }
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())); }
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); }
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))); }