Skip to main content

Programação em C# - Na API de integração

IMPORTANTE: as variáveis e métodos descritos aqui só funcionarão na programação C# na API de integração. Para a programação C# nas Regras de Negócio de um formulário clique aqui

O agilityflow permite a customização da API em C#, além de já disponibilizar diversas bibliotecas e funções para facilitar sua programação, incluindo acesso a dados, validações, envio de e-mail, notificação, entre outras.

Por enquanto o C# está disponível para a API de POST e a ideia principal é que seja uma forma de facilitar o mapeamento dos dados (DE - PARA) para efetivar o cadastro/atualização nos Formulários do Agilityflow

 

Abaixo mostramos alguns exemplos, se o material abaixo não for suficiente , entre em contato com nossa equipe.

Variáveis disponíveis

Variável Tipo  
content string

Conteúdo enviado no Body da API

 

No caso se ser enviado uma string com o JSON, por exemplo no formato:

 { nome: 'José', email: 'jose@xxxx.com'}

Você pode converter essa string para JSON e utilizá-la como object

var json = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(content);

 

 

Classe JsonHelper

Para utilizar execute JsonHelper.NomeDoMetodo(....)

Método Retorno  
HasProperty( HasProperty(dynamic json, string nomePropriedade)

bool

(true or false)

Testa se o JSON tem uma determinada propriedade.

Por exemplo, a sua API espera receber o JSON

no formato:

 nome:nome: 'José', email:email: 'jose@xxxx.com'}

 

Porém recebe o JSON formato:

 nomecompleto:nomecompleto: 'José da Silva', idade:idade: '21'}

 

