Exemplo n.º 1
0
        // GET: Tickets/Edit/5
        public ActionResult Edit(int?id)
        {
            var nHelper = new UserNotificationsHelper();

            ViewBag.Notifications = nHelper.filterNotifications(User.Identity.GetUserId());
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var    tHelper = new UserHelper();
            Ticket ticket  = tHelper.FindTicket((int)id);

            if (ticket == null)
            {
                return(HttpNotFound());
            }
            TempData["Ticket"] = ticket;
            var rHelper = new UserRolesHelper();

            ViewBag.AssignedToUserId = new SelectList(rHelper.UsersInRole("Developer"), "Id", "FirstName", ticket.AssignedToUserId);
            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);
            return(View(ticket));
        }
        public ActionResult Create()
        {
            var user            = db.Users.Find(User.Identity.GetUserId());
            var userTickets     = ticketHelper.MyProjectTickets(user.Id).Where(t => t.Archived == false).ToList();
            var userProjects    = projectHelper.ListUserProjects(user.Id).Where(t => t.Archived == false).ToList();
            var adminUsers      = userRolesHelper.UsersInRole("Admin");
            var usersOnProjects = new List <ApplicationUser>();
            var tempUsers       = new List <ApplicationUser>();

            if (User.IsInRole("Admin"))
            {
                ViewBag.TicketId = new SelectList(db.Tickets, "Id", "Title");
                ViewBag.UserId   = new SelectList(db.Users, "Id", "DisplayName");
            }
            else
            {
                foreach (var project in userProjects)
                {
                    foreach (var currentUser in project.ProjectUsers)
                    {
                        tempUsers.Add(currentUser);
                    }
                }
                foreach (var admin in adminUsers)
                {
                    tempUsers.Add(admin);
                }
                usersOnProjects = tempUsers.Distinct().ToList();
                //ViewBag.TicketId = new SelectList(db.Tickets, "Id", "Title");
                ViewBag.TicketId = new SelectList(userTickets, "Id", "Title");
                //ViewBag.UserId = new SelectList(db.Users, "Id", "DisplayName");
                ViewBag.UserId = new SelectList(usersOnProjects, "Id", "DisplayName");
            }
            return(View());
        }
Exemplo n.º 3
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,Title,Description,Created,Updated,ProjectId,TicketTypeId,TicketPriorityId,TicketStatusId,OwnerUserId,AssignedToUserId,Archived")] Ticket ticket, bool flag, HttpPostedFileBase attachment)
        {
            var oldTicket = db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticket.Id);

            if (ModelState.IsValid)
            {
                var userId = User.Identity.GetUserId();

                ticket.Updated         = DateTimeOffset.Now;
                db.Entry(ticket).State = EntityState.Modified;
                db.SaveChanges();
                //Check for changes to ticket and create notifications
                await NHHelper.HistoryCreator(oldTicket, ticket, userId);

                if (flag)
                {
                    return(RedirectToAction("UserIndex"));
                }
                return(RedirectToAction("Index"));
            }
            var devList = rolesHelper.UsersInRole("Developer");

            ViewBag.AssignedToUserId = new SelectList(devList, "Id", "FirstName", ticket.AssignedToUserId);
            ViewBag.OwnerUserId      = new SelectList(db.Users, "Id", "FirstName", 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));
        }
Exemplo n.º 4
0
        public ActionResult AssignTicket(int?id)
        {
            UserRolesHelper helper = new UserRolesHelper();
            var             ticket = db.Tickets.Find(id);
            var             users  = helper.UsersInRole("Developer").ToList();

            ViewBag.AssignedToUserId = new SelectList(users, "Id", "FullName");
            return(View(ticket));
        }
Exemplo n.º 5
0
        public ActionResult AssignPm(int?id)
        {
            UserRolesHelper helper  = new UserRolesHelper();
            var             project = db.Projects.Find(id);
            var             users   = helper.UsersInRole("ProjectManager").ToList();

            ViewBag.PMID = new SelectList(users, "Id", "FirstName", project.PMID);
            return(View(project));
        }
Exemplo n.º 6
0
        public ActionResult Edit(int?id, string projectId)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Project project = db.Projects.Find(id);

            if (project == null)
            {
                return(HttpNotFound());
            }

            var Dev = roleHelper.UsersInRole("Developer");

            ViewBag.Developers = new MultiSelectList(Dev, "Id", "Email");

            return(View(project));
        }
Exemplo n.º 7
0
        public ActionResult Edit(int?id)
        {
            var userId = User.Identity.GetUserId();

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Ticket ticket = db.Tickets.Find(id);

            if (ticket == null)
            {
                return(HttpNotFound());
            }



            var tAssigned  = roleHelper.UsersInRole("Developer");
            var myProjects = projHelper.ListUserProjects(userId);
            var myTickets  = tickHelper.ListUserTickets();

            ViewBag.Id               = new SelectList(myTickets, "Id", "Name", ticket.Id);
            ViewBag.ProjectId        = new SelectList(myProjects, "Id", "Name", ticket.ProjectId);
            ViewBag.AssignedToUserId = new SelectList(tAssigned, "Id", "FirstName", ticket.AssignedToUserId);
            ViewBag.OwnerUserId      = new SelectList(db.Users, "Id", "FirstName", ticket.OwnerUserId);
            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);

            if (User.IsInRole("Admin") || ticket.AssignedToUserId == userId || ticket.OwnerUserId == userId)
            {
                return(View(ticket));
            }
            if (ticket.AssignedToUserId != userId || ticket.OwnerUserId != userId)
            {
                TempData["OwnOnly"] = "I'm Sorry, You must be assigned to the ticket or the one who submitted it to make any changes.";

                return(RedirectToAction("Index", "Home"));
            }

            return(View(ticket));
        }
