public async Task <bool> Matricular(Cliente cliente, Guid planoId) { if (!cliente.EhValido()) { Notificar(cliente.ValidationResult); return(false); } if (await ClienteMatriculado(cliente)) { Notificar("Cliente já matriculado !"); return(false); } var planoDesconto = await _planoRepository.ObterDescontoPlano(planoId); if (planoDesconto == null) { Notificar("Plano sem desconto associado"); return(false); } cliente.AdicionarContrato(new Contrato(planoDesconto)); var hash = _passwordHash.GetHashPassword(cliente.Usuario.Senha); cliente.Usuario.AdicionarHashSenha(hash); if (await _clienteRepository.Adicionar(cliente)) { await _mediator.PublicarEvento( new CodigoConfirmacaoEvent(cliente.Usuario.Id, cliente.Email.Endereco, cliente.Nome)); } return(true); }