public Sprint(string name, Period period, Guid teamId) : this() { var errors = new Dictionary <string, string[]>(); if (string.IsNullOrWhiteSpace(name)) { errors.Add(nameof(Name), new[] { $"{nameof(Name)} must not be empty" }); } if (period == null) { errors.Add(nameof(Period), new[] { $"{nameof(Period)} must not be empty" }); } if (teamId == Guid.Empty) { errors.Add(nameof(TeamId), new[] { $"{nameof(TeamId)} must not be empty" }); } if (errors.Any()) { throw new DomainException(errors); } Name = name; Period = period; TeamId = teamId; WorkLoad = WorkLoad.EmptyWorkLoad(); DomainEvents.Add(new SprintCreatedEvent(this)); }
public void AddWorkItem(WorkItem workItem) { if (_workItems.Contains(workItem)) { return; } var originalEstimate = WorkLoad.TotalItemsOriginalEstimate + workItem.Effort.OriginalEstimate; var remaining = WorkLoad.RemainingWorkHours + workItem.Effort.Remaining; var completed = WorkLoad.CompletedWorkHours + workItem.Effort.Completed; var completedPercentage = 100 * completed / (remaining + completed); WorkLoad = new WorkLoad(completedPercentage, remaining, completed, originalEstimate); DomainEvents.Add(new AddedWorkItemToSprint(Id, workItem.Id, workItem.Effort.OriginalEstimate, workItem.Effort.Remaining, workItem.Effort.Completed)); }