예제 #1
0
        public async Task <ISaida> AlterarCategoria(int idCategoria, CategoriaEntrada entrada)
        {
            // Verifica se as informações para alteração foram informadas corretamente
            if (entrada.Invalido)
            {
                return(new Saida(false, entrada.Mensagens, null));
            }

            var categoria = await _categoriaRepositorio.ObterPorId(idCategoria);

            // 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, entrada.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(entrada.IdUsuario, entrada.Nome, entrada.Tipo, entrada.IdCategoriaPai, idCategoria), CategoriaMensagem.Categoria_Com_Mesmo_Nome_Tipo);

            if (entrada.IdCategoriaPai.HasValue)
            {
                var categoriaPai = await _categoriaRepositorio.ObterPorId(entrada.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(entrada.Tipo, categoriaPai.Tipo, CategoriaMensagem.Tipo_Nao_Pode_Ser_Diferente_Tipo_Categoria_Pai);
                }
            }

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

            categoria.Alterar(entrada);

            _categoriaRepositorio.Atualizar(categoria);

            await _uow.Commit();

            return(new Saida(true, new[] { CategoriaMensagem.Categoria_Alterada_Com_Sucesso }, new CategoriaSaida(await _categoriaRepositorio.ObterPorId(categoria.Id))));
        }
예제 #2
0
        public async Task <IActionResult> CadastrarCategoria([FromBody, SwaggerParameter("Informações de cadastro da categoria.", Required = true)] CategoriaViewModel model)
        {
            var entrada = new CategoriaEntrada(
                base.ObterIdUsuarioClaim(),
                model.Nome,
                model.Tipo,
                model.IdCategoriaPai);

            return(new ApiResult(await _categoriaServico.CadastrarCategoria(entrada)));
        }
예제 #3
0
        public void Alterar(CategoriaEntrada entrada)
        {
            if (entrada.Invalido)
            {
                return;
            }

            this.Nome           = entrada.Nome;
            this.IdCategoriaPai = entrada.IdCategoriaPai;
            this.Tipo           = entrada.Tipo;
        }
예제 #4
0
        public async Task <IActionResult> AlterarCategoria(
            [FromQuery, SwaggerParameter("ID da categoria.", Required = true)] int idCategoria,
            [FromBody, SwaggerParameter("Informações para alteração de uma categoria.", Required = true)] CategoriaViewModel model)
        {
            var entrada = new CategoriaEntrada(
                base.ObterIdUsuarioClaim(),
                model.Nome,
                model.Tipo,
                model.IdCategoriaPai);

            return(new ApiResult(await _categoriaServico.AlterarCategoria(idCategoria, entrada)));
        }
예제 #5
0
        public Categoria(CategoriaEntrada entrada)
        {
            if (entrada.Invalido)
            {
                return;
            }

            this.IdUsuario      = entrada.IdUsuario;
            this.IdCategoriaPai = entrada.IdCategoriaPai;
            this.Nome           = entrada.Nome;
            this.Tipo           = entrada.Tipo;
        }
예제 #6
0
        public async Task <ISaida> CadastrarCategoria(CategoriaEntrada entrada)
        {
            // Verifica se as informações para cadastro foram informadas corretamente
            if (entrada.Invalido)
            {
                return(new Saida(false, entrada.Mensagens, null));
            }

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

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

                // Verifica se a categoria pai existe
                this.NotificarSeNulo(categoriaPai, string.Format(CategoriaMensagem.Categoria_Pai_Nao_Existe, entrada.IdCategoriaPai.Value));

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

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

            var categoria = new Categoria(entrada);

            await _categoriaRepositorio.Inserir(categoria);

            await _uow.Commit();

            return(new Saida(true, new[] { CategoriaMensagem.Categoria_Cadastrada_Com_Sucesso }, new CategoriaSaida(await _categoriaRepositorio.ObterPorId(categoria.Id))));
        }