public void CreateSprint(SprintRequest request, SprintResponse response) { var oldSprint = request.Sprint.SprintId; int sprintNumber = 1; string sprintName = string.Empty; var teamName = _uow.Repository <TeamEntity>().GetOverview() .Where(t => t.TeamId == request.Sprint.TeamId) .Select(n => n.TeamName).FirstOrDefault(); if (!string.IsNullOrEmpty(teamName)) { sprintName = $"{teamName} - Sprint: {sprintNumber}"; } var teamSprints = _uow.Repository <SprintEntity>().GetOverview() .Where(b => b.TeamId == request.Sprint.TeamId) .Select(s => s.SprintId).ToList(); if (teamSprints != null && teamSprints.Count > 0) { sprintNumber = teamSprints.Count; sprintName = $"{teamName} - Sprint: {++sprintNumber}"; } var newSprint = new SprintEntity { StartDate = DateTime.Now, EndDate = DateTime.Now.AddDays(14), SprintName = sprintName, TeamId = request.Sprint.TeamId }; _uow.Repository <SprintEntity>().Add(newSprint); _uow.Save(); if (oldSprint != 0) { var notCompletedTasks = _uow.Repository <XRefSprintTaskEntity>().GetOverview(s => s.SprintId == oldSprint && s.ColumnId != (int)Column.DONE).ToList(); notCompletedTasks.ForEach(t => { _uow.Repository <XRefSprintTaskEntity>().Add(new XRefSprintTaskEntity { ColumnId = t.ColumnId, OrderId = t.OrderId, SprintId = newSprint.SprintId, TaskId = t.TaskId }); }); _uow.Save(); } response.SprintId = newSprint.SprintId; response.StartDate = newSprint.StartDate; response.EndDate = newSprint.EndDate; response.TeamId = newSprint.TeamId; response.SprintName = newSprint.SprintName; }
public SprintResponse GetSprintsList(SprintRequest request) { var response = new SprintResponse(); RunCode(MethodBase.GetCurrentMethod().Name, request, response, (uow) => { _manager.GetSprintsList(request, response); }); return(response); }
public async Task <IActionResult> DeleteAsync(int id) { SprintResponse result = await _sprintBl.DeleteAsync(id, UserId); if (!result.Success) { return(BadRequest(result.Message)); } return(Ok()); }
public async Task <SprintResponse> GetCurrentSprint(SprintRequest request) { var response = new SprintResponse(); await RunCodeAsync(MethodBase.GetCurrentMethod().Name, request, response, async (uow) => { await _manager.GetCurrentSprint(request, response); }); return(response); }
public async Task <IActionResult> PostAsync([FromBody] SprintDto dto) { if (!ModelState.IsValid) { return(BadRequest(ModelState.GetErrorMessages())); } SprintResponse result = await _sprintBl.CreateAsync(dto, UserId); if (!result.Success) { return(BadRequest(result.Message)); } return(Ok()); }
public void GetSprintsList(SprintRequest request, SprintResponse response) { var sprints = _uow.Repository <SprintEntity>().GetOverview() .Where(b => b.TeamId == request.TeamId) .Select(s => new ShortSprint { SprintName = s.SprintName, SprintId = s.SprintId }).ToList(); if (sprints != null && sprints.Count > 0) { response.SprintsList = sprints; } else { response.SprintsList = new List <ShortSprint>(); response.Errors.Add("Get Sprints", "This team cannot have any sprints yet."); } }
public async Task LoadSprint() { var response = await mainWindow.CommandQueryDispatcher.SendAsync <SprintResponse>($"/api/project-management/projects/{ProjectData.ProjectId}/sprints/{sprintId}"); if (response.StatusCode != System.Net.HttpStatusCode.OK) { MessageBox.Show($"Cannot get sprint from server. Http status code {response.StatusCode}"); return; } sprint = response.ResponseContent; SprintName.Text = sprint.Name; Status.Text = sprint.Status.ToString(); From.Text = sprint.Start.Date.ToShortDateString(); To.Text = sprint.End.Date.ToShortDateString(); switch (sprint.Status) { case Contracts.Sprint.Enums.SprintStatus.Planned: StartSprint.IsEnabled = true; FinishSprint.IsEnabled = false; break; case Contracts.Sprint.Enums.SprintStatus.InProgress: StartSprint.IsEnabled = false; FinishSprint.IsEnabled = true; break; case Contracts.Sprint.Enums.SprintStatus.Finished: StartSprint.IsEnabled = false; FinishSprint.IsEnabled = false; UnfinishedIssues.ItemsSource = sprint.UnfinishedIssues; break; default: break; } }
public void SortSprintTasks(SprintRequest request, SprintResponse response) { var sprintColumn = _uow.Repository <SprintColumnEntity>().GetOverview(); var xRefSprintTask = _uow.Repository <XRefSprintTaskEntity>().GetOverview(); int orderId = 0; foreach (var col in request.SortedSprintTasks.SprintBoardTasks) { foreach (var t in col.Items) { var xst = new XRefSprintTaskEntity { Id = t.Id, SprintId = request.SortedSprintTasks.SprintId, TaskId = (int)t.TaskId, ColumnId = col.ColumnId, OrderId = orderId }; _uow.Repository <XRefSprintTaskEntity>().Update(xst); orderId++; } } _uow.Save(); }
public async Task GetCurrentSprint(SprintRequest request, SprintResponse response) { await Task.Run(() => { var sprint = _uow.Repository <SprintEntity>().GetOverview().Where(b => b.TeamId == request.TeamId).OrderByDescending(s => s.SprintId).FirstOrDefault(); var sprintColumn = _uow.Repository <SprintColumnEntity>().GetOverview(); var xRefSprintTask = _uow.Repository <XRefSprintTaskEntity>().GetOverview(); var task = _uow.Repository <TaskEntity>().GetOverview(); var user = _uow.Repository <UserEntity>().GetOverview(); var effort = _uow.Repository <EffortEntity>().GetOverview(); if (sprint != null) { response.SprintName = sprint.SprintName; response.EndDate = sprint.EndDate; response.StartDate = sprint.StartDate; var tasks = (from xst in xRefSprintTask join sc in sprintColumn on xst.ColumnId equals sc.ColumnId join t in task on xst.TaskId equals t.Id join u in user on t.UserId equals u.Id into uX from u in uX.DefaultIfEmpty() join e in effort on t.EffortId equals e.EffortId where xst.SprintId == sprint.SprintId select new SprintTask { Id = xst.Id, ColumnId = sc.ColumnId, ColumnName = sc.ColumnName, OrderId = xst == null ? 0 : xst.OrderId, SprintId = xst == null ? 0 : xst.SprintId, TaskId = t == null ? 0 : t.Id, TaskName = t?.TaskName, UserName = u?.UserName, Effort = e.EffortName, CreatedDate = xst.CreatedDate }).ToList(); foreach (var s in sprintColumn) { var items = tasks.Where(t => t.ColumnId == s.ColumnId).OrderBy(i => i.OrderId).ThenBy(d => d.CreatedDate).ToList(); var sprintBoardTask = new SprintBoardTask { ColumnName = s.ColumnName, ColumnId = s.ColumnId, Items = _mapper.Map <List <SprintTaskVM> >(items) }; response.SprintBoardTasks.Add(sprintBoardTask); } response.TeamId = request.TeamId; response.SprintId = sprint.SprintId; } else { response.Message = $"There is no active sprint yet for team: {request.TeamId}"; } }); }