示例#1
0
        //public async Task<bool> AtualizarNome(RegistrarAplicativoCommand request)
        //{
        //    if (!request.Valido()) return false;

        //    var aplicativo = await _aplicativoRepository.ObterPorIdComTracking(request.Id);
        //    aplicativo.AtualizarNome(request.Nome);
        //    _aplicativoRepository.Update(aplicativo);

        //    await PersistirDados(_aplicativoRepository.UnitOfWork);

        //    return true;
        //}

        //public async Task<bool> AtualizarDataLancamento(RegistrarAplicativoCommand request)
        //{
        //    if (!request.Valido()) return false;

        //    var aplicativo = await _aplicativoRepository.ObterPorIdComTracking(request.Id);
        //    aplicativo.AtualizarDataLancamento(DateTime.Parse(request.DataLancamento));
        //    _aplicativoRepository.Update(aplicativo);

        //    await PersistirDados(_aplicativoRepository.UnitOfWork);

        //    return true;
        //}

        //public async Task<bool> AtualizarPlataforma(RegistrarAplicativoCommand request)
        //{
        //    if (!request.Valido()) return false;

        //    var aplicativo = await _aplicativoRepository.ObterPorIdComTracking(request.Id);
        //    aplicativo.AtualizarPlataforma(request.TipoPlataforma);
        //    _aplicativoRepository.Update(aplicativo);

        //    await PersistirDados(_aplicativoRepository.UnitOfWork);

        //    return true;
        //}

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


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

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

            aplicativo.AtualizarNome(request.Nome);
            aplicativo.AtualizarDataLancamento(DateTime.Parse(request.DataLancamento));
            aplicativo.AtualizarPlataforma(request.TipoPlataforma);

            _aplicativoRepository.Update(aplicativo);

            var validacaoSalvar = await PersistirDados(_aplicativoRepository.UnitOfWork);

            _commandResult.AddFluentValidation(validacaoSalvar);
            _commandResult.AddResult(aplicativo.Id);

            return(_commandResult);
        }
示例#2
0
        public async Task <ICommandResult> Handle(AdicionarDesenvolvedorResponsavelCommand 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 aplicativoResponsavel = await _aplicativoRepository.ObterAplicativoResponsavel(request.IdDesenvolvedor);

            if (aplicativoResponsavel != null)
            {
                AdicionarErro("Id", $@"O Desenvolvedor: {desenvolvedor.Nome}, com o Id informado, já é responsável pelo Aplicativo: {aplicativoResponsavel.Nome}");
                _commandResult.AddFluentValidation(ValidationResult);
                return(_commandResult);
            }

            aplicativo.RemoverResponsavel();
            aplicativo.AdicionarResponsavel(desenvolvedor);
            _aplicativoRepository.Update(aplicativo);

            var validacaoSalvar = await PersistirDados(_aplicativoRepository.UnitOfWork);

            _commandResult.AddFluentValidation(validacaoSalvar);
            if (validacaoSalvar.IsValid)
            {
                _commandResult.AddResult($@"Desenvolvedor {desenvolvedor.Nome}, agora é responsável pelo aplicativo {aplicativo.Nome}.");
            }

            return(_commandResult);
        }