📄 client.cs
字号:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WSISClasses;
using GsmComm.PduConverter;
using GsmComm.GsmCommunication;
using System.Threading;
namespace SMSServer
{
public class Client
{
public enum STATE { ATTENDANCE, INTERNALS, ALERT, ATTENDANCE_ALERT, INTERNAL_ALERT, PLACEMENT_ALERT, SERVICE_ACTIVATION, SERVICE_DEACTIVATION, NULL};
String ClientNo;
String RequestMessage;
String Result;
Student m_Student;
STATE m_RequestState = STATE.NULL;
String[] userData = new String[10];
Thread ClientThread;
int i = 0;
public Client() { }
public Client(String clientno, String reqmessage)
{
ClientNo = clientno;
RequestMessage = reqmessage + " ";
ClientThread = new Thread(new ThreadStart(ParseClientMessage));
ClientThread.Start();
}
private void ParseClientMessage()
{
int eolIndex=0;
int si = 0;
while (((eolIndex = RequestMessage.IndexOf(" ",eolIndex)) != -1))
{
userData[i++] = RequestMessage.Substring(si, eolIndex-si).Trim();
if (userData[0] == "SND")
{
ParseSNDMessage();
break;
}
else if (userData[0] == "PAL")
{
ParsePALMessage();
break;
}
si = eolIndex + 1;
eolIndex++;
if (eolIndex >= RequestMessage.Length - 1)
break;
}
ProcessClientMessage();
}
private void ParseSNDMessage()
{
int eolIndex = 0;
int si = 0;
i = 0;
while (((eolIndex = RequestMessage.IndexOf(" ", eolIndex)) != -1))
{
userData[i++] = RequestMessage.Substring(si, eolIndex - si).Trim();
si = eolIndex + 1;
eolIndex++;
if (i == 4)
{
eolIndex = RequestMessage.IndexOf(" ", eolIndex);
userData[i] = RequestMessage.Substring(si, RequestMessage.Length-si).Trim();
break;
}
if (eolIndex >= RequestMessage.Length - 1)
break;
}
}
private void ParsePALMessage()
{
int eolIndex = 0;
int si = 0;
i = 0;
while (((eolIndex = RequestMessage.IndexOf(" ", eolIndex)) != -1))
{
userData[i++] = RequestMessage.Substring(si, eolIndex - si).Trim();
si = eolIndex + 1;
eolIndex++;
if (i == 1)
{
eolIndex = RequestMessage.IndexOf(" ", eolIndex);
userData[i] = RequestMessage.Substring(si, RequestMessage.Length - si).Trim();
break;
}
if (eolIndex >= RequestMessage.Length - 1)
break;
}
}
private void ProcessClientMessage()
{
if (userData[0].ToUpper() == "ATT")
m_RequestState = STATE.ATTENDANCE;
else if (userData[0].ToUpper() == "INT")
m_RequestState = STATE.INTERNALS;
else if (userData[0].ToUpper() == "SND")
m_RequestState = STATE.ALERT;
else if (userData[0].ToUpper() == "ACT")
m_RequestState = STATE.SERVICE_ACTIVATION;
else if (userData[0].ToUpper() == "DAC")
m_RequestState = STATE.SERVICE_DEACTIVATION;
else if (userData[0].ToUpper() == "AAL")
m_RequestState = STATE.ATTENDANCE_ALERT;
else if (userData[0].ToUpper() == "IAL")
m_RequestState = STATE.INTERNAL_ALERT;
else if (userData[0].ToUpper() == "PAL")
m_RequestState = STATE.PLACEMENT_ALERT;
ReplayClientMessage();
}
private void ReplayClientMessage()
{
switch (m_RequestState)
{
case STATE.ATTENDANCE:
m_Student = new Student();
Result = m_Student.GetSMSAttendance(userData[1]);
SendMessage();
break;
case STATE.INTERNALS:
m_Student = new Student();
if(userData[2] == "" || userData[2] == " " || userData[2] == null)
Result = m_Student.GetSMSInternals(userData[1].ToUpper(), 1);
else
Result = m_Student.GetSMSInternals(userData[1].ToUpper(), Convert.ToInt32(userData[2]));
SendMessage();
break;
case STATE.ALERT:
m_Student = new Student();
String[] MobileNos = m_Student.GetMobileNo(userData[1].ToUpper(), Convert.ToInt32(userData[2]), userData[3].ToUpper());
Result = userData[4];
foreach (String mob in MobileNos)
{
ClientNo = mob;
if (ClientNo == null)
break;
SendMessage();
}
break;
case STATE.SERVICE_ACTIVATION:
m_Student = new Student();
if (m_Student.RegAlerts(userData[1].ToUpper(), ClientNo))
Result = "You have sucessfully register for alerts.";
else
Result = "Alert registration failed. Please try again after sometime. if you still face a problem contact System Administrator.";
SendMessage();
break;
case STATE.SERVICE_DEACTIVATION:
m_Student = new Student();
if (m_Student.UnRegAlerts(userData[1].ToUpper()))
Result = "You have sucessfully unregister for alerts.";
else
Result = "Alert De-registration failed. Please try again after sometime. if you still face a problem contact System Administrator.";
SendMessage();
break;
case STATE.ATTENDANCE_ALERT:
m_Student = new Student();
String[,] AlertList = m_Student.GetAlertList(userData[1].ToUpper(), Convert.ToInt32(userData[2]), userData[3].ToUpper());
String usn;
for (int x = 0; x < AlertList.Length; x++)
{
usn = AlertList[x, 0];
ClientNo = AlertList[x, 1];
if (usn == null || ClientNo == null)
break;
Result = m_Student.GetSMSAttendance(usn);
SendMessage();
}
break;
case STATE.INTERNAL_ALERT:
m_Student = new Student();
String[,] AlertList1 = m_Student.GetAlertList(userData[1].ToUpper(), Convert.ToInt32(userData[2]), userData[3].ToUpper());
String usn1;
for (int x = 0; x < AlertList1.Length; x++)
{
usn1 = AlertList1[x, 0];
ClientNo = AlertList1[x, 1];
if (usn1 == null || ClientNo == null)
break;
Result = m_Student.GetSMSInternals(usn1,Convert.ToInt32(userData[4]));
SendMessage();
}
break;
case STATE.PLACEMENT_ALERT:
m_Student = new Student();
String[] MobileNos1 = m_Student.GetAllNumbers();
Result = userData[1];
foreach (String mob in MobileNos1)
{
ClientNo = mob;
if (ClientNo == null)
break;
SendMessage();
}
break;
default:
Result = "Invalid Request.\r\n";
Result += "ATT <USN> : For Attemdance\r\n";
Result += "INT <USN> <Internal No> : For Internals\r\n";
Result += "e.g. ATT 1MS03CS142\r\n";
Result += "INT 1MS03CS142 1\r\n";
SendMessage();
break;
}
ClientThread.Join(1000);
if (ClientThread.IsAlive)
ClientThread.Abort();
}
private void SendMessage()
{
// Send an SMS message
SmsSubmitPdu pdu;
pdu = new SmsSubmitPdu(Result, ClientNo, ""); // "" indicate SMSC No
// Send the message the specified number of times
CommSetting.comm.SendMessage(pdu);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -