// Assign ticket to an employee public bool AssignTicketToEmployee(TicketSave ticket) { try { var entity = db.Tickets.Find(ticket.Id); if (entity == null) { return(false); } else { entity.EmployeeId = ticket.EmployeeId; entity.Status = TicketStatus.Inprogress; db.SaveChanges(); // Send email to employee after assining EmailManager emailManager = new EmailManager(); emailManager.NewTicketEmail(ticket, "Employee"); return(true); } } catch (Exception ex) { GlobalVariable.log.Write(LogLevel.Error, ex); return(false); } }
// Method to edit ticket status to be used by employee and manager public Boolean EditTicketStatus(TicketSave ticket) { try { var entity = db.Tickets.Find(ticket.Id); if (entity == null) { return(false); } else { entity.Status = ticket.Status; if (entity.Status == TicketStatus.Closed) { entity.ClosedDate = DateTime.Now; entity.ClosedBy = ticket.EmployeeId; // null } db.SaveChanges(); return(true); } } catch (Exception ex) { GlobalVariable.log.Write(LogLevel.Error, ex); return(false); } }
// to be used by client public int EditTicket(TicketSave ticket) { try { var entity = db.Tickets.Find(ticket.Id); if (entity == null) { return(0); } else { entity.Category = ticket.Category; entity.Priority = ticket.Priority; entity.Title = ticket.Title; entity.Description = ticket.Description; db.SaveChanges(); return(entity.Id); } } catch (Exception ex) { GlobalVariable.log.Write(LogLevel.Error, ex); return(0); } }
public ActionResult Edit(int id) { try { //Authentication var client = Connector.GetHttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(scheme: "Bearer", parameter: Session["TokenNumber"].ToString() + ":" + Session["UserName"]); var ticket = GetTicket(id); if (ticket == null) { return(View("_NotFound")); } var ticketSave = new TicketSave { Priority = ticket.Priority, Category = ticket.Category, Id = ticket.Id, ClientId = GetUserID(), Title = ticket.Title, Description = ticket.Description }; return(View("Edit", ticketSave)); } catch (Exception ex) { GlobalVariable.log.Write(LogLevel.Error, ex.Message); return(HttpNotFound()); } }
public HttpResponseMessage PostTicket(TicketSave ticket) { try { return(Request.CreateResponse(manager.AddTicket(ticket))); } catch (Exception ex) { GlobalVariable.log.Write(LogLevel.Error, ex); return(Request.CreateResponse(HttpStatusCode.BadRequest, "Ticket cannot be created!")); } }
// Send email to manager after getting new ticket in the system public void NewTicketEmail(TicketSave ticket, string ticketFor) { try { // Get user information to send email UserManager userManager = new UserManager(); IEnumerable <ViewUser> manager = null; ViewUser user = null; if (ticketFor == "Manager") { user = userManager.GetManager(); } else if (ticketFor == "Employee") { user = userManager.GetUser((int)ticket.EmployeeId); } EmailModel emailModel = new EmailModel(); emailModel.toname = user.FirstName + " " + user.LastName; emailModel.toemail = user.Email; emailModel.subject = "No Reply: New Ticket! "; var imgUrl = ConfigurationManager.AppSettings["LogoImgUrlForEmail"]; //var url = ConfigurationManager.AppSettings["EmployeeDomain"] + "/Ticket/Ticket/"; emailModel.message = "<div style='Text-align:center;background-color:#f9fbfd'>" + $"<img src='{imgUrl}' alt='logo'/>" + "<h2> Dear " + emailModel.toname + ", <br>You have a new ticket!</h2><hr/>" + "<h2> Title: " + ticket.Title + "</h2>" + "<h3>" + ticket.Category + " | " + ticket.Priority + "</h3>" + "<div></div>" + "<h5>" + ticket.Description + ".</h5> <hr/>" + "</div>"; // Send mail to employee with new ticket assigned to him/her try { EmailManager emailManager = new EmailManager(); emailManager.SendEmail(emailModel); } catch (Exception ex) { GlobalVariable.log.Write(LogLevel.Error, ex); throw ex; } } catch (Exception ex) { GlobalVariable.log.Write(LogLevel.Error, ex); } }
// Add new ticket public int AddTicket(TicketSave ticket) { var tick = new Ticket() { Status = TicketStatus.Opened, Category = ticket.Category, Priority = ticket.Priority, Title = ticket.Title, Description = ticket.Description, OpenDate = DateTime.Now, ClientId = ticket.ClientId, }; try { db.Tickets.Add(tick); db.SaveChanges(); if (ticket.Attachments != null) { foreach (string path in ticket.Attachments) { db.FileStorages.Add(new FileStorage() { Path = path, Reference = tick.Id, Type = AttachmentType.Ticket, CreateDate = DateTime.Now }); db.SaveChanges(); } } // Update model info ticket.Id = tick.Id; //Send email to manager after submitting new ticket to the system EmailManager emailManager = new EmailManager(); emailManager.NewTicketEmail(ticket, "Manager"); return(tick.Id); } catch (Exception ex) { GlobalVariable.log.Write(LogLevel.Error, ex); return(0); } }
public HttpResponseMessage EditTicket(TicketSave ticket) { try { var Editerticket = manager.EditTicket(ticket); if (Editerticket != 0) { return(Request.CreateResponse(HttpStatusCode.OK, Editerticket)); } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Ticket is not updated!")); } } catch (Exception ex) { GlobalVariable.log.Write(LogLevel.Error, ex); return(Request.CreateResponse(HttpStatusCode.NotFound, "Can not update Ticket with ID: " + ticket.Id)); } }
public HttpResponseMessage PutAssignTicket(TicketSave ticket) { try { var editStatus = manager.AssignTicketToEmployee(ticket); if (editStatus) { return(Request.CreateResponse(HttpStatusCode.OK)); } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Ticket is not updated!")); } } catch (Exception ex) { GlobalVariable.log.Write(LogLevel.Error, ex); return(Request.CreateResponse(HttpStatusCode.NotFound, "Can not update Ticket with ID: " + ticket.Id)); } }
public ActionResult Post(TicketSave ticket, HttpPostedFileBase[] Files) { try { if (ModelState.IsValid) { string url = ""; var client = GetHttpClientWithSession(); if (Files != null) { if (Files[0] != null) { ticket.Attachments = new string[Files.Length]; for (int i = 0; i < Files.ToList().Count; i++) { var file = Files.ToList()[i]; if (!(file.ContentType.Contains("image"))) { ModelState.AddModelError("", "Please select only image files"); return(View(ticket)); } var fileName = Path.GetFileNameWithoutExtension(file.FileName); //To-do check if the folder exist, if not create it var uploadPath = ConfigurationManager.AppSettings["UserAttachments"]; //var uploadPath = Server.MapPath("http:localhost:44323/Attachments/"); var fileExtension = Path.GetExtension(file.FileName); fileName = DateTime.Now.ToString("yyyyMMdd") + "-" + fileName.Trim() + fileExtension; ticket.Attachments[i] = uploadPath + fileName; var path = ticket.Attachments[i]; //Save file to server folder if (Directory.Exists(uploadPath)) { Directory.CreateDirectory(uploadPath); } file.SaveAs(path); } } } var stringContent = Connector.GetStringOfObject(ticket); if (ticket.Id != 0) { url = "ticket/EditTicket"; } else { url = "ticket/postTicket"; } var response = client.PostAsync(url, stringContent).Result; if (response.IsSuccessStatusCode) { var httpResponseContent = response.Content.ReadAsStringAsync().Result; var ticketId = new JavaScriptSerializer().Deserialize <int>(httpResponseContent); return(RedirectToAction("Ticket", new { id = ticketId, title = ticket.Title.GetHashCode() })); } else { ModelState.AddModelError("", "server error please try later"); } } } catch (Exception ex) { GlobalVariable.log.Write(LogLevel.Error, ex); ModelState.AddModelError("", "We're sorry! server error please try later"); } return(View(ticket)); }