/// <summary> /// Changes password /// </summary> /// <returns>true if success</returns> public bool SubmitSupportTicket(SupportTicket ticketData, string username) { try { //Write Ticket to MongoDB Mongo MongoWrite = new Mongo(); if (!string.IsNullOrEmpty(username)) { var config = MongoWrite.GetUserConfiguration(username); if (config.ClosedTicketNotification) { MailgunAgent.SendChangeEmail(GetCurrentEmail(username), "You have created a support ticket on the Queue View."); } } MongoWrite.WriteTicketData(ticketData); return true; } catch (Exception ex) { Logger.WriteErrorLog(ex); return false; } }
/// <summary> /// use to write password reset objects to mongo DB /// </summary> /// <returns>true if successful</returns> public bool WriteTicketData(SupportTicket ticketData) { try { //Write object to Mongo DB Collection var mongoDatabase = MongoConnection.Connect(); mongoDatabase.GetCollection<SupportTicket>(SupportTicketCollection).Insert(ticketData); return true; } catch (Exception ex) { Logger.WriteErrorLog(ex); return false; } }
public ActionResult SupportTicket(UserModel.User user) { if (ModelState.IsValid) { SupportTicket TicketData = new SupportTicket(); TicketData.Email = user.SupportEmail; TicketData.Name = user.SupportName; TicketData.Phone = user.SupportPhone; TicketData.Category = user.SupportCategory; TicketData.Description = user.SupportDescription; TicketData.CreatedTime = DateTimeOffset.Now; if (User.Identity.Name != null) { TicketData.Username = User.Identity.Name; } var PhoneRegex = new Regex(@"\d{7}"); string email = user.SupportEmail; Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"); Match match = regex.Match(email); Match phoneMatch = PhoneRegex.Match(user.SupportPhone); if (!match.Success) { //Bad Email ModelState.AddModelError("SupportEmail", "Invalid Email"); } if (user.SupportName.Length < 1) { //Bad Name ModelState.AddModelError("SupportName", "Please provide your name"); } if (!phoneMatch.Success) { //Bad Phone ModelState.AddModelError("SupportPhone", "Invalid phone number"); } else if (user.SupportCategory.Length < 1) { //Bad Category ModelState.AddModelError("SupportCategory", "Please select a ticket category"); } else if (user.SupportDescription.Length < 1) { //Bad description ModelState.AddModelError("SupportDescription", "Please provide a description"); } //Write to DB if all is good if (ModelState.IsValid) { if (user.SubmitSupportTicket(TicketData, User.Identity.Name)) { return RedirectToAction("SupportConfirmation", "User"); } } } return View(user); }