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)))); }
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))); }
public void Alterar(CategoriaEntrada entrada) { if (entrada.Invalido) { return; } this.Nome = entrada.Nome; this.IdCategoriaPai = entrada.IdCategoriaPai; this.Tipo = entrada.Tipo; }
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))); }
public Categoria(CategoriaEntrada entrada) { if (entrada.Invalido) { return; } this.IdUsuario = entrada.IdUsuario; this.IdCategoriaPai = entrada.IdCategoriaPai; this.Nome = entrada.Nome; this.Tipo = entrada.Tipo; }
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)))); }