Exemplo n.º 1
0
        public async Task <ISaida> AlterarCategoria(AlterarCategoriaEntrada alterarEntrada)
        {
            // Verifica se as informações para alteração foram informadas corretamente
            if (alterarEntrada.Invalido)
            {
                return(new Saida(false, alterarEntrada.Mensagens, null));
            }

            var categoria = await _categoriaRepositorio.ObterPorId(alterarEntrada.IdCategoria, true);

            // Verifica se a categoria existe
            this.NotificarSeNulo(categoria, CategoriaMensagem.Id_Categoria_Nao_Existe);

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            // Verifica se a categoria pertece ao usuário informado.
            this.NotificarSeDiferentes(categoria.IdUsuario, alterarEntrada.IdUsuario, CategoriaMensagem.Categoria_Alterar_Nao_Pertence_Usuario);

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            // Verifica se já existe uma categoria com o mesmo nome e mesmo tipo
            this.NotificarSeVerdadeiro(
                await _categoriaRepositorio.VerificarExistenciaPorNomeTipo(alterarEntrada.IdUsuario, alterarEntrada.Nome, alterarEntrada.Tipo, alterarEntrada.IdCategoria),
                CategoriaMensagem.Categoria_Com_Mesmo_Nome_Tipo);

            if (alterarEntrada.IdCategoriaPai.HasValue)
            {
                var categoriaPai = await _categoriaRepositorio.ObterPorId(alterarEntrada.IdCategoriaPai.Value);

                // Verifica se a categoria pai existe
                this.NotificarSeNulo(categoriaPai, CategoriaMensagem.Categoria_Pai_Nao_Existe);

                if (categoriaPai != null)
                {
                    // Verificar se o tipo da categoria é igual ao tipo da categoria pai
                    this.NotificarSeDiferentes(alterarEntrada.Tipo, categoriaPai.Tipo, CategoriaMensagem.Tipo_Nao_Pode_Ser_Diferente_Tipo_Categoria_Pai);
                }
            }

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            categoria.Alterar(alterarEntrada);

            _categoriaRepositorio.Atualizar(categoria);

            await _uow.Commit();

            return(_uow.Invalido
                ? new Saida(false, _uow.Mensagens, null)
                : new Saida(true, new[] { CategoriaMensagem.Categoria_Alterada_Com_Sucesso }, new CategoriaSaida(await _categoriaRepositorio.ObterPorId(categoria.Id))));
        }
Exemplo n.º 2
0
        public void Alterar(AlterarCategoriaEntrada alterarEntrada)
        {
            if (alterarEntrada.Invalido || alterarEntrada.IdCategoria != this.Id)
            {
                return;
            }

            this.Nome           = alterarEntrada.Nome;
            this.IdCategoriaPai = alterarEntrada.IdCategoriaPai;
            this.Tipo           = alterarEntrada.Tipo;
        }
Exemplo n.º 3
0
        public async Task <ISaida> AlterarCategoria([FromBody, SwaggerParameter("Informações para alteração de uma categoria.", Required = true)] AlterarCategoriaViewModel model)
        {
            var alterarEntrada = new AlterarCategoriaEntrada(
                model.IdCategoria,
                model.Nome,
                model.IdCategoriaPai,
                model.Tipo,
                base.ObterIdUsuarioClaim());

            return(await _categoriaServico.AlterarCategoria(alterarEntrada));
        }
        public void Nao_Deve_Alterar_Categoria_Com_Parametros_Invalidos()
        {
            var idUsuario = 0;

            var alterarEntrada = new AlterarCategoriaEntrada(1, string.Empty, 1, "Z", idUsuario);

            _categoriaServico = Substitute.For <CategoriaServico>(_categoriaRepositorio, _uow);

            var saida = _categoriaServico.AlterarCategoria(alterarEntrada).Result;

            Assert.IsTrue(!saida.Sucesso && saida.Mensagens.Any(x => x == Mensagem.Id_Usuario_Invalido), string.Join(", ", saida.Mensagens));
        }
        public void Nao_Deve_Alterar_Categoria_Com_Id_Inexistente()
        {
            var idUsuario   = 1;
            var idCategoria = 1;

            _categoriaRepositorio.ObterPorId(idCategoria, true)
            .Returns((Categoria)null);

            var alterarEntrada = new AlterarCategoriaEntrada(idCategoria, "Categoria 1", null, TipoCategoria.Debito, idUsuario);

            _categoriaServico = Substitute.For <CategoriaServico>(_categoriaRepositorio, _uow);

            var saida = _categoriaServico.AlterarCategoria(alterarEntrada).Result;

            Assert.IsTrue(!saida.Sucesso && saida.Mensagens.Any(x => x == CategoriaMensagem.Id_Categoria_Nao_Existe), string.Join(", ", saida.Mensagens));
        }
        public void Deve_Alterar_Categoria()
        {
            var idUsuario   = 1;
            var idCategoria = 1;

            var categoria = new Categoria(new CadastrarCategoriaEntrada(idUsuario, "Categoria 1", TipoCategoria.Debito));

            typeof(Categoria).GetProperty("Id").SetValue(categoria, idCategoria);

            _categoriaRepositorio.ObterPorId(idCategoria, true)
            .Returns(categoria);

            var alterarEntrada = new AlterarCategoriaEntrada(idCategoria, "Categoria 1 alterada", null, TipoCategoria.Credito, idUsuario);

            _categoriaServico = Substitute.For <CategoriaServico>(_categoriaRepositorio, _uow);

            var saida = _categoriaServico.AlterarCategoria(alterarEntrada).Result;

            Assert.IsTrue(saida.Sucesso && saida.Mensagens.Any(x => x == CategoriaMensagem.Categoria_Alterada_Com_Sucesso), string.Join(", ", saida.Mensagens));
        }