Exemplo n.º 8
0
        // GET: Admin
        public ActionResult AssignPMs()
        {
            //Set up a MultiSelectList to display all the projects
            ViewBag.Projects = new MultiSelectList(db.Projects, "Id", "Name");

            //Set up a SelectList to display all the PM's
            var projectManagers = roleHelper.UsersInRole("ProjectManager");

            ViewBag.PMs = new SelectList(projectManagers, "Id", "DisplayName");

            return(View());
        }
Exemplo n.º 9
0
        public ActionResult AssignUser(int id)
        {
            Project project = db.Projects.Find(id);

            if (project == null)
            {
                return(RedirectToAction("Oops5", "Home", null));
            }
            // 1. Setup a MultiSelectList to display all the Projects in our system
            var UsersOnProject = projectHelper.UsersOnProject(id);
            var projDevs       = new List <string>();
            var projSubs       = new List <string>();

            foreach (var devUser in UsersOnProject)
            {
                if (rolesHelper.IsUserInRole(devUser.Id, "Developer"))
                {
                    projDevs.Add(devUser.Id);
                }
            }
            foreach (var subUser in UsersOnProject)
            {
                if (rolesHelper.IsUserInRole(subUser.Id, "Submitter"))
                {
                    projDevs.Add(subUser.Id);
                }
            }

            var Developer = rolesHelper.UsersInRole("Developer");

            ViewBag.Devs = new MultiSelectList(Developer, "Id", "DisplayName", projDevs);


            var Submitter = rolesHelper.UsersInRole("Submitter");

            ViewBag.Subs = new MultiSelectList(Submitter, "Id", "DisplayName", projSubs);


            return(View(project));
        }
Exemplo n.º 10
0
        public ActionResult Create()
        {
            var Helper = new UserNotificationsHelper();

            ViewBag.Notifications = Helper.filterNotifications(User.Identity.GetUserId());
            var rHelper = new UserRolesHelper();

            ViewBag.AssignedToUserId = new SelectList(rHelper.UsersInRole("Developer"), "Id", "FirstName");
            ViewBag.ProjectId        = new SelectList(db.Projects, "Id", "Name");
            ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name");
            ViewBag.TicketStatusId   = new SelectList(db.TicketStatuses, "Id", "Name");
            ViewBag.TicketTypeId     = new SelectList(db.TicketTypes, "Id", "Name");
            return(View());
        }
Exemplo n.º 11
0
        // GET: Projects/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Project project = db.Projects.Find(id);

            if (project == null)
            {
                return(HttpNotFound());
            }

            ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name");

            ViewBag.TicketTypeId = new SelectList(db.TicketTypes, "Id", "Name");



            ViewBag.color = "green";
            var allProjectManagers     = roleHelper.UsersInRole("Project Manager");
            var currentProjectManagers = projectHelper.UsersInRoleOnProject(project.Id, "Project Manager");

            ViewBag.ProjectManagers = new MultiSelectList(allProjectManagers, "Id", "FullNameWithEmail", currentProjectManagers);

            var allSubmitters     = roleHelper.UsersInRole("Submitter");
            var currentSubmitters = projectHelper.UsersInRoleOnProject(project.Id, "Submitter");

            ViewBag.Submitters = new MultiSelectList(allSubmitters, "Id", "FullNameWithEmail", currentSubmitters);

            var allDevelopers     = roleHelper.UsersInRole("Developer");
            var currentDevelopers = projectHelper.UsersInRoleOnProject(project.Id, "Developer");

            ViewBag.Developers = new MultiSelectList(allDevelopers, "Id", "FullNameWithEmail", currentDevelopers);

            return(View(project));
        }
Exemplo n.º 12
0
        public ActionResult ManageUserProjects()
        {
            ViewBag.ProjecstIds = new MultiSelectList(db.Projects, "Id", "Name");
            ViewBag.UsersIds    = new MultiSelectList(db.Users, "Id", "FullName");
            if (User.IsInRole("Admin"))
            {
                ViewBag.UsersIds = new MultiSelectList(db.Users, "Id", "FullName");
            }
            else if (User.IsInRole("Developer"))
            {
                ViewBag.UsersIds = new MultiSelectList(roleHelper.UsersInRole("Developer"), "Id", "FullName");
            }

            //ViewBag.UsersIds = new MultiSelectList(roleHelper.UsersInRole("Developer"), "Id", "FullName");

            //if(User.IsInRole("Admin"))
            //{
            //    ViewBag.ProjectManagerId = new SelectList(roleHelper.UsersInRole("Project Manager"), "Id", "Email");
            //}


            // var myData = new List<UserProjectListViewModel>();
            // UserProjectViewModel userVm = null;
            //foreach(var user in db.Users.ToList())
            // {
            //     userVm = new USerProjectListViewModel
            //     {
            //         Name = ${ user.LastName},{ user.FirstName}"," +
            //         PRojectNames = projectHelper.ListOfProjects(user.Id).Select(p => p.Name).Count() == 0 ? "N/A" : projectHelper.ListOfProjects(user.Id).Select(p => p.Name).ToList();
            //     };

            // myData.Add(userVm);
            // }


            var users = new List <ManageProjecstUsersViewModel>();

            foreach (var user in db.Users.ToList())
            {
                users.Add(new ManageProjecstUsersViewModel
                {
                    FullName    = $"{ user.LastName},{ user.FirstName}",
                    RoleName    = roleHelper.ListUserRoles(user.Id).FirstOrDefault(),
                    Email       = user.Email,
                    ProjectName = projectHelper.ListOfProjects(user.Id)
                });;
            }
            return(View(users));
        }
