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); } }
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); } } }