Exemplo n.º 1
0
        public async Task <ValidationResult> Handle(RegistrarResponsavelCommand message, CancellationToken cancellationToken)
        {
            if (!message.EhValido())
            {
                return(message.ValidationResult);
            }

            var responsavel = new Responsavel(message.Id, message.Nome, message.Funcao, message.Email, message.Excluido);

            var responsavelExistente = await _responsavelRepository.ObterPorEmail(responsavel.Email.Endereco);

            if (responsavelExistente != null)
            {
                AdicionarErro("Este Email já está em uso.");
                return(ValidationResult);
            }

            _responsavelRepository.Adicionar(responsavel);

            responsavel.AdicionarEvento(new ResponsavelRegistradoEvent(message.Id, message.Nome, message.Funcao, message.Email, message.Excluido));

            return(await PersistirDados(_responsavelRepository.UnitOfWork));
        }