/// <summary> /// Recebe o Retorno do SMS /// A TWW retorna um DataSet chamado OutDataSet contendo uma Tabela chamada SMSMO com no máximo 400 linhas, com as mensagens SMS MO não lidas, /// recebidas nos últimos 4 dias como resposta a SMS enviados anteriormente, e marca esses MOs COMO LIDOS. Se houverem 400 linhas na tabela, /// podem haver mais MOs não lidos, e estes devem ser lidos usando chamadas subsequentes à função. Retorna Nothing em caso de erro /// Altera o status para erro no retorno, não identificado, cliente reconheceu a transação, cliente não reconheceu a transação /// RETER = ERRO RETORNO /// RETNI = RETORNADO NÃO IDENTIFICADO /// RETRE = RETORNADO RECONHECIDO CLIENTE /// RETNR = RETORNADO NÃO RECONHECIDO CLIENTE /// </summary> public void BuscaSMSMONaoLido() { DataTable dtConexao; String idMensagem = "0"; Int32 quantidadeEnvio = 0; try { DataSet dsBuscaSMSMONaoLido = new DataSet(); DateTime dhUsarioIns = DateTime.Now; String descricaoMensagemLog = String.Empty; String numUsu = String.Empty; String senha = String.Empty; String seuNumId = String.Empty; String seuNumQuantidadeEnvio = String.Empty; String mensagem = String.Empty; String status = String.Empty; dtConexao = new CaseBusiness.CC.Comunicacao.FornecedoraOrg(base.UsuarioManutencao.ID).BuscarAcessoFornecedor("TWW", 1, "A"); if (dtConexao.Rows.Count > 0) { for (int c = 0; c < dtConexao.Rows.Count; c++) { numUsu = Convert.ToString(dtConexao.Rows[c]["UsuarioConexao"]); senha = Convert.ToString(dtConexao.Rows[c]["SenhaConexao"]); // Instanciando o WebService //wsTWW.ReluzCapWebServiceSoapClient ws = new wsTWW.ReluzCapWebServiceSoapClient("ReluzCap Web ServiceSoap"); //wsTWW.ArrayOfXElement r = ws.BuscaSMSMONaoLidoAsync(numUsu, senha).Result; throw (new Exception("NECESSÁRIO NOVA IMPLEMENTAÇÃO DEVIDO A ALTERAÇÕES")); //dsBuscaSMSMONaoLido = ws.BuscaSMSMONaoLidoAsync(numUsu, senha); //if (dsBuscaSMSMONaoLido.Tables[0].Rows.Count > 0) //{ // for (int m = 0; m < dsBuscaSMSMONaoLido.Tables[0].Rows.Count; m++) // { // dhUsarioIns = DateTime.Now; // seuNumId = Util.RetirarCaracterEsquerda(dsBuscaSMSMONaoLido.Tables[0].Rows[m].ItemArray[0].ToString().Trim(), 4); // seuNumQuantidadeEnvio = Util.RetirarCaracterDireita(dsBuscaSMSMONaoLido.Tables[0].Rows[m].ItemArray[0].ToString().Trim(), 4); // mensagem = dsBuscaSMSMONaoLido.Tables[0].Rows[m].ItemArray[2].ToString(); // status = dsBuscaSMSMONaoLido.Tables[0].Rows[m].ItemArray[3].ToString(); // idMensagem = Convert.ToInt64(seuNumId.Trim()); // quantidadeEnvio = Convert.ToInt32(seuNumQuantidadeEnvio.Trim()); // // MO - Resposta recebida do número enviado // if (status.Trim() == "MO") // { // // Processo mensagem com status ENV = ENVIADO // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).ProcessarRetornoSMS(idMensagem, quantidadeEnvio, "ENV", "AMBOS", "A", mensagem, dhUsarioIns); // // Processo mensagem com status REENV = REENVIADO // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).ProcessarRetornoSMS(idMensagem, quantidadeEnvio, "REENV", "AMBOS", "A", mensagem, dhUsarioIns); // // Processo mensagem com status ENVMR = MENSAGEM RECEBIDA // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).ProcessarRetornoSMS(idMensagem, quantidadeEnvio, "ENVMR", "AMBOS", "A", mensagem, dhUsarioIns); // // Processo mensagem com status RETEX = RETORNO EXPIRADO // // Obs.: Foi informado RETE1 para na procedure diferenciar qual RETEX obter // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).ProcessarRetornoSMSLog(idMensagem, quantidadeEnvio, "RETE1", "AMBOS", "A", mensagem, dhUsarioIns); // } // else // { // descricaoMensagemLog = "Código de retorno " + status.Trim() + " não classicado na Fornecedora."; // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "RET", "RETER", 0, "N", 0, dhUsarioIns, dhUsarioIns, 0); // } // } //} } } } catch (Exception ex) { CaseBusiness.Framework.Log.Log.Logar(CaseBusiness.Framework.TipoLog.Erro, "Id Mensagem: " + idMensagem.Trim() + " Erro: " + ex.Message, ex.StackTrace, "", "", DateTime.Now, CaseBusiness.Framework.Configuracao.Configuracao.Aplicacao, CaseBusiness.Framework.Tela.Nenhum, 0); new CaseBusiness.CC.Mensageria.MensagemErroLog(base.UsuarioManutencao.ID).Incluir(idMensagem.Trim(), ex.Message, ex.StackTrace, DateTime.Now); } finally { dtConexao = null; } }
/// <summary> /// Receber o Status da Fornecedora TWW /// A TWW retorna um DataSet chamado OutDataSet contendo a tabela StatusSMS com no máximo 400 linhas, contendo somente os status de SMS dos últimos 4 dias /// que ainda não tenham sido lidos, e os MARCA COMO LIDOS. Se houverem 400 linhas na tabela, podem haver mais status não lidos, e estes devem ser lidos /// usando chamadas subsequentes à função. Retorna Nothing em caso de erro /// Altera o status para restrição definitiva, erro no envio, erro no retorno, mensagem expirada ou retorno de status /// RESTD = RESTRIÇÃO DEFINITIVA (celular não pertence a nenhuma operadora, mensagem rejeitada, etc) /// ERREN = ERRO ENVIO (erro no envio porque mensagem não foi aceita para transmissão) /// RETER = ERRO RETORNO (erro no retorno do processamento da fornecedora) /// RETEX = RETORNO EXPIRADO (mensagem expirada sem retorno de DLR da operadora ou conforme outras informações da operadora) /// RET = RETORNADO (retornou status da mensagem) /// ENVMR = MENSAGEM RECEBIDA (Celular confirmou o recebimento) /// ENVML = MENSAGEM LIDA (Celular confirmou a leitura. Obs.: A TWW não tem esse status, portanto não vai ser implantado aqui e somente quando for WhatsApp) /// </summary> /// <param name="status">Status da Mensagem</param> /// <param name="formato">Formato da Mensagem (A = bidirecional e unidirecional, B = mensagem bidirecional, U = mensagem unidirecional)</param> public void StatusSMSNaoLido(String status, String formato) { DataTable dtMensagem; DataTable dtConexao; String idMensagem = "0"; Int32 quantidadeEnvio = 0; try { DataSet dsStatusSMSNaoLido = new DataSet(); DateTime dhUsarioIns = DateTime.Now; String numUsu = String.Empty; String senha = String.Empty; String seuNumId = String.Empty; String seuNumQuantidadeEnvio = String.Empty; String statusFornecedora = String.Empty; String descricaoMensagemLog = String.Empty; Int32 idFornecedora = Int16.MinValue; dtConexao = new CaseBusiness.CC.Comunicacao.FornecedoraOrg(base.UsuarioManutencao.ID).BuscarAcessoFornecedor("TWW", 1, "A"); if (dtConexao.Rows.Count > 0) { CaseBusiness.CC.Comunicacao.Fornecedora objFornecedora = new CaseBusiness.CC.Comunicacao.Fornecedora("TWW", UsuarioManutencao.ID); if (objFornecedora.IdFornecedora == Int16.MinValue) { // Não achou fornecefor idFornecedora = 0; } else { idFornecedora = objFornecedora.IdFornecedora; } for (int c = 0; c < dtConexao.Rows.Count; c++) { numUsu = Convert.ToString(dtConexao.Rows[c]["UsuarioConexao"]); senha = Convert.ToString(dtConexao.Rows[c]["SenhaConexao"]); // Instanciando o WebService //wsTWW.ReluzCapWebServiceSoapClient ws = new wsTWW.ReluzCapWebServiceSoapClient("ReluzCap Web ServiceSoap"); throw (new Exception("NECESSÁRIO NOVA IMPLEMENTAÇÃO DEVIDO A ALTERAÇÕES")); //dsStatusSMSNaoLido = ws.StatusSMSNaoLidoAsync(numUsu, senha).Result; //if (dsStatusSMSNaoLido.Tables[0].Rows.Count > 0) //{ // for (int m = 0; m < dsStatusSMSNaoLido.Tables[0].Rows.Count; m++) // { // dhUsarioIns = DateTime.Now; // seuNumId = Util.RetirarCaracterEsquerda(dsStatusSMSNaoLido.Tables[0].Rows[m].ItemArray[0].ToString().Trim(), 4); // seuNumQuantidadeEnvio = Util.RetirarCaracterDireita(dsStatusSMSNaoLido.Tables[0].Rows[m].ItemArray[0].ToString().Trim(), 4); // statusFornecedora = dsStatusSMSNaoLido.Tables[0].Rows[m].ItemArray[3].ToString(); // idMensagem = Convert.ToInt64(seuNumId.Trim()); // quantidadeEnvio = Convert.ToInt32(seuNumQuantidadeEnvio.Trim()); // dtMensagem = new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).BuscarPorStatus(idMensagem, status, "AMBOS", formato); // if (dtMensagem.Rows.Count > 0) // { // //Se mensagem estiver com status informado então altera o status da mensagem conforme o código de retorno abaixo // switch (statusFornecedora.Trim().ToUpper()) // { // //case "OK": // // descricaoMensagemLog = "Fornecedora TWW recebeu a mensagem e colocou na fila para enviar para a operadora."; // // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, descricaoMensagemLog, "", "ENV", "ENV", "N", dhUsarioIns); // // //new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, descricaoMensagemLog, "ENV", "ENV", 0, "N", 0, dhUsarioIns, dhUsarioIns, 0); // // break; // case "CL": // descricaoMensagemLog = "Celular confirmou o recebimento."; // //new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, descricaoMensagemLog, "", "ENV", "ENVMR", "N", dhUsarioIns); // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "ENVMR", 0, "N", idFornecedora, dhUsarioIns, dhUsarioIns, 0); // break; // //case "OP": // // descricaoMensagemLog = "Fornecedora TWW enviou a mensagem para operadora de celular."; // // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, descricaoMensagemLog, "", "ENV", "ENV", "N", dhUsarioIns); // // //new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, descricaoMensagemLog, "ENV", "ENV", 0, "N", 0, dhUsarioIns, dhUsarioIns, 0); // // break; // case "E0": // descricaoMensagemLog = "Fornecedora TWW informou que o celular não pertence a nenhuma operadora."; // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "ERREN", 0, "N", idFornecedora, dhUsarioIns, dhUsarioIns, 0); // break; // case "E1": // descricaoMensagemLog = "Celular cadastrado no Blacklist da lista da fornecedora TWW."; // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "REST", "RESTD", 0, "N", idFornecedora, dhUsarioIns, dhUsarioIns, 0); // break; // case "E2": // descricaoMensagemLog = "Fornecedora TWW vetou o envio do SMS (foram enviadas mais de 1 mensagem para o mesmo celular no período de 7 dias)."; // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "REST", "RESTD", 0, "N", idFornecedora, dhUsarioIns, dhUsarioIns, 0); // break; // case "E3": // descricaoMensagemLog = "Mensagem duplicada na fornecedora TWW."; // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "ERREN", 0, "N", idFornecedora, dhUsarioIns, dhUsarioIns, 0); // break; // case "E4": // descricaoMensagemLog = "Fornecedora TWW informou que a mensagem foi rejeitada pela operadora antes da transmissão (número cancelado ou com restrições)."; // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "ERREN", 0, "N", idFornecedora, dhUsarioIns, dhUsarioIns, 0); // break; // case "E5": // descricaoMensagemLog = "Fornecedora TWW informou que a mensagem foi expirada porque não teve retorno de DLR da operadora."; // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "RETEX", 0, "N", idFornecedora, dhUsarioIns, dhUsarioIns, 0); // break; // case "E6": // descricaoMensagemLog = "Fornecedora TWW informou que a mensagem foi expirada após sequencias de tentativas."; // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "RETEX", 0, "N", idFornecedora, dhUsarioIns, dhUsarioIns, 0); // break; // case "E7": // descricaoMensagemLog = "Fornecedora TWW não aceitou a mensagem para transmissão."; // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "ERREN", 0, "N", idFornecedora, dhUsarioIns, dhUsarioIns, 0); // break; // case "E8": // descricaoMensagemLog = "Erro de processamento na fornecedora TWW."; // new CaseBusiness.CC.Mensageria.Mensagem(base.UsuarioManutencao.ID).CriarEnvio(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "ERREN", 0, "N", idFornecedora, dhUsarioIns, dhUsarioIns, 0); // break; // } // } // else // { // //Se a mensagem estiver em outro status diferente do pesquisado então somente log a ocorrência // switch (statusFornecedora.Trim().ToUpper()) // { // //case "OK": // // descricaoMensagemLog = "Fornecedora TWW recebeu a mensagem e colocou na fila para enviar para a operadora."; // // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, descricaoMensagemLog, "", "ENV", "ENV", "N", dhUsarioIns); // // break; // case "CL": // descricaoMensagemLog = "Celular confirmou o recebimento."; // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "ENVMR", "N", idFornecedora, dhUsarioIns); // break; // //case "OP": // // descricaoMensagemLog = "Fornecedora TWW enviou a mensagem para operadora de celular."; // // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, descricaoMensagemLog, "", "ENV", "ENV", "N", dhUsarioIns); // // break; // case "E0": // descricaoMensagemLog = "Fornecedora TWW informou que o celular não pertence a nenhuma operadora."; // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "ERREN", "N", idFornecedora, dhUsarioIns); // break; // case "E1": // descricaoMensagemLog = "Celular cadastrado no Blacklist da lista da fornecedora TWW."; // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "RESTD", "N", idFornecedora, dhUsarioIns); // break; // case "E2": // descricaoMensagemLog = "Fornecedora TWW vetou o envio do SMS (foram enviadas mais de 1 mensagem para o mesmo celular no período de 7 dias)."; // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "RESTD", "N", idFornecedora, dhUsarioIns); // break; // case "E3": // descricaoMensagemLog = "Mensagem duplicada na fornecedora TWW."; // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "ERREN", "N", idFornecedora, dhUsarioIns); // break; // case "E4": // descricaoMensagemLog = "Fornecedora TWW informou que a mensagem foi rejeitada pela operadora antes da transmissão (número cancelado ou com restrições)."; // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "ERREN", "N", idFornecedora, dhUsarioIns); // break; // case "E5": // descricaoMensagemLog = "Fornecedora TWW informou que a mensagem foi expirada porque não teve retorno de DLR da operadora."; // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "RETEX", "N", idFornecedora, dhUsarioIns); // break; // case "E6": // descricaoMensagemLog = "Fornecedora TWW informou que a mensagem foi expirada após sequencias de tentativas."; // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "RETEX", "N", idFornecedora, dhUsarioIns); // break; // case "E7": // descricaoMensagemLog = "Fornecedora TWW não aceitou a mensagem para transmissão."; // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "ERREN", "N", idFornecedora, dhUsarioIns); // break; // case "E8": // descricaoMensagemLog = "Erro de processamento na fornecedora TWW."; // new CaseBusiness.CC.Mensageria.MensagemLog(base.UsuarioManutencao.ID).Incluir(idMensagem, quantidadeEnvio, descricaoMensagemLog, "", "ENV", "ERREN", "N", idFornecedora, dhUsarioIns); // break; // } // } // } //} } } } catch (Exception ex) { CaseBusiness.Framework.Log.Log.Logar(CaseBusiness.Framework.TipoLog.Erro, "Id Mensagem: " + idMensagem.Trim() + " Erro: " + ex.Message, ex.StackTrace, "", "", DateTime.Now, CaseBusiness.Framework.Configuracao.Configuracao.Aplicacao, CaseBusiness.Framework.Tela.Nenhum, 0); new CaseBusiness.CC.Mensageria.MensagemErroLog(base.UsuarioManutencao.ID).Incluir(idMensagem.Trim(), ex.Message, ex.StackTrace, DateTime.Now); } finally { dtMensagem = null; } }