Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }