Created
November 23, 2021 17:35
-
-
Save ricardoperovano/5fdb7377dd17e30817349a270178ec31 to your computer and use it in GitHub Desktop.
Helper Formula Visual Totvs RM
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private void Perovano_ExecuteCode(object sender, System.EventArgs args) | |
{ | |
} | |
public static class PerovanoFramework | |
{ | |
/* | |
Framework Criado Para Ajudar a Construção de Formula Visual | |
Autor: Perovano | |
Data: 09/04/2015 | |
*/ | |
#region EnviarEmailPerovano | |
/// <summary> | |
/// Envia um email de acordo com os parametros informados | |
/// Exemplo de Chamada: PerovanoFramework.EnviarEmailPerovano("[email protected],[email protected]","Assunto do Email","Mensagem do email",false,this.Context.CodSistema,this.Context.CodColigada,this.Context.CodUsuario); | |
/// </summary> | |
/// <param name="para">Destinatário do Email</param> | |
/// <param name="assunto">Assunto do Email</param> | |
/// <param name="corpo">Mensagem do email</param> | |
/// <param name="isHtml">Informa se a mensagem está em formato html ou texto</param> | |
/// <param name="codSistema">Código do Sistema</param> | |
/// <param name="codColigada">Código da Coligada</param> | |
/// <param name="codUsuario">Código do Usuário</param> | |
public static void EnviarEmailPerovano(string para, string assunto, string corpo, bool isHtml, string codSistema, int codColigada, string codUsuario) | |
{ | |
RMSMailParams mailParams = new RMSMailParams( | |
codSistema, | |
codColigada, | |
codUsuario, | |
para, | |
assunto, | |
corpo | |
); | |
mailParams.IsHTMLBody = isHtml; | |
mailParams.Sender = new RMSMailSenderParams(RMSMailSender.Company); | |
IRMSMailServer iRMSMailServer = RMSBroker.CreateServer<IRMSMailServer>("RMSMailServer"); | |
iRMSMailServer.Send(mailParams); | |
} | |
#endregion | |
#region ExibirMensagemErro | |
/// <summary> | |
/// Lança uma exceção fazendo com que gere uma mensagem de erro | |
/// </summary> | |
/// <param name="msgErro">Um texto a ser exibido na janela de erro do RM</param> | |
public static void ExibirMensagemErro(string msgErro) | |
{ | |
throw new System.Exception(msgErro); | |
} | |
/// <summary> | |
/// Lança uma exceção fazendo com que gere uma mensagem de erro | |
/// </summary> | |
/// <param name="ex">Exceção gerada em um bloco try catch</param> | |
public static void ExibirMensagemErro(System.Exception ex) | |
{ | |
throw new System.Exception(ex.Message); | |
} | |
#endregion | |
#region PreencheDataSet | |
/// <summary> | |
/// Preenche um DataSet existente com o resultado de uma consulta Sql | |
/// </summary> | |
/// <param name="DBS">DataBase Service - Sempre será passado como this.DBS</param> | |
/// <param name="DS">Um objeto DataSet</param> | |
/// <param name="nomeTabela">Um nome para a tabela que será criada no DataSet com o resultado da consulta</param> | |
/// <param name="textoConsulta">O texto sql da consulta que será executada. EX: SELECT * FROM TMOV WHERE IDMOV = :IDMOV AND CODCOLIGADA = :CODCOLIGADA</param> | |
/// <param name="parametrosConsulta">Parametros da consulta sql. Se não existir parametros na cosnulta deverá ser passado | |
/// um objeto em branco. Exemplo de parametros em branco: new object[]{} Exemplo de Parametros new object[]{12355,1} | |
/// </param> | |
public static void PreencherDataSet(IRMSWorkflowDbService DBS, System.Data.DataSet DS, string nomeTabela, string textoConsulta, params object[] parametros) | |
{ | |
DBS.QueryFill(DS, nomeTabela, textoConsulta, parametros); | |
} | |
/// <summary> | |
/// Preenche um DataSet com o resultado de uma consulta Sql | |
/// </summary> | |
/// <param name="DBS">DataBase Service - Sempre será passado como this.DBS</param> | |
/// <param name="nomeTabela">Um nome para a tabela que será criada no DataSet com o resultado da consulta</param> | |
/// <param name="textoConsulta">O texto sql da consulta que será executada. EX: SELECT * FROM TMOV WHERE IDMOV = :IDMOV AND CODCOLIGADA = :CODCOLIGADA</param> | |
/// <param name="parametrosConsulta">Parametros da consulta sql. Se não existir parametros na cosnulta deverá ser passado | |
/// um objeto em branco. Exemplo de parametros em branco: new object[]{} Exemplo de Parametros new object[]{12355,1} | |
/// </param> | |
/// <returns>Retorna um novo dataset com o resultado da consulta sql</returns> | |
public static System.Data.DataSet PreencherDataSet(IRMSWorkflowDbService DBS, string nomeTabela, string textoConsulta, params object[] parametros) | |
{ | |
System.Data.DataSet DS = CriarDataSet(nomeTabela); | |
DBS.QueryFill(DS, nomeTabela, textoConsulta, parametros); | |
return DS; | |
} | |
#endregion | |
#region CriarDataSet | |
/// <summary> | |
/// Cria um dataset vazio com o nome informado no parametro | |
/// </summary> | |
/// <param name="dataSetName">Nome do DataSet</param> | |
/// <returns>Retorna um dataset vazio</returns> | |
public static System.Data.DataSet CriarDataSet(string dataSetName) | |
{ | |
return new System.Data.DataSet() { DataSetName = dataSetName }; | |
} | |
#endregion | |
#region | |
/// <summary> | |
/// Exibe todas as tabelas e colunas de um determinado dataset | |
/// </summary> | |
/// <param name="DS">Dataset que se quer exibir os seus dados</param> | |
public static void ExibirDadosDataSet(System.Data.DataSet DS) | |
{ | |
System.Text.StringBuilder txt = new System.Text.StringBuilder(); | |
for (int i = 0; i < DS.Tables.Count; i++) | |
{ | |
txt.Append("Tabela: "); | |
txt.AppendLine(DS.Tables[i].TableName.ToString()); | |
for (int l = 0; l < DS.Tables[i].Columns.Count; l++) | |
{ | |
txt.Append(DS.Tables[i].Columns[l].ColumnName.ToString()); | |
txt.Append("\t"); | |
} | |
txt.AppendLine(); | |
txt.AppendLine("---------------------------------------------------------------------------------------------"); | |
for (int j = 0; j < DS.Tables[i].Rows.Count; j++) | |
{ | |
for (int k = 0; k < DS.Tables[i].Columns.Count; k++) | |
{ | |
txt.Append(DS.Tables[i].Rows[j][k].ToString()); | |
txt.Append("\t"); | |
} | |
txt.AppendLine(); | |
txt.AppendLine("---------------------------------------------------------------------------------------------"); | |
} | |
} | |
ExibirMensagemErro(txt.ToString()); | |
} | |
#endregion | |
#region | |
/// <summary> | |
/// Faz a inclusão de um Registro no banco de dados do RM | |
/// </summary> | |
/// <param name="DBS">DabaBaseService, sempre será passado como this.DBS na formula visual</param> | |
/// <param name="textoSql">string sql de inclusão</param> | |
/// <param name="valores">valores dos campos que serão inseridos Ex: new object[]{campo1,campo2,campo3} | |
/// Respeitando o tipo de dados do banco RM | |
/// </param> | |
public static void InserirRegistro(IRMSWorkflowDbService DBS,string textoSql, params object[] parametros) | |
{ | |
if (textoSql.IndexOf("INSERT INTO") == -1) | |
{ | |
ExibirMensagemErro("Este Metodo Só Aceita Inclusão de Registros!"); | |
} | |
else | |
{ | |
if (parametros == null) | |
{ | |
ExibirMensagemErro("Não é possível inserir registros sem passar os valores para a consulta"); | |
} | |
else | |
{ | |
string msgStatus = string.Empty; | |
try | |
{ | |
InicializarTransacao(DBS); | |
DBS.QueryExec(textoSql, parametros); | |
} | |
catch (System.Exception ex) | |
{ | |
msgStatus = ex.Message; | |
} | |
finally | |
{ | |
FinalizarTransacao(DBS, msgStatus); | |
} | |
} | |
} | |
} | |
#endregion | |
#region | |
/// <summary> | |
/// Finaliza a transação no banco de dados | |
/// Caso encontre algum erro: Rollback | |
/// Se nenhum erro for encontrado Commit | |
/// </summary> | |
/// <param name="DBS">Um DataBaseService. sempre será passado como this.DBS na formula visual</param> | |
/// <param name="erro">mensagem de erro</param> | |
public static void FinalizarTransacao(IRMSWorkflowDbService DBS,string erro) | |
{ | |
if (!string.IsNullOrEmpty(erro)) | |
{ | |
DBS.Rollback(); | |
ExibirMensagemErro(erro); | |
} | |
else | |
{ | |
DBS.Commit(); | |
} | |
} | |
#endregion | |
#region | |
/// <summary> | |
/// Inicializa uma transação no banco de dados | |
/// </summary> | |
/// <param name="DBS">Um DataBaseService. sempre será passado como this.DBS na formula visual</param> | |
public static void InicializarTransacao(IRMSWorkflowDbService DBS) | |
{ | |
DBS.BeginTransaction(); | |
} | |
#endregion | |
#region | |
/// <summary> | |
/// Faz o UPDATE de um Registro no banco de dados do RM | |
/// </summary> | |
/// <param name="DBS">DabaBaseService, sempre será passado como this.DBS na formula visual</param> | |
/// <param name="textoSql">string sql de atualização</param> | |
/// <param name="valores">valores dos campos que serão atualizados Ex: new object[]{campo1,campo2,campo3} | |
/// Respeitando o tipo de dados do banco RM | |
/// </param> | |
public static void AtualizarRegistro(IRMSWorkflowDbService DBS, string textoSql, params object[] parametros) | |
{ | |
if (textoSql.IndexOf("UPDATE") == -1) | |
{ | |
ExibirMensagemErro("Este Metodo Só Aceita Update de Registros!"); | |
} | |
else | |
{ | |
if (parametros == null) | |
{ | |
ExibirMensagemErro("Não é possível atualizar registros sem passar os valores para a consulta"); | |
} | |
else | |
{ | |
string msgStatus = string.Empty; | |
try | |
{ | |
InicializarTransacao(DBS); | |
DBS.QueryExec(textoSql, parametros); | |
} | |
catch (System.Exception ex) | |
{ | |
msgStatus = ex.Message; | |
} | |
finally | |
{ | |
FinalizarTransacao(DBS, msgStatus); | |
} | |
} | |
} | |
} | |
#endregion | |
#region | |
/// <summary> | |
/// Retorna um valor do tipo object com o dado do campo solicitado. | |
/// Retorna somente a primeira linha da consulta. Ideal passar parametros com a chave primária | |
/// </summary> | |
/// <param name="DBS">DabaBaseService, sempre será passado como this.DBS na formula visual</param> | |
/// <param name="colunaRetorno">A coluna que deverá ser retornada</param> | |
/// <param name="textoSql">Consulta Sql que busca os dados</param> | |
/// <param name="parametros">Parametros passados para a consulta no formato new object[]{param1,param2}</param> | |
/// <returns>Retorna um valor do tipo object</returns> | |
public static object RetornaCampo(IRMSWorkflowDbService DBS, string colunaRetorno, string textoSql, params object[] parametros) | |
{ | |
object obj = null; | |
using (var DS = CriarDataSet("Retorno")) | |
{ | |
DBS.QueryFill(DS, "Retorno", textoSql, parametros); | |
if (DS.Tables["Retorno"].Rows.Count > 0) | |
{ | |
obj = DS.Tables["Retorno"].Rows[0][colunaRetorno]; | |
} | |
if (obj == null || obj == System.DBNull.Value) | |
{ | |
obj = string.Empty; | |
} | |
} | |
return obj; | |
} | |
#endregion | |
#region | |
/// <summary> | |
/// Faz o envio do sms | |
/// </summary> | |
/// <param name="chaveApi">Chave de Acesso no site de sms</param> | |
/// <param name="remetente">usuario que está enviando</param> | |
/// <param name="destinatario">usuário de destino</param> | |
/// <param name="mensagem">mensagem</param> | |
/// <returns></returns> | |
public static bool EnviarMensagem(string chaveApi, string remetente, string destinatario, string mensagem) | |
{ | |
try | |
{ | |
string url = System.String.Format("https://sms.comtele.com.br/api/{0}/sendmessage?sender={1}&receivers={2}&content={3}", chaveApi, remetente, destinatario, mensagem); | |
System.Threading.AutoResetEvent ev = new System.Threading.AutoResetEvent(false); | |
WebPost(new System.Uri(url), string.Empty, (data) => | |
{ | |
//Retorno enviado pela API. | |
var d = data; | |
ev.Set(); | |
}); | |
ev.WaitOne(); | |
return true; | |
} | |
catch (System.Exception ex) | |
{ | |
return false; | |
} | |
} | |
#endregion | |
#region | |
private static void WebPost(System.Uri uri, string data, System.Action<object> callback) | |
{ | |
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri); | |
request.Method = "POST"; | |
request.ContentType = "text/plain;charset=utf-8"; | |
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); | |
byte[] bytes = encoding.GetBytes(data); | |
request.ContentLength = bytes.Length; | |
using (System.IO.Stream requestStream = request.GetRequestStream()) | |
{ | |
requestStream.Write(bytes, 0, bytes.Length); | |
} | |
request.BeginGetResponse((x) => | |
{ | |
using (System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.EndGetResponse(x)) | |
{ | |
if (callback != null) | |
{ | |
System.Runtime.Serialization.Json.DataContractJsonSerializer ser = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(object)); | |
callback(ser.ReadObject(response.GetResponseStream()) as object); | |
} | |
} | |
}, null); | |
} | |
#endregion | |
#region | |
/// <summary> | |
/// Esse metodo seta um valor unico para todos os registros da visão | |
/// </summary> | |
/// <param name="NomeColuna">Nome da coluna a ser criada</param> | |
/// Ex: "System.String", "System.Int32" | |
///</param> | |
/// <param name="valorColuna">O valor que receberá a coluna</param> | |
/// <param name="DS">Data set que contem a tabela que receberá a coluna</param> | |
public static void CriarColuna(string NomeColuna, object valorColuna, System.Data.DataSet DS) | |
{ | |
System.Data.DataColumn dataColumn; | |
dataColumn = DS.Tables[0].Columns.Add(NomeColuna, System.Type.GetType("System.String")); | |
dataColumn.ExtendedProperties.Add("Perovano", "PerovanoFramework"); | |
for(int i =0; i< DS.Tables[0].Rows.Count; i++) | |
{ | |
DS.Tables[0].Rows[i][NomeColuna] = valorColuna; | |
} | |
} | |
#endregion | |
#region | |
/// <summary> | |
/// Esse metodo seta um valor especifico para cada registro da visão, de acordo com uma consulta SQL | |
/// </summary> | |
/// <param name="NomeColuna">Nome da coluna a ser criada</param> | |
/// Ex: "System.String", "System.Int32" | |
///</param> | |
/// <param name="valorColuna">O valor que receberá a coluna</param> | |
/// <param name="DS">Data set que contem a tabela que receberá a coluna</param> | |
/// <param name="DBS">DabaBaseService, sempre será passado como this.DBS na formula visual</param> | |
/// <param name="colunaRetorno">A coluna que deverá ser retornada</param> | |
/// <param name="textoSql">Consulta Sql que busca os dados</param> | |
/// <param name="parametros">Parametros passados para a consulta no formato new object[]{param1,param2}</param> | |
public static void CriarColuna(string NomeColuna, System.Data.DataSet DS,IRMSWorkflowDbService DBS, string colunaRetorno, string textoSql, params object[] parametros) | |
{ | |
System.Data.DataColumn dataColumn; | |
dataColumn = DS.Tables[0].Columns.Add(NomeColuna, System.Type.GetType("System.String")); | |
dataColumn.ExtendedProperties.Add("Perovano", "PerovanoFramework"); | |
for(int i =0; i< DS.Tables[0].Rows.Count; i++) | |
{ | |
string par1 = (string)parametros[0].ToString(); | |
string par2 = (string)parametros[1].ToString(); | |
var val1 = System.Int32.Parse(DS.Tables[0].Rows[i][par1].ToString()); | |
var val2 = System.Int32.Parse(DS.Tables[0].Rows[i][par2].ToString()); | |
DS.Tables[0].Rows[i][NomeColuna] = RetornaCampo(DBS,colunaRetorno,textoSql,new object[]{val1,val2}).ToString(); | |
} | |
} | |
#endregion | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment