/// <summary> /// Retourne vrai si l'accuse du sms a ete recu par le modem /// </summary> /// <param name="sms">Le SMS dont on cherche l'accusé</param> /// <param name="listeAccusesModem">Les accusés de réception (voir readDeliveryReport() dans ModemSMS)</param> /// <returns>True si l'accusé du SMS est trouvé, false sinon</returns> public Boolean verifierAccusePresentDansModem(MessageEnvoi sms, String[][] listeAccusesModem) { Boolean estPresent = false; int compteur = 0; while (estPresent == false && compteur < listeAccusesModem.Count()) { if ((listeAccusesModem[compteur][0] != null) && (sms.referenceEnvoi != null)) { //Console.WriteLine(listeAccusesModem[compteur][0].Trim() + "<=>" + sms.referenceEnvoi.Trim()); if (sms.referenceEnvoi.Trim() == listeAccusesModem[compteur][0].Trim()) { estPresent = true; //on sauvegarde la date de l'accuse reception Console.WriteLine("Date origine : " + listeAccusesModem[compteur][3] + " " + listeAccusesModem[compteur][4]); DateTime dateReception = DateTime.ParseExact(listeAccusesModem[compteur][3] + " " + listeAccusesModem[compteur][4], "yy/MM/dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture); sms.dateReceptionAccuse = dateReception; } } compteur++; } return(estPresent); }
private void detach_MessageEnvoi(MessageEnvoi entity) { this.SendPropertyChanging(); entity.Statut = null; }
partial void DeleteMessageEnvoi(MessageEnvoi instance);
partial void UpdateMessageEnvoi(MessageEnvoi instance);
partial void InsertMessageEnvoi(MessageEnvoi instance);
/// <summary> /// methode qui communique avec le modem pour une demande d'envoi de SMS avec un message texte /// </summary> /// <param name="sms"></param> private void envoyerSMS(MessageEnvoi sms) { try { //on recupere le statut "ENVOYE" Statut statutEnvoye = (from stat in dbContext.Statut where stat.libelleStatut == "Envoye" select stat).First(); //on recupere le booleen concernant la demande d'accuse reception Boolean demandeAccuse = true; //par defaut a vrai if (sms.Message.accuseReception == 0) //si specifier le contraire en BD, on change la valeur { demandeAccuse = false; } //on determine le message a envoyer String messageAEnvoyer = null; //pour sauvegarder la reference du SMS envoye String reference = null; //si message Texte est nul alors c'est une trame PDU (si non nul aussi) if (sms.Message.messageTexte == null && sms.Message.messagePDU != null) //TRAME PDU { messageAEnvoyer = sms.Message.messagePDU; //on recupere la reference du message envoye reference = modem.sendTramePDU(messageAEnvoyer); // //decodage de la trame PDU // SMS smsPDU; smsPDU = modem.decodeSMSPDU(messageAEnvoyer); // Peut lever une exception si la trame PDU n'est pas correct sms.Message.messageTexte = smsPDU.Message; sms.Message.noDestinataire = smsPDU.PhoneNumber; sms.dureeValidite = modem.calculValidityPeriod(smsPDU.ValidityPeriod); //status report if (smsPDU.StatusReportIndication) sms.Message.accuseReception = 1; else sms.Message.accuseReception = 0; } //si trame PDU est nulle alors c'est un message Texte (si pas nul aussi) else if (sms.Message.messageTexte != null && sms.Message.messagePDU == null) //si trame PDU est nulle alors c'est un message Texte (si non nulle aussi) { messageAEnvoyer = sms.Message.messageTexte; //on recupere la duree de validite int dureeValiditite = -1; if (sms.dureeValidite.HasValue) dureeValiditite = sms.dureeValidite.Value; //on recupere la reference du message envoye reference = modem.sendSMSPDU(sms.Message.noDestinataire, messageAEnvoyer, demandeAccuse, sms.Message.Encodage.libelleEncodage, dureeValiditite); } //verifie s'il y a une erreur if (reference.Contains("ERROR")) { //on passe le statut du sms a erreur sms.Statut = (from stat in dbContext.Statut where stat.libelleStatut == "Erreur" select stat).First(); } else //on sauvegarde la reference en BD { sms.referenceEnvoi = reference; } //on sauvegarde le sms comme envoye s'il y a une reference d'envoi if (reference != null) { //on complete les informations sur l'envoi des SMS sms.Message.noEmetteur = numeroModem; sms.accuseReceptionRecu = 0; //pas encore recu //on passe le sms en statut envoye sms.Statut = statutEnvoye; sms.dateEnvoi = DateTime.Now; //date du jour } else // erreur { //on passe le statut du sms a erreur sms.Statut = (from stat in dbContext.Statut where stat.libelleStatut == "Erreur" select stat).First(); } //on valide les changements dans la BD dbContext.SubmitChanges(); } catch (ApplicationException ae) { Console.WriteLine(ae.Message); envoyerSMS(sms); } catch (Exception e) { sms.Statut = (from stat in dbContext.Statut where stat.libelleStatut == "Erreur" select stat).First(); dbContext.SubmitChanges(); } }
/// <summary> /// Retourne vrai si l'accuse du sms a ete recu par le modem /// </summary> /// <param name="sms">Le SMS dont on cherche l'accusé</param> /// <param name="listeAccusesModem">Les accusés de réception (voir readDeliveryReport() dans ModemSMS)</param> /// <returns>True si l'accusé du SMS est trouvé, false sinon</returns> public Boolean verifierAccusePresentDansModem(MessageEnvoi sms, String[][] listeAccusesModem) { Boolean estPresent = false; int compteur = 0; while (estPresent == false && compteur<listeAccusesModem.Count()) { if ((listeAccusesModem[compteur][0] != null) && (sms.referenceEnvoi != null)) { //Console.WriteLine(listeAccusesModem[compteur][0].Trim() + "<=>" + sms.referenceEnvoi.Trim()); if (sms.referenceEnvoi.Trim() == listeAccusesModem[compteur][0].Trim()) { estPresent = true; //on sauvegarde la date de l'accuse reception Console.WriteLine("Date origine : " + listeAccusesModem[compteur][3] + " " + listeAccusesModem[compteur][4]); DateTime dateReception = DateTime.ParseExact(listeAccusesModem[compteur][3] + " " + listeAccusesModem[compteur][4], "yy/MM/dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture); sms.dateReceptionAccuse = dateReception; } } compteur++; } return estPresent; }
/// <summary> /// methode qui communique avec le modem pour une demande d'envoi de SMS avec un message texte /// </summary> /// <param name="sms"></param> private void envoyerSMS(MessageEnvoi sms) { try { //on recupere le statut "ENVOYE" Statut statutEnvoye = (from stat in dbContext.Statut where stat.libelleStatut == "Envoye" select stat).First(); //on recupere le booleen concernant la demande d'accuse reception Boolean demandeAccuse = true; //par defaut a vrai if (sms.Message.accuseReception == 0) //si specifier le contraire en BD, on change la valeur { demandeAccuse = false; } //on determine le message a envoyer String messageAEnvoyer = null; //pour sauvegarder la reference du SMS envoye String reference = null; //si message Texte est nul alors c'est une trame PDU (si non nul aussi) if (sms.Message.messageTexte == null && sms.Message.messagePDU != null) //TRAME PDU { messageAEnvoyer = sms.Message.messagePDU; //on recupere la reference du message envoye reference = modem.sendTramePDU(messageAEnvoyer); // //decodage de la trame PDU // SMS smsPDU; smsPDU = modem.decodeSMSPDU(messageAEnvoyer); // Peut lever une exception si la trame PDU n'est pas correct sms.Message.messageTexte = smsPDU.Message; sms.Message.noDestinataire = smsPDU.PhoneNumber; sms.dureeValidite = modem.calculValidityPeriod(smsPDU.ValidityPeriod); //status report if (smsPDU.StatusReportIndication) { sms.Message.accuseReception = 1; } else { sms.Message.accuseReception = 0; } } //si trame PDU est nulle alors c'est un message Texte (si pas nul aussi) else if (sms.Message.messageTexte != null && sms.Message.messagePDU == null) //si trame PDU est nulle alors c'est un message Texte (si non nulle aussi) { messageAEnvoyer = sms.Message.messageTexte; //on recupere la duree de validite int dureeValiditite = -1; if (sms.dureeValidite.HasValue) { dureeValiditite = sms.dureeValidite.Value; } //on recupere la reference du message envoye reference = modem.sendSMSPDU(sms.Message.noDestinataire, messageAEnvoyer, demandeAccuse, sms.Message.Encodage.libelleEncodage, dureeValiditite); } //verifie s'il y a une erreur if (reference.Contains("ERROR")) { //on passe le statut du sms a erreur sms.Statut = (from stat in dbContext.Statut where stat.libelleStatut == "Erreur" select stat).First(); } else //on sauvegarde la reference en BD { sms.referenceEnvoi = reference; } //on sauvegarde le sms comme envoye s'il y a une reference d'envoi if (reference != null) { //on complete les informations sur l'envoi des SMS sms.Message.noEmetteur = numeroModem; sms.accuseReceptionRecu = 0; //pas encore recu //on passe le sms en statut envoye sms.Statut = statutEnvoye; sms.dateEnvoi = DateTime.Now; //date du jour } else // erreur { //on passe le statut du sms a erreur sms.Statut = (from stat in dbContext.Statut where stat.libelleStatut == "Erreur" select stat).First(); } //on valide les changements dans la BD dbContext.SubmitChanges(); } catch (ApplicationException ae) { Console.WriteLine(ae.Message); envoyerSMS(sms); } catch (Exception e) { sms.Statut = (from stat in dbContext.Statut where stat.libelleStatut == "Erreur" select stat).First(); dbContext.SubmitChanges(); } }