예제 #1
0
        /// <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();
            }
        }
예제 #2
0
 partial void UpdateStatut(Statut instance);
예제 #3
0
 partial void DeleteStatut(Statut instance);
예제 #4
0
 partial void InsertStatut(Statut instance);