Criando um CRUD com THF (7/7) - Apagando um ou mais clientes

Jhosef Marks
TOTVS Developers
Published in
5 min readMay 9, 2019

Olá mundo!

Objetivo

Incluir em nossas páginas de listagem e visualização a opção de apagar o cadastro do cliente de nossa base. Vamos trabalhar com exclusão única e em lote.

Lista de posts da série THF CRUD:

Pré-requisitos

Esse é o último post (oficial) da série, então, se você não leu nenhum dos posts anteriores e não está familiarizado com o projeto e não tiver familiaridade com o THF, pode sentir alguma dificuldade. Estou tentando ser o mais didático possível para diminuir isso, mas o ideal é que você leia os posts anteriores para ter uma compreensão maior do projeto.

Mas se quiser continuar direto do último post, basta clonar o projeto com o que já foi implementado.

git clone --branch post-6 https://github.com/jhosefmarks/sample-thf-crud-customers.git <sua-pasta-de-trabalho>

Passo 1 — Apagando um cliente

Na lata? De cara já? Sem rodeios? Sim, a gente só precisa adicionar uma ação na nossa lista de ações da tabela e criar a função que chama o endpoint que apaga o cadastro de cliente.

Abra o arquivo customer-list.component.ts e faça as alterações conforme o exemplo a seguir.

Ação para apagar o cadastro do cliente
Apagando o cadastro do cliente

Legal! Nossa ação da tabela ficou em vermelho, mostrando para o usuário que é uma ação perigosa; mas será que apagamos mesmo o cadastro? O registro ainda está em nossa tabela e se mandarmos remover novamente o cadastro, teremos uma resposta bem diferente da anterior.

Mensagem de erro ao tentar apagar o cadastro do cliente

O cadastro foi apagado no backend, mas ainda está sendo exibido na tabela. Precisamos resolver isso! Podemos refazer a requisição e popular a tabela novamente, o que custaria mais uma requisição e dar um refresh na página toda. Ou podemos simplesmente remover o cliente da nossa tabela também. Não sei vocês, mas eu acho essa última opção muito mais atraente e é o que vamos implementar.

Apagando o registro da tabela da página
Registro apagado da tabela

Agora sim, fizemos a requisição para apagar o cadastro e na confirmação da requisição também removemos o registro da nossa tabela.

Passo 2 — Apagando cadastros em lote

Bom, antes de iniciar a lógica dessa nova funcionalidade, nós, primeiro, vamos adicionar os checkboxs de seleção em nossa tabela e uma variável de referência. Assim, poderemos pegar os clientes selecionados pelo usuário.

Vamos abrir o arquivo customer-list.component.html e atualizar a nossa tabela.

Propriedade t-checkbox configurada e referência adicionada

Só com isso já teremos a seguinte alteração em nossa tabela, possibilitando a seleção de um ou mais clientes, bem como a seleção de todos os clientes com um único clique:

Tabela com seleção

Bom, agora é só pegar os itens selecionados e enviar para o nosso backend.

Para isso, vamos adicionar uma nova ação em nossa página: pegar a referência da tabela da nossa página e criar uma função para enviar os ids dos clientes selecionados em nossa tabela.

Vamos voltar para o arquivo customer-list.component.ts.

Nova função para enviar a lista de clientes que devem ser apagados

Olha, nossa função para apagar cadastros em lote funcionando maravilhosamente!

Apagando cadastros em lote

Passo 3 — Apagando o cadastro na tela de visualização

Para finalizar, vamos incluir nossa função para apagar o cadastro de um cliente na nossa página de visualização também.

Vamos acessar o arquivo customer-view.component.ts e fazer a alterações necessárias.

Criando a função remove na página de visualização
Apagando o cadastro do cliente a partir da tela de visualização

Só de incluir a função remove na página, o componente thf-page-detail já sabe que precisa adicionar um novo botão na tela.

Conclusão

Com isso fechamos nosso CRUD. Nós implementamos todas as quatro operações em nosso projeto e chegamos ao fim na nossa primeira série.

Se você teve paciência e chegou até aqui, PARABÉNS!!! ❤️

Congrats via GIPHY

Mas calma aí… Tem muita coisa que poderia ter sido diferente.

Sim, existem muitas coisas que poderiam ter sido diferentes, outros caminhos poderiam ser tomados e por aí em diante… Mas a ideia foi ser o mais didático possível e demonstrar algumas funcionalidades do THF de forma simples - principalmente sobre os componentes de página e de tabela.

Espero que tenham gostado e muito obrigado para os que acompanharam até aqui!

Dont's stop me now

E para você que acompanhou o projeto até aqui, tem surpresa a caminho!

  • BÔNUS: Refatorando o projeto e atualizando a versão do THF 😍
  • BÔNUS: Publicando nosso projeto (Heroku) 😻

E agora, José?

Essa foi só a nossa primeira série sobre o THF. Em breve, teremos outras séries que vão mostrar que podemos reduzir ainda mais nosso código e aproveitar ainda mais a produtividade e a qualidade que o THF pode proporcionar para você.

Não deixe de continuar os estudos, acompanhe os release notes para ficar por dentro das novidades do THF.

Melhore nosso projeto e envie um Pull Request para ajudar outras pessoas que também estão acompanhando a série. Caso tenhamos algumas PRs, podemos ter um artigo só analisando as PRs propostas.

Você pode encontrar os fontes do projeto no meu github.

Referências e dicas de leitura

--

--

Jhosef Marks
TOTVS Developers

Desenvolvedor por vocação, e front end por opção. Projeto atual: http://thf.totvs.com.br