public async Task <ICommandResult> Handle(CadastrarFuncionarioCommand command, CancellationToken cancellationToken) { var result = new CommandResult(false, "Não foi possível cadastrar Funcionário."); if (!command.IsValid()) { return(result.AddNotifications("Dados Inválidos!")); } if (service.ExisteEmail(command.Email)) { return(result.AddNotifications("Email já cadastrado")); } if (service.ExisteCPF(command.Cpf)) { return(result.AddNotifications("CPF já cadastrado")); } var funcionario = new Funcionario(); try { funcionario = FuncionarioAdapter.CadastrarFuncionarioCommandToFuncionario(command); service.Adicionar(funcionario); } catch (Exception ex) { return(new CommandResult(false, $"Ocorreu um erro ao cadastrar Funcionário. Erro.: {ex.Message}")); } new Thread(() => cadastrarFuncionarioEventHandler.Handle( FuncionarioAdapter.FuncionarioToCadastrarFuncionarioEvent(funcionario), CancellationToken.None) ).Start(); if (!await service.SaveChanges()) { return(result); } return(new CommandResult(true, "Funcionário cadastrado com sucesso!")); }