Exemplo n.º 1
0
        // 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);
            }
        }
Exemplo n.º 2
0
        // 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);
            }
        }
Exemplo n.º 3
0
        // 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);
            }
        }
Exemplo n.º 4
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());
            }
        }
Exemplo n.º 5
0
 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!"));
     }
 }
Exemplo n.º 6
0
        // 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);
            }
        }
Exemplo n.º 7
0
        // 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);
            }
        }
Exemplo n.º 8
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));
     }
 }
Exemplo n.º 9
0
        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));
            }
        }
Exemplo n.º 10
0
        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));
        }