Exemplo n.º 13
0
        public ActionResult AdminAddToRole(ListViewModel selectedUser, string RoleName)
        {
            var nHelper = new UserNotificationsHelper();

            ViewBag.Notifications = nHelper.filterNotifications(User.Identity.GetUserId());
            var Helper = new UserRolesHelper();

            foreach (var id in selectedUser.SelectednonUsers)
            {
                if (id != null)
                {
                    Helper.AddUserToRole(id, RoleName);
                    Helper.AddUserToRole(id, "Project Manager");
                    Helper.AddUserToRole(id, "Developer");
                }
            }
            List <SelectListItem> listadminUsers    = new List <SelectListItem>();
            List <SelectListItem> listnonadminUsers = new List <SelectListItem>();
            var result1 = Helper.UsersInRole(RoleName);

            foreach (var user in result1)
            {
                SelectListItem selectList = new SelectListItem()
                {
                    Text  = user.DispalyName,
                    Value = user.Id
                };
                listadminUsers.Add(selectList);
            }
            var result2 = Helper.UsersNotInRole(RoleName);

            foreach (var user in result2)
            {
                SelectListItem selectList = new SelectListItem()
                {
                    Text  = user.DispalyName,
                    Value = user.Id
                };
                listnonadminUsers.Add(selectList);
            }
            ListViewModel adminLViewModel = new ListViewModel()
            {
                zUsers     = listadminUsers,
                otherUsers = listnonadminUsers
            };

            return(View("AdminAccount", adminLViewModel));
        }
Exemplo n.º 14
0
        public ActionResult AdminAccount()
        {
            var nHelper = new UserNotificationsHelper();

            ViewBag.Notifications = nHelper.filterNotifications(User.Identity.GetUserId());
            List <SelectListItem> listadminUsers    = new List <SelectListItem>();
            List <SelectListItem> listnonadminUsers = new List <SelectListItem>();
            var adminHelper = new UserRolesHelper();
            var result1     = adminHelper.UsersInRole("Admin");

            foreach (var user in result1)
            {
                SelectListItem selectList = new SelectListItem()
                {
                    Text  = user.DispalyName,
                    Value = user.Id
                };
                listadminUsers.Add(selectList);
            }
            var result2 = adminHelper.UsersNotInRole("Admin");

            foreach (var user in result2)
            {
                SelectListItem selectList = new SelectListItem()
                {
                    Text  = user.DispalyName,
                    Value = user.Id
                };
                listnonadminUsers.Add(selectList);
            }
            ListViewModel adminLViewModel = new ListViewModel()
            {
                zUsers     = listadminUsers,
                otherUsers = listnonadminUsers
            };

            return(View(adminLViewModel));

            /*ViewBag.adminresult = result;
             * return View(result);*/
        }
Exemplo n.º 15
0
        public ActionResult Details(int?id)
        {
            if (!id.HasValue)
            {
                return(RedirectToAction(nameof(TicketsController.Index)));
            }

            var ticket = Context.Tickets.FirstOrDefault(p => p.Id == id);

            if (ticket == null)
            {
                return(RedirectToAction(nameof(TicketsController.Index)));
            }

            var model = new DetailsTicketViewModel();

            model.Developers = RoleHelper.UsersInRole("Developer")
                               .Select(x => new SelectListItem
            {
                Value = x.Id.ToString(),
                Text  = x.DisplayName
            });

            model.Id           = ticket.Id;
            model.Title        = ticket.Title;
            model.Description  = ticket.Description;
            model.Priority     = ticket.Priority.Name;
            model.Project      = ticket.Project.Name;
            model.Status       = ticket.Status.Name;
            model.Type         = ticket.Type.Name;
            model.Created      = ticket.DateCreated;
            model.Comments     = ticket.Comments;
            model.ChangeLogs   = ticket.ChangeLogs;
            model.DevelopersId = ticket.AssignedToId;

            model.Attachments = ticket.Attachments;
            model.CreatedById = ticket.CreatedBy.DisplayName;

            return(View("Details", model));
        }
Exemplo n.º 16
0
        public ActionResult EditPm(int?id)
        {
            UserRolesHelper urh = new UserRolesHelper();

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Ticket ticket = db.Tickets.Find(id);

            if (ticket == null)
            {
                return(HttpNotFound());
            }
            ViewBag.AssignedToUserId = new SelectList(urh.UsersInRole("Developer"), "Id", "FirstName", ticket.AssignedToUserId);
            ViewBag.OwnerUserId      = new SelectList(db.Users, "Id", "FirstName", 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);
            return(View(ticket));
        }
