public SprintFinished(Guid id, SprintStatus status, DateTime end, IReadOnlyCollection <Guid> unfinishedIssueIds) { Id = id; Status = status; End = end; UnfinishedIssueIds = unfinishedIssueIds; }
public SprintListItem(Guid id, string name, DateTime start, DateTime end, SprintStatus status) { Id = id; Name = name; Start = start; End = end; Status = status; }
public Sprint(Guid id, Guid projectId, string name, DateTime startDate, DateTime endDate) : base(id) { ProjectId = projectId; Name = name; StartDate = startDate; EndDate = endDate; Status = SprintStatus.Planned; }
public SprintCreated(Guid id, Guid projectId, string name, DateTime start, DateTime end, SprintStatus status) { Id = id; ProjectId = projectId; Name = name; Start = start; End = end; Status = status; }
public SprintResponse(Guid id, string name, DateTime start, DateTime end, SprintStatus status, IReadOnlyCollection <UnfinishedIssue> unfinishedIssues, long version) { Id = id; Name = name; Start = start; End = end; Status = status; UnfinishedIssues = unfinishedIssues; Version = version; }
public IEnumerable <Sprint> ReadSprints(Identity projectId, SprintStatus status) { if (projectId.IsBlankIdentity()) { throw CreateInvalidEntityException(); } var sprints = _sprintCollection .Find(x => x.ProjectId == projectId.ToPersistenceIdentity() && x.Status == status) .ToEnumerable(); return(sprints.Select(x => x.ToDomainEntity())); }
public Sprint( Identity id, Identity projectId, string name, Tuple <DateTime, DateTime> timeSpan, string goal, SprintStatus status, IEnumerable <Identity> documents) : base(id) { ProjectId = projectId; Name = name; TimeSpan = timeSpan; Goal = goal; Status = status; Documents = documents; }
public async Task FinishSprint(IIssueSearcher issueSearcher) { if (Status != SprintStatus.InProgress) { throw new CannotChangeSprintStatus(Id, Status, SprintStatus.Finished, DomainInformationProvider.Name); } var currentDate = DateTime.UtcNow.Date; if (EndDate.Date != currentDate) { EndDate = currentDate; } Status = SprintStatus.Finished; var unfinishedIssueIds = await issueSearcher.FindUnfinishedIssuesForSprint(ProjectId, Id); Update(new SprintFinished(Id, Status, EndDate, unfinishedIssueIds)); }
public IEnumerable <SprintBacklog> ReadSprintBacklogs(Identity projectId, SprintStatus status) { if (projectId.IsBlankIdentity()) { throw CreateInvalidEntityException(); } var sprints = _sprintCollection .Find(x => x.ProjectId == projectId.ToPersistenceIdentity() && x.Status == status) .ToEnumerable(); return(sprints.Select(x => new SprintBacklog(x.Id.ToDomainIdentity(), x.PlannedTasks.Select(t => t.ToDomainIdentity()), x.CompletedTasks.Select(t => t.ToDomainIdentity()), x.Backlog.Select(t => new SprintBacklog.WorkTaskWithStatus( t.WorkTaskId.ToDomainIdentity(), t.ParentTaskId.ToDomainIdentity(), t.Status))))); }
public async Task StartSprint(ISprintSearcher sprintSearcher) { if (Status != SprintStatus.Planned) { throw new CannotChangeSprintStatus(Id, Status, SprintStatus.InProgress, DomainInformationProvider.Name); } var sprints = await sprintSearcher.GetSprints(ProjectId); if (sprints.Any(x => x.Status == SprintStatus.InProgress)) { throw new CannotStartSprintWhenAnyOtherIsNotFinished(Id); } var currentDate = DateTime.UtcNow.Date; if (StartDate.Date != currentDate) { StartDate = currentDate; } Status = SprintStatus.InProgress; Update(new SprintStarted(Id, Status, StartDate)); }
public CannotChangeSprintStatus(Guid sprintId, SprintStatus currentStatus, SprintStatus expectedStatus, string domainName) : base(domainName, $"Cannot change status of sprint with id {sprintId} to {expectedStatus.ToString()} because of current status. [ {currentStatus.ToString()} ]") { }
public SprintStarted(Guid id, SprintStatus status, DateTime start) { Id = id; Status = status; Start = start; }