Beispiel #1
0
        public ActionResult Create([Bind(Include = "Title,Description,ProjectId,TicketTypeId,TicketPriorityId,TicketStatusId")] Ticket ticket, string cBody, string attachDesc, bool flag, HttpPostedFileBase attachment)
        {
            if (ModelState.IsValid)
            {
                //if ()
                ticket.OwnerUserId = User.Identity.GetUserId();
                ticket.Created     = DateTimeOffset.Now;
                var ticketStatus = db.TicketStatuses.FirstOrDefault(ts => ts.Name == "Open/Unassigned");
                ticket.TicketStatusId = ticketStatus.Id;
                var assignedToUser = db.Users.FirstOrDefault(u => u.DisplayName == "UnassignedUser");
                ticket.AssignedToUserId = assignedToUser.Id;
                var comment          = new TicketComment();
                var ticketAttachment = new TicketAttachment();


                if (!string.IsNullOrWhiteSpace(attachDesc))
                {
                    var fileValidator = new FileUploadValidator();
                    var fileUrl       = fileValidator.ValidateAndSaveFile2(attachment);
                    var message       = "";

                    switch (fileUrl)
                    {
                    case "null":
                        message = "An Image Must Be Selected";
                        break;

                    case "small":
                        message = "Invalid Image: Must be larger than 3Kb.";
                        break;

                    case "large":
                        message = "Invalid Image: Must be smaller than 2Mb.";
                        break;

                    case "format":
                        message = "Invalid Image format";
                        break;
                    }

                    if (message != "")
                    {
                        TempData["FileError"]    = message;
                        ViewBag.OwnerUserId      = new SelectList(db.Users, "Id", "DisplayName", ticket.OwnerUserId);
                        ViewBag.ProjectId        = new SelectList(db.Projects, "Id", "Name", ticket.ProjectId);
                        ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId);
                        ViewBag.TicketStatusId   = new SelectList(db.TicketStatuses, "Id", "Name", ticket.TicketStatusId);
                        ViewBag.TicketTypeId     = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId);
                        ViewBag.UserIndexFlag    = flag;
                        return(View(ticket));
                    }

                    ticketAttachment.MediaURL    = fileUrl;
                    ticketAttachment.Created     = DateTimeOffset.Now;
                    ticketAttachment.Description = attachDesc;
                    //ticketAttachment.TicketId = ticket.Id;
                    ticketAttachment.UserId = User.Identity.GetUserId();
                    db.TicketAttachments.Add(ticketAttachment);
                }

                if (!string.IsNullOrWhiteSpace(cBody))
                {
                    if (cBody.Length < 10)
                    {
                        TempData["CommentError"] = "Comment must be at least 10 characters";
                        ViewBag.OwnerUserId      = new SelectList(db.Users, "Id", "DisplayName", ticket.OwnerUserId);
                        ViewBag.ProjectId        = new SelectList(db.Projects, "Id", "Name", ticket.ProjectId);
                        ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId);
                        ViewBag.TicketStatusId   = new SelectList(db.TicketStatuses, "Id", "Name", ticket.TicketStatusId);
                        ViewBag.TicketTypeId     = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId);
                        ViewBag.UserIndexFlag    = flag;
                        return(View(ticket));
                    }

                    comment.Comment = cBody;
                    comment.Created = DateTimeOffset.Now;
                    comment.UserId  = User.Identity.GetUserId();
                    db.TicketComments.Add(comment);
                }
                db.Tickets.Add(ticket);
                db.SaveChanges();
                //Create a notification that a ticket has been added
                NHHelper.NotificationCreator("Ticket Created", ticket, ticket.Created, ticket.OwnerUserId);
                comment.TicketId = ticket.Id;

                //Create a notification that a comment has been added
                if (!string.IsNullOrWhiteSpace(comment.Comment))
                {
                    NHHelper.NotificationCreator("Comment Added", ticket, comment.Created, ticket.OwnerUserId);
                }

                ticketAttachment.TicketId = ticket.Id;

                //Create a notification that an attachment has been added
                if (!string.IsNullOrWhiteSpace(ticketAttachment.Description))
                {
                    NHHelper.NotificationCreator("Attachment Added", ticket, ticketAttachment.Created, ticket.OwnerUserId);
                }
                db.SaveChanges();

                if (flag)
                {
                    return(RedirectToAction("UserIndex", "Projects"));
                }
                return(RedirectToAction("Index", "Projects"));
            }
            //var devList = rolesHelper.UsersInRole("Developer");
            //ViewBag.AssignedToUserId = new SelectList(devList, "Id", "FirstName", ticket.AssignedToUserId);
            ViewBag.OwnerUserId      = new SelectList(db.Users, "Id", "DisplayName", ticket.OwnerUserId);
            ViewBag.ProjectId        = new SelectList(db.Projects, "Id", "Name", ticket.ProjectId);
            ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId);
            ViewBag.TicketStatusId   = new SelectList(db.TicketStatuses, "Id", "Name", ticket.TicketStatusId);
            ViewBag.TicketTypeId     = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId);
            ViewBag.UserIndexFlag    = flag;
            return(View(ticket));
        }
        public ActionResult Create([Bind(Include = "Comment,TicketId")] TicketComment ticketComment, HttpPostedFileBase attachment, string attachDesc, bool flag)
        {
            var ticketAttachment = new TicketAttachment();

            if (ModelState.IsValid)
            {
                if (!string.IsNullOrWhiteSpace(attachDesc))
                {
                    var fileValidator = new FileUploadValidator();
                    var fileUrl       = fileValidator.ValidateAndSaveFile2(attachment);
                    var message       = "";

                    switch (fileUrl)
                    {
                    case "null":
                        message = "An Image Must Be Selected";
                        break;

                    case "small":
                        message = "Invalid Image: Must be larger than 3Kb.";
                        break;

                    case "large":
                        message = "Invalid Image: Must be smaller than 2Mb.";
                        break;

                    case "format":
                        message = "Invalid Image format";
                        break;
                    }

                    if (message != "")
                    {
                        TempData["FileError"] = message;
                        //return View(ticketComment);
                        return(RedirectToAction("Details", "Tickets", new { id = ticketComment.TicketId, flag = flag }));
                    }

                    ticketAttachment.MediaURL    = fileUrl;
                    ticketAttachment.Description = attachDesc;
                    ticketAttachment.Created     = DateTimeOffset.Now;
                    ticketAttachment.TicketId    = ticketComment.TicketId;
                    ticketAttachment.UserId      = User.Identity.GetUserId();

                    db.TicketAttachments.Add(ticketAttachment);
                    db.SaveChanges();
                }
                if (!string.IsNullOrWhiteSpace(ticketComment.Comment))
                {
                    if (ticketComment.Comment.Trim().Length < 10)
                    {
                        TempData["CommentError"] = "Comment must be at least 10 characters";
                        return(RedirectToAction("Details", "Tickets", new { id = ticketComment.TicketId, flag = flag }));
                        //return View(ticketComment);
                    }

                    ticketComment.UserId  = User.Identity.GetUserId();
                    ticketComment.Created = DateTimeOffset.Now;
                    db.TicketComments.Add(ticketComment);
                    if (!string.IsNullOrWhiteSpace(ticketAttachment.Description))
                    {
                        var ticket = db.Tickets.FirstOrDefault(t => t.Id == ticketComment.TicketId);
                        NHHelper.NotificationCreator("Attachment Added", ticket, ticketAttachment.Created, ticket.AssignedToUserId);
                    }

                    if (!string.IsNullOrWhiteSpace(ticketComment.Comment))
                    {
                        var ticket = db.Tickets.FirstOrDefault(t => t.Id == ticketComment.TicketId);
                        NHHelper.NotificationCreator("Comment Added", ticket, ticketComment.Created, ticket.AssignedToUserId);
                    }
                    db.SaveChanges();

                    return(RedirectToAction("Details", "Tickets", new { id = ticketComment.TicketId, flag = flag }));
                }
            }

            ViewBag.TicketId = new SelectList(db.Tickets, "Id", "Title", ticketComment.TicketId);
            ViewBag.UserId   = new SelectList(db.Users, "Id", "DisplayName", ticketComment.UserId);
            return(RedirectToAction("Details", "Tickets", new { id = ticketComment.TicketId, flag = flag }));
        }
        public ActionResult Edit([Bind(Include = "Id,MediaURL,Description,Created,UserId,TicketId")] TicketAttachment ticketAttachment, bool flag, HttpPostedFileBase attachment)
        {
            if (ModelState.IsValid)
            {
                if (string.IsNullOrWhiteSpace(ticketAttachment.Description))
                {
                    ViewBag.TicketTitle     = db.Tickets.FirstOrDefault(t => t.Id == ticketAttachment.TicketId).Title;
                    ViewBag.UserDisplayName = db.Users.FirstOrDefault(u => u.Id == ticketAttachment.UserId).DisplayName;
                    TempData["FileError"]   = "Attachment must have a description";
                    ViewBag.UserIndexFlag   = flag;
                    //return View(ticketComment);
                    return(View(ticketAttachment));
                }
                if (!string.IsNullOrWhiteSpace(ticketAttachment.Description) && attachment != null)
                {
                    var fileValidator = new FileUploadValidator();
                    var fileUrl       = fileValidator.ValidateAndSaveFile2(attachment);
                    var message       = "";

                    switch (fileUrl)
                    {
                    case "null":
                        message = "An Image Must Be Selected";
                        break;

                    case "small":
                        message = "Invalid Image: Must be larger than 3Kb.";
                        break;

                    case "large":
                        message = "Invalid Image: Must be smaller than 2Mb.";
                        break;

                    case "format":
                        message = "Invalid Image format";
                        break;
                    }

                    if (message != "")
                    {
                        TempData["FileError"] = message;
                        ViewBag.UserIndexFlag = flag;
                        //return View(ticketComment);
                        return(View(ticketAttachment));
                    }

                    ticketAttachment.MediaURL = fileUrl;
                }
                db.Entry(ticketAttachment).State = EntityState.Modified;
                db.SaveChanges();
                if (flag)
                {
                    return(RedirectToAction("UserIndex", "TicketAttachments"));
                }
                return(RedirectToAction("Index", "TicketAttachments"));
            }
            //ViewBag.TicketId = new SelectList(db.Tickets, "Id", "Title", ticketAttachment.TicketId);
            //ViewBag.UserId = new SelectList(db.Users, "Id", "DisplayName", ticketAttachment.UserId);
            if (string.IsNullOrWhiteSpace(ticketAttachment.Description))
            {
                TempData["FileError"] = "Attachment must have a description";
            }
            ViewBag.TicketTitle     = db.Tickets.FirstOrDefault(t => t.Id == ticketAttachment.TicketId).Title;
            ViewBag.UserDisplayName = db.Users.FirstOrDefault(u => u.Id == ticketAttachment.UserId).DisplayName;
            ViewBag.UserIndexFlag   = flag;
            return(View(ticketAttachment));
        }