public async Task <ProjectUserMessage> Handle(RemoveUserProjectCommand request, CancellationToken cancellationToken) { var userDomain = _UserRepository.GetById(request.UserId).Result.ToDomain <User>(_Mapper); var projectDomain = _ProjectRepository.GetById(request.ProjectId).Result.ToDomain <Project>(_Mapper); projectDomain.Validate(); //projectDomain.RemoveUser(userDomain); #region Persistence await _ProjectRepository.RemoveUser(projectDomain.ToModel <Command.UserProject>(_Mapper)); await _UnitOfWork.Commit(); #endregion #region Bus var addUserProjectMessage = new Message(); addUserProjectMessage.MessageType = "UpdateUserProject"; var response = new ProjectUserMessage { Project = projectDomain.ToQueryModel <Query.Project>(_Mapper), User = userDomain.ToQueryModel <UserQuery.User>(_Mapper) }; addUserProjectMessage.SetData(response); await _SendEndpointProvider.Send(addUserProjectMessage, cancellationToken); #endregion return(response); }
public async Task <AddUserProjectPayload> RemoveUserProject( UserProjectInput input, [Service] IServiceProvider serviceProvider, CancellationToken cancellationToken) { var removeUserProjectCommand = new RemoveUserProjectCommand() { ProjectId = input.ProjectId, UserId = input.UserId }; using (var scope = serviceProvider.CreateScope()) { var mediator = scope.ServiceProvider.GetRequiredService <IMediator>(); try { var response = await mediator.Send(removeUserProjectCommand, cancellationToken); return(new AddUserProjectPayload(response.Project, response.User)); } catch (ValidationException e) { var userErrors = new List <UserError>(); e.Message.Split(";").ForAll(item => { userErrors.Add(new UserError(item, item)); }); return(new AddUserProjectPayload(userErrors)); } } }
public void ProjectCommandHandler_Handle_RemoveUserProjectCommand_ValidUserNotInProject() { IRequestHandler <RemoveUserProjectCommand, bool> handler = GetCommandHandlerInstance(); var commandData = new RemoveUserProjectCommand() { ProjectId = FacebookId, UserId = GatesId }; Action handle = () => handler.Handle(commandData, default).Wait(); handle.Should().Throw <ValidationException>(); }
public void ProjectCommandHandler_Handle_RemoveUserProjectCommand_ValidUserValidProject() { IRequestHandler <RemoveUserProjectCommand, bool> handler = GetCommandHandlerInstance(); var commandData = new RemoveUserProjectCommand() { ProjectId = FacebookId, UserId = MarkId }; var handle = handler.Handle(commandData, default).Result; handle.Should().BeTrue(); }