Пример #1
0
        public async Task <DepartmentProjection> RemoveDepartment(Guid id)
        {
            var command = new RemoveDepartmentCommand(id);
            var result  = await _commandDispatcher.Execute(command);

            return(result);
        }
Пример #2
0
 public void Remove(IWorkContext context, RemoveDepartmentCommand command)
 {
     //Never.StructTuple
     this.ApplyEvent(new RemoveDepartmentEvent
     {
         AggregateId = this.AggregateId,
         CreateDate  = context.WorkTime,
         Creator     = context.GetWorkerName(),
         Version     = this.Version,
     });
 }
Пример #3
0
        public void Handle(RemoveDepartmentCommand message)
        {
            if (!message.IsValid())
            {
                NotifyValidationErrors(message);
                return;
            }
            var department = _departmentRepository.GetById(message.Id);

            _departmentRepository.Remove(department.Id);

            if (Commit())
            {
                Bus.RaiseEvent(new DepartmentRemovedEvent(message.Id));
            }
        }
Пример #4
0
        public async void given_remove_department_command_command_dispatcher_should_get_same_command_created_in_controller()
        {
            var mockAgg = new DepartmentControllerMockAggregate();

            var controller = mockAgg.DepartmentControllerFactory();

            var input = new Guid();

            var command = new RemoveDepartmentCommand(input);

            mockAgg.setup_dispatcher_to_verify_removeDepartmentCommands_are_the_same(input);

            var result = await controller.RemoveDepartment(input);

            //Assert
            Assert.IsType <DepartmentProjection>(result);
            Assert.Equal(result.Id, input);
        }
Пример #5
0
        public async Task <ActionResult> RemoveDepartment(Guid?parentId, List <Guid> id)
        {
            if (id == null || id.Count == 0)
            {
                return(NotFound());
            }

            var command = new RemoveDepartmentCommand()
            {
                DepartmentIds = id
            };

            if (await Mediator.Send(command) == null)
            {
                return(BadRequest());
            }

            return(Json(new { id = parentId }));
        }
        public ICommandHandlerResult Execute(ICommandContext context, RemoveDepartmentCommand command)
        {
            var root = context.GetAggregateRoot(command.AggregateId, () => departmentRepository.Rebuild(command.AggregateId));

            if (root == null)
            {
                return(context.CreateResult(CommandHandlerStatus.NotExists));
            }

            root.Remove(context, command);
            if (root.CanNotCommit())
            {
                return(context.CreateResult(CommandHandlerStatus.NothingChanged));
            }

            //删除部门的组
            var groups = this.groupRepository.RebuildRoots(command.AggregateId);

            if (groups != null && groups.Any())
            {
                var deletes = new List <GroupAggregateRoot>(groups.Count());
                foreach (var r in groups)
                {
                    r.Remove(context, null);
                    if (r.CanCommit())
                    {
                        deletes.Add(r);
                    }
                }

                if (deletes.Any())
                {
                    this.groupRepository.Remove(deletes);
                }
            }

            //删除部门的权限
            var resources = this.departmentResourceRepository.RebuildRootUsingDepartId(command.AggregateId);

            if (resources != null && resources.Any())
            {
                var deletes = new List <DepartmentResourceAggregateRoot>(resources.Count());
                foreach (var r in resources)
                {
                    r.Remove(context);
                    if (r.CanCommit())
                    {
                        deletes.Add(r);
                    }
                }

                if (deletes.Any())
                {
                    this.departmentResourceRepository.Remove(deletes);
                }
            }

            if (departmentRepository.Remove(root) <= 0)
            {
                throw new RepositoryExcutingException("执行失败,请稍后再试");
            }

            return(context.CreateResult(CommandHandlerStatus.Success));
        }
        public void Remove(string id)
        {
            var removeCommand = new RemoveDepartmentCommand(id);

            Bus.SendCommand(removeCommand);
        }