Programação em C# - Na Regra de Negócio
IMPORTANTE: as variáveis e métodos descritos aqui só funcionarão na programação C# na Regra de Negócio do formulário. Para programação C# nas APIs clique aqui.
O agilityflow permite a customização 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.
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 | |
FormularioCamposPreenchidos | dynamic (Json) |
retorna um json com os campos do preenchidos no formulário, exemplo: { "campo1": "xxxxx", "campo2": "yyyyy", "campo3": "zzzzz", }
Para resgatar a informação do campo1, utilize:
|
IsNovoFormulario | bool | retorna true, caso seja um novo formulário, e false caso contrário. |
IdFormulario | Guid |
retorna o ID do formulário |
CurrentStatusFluxo | StatusFluxo? (Enum) |
Variável disponível apenas para Workflow
Nessa ENUM será retornado o Status do fluxo. As opções podem ser:
Exemplo de utilização:
|
Métodos Disponíveis no contexto da Regras de Negócio do Formulário
Método | Retorno | |
FormContext.GetDataTable(string sql, params DbParameter[] parameters) | DataTable |
Permite retornar informações dos bancos de dados através de uma query. |
FormContext.GetValueFromCampo(string idCampo) | string | Esse método retornará o Valor de um determinado campo |
FormContext.GetTextFromCampo(string idCampo) | string |
Esse método retornará o Texto de um determinado campo, utilizado apenas se o campo for um campo de lista dinâmica, exemplo: Combo, Auto complete, Campo de Múltipla escolha, radio etc. Esse método é necessário em algumas situações pois no Json de Campos Preenchidos no Formulario ( variável FormularioCamposPreenchidos), só retorna o ID que foi selecionado nos campos que são de Lista Dinâmica.
|
FormContext.GetEnvironmentVariable(string nomeVariavel) ou FormContext.GetEnvironmentVariable_Text(string nomeVariavel) ** |
string |
Recupera o Valor de uma variável de ambiente.
** Recupera a Descrição (texto), no caso de variáveis do Tipo "Query com Id + Descrição": |
FormContext.WarningMessage(string message) |
void |
Apresenta um aviso para o usuário |
Recuperando dados do banco de dados através de uma query SQL
//parametros da query
var paramsQuery = new List<SqlParameter>();
paramsQuery.Add(new SqlParameter("@param1", "xxx"));
paramsQuery.Add(new SqlParameter("@param2", "yyy"));
paramsQuery.Add(new SqlParameter("@param3", "zzz"));
//query usando (nolock) nas tabelas para evitar problema com a transação que está ativa
var sql = "select column1,column2,column3 from table (nolock) where column1 = @param1 or column2 = @param2 or column3 = @param3 ";
//executar no banco de dados
var dt = FormContext.GetDataTable(sql, paramsQuery.ToArray());
//percorrendo as linhas de retorno da tabela
foreach (DataRow dr in dt.Rows)
{
if (dr["column1"] != DBNull.Value)
FormContext.WarningMessage(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 = FormContext.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 = FormContext.GetEnvironmentVariable("var_nomeDaVariavel");
Recuperar a Descrição (texto), no caso de variáveis do Tipo "Query com Id + Descrição":
var textDaVariavel = FormContext.GetEnvironmentVariable_Text("var_nomeDaVariavel");
Enviar Mensagem para o usuário: A execução do código abaixo apresentará uma mensagem para o usuário
FormContext.WarningMessage("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
Envio de e-mail
Responsável pelo envio de e-mail
Método | Retorno | |
EmailSender.SendToGrupoUsuario(Guid grupoUsuarioId, string subject, string htmlContent) | void | Enviar um e-mail para um determinado Grupo de Usuario |
EmailSender.SendEmail(string toEmail, string subject, string htmlContent) | 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
var link = @"https://www.link-para-redirecionar.com.br/";
var htmlContent = "<strong>Olá,</strong> teste envio de e-mail.";
var emailTo = "john@email.com";
var subject = "Subject do E-mail";
var textoCallToAction = "Subject do E-mail";
EmailSender.SendEmail(emailTo, subject, htmlContent, link, textoCallToAction);
Método principal para utilização da Programação em C# na opção "Regra de Negócio"
A única regra é que o método se chame Execute, não tenha parâmetros de entrada e o retorno seja void.
Exemplo:
public void Execute(){
//aqui você pode programar
}