Como a propriedade NOME e EMAIL não existem no JSON recebido, o seu programa pode dar erro. Para evitar o erro, utilize o todo HasProperty(HasProperty(...)

Como no exemplo abaixo:

 

if (json != null)
{

if (JsonHelper.HasProperty(json, "nome") && JsonHelper.HasProperty(json, "email") ){

var nome =  json["nome"].ToString();

var email=  json["email"].ToString();

}

}

 

 

Classe DataBase

Para utilizar execute DataBase.NomeDoMetodo(....)

Método Retorno  
SaveEntity(Guid estruturaformularioidASerCriado, NameValueCollection campos_e_valores) void

Salva as informações retornar informações dosno bancos de dadosdados.

através

GetEnvironmentVariable(string nomeVariavel)

ou

GetEnvironmentVariable_Text(string nomeVariavel) **

string

Recupera o Valor de uma query.variável de ambiente.

Veja 

exemplo

** Recupera a Descrição (texto), no caso de variáveis do Tipo "Que

 

 

RecuperandoSalvando os dados do banco de dadosrecebidos através dedo umamétodo query SQLSaveEntity
public void Execute(){
        
            //parametrosconverte o conteúdo enviado no body da queryAPI para JSON
            var paramsQueryjson = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(content);
      
            //guarda em uma variável o ID da  E S T R U T U R A  do formulário de pessoa
            var idEstruturaFormulario_PESSOA = Guid.Parse("0b56b66a-4f6f-4ded-ad04-016d7c0724e1");
    
    
            if (json != null)
            {
    
                    //verifica se o JSON recebido contém a propriedade "nome", "email" e "cel" que são necessários p cadastro
                    if (JsonHelper.HasProperty(json, "nome") && JsonHelper.HasProperty(json, "email") && JsonHelper.HasProperty(json, "perfil")){
           
                        var values = new List<SqlParameter>(NameValueCollection();
                        paramsQuery.values.Add(new SqlParameter("@param1"nome", json["xxx"nome"].ToString());
                        paramsQuery.values.Add(new SqlParameter("@param2"email", json["yyy"));
paramsQuery.Add(new SqlParameter("@param3", "zzz"email"].ToString());
                      
                        //queryno usandocaso do campo do formulário ser uma tabela associativa (nolock)tabela nasrelacional tabelas para evitar problema com a transação que está ativaN:N)
                        var sqlidCampoTabelaAssociativa = "select70b6f362-2587-4fd2-a2fb-148bd0caf437";
                        column1,column2,column3 from tableif (nolock)json["perfil"].ToString() where== column1"todos_os_perfis" ) {
                          
                          var idPerfilAdmin = @param1"51cf02f1-3787-4dca-8a2c-e219a5ce1298";
                          orvar column2idPerfilColaborador = @param2"f999f103-c775-4245-92d3-034cb3ded5e4";                          
                          orvar column3idPerfisConcatenadosComVirgula = @param3idPerfilAdmin + "," + idPerfilColaborador + ",";
                          
                          //executaradiciona os perfis
                          values.Add(idCampoTabelaAssociativa, idPerfilAdmin); //adiciona perfil de admin
                          values.Add(idCampoTabelaAssociativa, idPerfilColaborador); //adiciona perfil de colaborador
                          values.Add("tabela_associativa_added-"+idCampoTabelaAssociativa,idPerfisConcatenadosComVirgula);// perfis concatenados com virgula
                          values.Add("tabela_associativa_removed-"+idCampoTabelaAssociativa,"");//em branco
                          values.Add("tabela_associativa_colunas_adicionais-"+idCampoTabelaAssociativa,"");//em branco
                          //---------------------------------------

                        }
                        else if (json["perfil"].ToString() == "apenas_colaborador" ) {
                          
                          
                          var idPerfilColaborador = "f999f103-c775-4245-92d3-034cb3ded5e4";                        
                          var idPerfilConcatenadoComVirgula = idPerfilColaborador + ",";
                          
                          //adiciona o perfil
                          values.Add(idCampoTabelaAssociativa, idPerfilColaborador); //adiciona perfil de colaborador
                          values.Add("tabela_associativa_added-"+idCampoTabelaAssociativa,idPerfilConcatenadoComVirgula);// perfis concatenados com virgula
                          values.Add("tabela_associativa_removed-"+idCampoTabelaAssociativa,"");//em branco
                          values.Add("tabela_associativa_colunas_adicionais-"+idCampoTabelaAssociativa,"");//em branco
                          //---------------------------------------
                          
                          
                        }
                      
                        //salva a informação no banco de dados
                        varDataBase.SaveEntity(idEstruturaFormulario_PESSOA, dt = BusinessRepository.GetDataTable(sql, paramsQuery.ToArray())values);
                        
                    //percorrendo}
                
            as linhas de retorno da tabela
foreach (DataRow dr in dt.Rows)
{
  if (dr["column1"] != DBNull.Value)
  	FormMessage.Warning(dr["column1"].ToString());}

    
    
    }

 

Para recuperar o Texto de um campo que seja uma Lista Dinâmica (Combo, Auto completar, Múltipla seleção, Radio):

Suponhamos que você tenha um formulário de Pedido e  nesse formulário você tenha um campo chamado 'Produto'.
Esse campo é do tipo 'Pesquisa com Auto Completar' e listará os 'Produtos' por 'Nome'.
Quando o usuário salvar o formulário, no Json de envio não retornará o Nome do Produto, apenas o Id do produto selecionado (Esse id estará no formato de um GUID).
Para recuperar o Nome do produto, você precisará executar o método GetTextFromCampo da seguinte forma:

var nomeProduto = BusinessRepository.GetTextFromCampo("produto");
Recuperar os valores das "Variáveis de Ambiente"

Para saber mais sobre variáveis de ambiente entre em Variáveis de ambiente

var valorDaVariavel = BusinessRepository.GetEnvironmentVariable("var_nomeDaVariavel");

Recuperar a Descrição (texto), no caso de variáveis do Tipo "Query com Id + Descrição":

var textDaVariavel = BusinessRepository.GetEnvironmentVariable_Text("var_nomeDaVariavel");

 

Classe: FormMessage 

Responsável pelas mensagens (alertas) para o usuário

MétodoRetorno 
Warning(string message)voidApresenta um aviso para o usuário
Mensagem para o usuario: A execução do código abaixo apresentará uma mensagem para o usuário
FormMessage.Warning("Exemplo de mensagem para o usuário");

O código C# se encerrará no exato momento em que for chamado o método para apresentação de mensagem.

 

Retorno da mensagem

Classe: EmailSender

Responsável pelo envio de e-mail 

Método Retorno  
SendToGrupoUsuario(Guid grupoUsuarioId, string subject, string htmlContent, string link_calltoActionEmail = "") void Enviar um e-mail para um determinado Grupo de Usuario
SendEmail(string toEmail, string subject, string htmlContent, string link_calltoActionEmail = "", string texto_calltoActionEmail = "Acessar") void Enviar um e-mail 

 

Enviar e-mail para um Grupo de Usuário

Antes de iniciar, crie um "Grupo de Usuário" no menu "Segurança e Acesso".  Depois de criado, associe os usuários que receberão e-mail ao novo grupo de usuário que você acabou de criar.

Pegue o ID desse novo Grupo de usuário. Você vai precisar dele para enviar o e-mail. 

var grupoUsuarioId = Guid.Parse("af7c9275-0e23-4b64-a433-f238bb457005"); //substitua o ID "af7c9275-0e23-4b64-a433-f238bb457005" pelo Id do grupo de usuario que você deseja enviar o e-mail
var assunto = "Novo E-mail para um Grupo de usuario ";

var link = @"https://www.link-para-redirecionar.com.br/";
var html = "Olá Grupo, <BR><BR> Teste para envio de e-mail para um Grupo de Usuário no AgilityFlow!";

EmailSender.SendToGrupoUsuario(grupoUsuarioId, assunto, html, link);

 

Enviar e-mail 

 

Método principal para utilização da Programação em C# na opção "Regraapi de Negócio"post

A única regra é que o método se chame Execute, não tenhotenha parâmetros de entrada e o retorno seja void.

Exemplo:

public void Execute(){            



  //aqui você pode programar   



}