Dificuldade em um workflow de permissoes

Ola, estou querendo criar uma Tabela (chamada areas no caso), que guarda o nome de sí mesma, o nome do módulo (que vem de uma tabela de modulos), e 3 tipos de permissões (se pode ler, alterar ou excluir)
duvida1

Como pode ser visto no formulário o usuário vai clicar em (1), em seguida vai aparecer o grupo de módulos (2) que estava oculto. Vai marcar um, dois ou tres checkboxes, e ao clicar no ultimo botão + (3) será gravado.
O fluxo de design está ok…está aparecendo… a minha dúvida é como gravar isso, como criar o workflow, pois eu preciso que siga algumas regras:

  • Eu posso ter várias áreas com o mesmo nome, mas módulos diferentes
  • Eu posso ter varios módulos, mas não da mesma área
  • eu não posso ter uma linha com o nome da área e módulo repetidos.

Então por exemplo… eu posso ter:
area1 modulo1
area1 modulo2
area5 modulo1

mas não posso ter:
area6 modulo2
area6 modulo2

Quando eu clicar no botão + (que está marcado com um 3 vermelho na imagem), eu tenho que criar uma linha na tabela com o nome da área, o nome do módulo e as permissões… Porém antes de gravar, eu preciso saber se já tiver uma linha com o nome da área e modulos iguais ao do formulário que estou cadastrando, ele não deixar cadastrar, e eu conseguir mostrar uma mensagem de alerta dizendo que já existe essa permissão e não gravar, e voltar para que eu possa alterar…

Alguém poderia dar uma luz ?

Se eu entendi seu problema, eu acho que você resolve criando um campo de primary key ou seja um campo de valor único.

Então… não sei se seria bem isso… tipo… na tabela o campo nome_area é texto, e o campo módulo já está referenciando uma tabela chamada modulos, onde eu gravo o nome de cada modulo que eu vou criar…
O problema maior mesmo, acho que está no workflow… porque eu não estou conseguindo criar um workflow corretamente, da forma que eu preciso…
Tipo, quando eu clicar no botão (3), que é o segundo botão de +, eu preciso gravar na tabela o nome da área que eu coloquei no campo input, e na mesma linha, eu preciso gravar o nome do módulo que eu selecionei no dropdown, junto com as permissoes dos checkboxes que eu selecionei…
Mas pra fazer isso, eu preciso antes verificar se já existe um nome de área com esse mesmo módulo… se houver ele não pode gravar…
Só pode gravar uma nova linha se o nome da área e do módulo forem diferentes de outras combinações já existentes…
e é esse “When button + is clicked” que eu não to conseguindo pensar bem como fazer…

Bom,
Eu nao cheguei a fazer o teste mais tenta fazer o seguinte.

Quando você cria o workflow do botão de quando ele tem a opção Only When ou seja “Somente quando”, dentro deste campo você coloca Do Search For, e ele irá abrir um campo te pedindo o tabela do seu banco de dados.
E após escolher o nome da tabela você vai fazer a condição.
nome <> input name’s value

vou tentar mais tarde… assim que testar… aviso aqui se deu certo. Valeu…

apaz!! eai meu amigo!! conseguiu???

Oi @claudinei.pr , seja bem vindo :slight_smile:

Pra isso você cria 2 gatilhos pro mesmo botão.
No primeiro gatilho você faz uma busca por dados iguais, se voltar vazia, aí você salva.
No segundo gatilho você faz uma busca por dados iguais, se voltar algum dado, aí você não salva, ou altera esse dado que encontrou, ou abre um popup, enfim, aí você diz o que quer fazer.

Veja abaixo:

Abraços e sucesso!

Boa noite!
Estou tentando replicar a mesma lógica para checar se o usuário já existe no banco de dados, porém sem sucesso! Ele continua executando o fluxo normal do botão cadastrar. Pode me ajudar?

Marcos, você precisa criar um fluxo “do a search for…” com os critérios que você deseja comparar. Após isso você pode usar uma ação simples de :count. A partir daí você define o que deseja fazer se a contagem vier vazia ou tiver algum resultado ( >0 ).

Não sei se fui muito claro, mas acredito que seguindo essa lógica você resolve fácil!
Qualquer coisa avisa que tento explicar melhor.

1 Like

Muito obrigado pela rápida resposta! Consegui acompanhar a lógica e criar o fluxo da maneira como queria.

1 Like