public async Task <ICommandResult> Handle(UpdateUserCommad request, CancellationToken cancellationToken) { request.Validate(); if (!request.IsValid) { return(new CommandResult(false, "Os dados do usuário estão incorretos.", request.Notifications)); } var usuarioEncontrado = await _userRepository.GetUserByUserCodeAsync(request.UserCode); if (usuarioEncontrado == null) { return(new CommandResult(true, "Usuario não encontrado", null)); } usuarioEncontrado.ChangeShoppingDay(request.ShoppingDay); var usuarioCadastrado = await _userRepository.UpdateUserAsync(usuarioEncontrado); if (usuarioCadastrado == null) { return(new CommandResult(false, "Problemas ao efetuar a atualização do usuário.", null)); } var userOperationDomainEvent = new UserOperationDomainEvent(EventAction.UPDATE, usuarioCadastrado); await _domainEntityEventHandler.Raise(userOperationDomainEvent); return(new CommandResult(true, "Usuário atualizado com sucesso!", request)); }
public async Task <ICommandResult> Handle(CreateUserCommand request, CancellationToken cancellationToken) { request.Validate(); if (!request.IsValid) { return(new CommandResult(false, "Os dados do usuário estão incorretos.", request.Notifications)); } var usuarioJaCadastrado = await _userRepository.VerifyUserAsync(request.UserCode); if (usuarioJaCadastrado) { return(new CommandResult(true, "Usuario Já cadastrado", "cadastrado")); } var provedor = request.Email.Split("@"); var email = new Email(request.Email, provedor[1]); var novoUsuario = new User(request.Name, email, request.UserCode, request.ShoppingDay); var usuarioCadastrado = await _userRepository.CreateUserAsync(novoUsuario); if (usuarioCadastrado == null) { return(new CommandResult(false, "Problemas ao efetuar o cadastro do usuário.", null)); } var createUserDomainEvent = new UserOperationDomainEvent(EventAction.INSERT, novoUsuario); await _domainEntityEventHandler.Raise(createUserDomainEvent); return(new CommandResult(true, "Usuário cadastrado com sucesso!", request)); }