Esempio n. 1
0
        public ActionResult AssignUsers(int?id)
        {
            {
                if (id == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
                Project project = db.Projects.Find(id);
                if (project == null)
                {
                    return(HttpNotFound());
                }

                AssignProjectUsersViewModel model  = new AssignProjectUsersViewModel();
                ProjectUsersHelper          helper = new ProjectUsersHelper(db);
                model.ProjectId    = project.Id;
                model.ProjectTitle = project.Title;
                var currentUsers = helper.ListUsers(model.ProjectId);
                model.UsersList    = currentUsers;
                model.CurrentUsers = new SelectList(currentUsers, "Id", "FullName");
                var absentUsers = helper.ListAbsentUsers(model.ProjectId);
                model.AbsentUsers = new SelectList(absentUsers, "Id", "FullName");
                return(View(model));
            }
        }
        public ActionResult AssignUser(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Ticket ticket = db.Tickets.Find(id);

            if (ticket == null)
            {
                return(HttpNotFound());
            }
            AssignTicketUserViewModel AssignModel = new AssignTicketUserViewModel();

            AssignModel.TicketId    = ticket.Id;
            AssignModel.TicketTitle = ticket.Title;
            ProjectUsersHelper helper     = new ProjectUsersHelper(db);
            UserRolesHelper    userHelper = new UserRolesHelper(db);
            var projectUsers      = helper.ListUsers(ticket.ProjectId);
            var projectDevelopers = new List <ApplicationUser>();

            foreach (var user in projectUsers)
            {
                if (userHelper.IsUserInRole(user.Id, "Developer"))
                {
                    projectDevelopers.Add(user);
                }
            }
            if (ticket.Assignee != null)
            {
                AssignModel.TicketAssignedTo = ticket.Assignee.FullName;
            }
            AssignModel.UsersList = new SelectList(projectDevelopers, "Id", "FullName");
            return(View(AssignModel));
        }
        public async Task <ActionResult> Create([Bind(Include = "Id,ProjectId,Title,Body,Priority,Type")] Ticket ticket)
        {
            if (ModelState.IsValid)
            {
                if (ticket.Title == null)
                {
                    ticket.Title = StringUtilities.Shorten(ticket.Body, 50);
                }
                ticket.Created = System.DateTimeOffset.Now;
                ticket.OwnerId = User.Identity.GetUserId();
                // Adding status and priority field
                var st = db.Statuses.ToList();
                foreach (Status s in st)
                {
                    if (s.Name == TicketStatus.Open.ToString())
                    {
                        ticket.StatusId = s.Id;
                    }
                }
                //ticket.StatusId = db.Statuses.Find(TicketStatus.Open.ToString()).Id;
                // 2017.03.22 (ericwat) - Added priority field to take the lookup value
                var pr = db.Priorities.ToList();
                foreach (Priority p in pr)
                {
                    if (p.Name == ticket.Priority.ToString())
                    {
                        ticket.PriorityId = p.Id;
                    }
                }

                ticket.Status = 0;
                History history = new History();
                history.Date = ticket.Created;
                var historyBody = "Ticket created. <br> Title: " + ticket.Title + "<br> Body: " + ticket.Body + "<br>" + "Priority: " + ticket.Priority + ", Type: " + ticket.Type.Name + ", Status: " + ticket.Status;
                history.Body     = historyBody;
                history.TicketId = ticket.Id;
                db.Tickets.Add(ticket);
                db.History.Add(history);
                db.SaveChanges();

                var user = db.Users.Find(ticket.OwnerId);
                //Send email to project managers
                ProjectUsersHelper helper = new ProjectUsersHelper(db);
                var projectManagers       = helper.ListProjectManagers(ticket.ProjectId);
                foreach (var pm in projectManagers)
                {
                    var svc = new EmailService();
                    var msg = new IdentityMessage();
                    msg.Destination = pm;
                    msg.Subject     = "Bug Tracker: Ticket Created";
                    msg.Body        = user.FullName + " has created the ticket '" + ticket.Title + "'. To assign this ticket to a user, please visit https://meyasu-bugtracker.azurewebsites.net/Tickets/Details/" + ticket.Id;
                    await svc.SendAsync(msg);
                }

                return(RedirectToAction("Index"));
            }

            return(View(ticket));
        }
Esempio n. 4
0
        public ActionResult AddUser(string AddUserId, int ProjectId)
        {
            ProjectUsersHelper helper = new ProjectUsersHelper(db);

            helper.AssignUser(AddUserId, ProjectId);
            db.SaveChanges();
            return(RedirectToAction("AssignUsers", new { id = ProjectId }));
        }
Esempio n. 5
0
        public ActionResult Index()
        {
            var userId   = User.Identity.GetUserId();
            var projects = new List <Project>();
            ProjectUsersHelper helper = new ProjectUsersHelper(db);

            projects = helper.ListProjects(userId);

            return(View(projects.Where(p => p.Archived == false).OrderBy(p => p.Deadline)));
        }
Esempio n. 6
0
        public ActionResult Create([Bind(Include = "Id,Title,Description,Created,Deadline")] Project project)
        {
            if (ModelState.IsValid)
            {
                ProjectUsersHelper helper = new ProjectUsersHelper(db);
                project.Created  = System.DateTimeOffset.Now;
                project.Archived = false;
                var userId = User.Identity.GetUserId();
                db.Projects.Add(project);
                helper.AssignUser(userId, project.Id);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(project));
        }
Esempio n. 7
0
        public ActionResult RemoveUser(string RemoveUserId, int ProjectId)
        {
            ProjectUsersHelper helper = new ProjectUsersHelper(db);
            var tickets = db.Tickets.Where(t => t.AssigneeId == RemoveUserId && t.ProjectId == ProjectId).ToList();

            foreach (var ticket in tickets)
            {
                ticket.AssigneeId = null;
                ticket.Status     = Status.Open;
                ticket.Modified   = System.DateTimeOffset.Now;
                db.Tickets.Attach(ticket);
                db.Entry(ticket).Property("Modified").IsModified   = true;
                db.Entry(ticket).Property("AssigneeId").IsModified = true;
                db.Entry(ticket).Property("Status").IsModified     = true;
                db.SaveChanges();
            }
            helper.RemoveUser(RemoveUserId, ProjectId);
            db.SaveChanges();
            return(RedirectToAction("AssignUsers", new { id = ProjectId }));
        }
        public async Task <ActionResult> Resolve(int id)
        {
            //Ticket Information
            Ticket ticket = db.Tickets.Find(id);

            ticket.Status   = Status.Resolved;
            ticket.Modified = System.DateTimeOffset.Now;
            var userId = User.Identity.GetUserId();
            var user   = db.Users.Find(userId);
            //Add to ticket history
            History history = new History();

            history.Date = System.DateTimeOffset.Now;
            var historyBody = "Ticket marked as Resolved by " + user.FullName;

            history.Body     = historyBody;
            history.TicketId = ticket.Id;
            db.History.Add(history);
            //Save ticket changes to database
            db.Tickets.Attach(ticket);
            db.Entry(ticket).Property("Status").IsModified   = true;
            db.Entry(ticket).Property("Modified").IsModified = true;
            db.SaveChanges();
            //Send email to project managers
            ProjectUsersHelper helper = new ProjectUsersHelper(db);
            var projectManagers       = helper.ListProjectManagers(ticket.ProjectId);

            foreach (var pm in projectManagers)
            {
                var svc = new EmailService();
                var msg = new IdentityMessage();
                msg.Destination = pm;
                msg.Subject     = "Bug Tracker: Ticket Resolved";
                msg.Body        = user.FullName + " has marked the ticket '" + ticket.Title + "' as Resolved. To close this ticket, please visit https://epalmer-bugtracker.azurewebsites.net/Tickets/Details/" + ticket.Id + " If there are still issues left to resolve on the ticket, the ticket's developer can be reached at " + ticket.Assignee.Email;
                await svc.SendAsync(msg);
            }

            return(RedirectToAction("Details", new { id = ticket.Id }));
        }
Esempio n. 9
0
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Project project = db.Projects.Find(id);

            if (project == null)
            {
                return(HttpNotFound());
            }
            var                userId        = User.Identity.GetUserId();
            UserRolesHelper    userHelper    = new UserRolesHelper(db);
            ProjectUsersHelper projectHelper = new ProjectUsersHelper(db);
            var                userRoles     = userHelper.ListUserRoles(userId);
            var                tickets       = new List <Ticket>();

            if (userRoles.Contains("Admin") || (userRoles.Contains("Project Manager")))
            {
                tickets = project.Tickets.ToList();
            }
            else if (userRoles.Contains("Developer") && userRoles.Contains("Submitter"))
            {
                tickets = project.Tickets.Where(t => t.AssigneeId == userId || t.OwnerId == userId).ToList();
            }
            else if (userRoles.Contains("Developer"))
            {
                tickets = project.Tickets.Where(t => t.AssigneeId == userId).ToList();
            }
            else if (userRoles.Contains("Submitter"))
            {
                tickets = project.Tickets.Where(t => t.OwnerId == userId).ToList();
            }

            ViewBag.TicketList = tickets;
            return(View(project));
        }