Esempio n. 1
0
        public async Task <ICommandResult> Handle(VincularAplicativoDesenvolvedorCommand request,
                                                  CancellationToken cancellationToken)
        {
            if (!request.Valido())
            {
                _commandResult.AddFluentValidation(request.ValidationResult);
                return(_commandResult);
            }

            var aplicativo = await _aplicativoRepository.ObterPorIdComTracking(request.IdAplicativo);

            if (aplicativo == null)
            {
                AdicionarErro("Id", "Aplicativo não encontrado com este Id.");
                _commandResult.AddFluentValidation(ValidationResult);
                return(_commandResult);
            }

            var desenvolvedor = await _desenvolvedorRepository.ObterPorIdComTracking(request.IdDesenvolvedor);

            if (desenvolvedor == null)
            {
                AdicionarErro("Id", "Desenvolvedor não encontrado com este Id.");
                _commandResult.AddFluentValidation(ValidationResult);
                return(_commandResult);
            }

            var permiteVincular = await _aplicativoRepository.PermiteVincularDesenvolvedor(request.IdDesenvolvedor);

            if (!permiteVincular)
            {
                AdicionarErro("Id", "O Desenvolvedor informado já está vinculado ao máximo(3) de Aplicativos permitidos.");
                _commandResult.AddFluentValidation(ValidationResult);
                return(_commandResult);
            }

            _aplicativoRepository.VincularDesenvolvedor(aplicativo, desenvolvedor);
            _aplicativoRepository.Update(aplicativo);

            var validacaoSalvar = await PersistirDados(_aplicativoRepository.UnitOfWork);

            _commandResult.AddFluentValidation(validacaoSalvar);

            if (validacaoSalvar.IsValid)
            {
                _commandResult.AddResult($@"Desenvolvedor {desenvolvedor.Nome}, agora está vinculado ao aplicativo {aplicativo.Nome}.");
            }

            return(_commandResult);
        }
Esempio n. 2
0
 public async Task <ICommandResult> PutVincularDesenvolvedor(VincularAplicativoDesenvolvedorCommand command)
 {
     return(await _mediatorHandler.EnviarComandoGenerico(command));
 }