Beispiel #1
0
        public void TicketCreator(DateTime date)

        {
            var    ticketList = new List <Ticket>();
            Random r          = new Random();
            int    rInt       = r.Next(0, 10);

            for (var i = 0; i < rInt; i++)
            {
                var ticket = new Ticket();

                ticket.CreatedDate = date;
                ticket.ProjectId   = r.Next(1, 3);

                //Random x = new Random();
                int ticketPriorityId = r.Next(1, 4);
                ticket.TicketPriorityId = ticketPriorityId;

                //Random y = new Random();
                int ticketTypeId = r.Next(1, 3);
                ticket.TicketTypeId = ticketTypeId;

                //Random rand = new Random();
                int toSkip         = r.Next(0, db.Users.Count());
                var AssignedToUser = db.Users.OrderBy(u => u.FirstName).Skip(toSkip).Take(1).FirstOrDefault();
                ticket.AssignedToUser = AssignedToUser;

                //Random rand2 = new Random();
                int toSkip2       = r.Next(0, db.Users.Count());
                var SubmitterUser = db.Users.OrderBy(u => u.FirstName).Skip(toSkip2).Take(1).FirstOrDefault();
                ticket.SubmitterUser = SubmitterUser;

                ticket.TicketStatusId = 1;
                string ticketTitleAndDescription = r.Next(0, 100).ToString();
                ticket.Title       = "Generator" + ticketTitleAndDescription;
                ticket.Description = "Generator" + ticketTitleAndDescription;

                //ticketList.Add(ticket);
                db.Tickets.Add(ticket);
                //saving inside the loop to create id's so that histories can be updated
                db.SaveChanges();

                var           AdminUserId = db.Users.Where(u => u.Email == "*****@*****.**").Select(u => u.Id).FirstOrDefault();
                TicketHistory th          = new TicketHistory //filling in all the properties of ticket history
                {
                    TicketId    = ticket.Id,
                    UserId      = AdminUserId,
                    Property    = "Title",
                    OldValue    = "N/A",
                    NewValue    = ticket.Title,
                    DateChanged = ticket.CreatedDate,
                };
                db.TicketHistories.Add(th);

                TicketHistory th2 = new TicketHistory  //filling in all the properties of ticket history
                {
                    TicketId    = ticket.Id,
                    UserId      = ticket.SubmitterUserId,
                    Property    = "Ticket Submitted by",
                    OldValue    = "N/A",
                    NewValue    = ticket.SubmitterUser.FullName,
                    DateChanged = ticket.CreatedDate,
                };

                db.TicketHistories.Add(th2);

                TicketHistory th3 = new TicketHistory  //filling in all the properties of ticket history
                {
                    TicketId    = ticket.Id,
                    UserId      = ticket.SubmitterUserId,
                    Property    = "Created Date",
                    OldValue    = "N/A",
                    NewValue    = ticket.CreatedDate.ToString(),
                    DateChanged = ticket.CreatedDate,
                };

                db.TicketHistories.Add(th3);

                db.SaveChanges();
            }
        }
