protected override ExecutionResult ExecuteCommand(UpdateActivityCommand command)
        {
            var entityId     = command.Id;
            var currentState = _session.Repository.Get(entityId);
            var agg          = ActivityAggregationRoot.ReconstructFrom(currentState);
            var descr        = command.Description;

            agg.UpdateTask(Activity.Patch.FromDescription(descr));
            var task = agg.GetChange();

            _session.Repository.Add(task);
            _session.SaveChanges();
            Publisher.Publish(agg.GetEvents());

            return(new ExecutionResult(true));
        }
예제 #2
0
        public void Check_TaskAggregation_UpdateTaskStatus()
        {
            //given
            var descriptionText = "Given Description";
            var id        = EntityId.From(1u);
            var newStatus = 2;
            var oldState  = Activity.From(Description.From(descriptionText), id, EntityId.From(1u),
                                          ActivityStatus.From(1));

            //when
            var agg = ActivityAggregationRoot.ReconstructFrom(oldState);

            agg.ChangeTaskStatus(ActivityStatus.From(newStatus));
            var changes = agg.GetChange();

            //then
            Assert.NotEqual(changes, oldState);
        }
예제 #3
0
        public void Check_TaskAggregation_UpdateTaskStatus_invalid()
        {
            //given
            var descriptionText = "Given Description";
            var id        = EntityId.From(1u);
            var newStatus = 6;

            var oldState = Activity.From(Description.From(descriptionText), id, EntityId.From(1u),
                                         ActivityStatus.From(1));

            //when
            var agg = ActivityAggregationRoot.ReconstructFrom(oldState);

            agg.ChangeTaskStatus(ActivityStatus.From(newStatus));

            //then
            Assert.False(agg.ValidationResults.IsValid);
        }
예제 #4
0
        protected override ExecutionResult ExecuteCommand(ChangeActivityStatusCommand command)
        {
            var currentState = _session.Repository.Get(command.Id);
            var agg          = ActivityAggregationRoot.ReconstructFrom(currentState);

            agg.ChangeTaskStatus(command.NewStatus);
            var task      = agg.GetChange();
            var isSucceed = false;

            if (agg.ValidationResults.IsValid)
            {
                _session.Repository.Add(task);
                _session.SaveChanges();
                Publisher.Publish(agg.GetEvents());
                isSucceed = true;
            }

            return(new ExecutionResult(isSucceed, agg.ValidationResults.Errors.ToImmutableList()));
        }