Exemplo n.º 17
0
        public ActionResult DataStatsPerUser()
        {
            ApplicationDbContext db             = new ApplicationDbContext();
            UserRolesHelper      userRoleHelper = new UserRolesHelper();

            var allDeveloper = userRoleHelper.UsersInRole("Developer");

            string[,] usersTicket = new String[2, allDeveloper.Count()];


            for (var i = 0; i < allDeveloper.Count(); i++)
            {
                usersTicket[0, i] = allDeveloper.ElementAt(i).FullName;

                ApplicationUser developer = allDeveloper.ElementAt(i);

                usersTicket[1, i] = Convert.ToString(db.Tickets.Where(t => t.AssignedToUserId == developer.Id).ToList().Count());
            }
            string output = JsonConvert.SerializeObject(usersTicket);

            return(Json(output));
            //return Json(new { Name = project.Name, Description = project.Description, Created = project.Created.ToString("MMM dd,yyyy"), projectID, userId });
        }
Exemplo n.º 18
0
        //GET: Admin/ManageRoles/(role)
        public ActionResult ManageRoles(string role) //When the administrator wants to add many users to a role at once they will click
                                                     //the button that indicates which role they want to add users to. that button submits a url request that is processed and
                                                     //matched to a pattern in the route.config file, which will direct to the 'ManageRoles' action method in the 'admin' controller.
                                                     //the 'string role' parameter of this method receives the parameter indicated in the button that was clicked. The parameter will
                                                     //be either 'admin', 'project manager', 'developer' or 'submitter'.
        {
            if (role == "Admin")
            {
                ViewBag.Title = "Manage Admin Role";
            }
            else if (role == "Project Manager")
            {
                ViewBag.Title = "Manage Project Manager Role";
            }
            else if (role == "Developer")
            {
                ViewBag.Title = "Manage Developer Role";
            }
            else
            {
                ViewBag.Title = "Manage Submitter Role";
            }

            var helper = new UserRolesHelper();//this creates a new instance of the 'UserRolesHelper' class. the 'helper' object has

            //all of the methods defined in the 'UserRolesHelper' class.
            ViewBag.AssignedUsers = new MultiSelectList(db.Users.ToList(), "Id", "DisplayName", helper.UsersInRole(role).Select(u => u.Id));
            //the 'AssignedUsers' variable is a new instance of the 'MultiSelectList' class and is attached to the 'ViewBag' so that a
            //multiselect list can be created in the view.  The parameters given to the 'MultiSelectList' object are 1.) a list of all users
            //in the database, 2.) the property that is going to be selectable in the list (the users Id), 3.) the property that will be displayed
            //in the multiselect list (the users DisplayName), 4.)...the 'UsersInRole' method is called from the 'helper' object and passed the
            //'role' parameter that was passed to the 'ManageRoles' action method. From the 'UsersInRole' method is returned a list of users
            //whose 'RoleId' value matches the 'Id' value for that role in the 'Roles' table. So, this multiselect list will be populated with
            //all of the Users in the database and the end user will see the user's display names and those display names will have the users'
            //id's tied to them and any user that the end user selects on that multiselect list will be added to the role specified.
            return(View());//return the ManageRoles view.
        }
Exemplo n.º 19
0
        public ActionResult Create([Bind(Include = "Id,Title,Description,Created,ProjectId,TicketTypeId,TicketPriorityId,OwnerUserId,TicketStatusId,AssignedToUserId, TicketComments, TicketHistories, TicketAttachments")] Ticket ticket, ApplicationUser user, string comment, string descriptions, HttpPostedFileBase fileUpload)
        {
            var nHelper = new UserNotificationsHelper();

            ViewBag.Notifications = nHelper.filterNotifications(User.Identity.GetUserId());
            if (ModelState.IsValid)
            {
                ticket.OwnerUserId = User.Identity.GetUserId();
                ticket.Created     = System.DateTimeOffset.UtcNow;

                var Helper        = new UserRolesHelper();
                var anotherHelper = new UserHelper();

                #region Notifications
                db.TicketNotifications.Add(new TicketNotification()
                {
                    Notice   = "You created a new ticket on " + ticket.Created.ToString(),
                    TicketId = ticket.Id,
                    UserId   = ticket.OwnerUserId
                });

                foreach (var auser in Helper.UsersInRole("Project Manager"))
                {
                    db.TicketNotifications.Add(new TicketNotification()
                    {
                        Notice   = anotherHelper.TicketOwner(ticket.OwnerUserId).DispalyName + " has created a new ticket on " + ticket.Created.ToString(),
                        TicketId = ticket.Id,
                        UserId   = auser.Id
                    });
                }
                if (ticket.AssignedToUserId != null)
                {
                    ticket.AssignedToUser = db.Users.Find(ticket.AssignedToUserId);
                    db.TicketNotifications.Add(new TicketNotification()
                    {
                        Notice   = "A ticket has been assigned to you on " + ticket.Created.ToString(),
                        TicketId = ticket.Id,
                        UserId   = ticket.AssignedToUserId
                    });

                    db.TicketNotifications.Add(new TicketNotification()
                    {
                        Notice   = "Your ticket has been assigned to a developer on " + ticket.Created.ToString(),
                        TicketId = ticket.Id,
                        UserId   = ticket.OwnerUserId
                    });
                }
                #endregion

                if (comment != "")
                {
                    db.TicketComments.Add(new TicketComment()
                    {
                        TicketId = ticket.Id, Created = ticket.Created, UserId = ticket.OwnerUserId, Comment = comment
                    });
                }

                if (fileUpload != null && fileUpload.ContentLength > 0)
                {
                    var attachment = new TicketAttachment();
                    attachment.FilePath    = Path.GetFileName(fileUpload.FileName);
                    attachment.TicketId    = ticket.Id;
                    attachment.Description = descriptions;
                    attachment.Created     = ticket.Created;
                    attachment.UserId      = ticket.OwnerUserId;
                    attachment.FileUrl     = "/Attachments/" + attachment.FilePath;
                    var fileName = Path.GetFileName(fileUpload.FileName);
                    fileUpload.SaveAs(Path.Combine(Server.MapPath("/Attachments"), attachment.FilePath));
                    db.TicketAttachments.Add(attachment);
                }

                db.Tickets.Add(ticket);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            var rHelper = new UserRolesHelper();
            ViewBag.AssignedToUserId = new SelectList(rHelper.UsersInRole("Developer"), "Id", "FirstName", ticket.AssignedToUserId);
            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);
            return(View(ticket));
        }
