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); }
public async Task <ICommandResult> PutVincularDesenvolvedor(VincularAplicativoDesenvolvedorCommand command) { return(await _mediatorHandler.EnviarComandoGenerico(command)); }