public Sprint( SprintView sprintView, List <ChunkFacade> chunkFacades, Checkpoint checkpoint) { this.sprintView = sprintView; this.chunkFacades = chunkFacades; this.checkpoint = checkpoint; }
/// <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)); }