コード例 #1
0
ファイル: ServiceManager.cs プロジェクト: gyagapen/Synox
        /// <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);
        }
コード例 #2
0
 private void detach_MessageEnvoi(MessageEnvoi entity)
 {
     this.SendPropertyChanging();
     entity.Statut = null;
 }
コード例 #3
0
 partial void DeleteMessageEnvoi(MessageEnvoi instance);
コード例 #4
0
 partial void UpdateMessageEnvoi(MessageEnvoi instance);
コード例 #5
0
 partial void InsertMessageEnvoi(MessageEnvoi instance);
コード例 #6
0
ファイル: ServiceManager.cs プロジェクト: gyagapen/Synox
        /// <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();
            }
        }
コード例 #7
0
ファイル: ServiceManager.cs プロジェクト: gyagapen/Synox
        /// <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;
        }
コード例 #8
0
ファイル: ServiceManager.cs プロジェクト: gyagapen/Synox
        /// <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();
            }
        }
コード例 #9
0
		private void detach_MessageEnvoi(MessageEnvoi entity)
		{
			this.SendPropertyChanging();
			entity.Statut = null;
		}
コード例 #10
0
 partial void DeleteMessageEnvoi(MessageEnvoi instance);
コード例 #11
0
 partial void UpdateMessageEnvoi(MessageEnvoi instance);
コード例 #12
0
 partial void InsertMessageEnvoi(MessageEnvoi instance);