Esempio n. 1
0
        public bool sendMsg(SMSQueue obj, BackgroundWorker worker, DoWorkEventArgs e)
        {
            try
            {
                bool isSend = false;
                i = 0;

                #region PDU Creation

                SmsSubmitPdu[] pdu;
                try
                {
                    if (m_IsEncoded)
                    {
                        pdu = CreateConcatTextMessage(obj.sms_message, true, Convert.ToString("+92" + obj.receiver_cell_no));
                    }
                    else
                    {
                        pdu = CreateConcatTextMessage(obj.sms_message, false, Convert.ToString("+92" + obj.receiver_cell_no));
                    }
                }
                catch (Exception ex)
                {
                    return(false);
                }

                #endregion

                #region Message Sedning

                if (comm.IsConnected() && comm.IsOpen())
                {
                    comm.SendMessages(pdu);
                    isSend         = true;
                    obj.sms_status = "Sent";
                }
                else
                {
                    Thread.Sleep(500);
                    openPort();
                    isSend         = false;
                    obj.sms_status = "Not Sent";
                    Thread.Sleep(1000);
                    return(false);
                }

                #endregion

                #region Insert History And Update queue

                sh              = new SMSHistory();
                sh.sender_id    = obj.id.ToString();
                sh.sender_name  = obj.receiver_name;
                sh.class_id     = obj.class_id.ToString();
                sh.class_name   = obj.class_name;
                sh.section_id   = obj.section_id.ToString();
                sh.section_name = obj.section_name;
                sh.cell         = obj.receiver_cell_no;
                sh.msg          = obj.sms_message;
                sh.sms_type     = obj.sms_type;
                sh.created_by   = obj.created_by;
                sh.date_time    = DateTime.Now;

                if (miscDAL.InsertSMSHistory(sh) > 0)
                {
                    if (miscDAL.UpdateSMSQueue(obj) > 0)
                    {
                    }
                    else
                    {
                        //MessageBox.Show("Not updated sms queue");
                    }
                }
                else
                {
                    //MessageBox.Show("Sms History not inserted");
                }


                return(isSend);

                #endregion
            }
            catch (Exception ex)

            {
                return(false);
            }
        }
Esempio n. 2
0
        private void sendMsg(SMSQueue obj, Modem comm, BackgroundWorker worker, DoWorkEventArgs e)
        {
            try
            {
                obj.sms_message = ValidateMessage(obj.sms_message);
                bool isSend = false;
                comm.IsFree = false;
                UpdateModemStatus(comm);

                message = comm.GsmCommMain.PortName + "-" + comm.TotalSmsSent + " IsFree=" + comm.IsFree + " Start Sending Message";
                AddLog(EventLevel.Warning.ToString(), DateTime.Now, EventSource.SendMessage.ToString(), message);

                i = 0;

                SmsSubmitPdu[] pdu;
                if (m_IsEncoded)
                {
                    pdu = CreateConcatTextMessage(obj.sms_message, true, Convert.ToString("+92" + obj.receiver_cell_no));
                }
                else
                {
                    pdu = CreateConcatTextMessage(obj.sms_message, false, Convert.ToString("+92" + obj.receiver_cell_no));
                }

                for (int j = 0; j < pdu.Length; j++)
                {
                    try
                    {
                        if (comm.GsmCommMain.IsConnected() && comm.GsmCommMain.IsOpen() && Modems.Count > 0)
                        {
                            comm.GsmCommMain.SendMessage(pdu[j], true);
                            //comm.GsmCommMain.EnablePermanentSmsBatchMode();
                            Thread.Sleep(1000);
                            isSend = true;
                            m_TotalSmsSent++;
                            if (j + 1 == pdu.Length)
                            {
                                if (comm.TotalSmsSent == 0)
                                {
                                    comm.StartTime = DateTime.Now;
                                }
                                comm.IsFree       = true;
                                comm.TotalSmsSent = comm.TotalSmsSent + pdu.Length;
                                UpdateModemStatus(comm);
                                isWholeSent           = true;
                                obj.sms_status        = "Sent";
                                obj.updated_date_time = DateTime.Now;
                                obj.sender_com_port   = comm.GsmCommMain.PortName;
                                obj.sms_length        = pdu.Length;
                                //obj.sender_cell_no = comm.GsmCommMain.GetSmscAddress().Address;

                                message = comm.GsmCommMain.PortName + "-" + comm.TotalSmsSent + " IsFree=True, Receiver=" + obj.receiver_cell_no + " Message:" + obj.sms_message;
                                AddLog(EventLevel.Warning.ToString(), DateTime.Now, EventSource.SendMessage.ToString(), message);
                            }
                        }
                        else
                        {
                            message = comm.GsmCommMain.PortName + "-" + comm.TotalSmsSent + " IsConnected=" + comm.GsmCommMain.IsConnected() + "  IsOpen=" + comm.GsmCommMain.IsOpen();
                            AddLog(EventLevel.Warning.ToString(), DateTime.Now, EventSource.SendMessage.ToString(), message);

                            //j--;

                            isSend      = false;
                            comm.IsFree = false;
                            UpdateModemStatus(comm);
                            obj.sms_status = "Not Sent";
                            Thread.Sleep(1000);

                            if (!comm.GsmCommMain.IsOpen())
                            {
                                OpenPort(comm.GsmCommMain.PortName);
                            }

                            //j--;
                        }
                    }
                    catch (Exception ex)
                    {
                        if (ex.Message.Contains("Message service error 500 occurred."))
                        {
                            try
                            {
                                Thread.Sleep(1000);
                                comm.GsmCommMain.Close();
                                Modems.Remove(Modems.Where(x => x.GsmCommMain.PortName == comm.GsmCommMain.PortName).First());
                                message = comm.GsmCommMain.PortName + " Removed";
                                AddLog(EventLevel.Warning.ToString(), DateTime.Now, EventSource.SendMessage.ToString(), message);
                            }
                            catch (Exception exx)
                            {
                                message = comm.GsmCommMain.PortName + " Removed Exception: " + exx.Message;
                                AddLog(EventLevel.Warning.ToString(), DateTime.Now, EventSource.SendMessage.ToString(), message);
                            }
                            finally
                            {
                                CloseWindow();
                            }
                            Thread.Sleep(1000);
                        }
                        //Access is denied.
                        else if (ex.Message.Contains("Access is denied."))
                        {
                        }
                        else if (ex.Message.Contains("Unexpected response received from phone"))
                        {
                            //Unexpected response received from phone: warid
                            comm.IsFree = true;
                            if (comm.TotalSmsSent == 0)
                            {
                                comm.StartTime = DateTime.Now;
                            }
                            comm.TotalSmsSent = comm.TotalSmsSent + pdu.Length;
                            UpdateModemStatus(comm);

                            isSend                = true;
                            obj.sms_status        = "Sent";
                            obj.updated_date_time = DateTime.Now;
                            obj.sender_com_port   = comm.GsmCommMain.PortName;
                            obj.sms_length        = pdu.Length;
                            //obj.sender_cell_no = comm.GsmCommMain.GetSmscAddress().Address;
                            message = comm.GsmCommMain.PortName + "-" + comm.TotalSmsSent + " IsFree=True, Receiver=" + obj.receiver_cell_no + " Message:" + obj.sms_message;
                            AddLog(EventLevel.Warning.ToString(), DateTime.Now, EventSource.SendMessage.ToString(), message);
                        }
                        else if (ex.Message.Contains("No data received from phone after waiting for"))
                        {
                            try
                            {
                                Thread.Sleep(1000);
                                comm.GsmCommMain.Close();
                                Modems.Remove(Modems.Where(x => x.GsmCommMain.PortName == comm.GsmCommMain.PortName).First());
                                message = comm.GsmCommMain.PortName + " Removed";
                                AddLog(EventLevel.Warning.ToString(), DateTime.Now, EventSource.SendMessage.ToString(), message);
                            }
                            catch (Exception exx)
                            {
                                message = comm.GsmCommMain.PortName + " Removed Exception: " + exx.Message;
                                AddLog(EventLevel.Warning.ToString(), DateTime.Now, EventSource.SendMessage.ToString(), message);
                            }
                            finally
                            {
                                CloseWindow();
                            }
                            Thread.Sleep(1000);
                        }
                        else if (ex.Message.Contains("The character"))
                        {
                            //The character '' at position 10 does not exist in the GSM 7-bit default alphabet.
                            try
                            {
                                Thread.Sleep(1000);
                                comm.IsFree = true;
                                UpdateModemStatus(comm);
                                message = comm.GsmCommMain.PortName + " Invalid Character: " + ex.Message;
                                AddLog(EventLevel.Warning.ToString(), DateTime.Now, EventSource.SendMessage.ToString(), message);
                            }
                            catch (Exception exm)
                            {
                            }
                            finally
                            {
                            }
                        }
                        else
                        {
                            comm.IsFree = false;
                            UpdateModemStatus(comm);
                            isSend         = false;
                            obj.sms_status = "Not Sent";
                        }

                        message = comm.GsmCommMain.PortName + "-" + comm.TotalSmsSent + " Exception:" + ex.Message;
                        AddLog(EventLevel.Warning.ToString(), DateTime.Now, EventSource.SendMessage.ToString(), message);
                    }
                }
                // saved to sms history table whether sent or not
                //change for queue
                if (isSend)
                {
                    sh              = new SMSHistory();
                    sh.sender_id    = obj.id.ToString();
                    sh.sender_name  = obj.receiver_name;
                    sh.class_id     = obj.class_id.ToString();
                    sh.class_name   = obj.class_name;
                    sh.section_id   = obj.section_id.ToString();
                    sh.section_name = obj.section_name;
                    sh.cell         = obj.receiver_cell_no;
                    sh.msg          = obj.sms_message;
                    sh.sms_type     = obj.sms_type;
                    sh.created_by   = obj.created_by;
                    sh.date_time    = DateTime.Now;

                    if (miscDAL.InsertSMSHistory(sh) > 0)
                    {
                        if (miscDAL.UpdateSMSQueue(obj) > 0)
                        {
                        }
                        else
                        {
                            MessageBox.Show("Not updated sms queue");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Sms History not inserted");
                    }
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("The character"))
                {
                    //The character '' at position 10 does not exist in the GSM 7-bit default alphabet.
                    try
                    {
                        Thread.Sleep(1000);
                        comm.IsFree = true;
                        UpdateModemStatus(comm);
                        message = comm.GsmCommMain.PortName + " Invalid Character: " + ex.Message;
                        AddLog(EventLevel.Warning.ToString(), DateTime.Now, EventSource.SendMessage.ToString(), message);
                    }
                    catch (Exception exm)
                    {
                    }
                    finally
                    {
                    }
                }
                else
                {
                    message = comm.GsmCommMain.PortName + "-" + comm.TotalSmsSent + " Exception:" + ex.Message;
                    AddLog(EventLevel.Warning.ToString(), DateTime.Now, EventSource.SendMessage.ToString(), message);
                }
            }
        }