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)))); }
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; }
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)); }