Beispiel #2
0
        public async Task <ActionResult> Create([Bind(Include = "Id,TicketId,Comment")] TicketComment ticketComment, int Id)
        {
            if (ModelState.IsValid)
            {
                UserRolesHelper     helper = new UserRolesHelper(db);
                ProjectAssignHelper ph     = new ProjectAssignHelper();
                var userId = User.Identity.GetUserId();
                var user   = db.Users.Find(userId);
                var ticket = db.Tickets.Find(Id);


                TicketNotification TN = new TicketNotification();
                TN.TicketId = ticket.Id;
                TN.UserId   = ticket.AssignedToUserId;
                TN.User     = ticket.AssignedToUser;
                db.TicketNotifications.Add(TN);

                var message = new IdentityMessage
                {
                    Body = "The ticket" + " " + ticket.Title + " " + "from project" + " " + ticket.Project.Name + " " + "has been commented on by" + " " + user.FirstName + user.LastName + "." + "  " +
                           "Please see your ticket comments to view the comment.",
                    Subject     = "Your ticket has been commented on.",
                    Destination = TN.User.Email
                };
                EmailService email = new EmailService();
                await email.SendAsync(message);

                var userroleAdmin           = helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Administrator");
                var userroleProjectManager1 = helper.IsUserInRole(userId, "Project Manager1");
                var userroleProjectManager2 = helper.IsUserInRole(userId, "Project Manager2");
                var userroleProjectManager3 = helper.IsUserInRole(userId, "Project Manager3");
                var userroleDeveloper1      = helper.IsUserInRole(userId, "Developer1");
                var userroleDeveloper2      = helper.IsUserInRole(userId, "Developer2");
                var userroleDeveloper3      = helper.IsUserInRole(userId, "Developer3");
                var userroleDeveloper4      = helper.IsUserInRole(userId, "Developer4");
                var userroleSubmitter       = helper.IsUserInRole(userId, "Submitter");

                int ticketid  = Id;
                int projectid = ticket.Project.Id;

                if (userroleAdmin || userroleProjectManager1 && ph.IsUserOnAProject(userId, projectid) || userroleProjectManager2 && ph.IsUserOnAProject(userId, projectid) || userroleProjectManager3 && ph.IsUserOnAProject(userId, projectid) ||
                    userroleDeveloper1 && ticket.AssignedToUserId == userId || userroleDeveloper2 && ticket.AssignedToUserId == userId || userroleDeveloper3 && ticket.AssignedToUserId == userId ||
                    userroleDeveloper4 && ticket.AssignedToUserId == userId || userroleSubmitter && ticket.SubmitterUserId == userId)
                {
                    ticketComment.Ticket   = ticket;
                    ticketComment.UserId   = userId;
                    ticketComment.User     = user;
                    ticketComment.TicketId = ticket.Id;

                    ticketComment.CreatedDate = DateTime.UtcNow;
                    TimeSpan elapsed = DateTime.UtcNow - ticketComment.CreatedDate;


                    double hours   = elapsed.TotalHours;
                    double minutes = elapsed.TotalMinutes;
                    string s       = elapsed.ToString();

                    db.TicketComments.Add(ticketComment);


                    TicketHistory th = new TicketHistory  //filling in all the properties of ticket history
                    {
                        TicketId    = ticket.Id,
                        UserId      = userId,
                        Property    = "Comment Added",
                        OldValue    = "N/A",
                        NewValue    = ticketComment.Comment,
                        DateChanged = DateTime.Now,
                    };
                    db.TicketHistories.Add(th);
                    db.SaveChanges();

                    return(RedirectToAction("Details", "Tickets", new { id = Id }));
                }

                else
                {
                    var Temporary = "You cannot add comments to this ticket.  Please revisit your role assignment.  Tickets can only be commented on by their creator, a developer assigned to the ticket, a project manager, or an administrator.";
                    TempData["message"] = Temporary;
                }
            }
            return(RedirectToAction("Details", "Tickets", new { id = Id }));
        }
        public async Task <ActionResult> Create([Bind(Include = "Id,UserId,Description,CreatedDate")] TicketAttachment ticketAttachment, HttpPostedFileBase File, int Id)
        {
            UserRolesHelper     helper = new UserRolesHelper(db);
            ProjectAssignHelper ph     = new ProjectAssignHelper();
            var userId = User.Identity.GetUserId();
            var user   = db.Users.Find(userId);

            var ticket = db.Tickets.Find(Id);


            if (ModelState.IsValid)
            {
                if (helper.IsUserInRole(userId, "Administrator") || helper.IsUserInRole(userId, "Admin") || helper.IsUserInRole(userId, "Project Manager1") && ph.IsUserOnAProject(userId, ticket.Project.Id) ||
                    helper.IsUserInRole(userId, "Project Manager2") && ph.IsUserOnAProject(userId, ticket.Project.Id) || helper.IsUserInRole(userId, "Project Manager3") && ph.IsUserOnAProject(userId, ticket.Project.Id) ||
                    helper.IsUserInRole(userId, "Developer1") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Developer2") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Developer3") && ticket.AssignedToUserId == userId ||
                    helper.IsUserInRole(userId, "Developer4") && ticket.AssignedToUserId == userId || helper.IsUserInRole(userId, "Submitter") && ticket.SubmitterUserId == userId)
                {
                    if (File != null)
                    {
                        TicketNotification TN = new TicketNotification();
                        TN.TicketId = ticket.Id;
                        TN.UserId   = ticket.AssignedToUserId;
                        TN.User     = ticket.AssignedToUser;
                        db.TicketNotifications.Add(TN);

                        var message = new IdentityMessage
                        {
                            Body = "The ticket" + " " + ticket.Title + " " + "from project" + " " + ticket.Project.Name + " " + "has been edited by" + " " + user.FirstName + user.LastName + "." + "  " +
                                   "Please see the ticket history to view the specific change.",
                            Subject     = "Your ticket has been edited",
                            Destination = TN.User.Email
                        };
                        EmailService email = new EmailService();
                        await email.SendAsync(message);

                        if (FileUploadValidator.IsWebFriendlyFile(File))

                        {
                            var fileName   = Path.GetFileName(File.FileName);
                            var customName = string.Format(Guid.NewGuid() + fileName);
                            File.SaveAs(Path.Combine(Server.MapPath("~/Uploads/"), customName));
                            ticketAttachment.FilePath = "/Uploads/" + customName;


                            string filename      = ticketAttachment.FilePath.ToString();
                            string word          = ".docx";
                            string excel         = ".xls";
                            string excelx        = "xlsx";
                            string pdf           = ".pdf";
                            string jpeg          = ".jpg";
                            string bmp           = ".bmp";
                            string gif           = ".gif";
                            string zip           = ".zip";
                            string rar           = ".rar";
                            string ticketmessage = "";
                            if (filename.Contains(word))
                            {
                                ticketmessage = "This is a Word Document";
                            }
                            else if (filename.Contains(excel))
                            {
                                ticketmessage = "This is an Excel File";
                            }
                            else if (filename.Contains(pdf))
                            {
                                ticketmessage = "This is an PDF File";
                            }
                            else if (filename.Contains(jpeg))
                            {
                                ticketmessage = "This is a JPEG File";
                            }
                            else if (filename.Contains(bmp))
                            {
                                ticketmessage = "This is a BMP File";
                            }
                            else if (filename.Contains(gif))
                            {
                                ticketmessage = "This is a .gif File";
                            }
                            else if (filename.Contains(zip))
                            {
                                ticketmessage = "This is an ZIP File";
                            }
                            else if (filename.Contains(rar))
                            {
                                ticketmessage = "This is a RAR File";
                            }
                            else if (filename.Contains(excelx))
                            {
                                ticketmessage = "This is an .xlsx File";
                            }

                            ticketAttachment.CreatedDate = DateTimeOffset.Now;
                            var ticketdatestring = ticketAttachment.CreatedDate.ToString("MM-dd-yyyy");
                            ticketAttachment.TicketId    = Id;
                            ticketAttachment.Description = ticketmessage + " " + "added by" + " " + user.FirstName + " " + user.LastName + " " + "on" + " " + ticketdatestring + ".";
                            ticketAttachment.UserId      = userId;

                            db.TicketAttachments.Add(ticketAttachment);


                            TicketHistory th = new TicketHistory  //filling in all the properties of ticket history
                            {
                                TicketId    = ticket.Id,
                                UserId      = userId,
                                Property    = "Attachment Added",
                                OldValue    = "N/A",
                                NewValue    = ticketAttachment.Description,
                                DateChanged = DateTime.Now,
                            };
                            db.TicketHistories.Add(th);

                            db.SaveChanges();
                        }
                        int id = Id;
                        return(RedirectToAction("Details", "Tickets", new { id = id }));
                    }
                    else
                    {
                        var Temporary = "Please select an image between 1KB - 2MB and in an approved format(.jpg, .bmp, .png, .gif)";
                        TempData["attachmentmessage"] = Temporary;
                    }
                }
                var Temporary3 = "You cannot edit this ticket.  Please revisit your role assignment.  Tickets can only be edited by their creator, a developer assigned to the ticket, a project manager, or an administrator.";
                TempData["message"] = Temporary3;
                return(RedirectToAction("Details", "Tickets", new { id = Id }));
            }

            ViewBag.TicketId = new SelectList(db.Tickets, "Id", "SubmitterUserId", ticketAttachment.TicketId);
            ViewBag.UserId   = new SelectList(db.Users, "Id", "FirstName", ticketAttachment.UserId);
            return(View(ticketAttachment));
        }