Beispiel #1
0
 public Sprint(
     SprintView sprintView,
     List <ChunkFacade> chunkFacades,
     Checkpoint checkpoint)
 {
     this.sprintView   = sprintView;
     this.chunkFacades = chunkFacades;
     this.checkpoint   = checkpoint;
 }
Beispiel #2
0
        /// <summary>
        ///     Function to show a specific sprint view
        /// </summary>
        /// <param name="id">Id of sprint to view</param>
        /// <returns>Sprint view</returns>
        public IActionResult Sprint(int id)
        {
            // Try to get sprint
            var sprint = _context.Sprints.FirstOrDefault(x => x.Id == id);

            // If sprint not found redirect back with error
            if (sprint == null)
            {
                return(Redirect("/user").WithDanger("Error", "Sprint not found"));
            }

            // Get creator's user id to check if user can view sprint
            var user = int.Parse(_userManager.GetUserId(User));

            // Try to find user sprint object
            var userSprint = _context.UserSprints
                             .Where(x => x.SprintId == sprint.Id)
                             .FirstOrDefault(x => x.UserId == user);

            // If not found redirect back with error
            if (userSprint == null)
            {
                return(Redirect("/user").WithDanger("Error", "Sprint not found"));
            }

            // Get all items within sprint
            var items = _context.Items
                        .Where(x => x.SprintId == sprint.Id)
                        .ToList();

            // Create list of item views to populate
            var itemViews = new List <ItemView>();

            // Populate item views
            foreach (var item in items)
            {
                itemViews.Add(new ItemView
                {
                    Item  = item,
                    Tasks = _context.Tasks
                            .Where(x => x.ItemId == item.Id)
                            .ToList()
                }
                              );
            }

            // Create sprint view model
            var sprintView = new SprintView
            {
                Sprint = sprint,
                Items  = itemViews
            };

            // Get all users in sprint
            var sprintUsers = _context.UserSprints
                              .Where(x => x.SprintId == sprint.Id)
                              .Select(x => x.UserId)
                              .ToList();
            var users = _context.Users
                        .Where(x => sprintUsers.Contains(x.Id))
                        .ToList();

            // Add users to view bag
            ViewBag.Users = users;

            // Get all items within this sprint
            ViewBag.Items = _context.Items
                            .Where(x => x.SprintId == sprint.Id)
                            .ToList();

            // Get number of all tasks within sprint
            ViewBag.Tasks = _context.Tasks
                            .Count(x => x.SprintId == sprint.Id);

            // Get number of pending tasks
            ViewBag.PendingTasks = _context.Tasks
                                   .Where(x => x.SprintId == sprint.Id)
                                   .Count(x => x.Status == TaskStatus.Pending);

            // Get number of in progress tasks
            ViewBag.InProgressTasks = _context.Tasks
                                      .Where(x => x.SprintId == sprint.Id)
                                      .Count(x => x.Status == TaskStatus.InProgress);

            // Get number of blocked tasks
            ViewBag.BlockedTasks = _context.Tasks
                                   .Where(x => x.SprintId == sprint.Id)
                                   .Count(x => x.Status == TaskStatus.Blocked);

            // Get number of completed tasks
            ViewBag.CompletedTasks = _context.Tasks
                                     .Where(x => x.SprintId == sprint.Id)
                                     .Count(x => x.Status == TaskStatus.Complete);

            return(View(sprintView));
        }