Exemplo n.º 20
0
        public ActionResult Edit([Bind(Include = "Id,Title,Description,Created,ProjectId,TicketTypeId,OwnerUserId,TicketPriorityId,TicketStatusId,AssignedToUserId,TicketComments,TicketHistories,TicketAttachments")] Ticket ticket, string comment, string descriptions, HttpPostedFileBase fileUpload)
        {
            Ticket pticket = TempData["Ticket"] as Ticket;
            var    nHelper = new UserNotificationsHelper();

            ViewBag.Notifications = nHelper.filterNotifications(User.Identity.GetUserId());
            var anotherHelper = new UserHelper();

            if (ModelState.IsValid)
            {
                ticket.Updated = System.DateTimeOffset.UtcNow;
                if (ticket.TicketStatusId == 0)
                {
                    ticket.TicketStatusId = 1;
                }

                if (comment != "")
                {
                    db.TicketComments.Add(new TicketComment()
                    {
                        TicketId = ticket.Id, Created = System.DateTimeOffset.UtcNow, UserId = ticket.OwnerUserId, Comment = comment
                    });
                }
                if (fileUpload != null && fileUpload.ContentLength > 0)
                {
                    var attachment = new TicketAttachment();
                    attachment.FilePath    = Path.GetFileName(fileUpload.FileName);
                    attachment.TicketId    = ticket.Id;
                    attachment.Description = descriptions;
                    attachment.Created     = System.DateTimeOffset.UtcNow;
                    attachment.UserId      = ticket.OwnerUserId;
                    attachment.FileUrl     = "/Attachments/" + attachment.FilePath;
                    var fileName = Path.GetFileName(fileUpload.FileName);
                    fileUpload.SaveAs(Path.Combine(Server.MapPath("/Attachments"), attachment.FilePath));
                    db.TicketAttachments.Add(attachment);
                }

                #region Notifications
                if (fileUpload != null && fileUpload.ContentLength > 0 && comment != "")
                {
                    db.TicketNotifications.Add(new TicketNotification()
                    {
                        Notice   = User.Identity.Name + " added a new comment and attachment to the ticket on " + ticket.Updated.ToString(),
                        TicketId = ticket.Id,
                        UserId   = User.Identity.GetUserId()
                    });
                    var Helper = new UserRolesHelper();
                    foreach (var auser in Helper.UsersInRole("Project Manager"))
                    {
                        db.TicketNotifications.Add(new TicketNotification()
                        {
                            Notice   = User.Identity.Name + " added a new comment and attachment to the ticket on " + ticket.Updated.ToString(),
                            TicketId = ticket.Id,
                            UserId   = auser.Id
                        });
                    }
                }
                else
                {
                    if (fileUpload != null && fileUpload.ContentLength > 0)
                    {
                        db.TicketNotifications.Add(new TicketNotification()
                        {
                            Notice   = User.Identity.Name + " added a new attachment to the ticket on " + ticket.Updated.ToString(),
                            TicketId = ticket.Id,
                            UserId   = User.Identity.GetUserId()
                        });
                        var Helper = new UserRolesHelper();
                        foreach (var auser in Helper.UsersInRole("Project Manager"))
                        {
                            db.TicketNotifications.Add(new TicketNotification()
                            {
                                Notice   = User.Identity.Name + " added a new attachment to the ticket on " + ticket.Updated.ToString(),
                                TicketId = ticket.Id,
                                UserId   = auser.Id
                            });
                        }
                    }
                    if (comment != "")
                    {
                        db.TicketNotifications.Add(new TicketNotification()
                        {
                            Notice   = User.Identity.Name + " added a new comment to the ticket on " + ticket.Updated.ToString(),
                            TicketId = ticket.Id,
                            UserId   = User.Identity.GetUserId()
                        });
                        var Helper = new UserRolesHelper();
                        foreach (var auser in Helper.UsersInRole("Project Manager"))
                        {
                            db.TicketNotifications.Add(new TicketNotification()
                            {
                                Notice   = User.Identity.Name + " added a new comment to the ticket on " + ticket.Updated.ToString(),
                                TicketId = ticket.Id,
                                UserId   = auser.Id
                            });
                        }
                    }
                }
                if (pticket.AssignedToUserId != ticket.AssignedToUserId)
                {
                    db.TicketNotifications.Add(new TicketNotification()
                    {
                        Notice   = "A ticket was assigned to you on with a priority: " + db.TicketPriorities.Find(ticket.TicketPriorityId).Name,
                        TicketId = ticket.Id,
                        UserId   = ticket.AssignedToUserId
                    });
                    db.TicketNotifications.Add(new TicketNotification()
                    {
                        Notice   = "A Developer has been assigned to your ticket on " + ticket.Updated.ToString(),
                        TicketId = ticket.Id,
                        UserId   = ticket.OwnerUserId
                    });
                }
                #endregion

                #region Histories
                if (pticket.ProjectId != ticket.ProjectId)
                {
                    db.TicketHistories.Add(new TicketHistory()
                    {
                        TicketId = ticket.Id,
                        UserId   = ticket.OwnerUserId,
                        OldValue = pticket.Project.Name,
                        NewValue = db.Projects.Find(ticket.ProjectId).Name,
                        Changed  = ticket.Updated,
                        Property = "Project/Catagory",
                    });
                }
                if (pticket.TicketStatusId != ticket.TicketStatusId)
                {
                    db.TicketHistories.Add(new TicketHistory()
                    {
                        TicketId = ticket.Id,
                        UserId   = ticket.OwnerUserId,
                        OldValue = pticket.TicketStatus.Name,
                        NewValue = db.TicketStatuses.Find(ticket.TicketStatusId).Name,
                        Changed  = ticket.Updated,
                        Property = "Ticket Status"
                    });
                }
                if (pticket.TicketTypeId != ticket.TicketTypeId)
                {
                    db.TicketHistories.Add(new TicketHistory()
                    {
                        TicketId = ticket.Id,
                        UserId   = ticket.OwnerUserId,
                        OldValue = pticket.TicketType.Name,
                        NewValue = db.TicketTypes.Find(ticket.TicketTypeId).Name,
                        Changed  = ticket.Updated,
                        Property = "Ticket Type"
                    });
                }
                if (ticket.TicketPriorityId != null && pticket.TicketPriorityId != ticket.TicketPriorityId)
                {
                    if (pticket.TicketPriority == null)
                    {
                        db.TicketHistories.Add(new TicketHistory()
                        {
                            TicketId = ticket.Id,
                            UserId   = ticket.OwnerUserId,
                            OldValue = "Not Set",
                            NewValue = db.TicketPriorities.Find(ticket.TicketPriorityId).Name,
                            Changed  = ticket.Updated,
                            Property = "Ticket Priority"
                        });
                    }
                    else
                    {
                        db.TicketHistories.Add(new TicketHistory()
                        {
                            TicketId = ticket.Id,
                            UserId   = ticket.OwnerUserId,
                            OldValue = pticket.TicketPriority.Name,
                            NewValue = db.TicketPriorities.Find(ticket.TicketPriorityId).Name,
                            Changed  = ticket.Updated,
                            Property = "Ticket Priority"
                        });
                    }
                }
                if (ticket.AssignedToUserId != null && ticket.AssignedToUserId != pticket.AssignedToUserId)
                {
                    if (pticket.AssignedToUser == null)
                    {
                        db.TicketHistories.Add(new TicketHistory()
                        {
                            TicketId = ticket.Id,
                            UserId   = ticket.OwnerUserId,
                            OldValue = "Not yet Assigned",
                            NewValue = db.Users.Find(ticket.AssignedToUserId).DispalyName,
                            Changed  = ticket.Updated,
                            Property = "Assigned Developer"
                        });
                    }
                    else
                    {
                        db.TicketHistories.Add(new TicketHistory()
                        {
                            TicketId = ticket.Id,
                            UserId   = ticket.OwnerUserId,
                            OldValue = pticket.AssignedToUser.DispalyName,
                            NewValue = db.Users.Find(ticket.AssignedToUserId).DispalyName,
                            Changed  = ticket.Updated,
                            Property = "Assigned Developer"
                        });
                    }
                }
                #endregion

                db.Entry(ticket).State = EntityState.Modified;
                db.SaveChanges();
                //anotherHelper.TicketModified(ticket);
                return(RedirectToAction("Index"));
            }

            var rHelper = new UserRolesHelper();
            ViewBag.AssignedToUserId = new SelectList(rHelper.UsersInRole("Developer"), "Id", "FirstName", ticket.AssignedToUserId);
            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);
            return(View(ticket));
        }
