private void Execute(object paremeter) { ThreadParameter p = paremeter as ThreadParameter; JZDocument document = p.document; Sys_Module module = p.module; String invalidString = ""; if (module != null) { if (module.QualifySettings != null && module.QualifySettings.Count > 0) { foreach (QualifySetting qs in module.QualifySettings) { Object obj = JZCommonHelper.GetCellValue(document, qs.SheetID, qs.CellName); if (obj != null && obj.ToString() != "") { invalidString = obj.ToString().Trim(' ', '\r', '\n'); break; } } } } if (invalidString != "") { try { String[] arr = invalidString.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (arr.Length < 3) { logger.Error("无效的不合格短信内容,document的ID为" + document.ID + ";短信内容为:" + invalidString); return; } Boolean needSendSMS = false; SMSManager smsManager = new SMSManager(); if (!p.IsAdministrator) { needSendSMS = smsManager.NeedSendSMS(document.ID.ToString(), invalidString); logger.Error(invalidString + "needsendsms=" + needSendSMS); } if (needSendSMS) { smsManager.SendSMS(document.ID.ToString(), invalidString, p.LineID, p.TestRoomCode, p.SegmentName, p.CompanyName, p.TestRoomName, p.LineName); } } catch (Exception ex) { logger.Error("更新合格字段IsQualified失败,原因是" + ex.Message); } } icm.SyncInvalidReport(document.ID, invalidString); }
private void BtnSendMsg_Clicked(object sender, EventArgs e) { if (_SMSMessage.contact == null) { return; } if (editorSMS.Text == null) { PopUpDisplay.OnAlertRequested(this, "", ""); } SMSManager.SendSMS(editorSMS.Text, _SMSMessage.contact); }
// Valider la transaction private void btnOK_Click(object sender, EventArgs e) { // Récupération des informations du formulaire string dateTransaction = calAjoutTransaction.Value.ToShortDateString(); string description = txtDesc.Text; decimal montant; int type = (int)cboType.SelectedValue; int idTransac = GetNextIdTransac(); // Récupérer le numéro de la prochaine transaction int codeRetour; // Tente de convertir le montant en un double. Sinon : affiche une erreur et stop le traitement. if (!LocalizationManager.ConvertFloatingTo <decimal>(txtMontant.Text, decimal.TryParse, out montant)) { ErrorManager.ShowNotANumberError(this); return; } // Ouverture de la connection OleDbConnection connec = DatabaseManager.GetConnection(); // Construction de la chaine de la requête string requeteTransac = @"INSERT INTO [Transaction] VALUES (?,?,?,?,?,?,?)"; // Création de la requete INSERT de la transaction OleDbCommand cmdTransac = new OleDbCommand(requeteTransac, connec); cmdTransac.Parameters.AddWithValue("@codeTransaction", idTransac); cmdTransac.Parameters.AddWithValue("@dateTransaction", dateTransaction); // Si jamais la description n'est pas renseigne, on insert "NULL" dans la colonne description cmdTransac.Parameters.AddWithValue("@description", string.IsNullOrEmpty(description) ? (object)DBNull.Value : description); cmdTransac.Parameters.AddWithValue("@montant", montant); cmdTransac.Parameters.AddWithValue("@recetteON", ckbRecette.Checked); cmdTransac.Parameters.AddWithValue("@percuON", ckbPercu.Checked); cmdTransac.Parameters.AddWithValue("@type", type); try { // Execution de la requête connec.Open(); codeRetour = cmdTransac.ExecuteNonQuery(); // Création des requetes dans la table des bénéficiaires OleDbCommand cmdBenef = new OleDbCommand(); cmdBenef.Connection = connec; string requeteBenef = @"INSERT INTO [Beneficiaires]([codeTransaction], [codePersonne]) VALUES (?,?)"; cmdBenef.CommandText = requeteBenef; string numPers = string.Empty; // Pour chaque personne sélectionnée dans la listbox, // ajouter la transaction avec le codePersonne correspondant foreach (DataRowView drw in listBoxAjoutTransaction_Personne.SelectedItems) { cmdBenef.Parameters.Clear(); numPers = drw.Row[0].ToString(); cmdBenef.Parameters.AddWithValue("@codeTransaction", idTransac); cmdBenef.Parameters.AddWithValue("@codePersonne", numPers); cmdBenef.ExecuteNonQuery(); } ErrorManager.EntriesSuccessfullyAdded(this); // if the amount is a expense if (montant < 0) { ///////// Envoi d'un SMS si la somme dépasse la totalité des revenus + 10 % // Recherche et calcul du revenu de la famille string requeteSumRevenus = "SELECT SUM(montant) FROM [PosteRevenu]"; OleDbCommand cmdSumRevenus = new OleDbCommand(requeteSumRevenus, connec); object _sumRevenus = cmdSumRevenus.ExecuteScalar(); // we put in decimal because of a bug from the VS compiler installed in rds's server // (see https://github.com/dotnet/roslyn/issues/7148) decimal sumRevenus = (_sumRevenus.GetType() != typeof(DBNull)) ? decimal.Parse(_sumRevenus.ToString()) : 0; // put the sum Revenu to negative to compare the negative expense decimal sommeLimite = (sumRevenus * -1) - 0.1M * sumRevenus; List <string> numerosTel = new List <string>(); // Si le montant de la transaction dépasse cette somme max, alors on envoi // un sms a tous les numéros renseignés dans la base if (montant < sommeLimite) { // On récupère tous les numéros de téléphone de la table Personne string requeteAllNum = "SELECT telMobile FROM [Personne] WHERE telMobile IS NOT NULL"; OleDbCommand cmdAllNum = new OleDbCommand(requeteAllNum, connec); OleDbDataReader drAllNum = cmdAllNum.ExecuteReader(); while (drAllNum.Read()) { string num = drAllNum[0].ToString(); if (num[0] == '0') { num = num.Substring(1, num.Length - 1); num = "+33" + num; } numerosTel.Add(num); } // if there are num found if (numerosTel.Count > 0) { // Envoi des SMS string message = string.Format(Program.settings.localize.Translate("sms_big_expense_msg_{0}"), montant); SMSManager.SendSMS(this, numerosTel.ToArray(), message); ErrorManager.SMSSuccessfullySent(this); } } } // Clear formulaire btnClearAjoutTransaction_Click(null, null); this.Close(); } catch (OleDbException ex) { ErrorManager.HandleOleDBError(ex); } finally { connec.Close(); } }
// Valider la transaction private void btnOK_Click(object sender, EventArgs e) { // Récupération des informations du formulaire string dateTransaction = calAjoutTransaction.Value.ToShortDateString(); string description = txtAjoutTransaction_desc.Text; double montant; int type = (int)cboAjoutTransaction_Type.SelectedValue; int idTransac = GetNextIdTransac(); // Récupérer le numéro de la prochaine transaction int codeRetour; // Tente de convertir le montant en un double. Sinon : affiche une erreur et stop le traitement. if (!LocalizationManager.ConvertFloatingTo <double>(txtAjoutTransaction_montant.Text, double.TryParse, out montant)) { ErrorManager.ShowNotANumberError(this); return; } // Ouverture de la connection OleDbConnection connec = DatabaseManager.CreateConnection(); // Construction de la chaine de la requête string requeteTransac = @"INSERT INTO [Transaction] VALUES (?,?,?,?,?,?,?)"; // Création de la requete INSERT de la transaction OleDbCommand cmdTransac = new OleDbCommand(requeteTransac, connec); cmdTransac.Parameters.AddWithValue("@codeTransaction", idTransac); cmdTransac.Parameters.AddWithValue("@dateTransaction", dateTransaction); // Si jamais la description n'est pas renseigne, on insert "NULL" dans la colonne description cmdTransac.Parameters.AddWithValue("@description", string.IsNullOrEmpty(description) ? (object)DBNull.Value : description); cmdTransac.Parameters.AddWithValue("@montant", montant > 0 ? montant : montant * -1); cmdTransac.Parameters.AddWithValue("@recetteON", ckbAjoutTransaction_recette.Checked); cmdTransac.Parameters.AddWithValue("@percuON", ckbAjoutTransaction_percu.Checked); cmdTransac.Parameters.AddWithValue("@type", type); try { // Execution de la requête connec.Open(); codeRetour = cmdTransac.ExecuteNonQuery(); // Création des requetes dans la table des bénéficiaires OleDbCommand cmdBenef = new OleDbCommand(); cmdBenef.Connection = connec; string requeteBenef = @"INSERT INTO [Beneficiaires]([codeTransaction], [codePersonne]) VALUES (?,?)"; cmdBenef.CommandText = requeteBenef; string numPers = string.Empty; // Pour chaque personne sélectionnée dans la listbox, // ajouter la transaction avec le codePersonne correspondant foreach (DataRowView drw in listBoxAjoutTransaction_Personne.SelectedItems) { cmdBenef.Parameters.Clear(); numPers = drw.Row[0].ToString(); cmdBenef.Parameters.AddWithValue("@codeTransaction", idTransac); cmdBenef.Parameters.AddWithValue("@codePersonne", numPers); cmdBenef.ExecuteNonQuery(); } ///////// Envoi d'un SMS si la somme dépasse la totalité des revenus + 10 % // Recherche et calcul du revenu de la famille string requeteSumRevenus = "SELECT SUM(montant) FROM [PosteRevenu]"; OleDbCommand cmdSumRevenus = new OleDbCommand(requeteSumRevenus, connec); double sumRevenus = (double)cmdSumRevenus.ExecuteScalar(); double sommeLimite = sumRevenus + 0.1 * sumRevenus; //MessageBox.Show("Revenu : " + sumRevenus + "\n" + "Somme limite : " + sommeLimite); List <string> numerosTel = new List <string>(); // Si le montant de la transaction dépasse cette somme max, alors on envoi // un sms a tous les numéros renseignés dans la base if (montant > sommeLimite) { // On récupère tous les numéros de téléphone de la table Personne string requeteAllNum = "SELECT telMobile FROM [Personne] WHERE telMobile IS NOT NULL"; OleDbCommand cmdAllNum = new OleDbCommand(requeteAllNum, connec); OleDbDataReader drAllNum = cmdAllNum.ExecuteReader(); while (drAllNum.Read()) { string num = drAllNum[0].ToString(); if (num[0] == '0') { num = num.Substring(1, num.Length - 1); num = "+33" + num; } //MessageBox.Show("Numéro : " + num); numerosTel.Add(num); } } // Envoi des SMS string message = "Message automatique de BreakingBudget\n" + "ATTENTION : Quelqu'un a saisi une transaction d'un montant anormalement élevé de " + montant; SMSManager.SendSMS(this, numerosTel.ToArray(), message); // Show message success ErrorManager.EntriesSuccessfullyAdded(this); // Clear formulaire btnClear_Click(null, null); } catch (OleDbException ex) { ErrorManager.HandleOleDBError(ex); } finally { connec.Close(); } // TODO: SMS API }
/// <summary> /// Sends a SMS of the base64 encoded error stack to one of the developers. /// The remote will also log them as it sees the "is_reporting_error". /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSendError_Click(object sender, EventArgs e) { SMSManager.SendSMS(this, new string[] { APP_SUPPORT_PHONE_NUMBER }, Convert.ToBase64String(Encoding.UTF8.GetBytes(this.errorDataTextBox.Text)), new System.Collections.Generic.KeyValuePair <string, string>("is_reporting_error", "true")); }