Exemplo n.º 21
0
        public ActionResult TestDashBoardView()
        {
            var model  = new UserProfileViewModel();
            var userId = User.Identity.GetUserId();
            var user   = db.Users.Find(userId);

            var ticketIndexVMs  = new List <TicketIndexViewModel>();
            var projectVMs      = new List <ProjectViewModel>();
            var allTickets      = db.Tickets.ToList();
            var allPojects      = db.Projects.ToList();
            var myTickets       = ticketHelper.ListMyTickets();
            var developers      = roleHelper.UsersInRole("Dev").ToList();
            var submitters      = roleHelper.UsersInRole("Sub").ToList();
            var projectManagers = roleHelper.UsersInRole("PM").ToList();

            if (User.IsInRole("Dev") || User.IsInRole("Sub"))
            {
                foreach (var ticket in myTickets)
                {
                    var ticketComments = new List <TicketComment>();

                    foreach (var comment in ticket.Comments)
                    {
                        if (comment.UserId == userId)
                        {
                            ticketComments.Add(comment);
                        }
                    }
                    ticketIndexVMs.Add(new TicketIndexViewModel
                    {
                        Ticket           = ticket,
                        TicketStatus     = new SelectList(db.TicketStatus, "Id", "Name", ticket.TicketStatusId),
                        TicketPriority   = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId),
                        TicketType       = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId),
                        Developer        = new SelectList(developers, "Id", "Email", ticket.DeveloperId),
                        MyTicketComments = ticketComments
                    });
                }
            }

            if (User.IsInRole("Admin") || User.IsInRole("PM"))
            {
                foreach (var project in allPojects)
                {
                    projectVMs.Add(new ProjectViewModel
                    {
                        Project       = project,
                        Developer     = new SelectList(developers, "Id", "Email", project.DeveloperId),
                        Submitter     = new SelectList(submitters, "Id", "Email", project.SubmitterId),
                        ProjectManger = new SelectList(projectManagers, "Id", "Email", project.ProjectManagerId)
                    });
                }

                foreach (var ticket in allTickets)
                {
                    ticketIndexVMs.Add(new TicketIndexViewModel
                    {
                        Ticket         = ticket,
                        TicketStatus   = new SelectList(db.TicketStatus, "Id", "Name", ticket.TicketStatusId),
                        TicketPriority = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId),
                        TicketType     = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId),
                        Developer      = new SelectList(developers, "Id", "Email", ticket.DeveloperId),
                    });
                }
            }



            //var model = new UserProfileViewModel();
            //var userId = User.Identity.GetUserId();
            //var user = db.Users.Find(userId);
            //    model.AvitarPath = user.AvatarPath;
            //    model.FullName = user.FullName;
            model.Id          = userId;
            model.ProjectsIn  = projHelper.ListUserProjects(userId);
            model.ProjectsOut = db.Projects.ToList();
            model.TicketsIn   = ticketHelper.ListMyTickets();
            model.TicetsOut   = ticketHelper.ListTicketsNotBelongingToUser();
            model.Role        = roleHelper.ListUserRoles(userId).FirstOrDefault();
            model.TicketsVM   = ticketIndexVMs;
            model.ProjectVM   = projectVMs;
            //foreach (var project in model.ProjectsOut)
            //{

            //}



            return(View(model));
        }
Exemplo n.º 22
0
        // GET: Tickets
        public ActionResult Index(string sortOrder, string currentFilter, int?page, string searchString, string myFilter, string myFilter2, string myFilter3, string myFilter4, string myFilter5, string myFilter6)
        {
            var Helper = new UserNotificationsHelper();

            ViewBag.Notifications = Helper.filterNotifications(User.Identity.GetUserId());
            var aHelper = new UserHelper();
            var uHelper = new UserRolesHelper();

            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }
            ViewBag.CurrentFilter        = searchString;
            ViewBag.myFilter             = new SelectList(db.Projects, "Name", "Name");
            ViewBag.myFilter2            = new SelectList(db.TicketTypes, "Name", "Name");
            ViewBag.myFilter3            = new SelectList(db.TicketStatuses, "Name", "Name");
            ViewBag.myFilter4            = new SelectList(db.TicketPriorities, "Name", "Name");
            ViewBag.myFilter5            = new SelectList(db.Users, "DispalyName", "DispalyName");
            ViewBag.myFilter6            = new SelectList(uHelper.UsersInRole("Project Manager"), "DispalyName", "DispalyName");
            ViewBag.TitleSortParm        = String.IsNullOrEmpty(sortOrder) ? "title" : "";
            ViewBag.PNameSortParm        = String.IsNullOrEmpty(sortOrder) ? "Pname" : "";
            ViewBag.TtypeSortParm        = String.IsNullOrEmpty(sortOrder) ? "ttypename" : "";
            ViewBag.OwnerSortParm        = String.IsNullOrEmpty(sortOrder) ? "owner" : "";
            ViewBag.TstatusSortParm      = String.IsNullOrEmpty(sortOrder) ? "tstatus" : "";
            ViewBag.TprioritySortParm    = String.IsNullOrEmpty(sortOrder) ? "tpriority" : "";
            ViewBag.AssigneduserSortParm = String.IsNullOrEmpty(sortOrder) ? "assigneduser" : "";
            ViewBag.CreatedSortParm      = sortOrder == "created" ? "created_desc" : "created";
            ViewBag.UpdatedSortParm      = sortOrder == "updated" ? "updated_desc" : "updated";
            //var tickets = aHelper.ListTicketsPM();
            if (User.IsInRole("Project Manager"))
            {
                var tickets = from t in aHelper.ListTicketsPM() select t;
                if (!String.IsNullOrEmpty(myFilter))
                {
                    tickets = tickets.Where(t => t.Project.Name.Contains(myFilter));
                }
                if (!String.IsNullOrEmpty(myFilter2))
                {
                    tickets = tickets.Where(t => t.TicketType.Name.Contains(myFilter2));
                }
                if (!String.IsNullOrEmpty(myFilter3))
                {
                    tickets = tickets.Where(t => t.TicketStatus.Name.Contains(myFilter3));
                }
                if (!String.IsNullOrEmpty(myFilter4))
                {
                    tickets = tickets.Where(t => t.TicketPriority.Name.Contains(myFilter4));
                }
                if (!String.IsNullOrEmpty(myFilter5))
                {
                    tickets = tickets.Where(t => t.OwnerUser.DispalyName.Contains(myFilter5));
                }
                if (!String.IsNullOrEmpty(myFilter6))
                {
                    tickets = tickets.Where(t => t.AssignedToUser.DispalyName.Contains(myFilter6));
                }
                if (!String.IsNullOrEmpty(searchString))
                {
                    tickets = tickets.Where(t => t.Title.Contains(searchString)).Union(tickets.Where(t => t.Description.Contains(searchString)))
                              .Union(tickets.Where(t => t.Project.Name.Contains(searchString))).Union(tickets.Where(t => t.TicketType.Name.Contains(searchString)))
                              .Union(tickets.Where(t => t.TicketStatus.Name.Contains(searchString))).Union(tickets.Where(t => t.TicketPriority != null && t.TicketPriority.Name.Contains(searchString)))
                              .Union(tickets.Where(t => t.OwnerUser.DispalyName.Contains(searchString))).Union(tickets.Where(t => t.AssignedToUser != null && t.AssignedToUser.DispalyName.Contains(searchString)));
                }
                switch (sortOrder)
                {
                case "title":
                    tickets = tickets.OrderBy(t => t.Title);
                    break;

                case "Pname":
                    tickets = tickets.OrderBy(t => t.Project.Name);
                    break;

                case "ttypename":
                    tickets = tickets.OrderBy(t => t.TicketType.Name);
                    break;

                case "owner":
                    tickets = tickets.OrderBy(t => t.OwnerUser.DispalyName);
                    break;

                case "created":
                    tickets = tickets.OrderBy(t => t.Created);
                    break;

                case "created_desc":
                    tickets = tickets.OrderByDescending(t => t.Created);
                    break;

                case "updated":
                    tickets = tickets.OrderBy(t => t.Updated);
                    break;

                case "updated_desc":
                    tickets = tickets.OrderByDescending(t => t.Updated);
                    break;

                case "tstatus":
                    tickets = tickets.OrderBy(t => t.TicketStatus.Name);
                    break;

                case "tpriority":
                    tickets = tickets.OrderBy(t => t.TicketPriority.Name);
                    break;

                case "assigneduser":
                    tickets = tickets.OrderBy(t => t.AssignedToUser.DispalyName);
                    break;

                default:
                    tickets = tickets.OrderByDescending(t => t.Created);
                    break;
                }
                int pageSize   = 10;
                int pageNumber = (page ?? 1);
                return(View(tickets.ToPagedList(pageNumber, pageSize)));
            }
            else
            {
                var tickets = from t in aHelper.ListTicketsForUser(User.Identity.GetUserId()) select t;
                if (!String.IsNullOrEmpty(searchString))
                {
                    tickets = tickets.Where(t => t.Title.Contains(searchString)).Union(tickets.Where(t => t.Description.Contains(searchString)))
                              .Union(tickets.Where(t => t.Project.Name.Contains(searchString))).Union(tickets.Where(t => t.TicketType.Name.Contains(searchString)))
                              .Union(tickets.Where(t => t.TicketStatus.Name.Contains(searchString))).Union(tickets.Where(t => t.OwnerUser.DispalyName.Contains(searchString)));
                }
                switch (sortOrder)
                {
                case "title":
                    tickets = tickets.OrderBy(t => t.Title);
                    break;

                case "Pname":
                    tickets = tickets.OrderBy(t => t.Project.Name);
                    break;

                case "ttypename":
                    tickets = tickets.OrderBy(t => t.TicketType.Name);
                    break;

                case "owner":
                    tickets = tickets.OrderBy(t => t.OwnerUser.DispalyName);
                    break;

                case "created":
                    tickets = tickets.OrderBy(t => t.Created);
                    break;

                case "created_desc":
                    tickets = tickets.OrderByDescending(t => t.Created);
                    break;

                case "updated":
                    tickets = tickets.OrderBy(t => t.Updated);
                    break;

                case "updated_desc":
                    tickets = tickets.OrderByDescending(t => t.Updated);
                    break;

                case "tstatus":
                    tickets = tickets.OrderBy(t => t.TicketStatus.Name);
                    break;

                default:
                    tickets = tickets.OrderByDescending(t => t.Created);
                    break;
                }
                int pageSize   = 10;
                int pageNumber = (page ?? 1);
                return(View(tickets.ToPagedList(pageNumber, pageSize)));
            }
        }