Ejemplo n.º 1
0
        public ShortMessages ParseMessages(string input)
        {
            ShortMessages messages = new ShortMessages();

            try
            {
                Regex r = new Regex(@"\+CMGL: (\d+),""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n");
                Match m = r.Match(input);
                while (m.Success)
                {
                    ShortMessage msg = new ShortMessage();
                    //msg.Index = int.Parse(m.Groups[1].Value);
                    msg.Index    = m.Groups[1].Value;
                    msg.Status   = m.Groups[2].Value;
                    msg.Sender   = m.Groups[3].Value;
                    msg.Alphabet = m.Groups[4].Value;
                    msg.Sent     = m.Groups[5].Value;
                    msg.Message  = m.Groups[6].Value;
                    messages.Add(msg);

                    m = m.NextMatch();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(messages);
        }
Ejemplo n.º 2
0
        public ShortMessages Get(String consumerkey)
        {
            var shortMessages = new ShortMessages();

            if (string.IsNullOrEmpty(consumerkey))
            {
                return(shortMessages);
            }

            var allShortMessages = valueRepository.GetAll(consumerkey);

            if (allShortMessages != null)
            {
                shortMessages.Messages = allShortMessages
                                         .OrderByDescending(value => value.Created).ToList();
            }

            return(shortMessages);
        }
Ejemplo n.º 3
0
        public ShortMessages ReadSMS(SerialPort port, string command)
        {
            // Set up the phone and read the messages
            ShortMessages messages = null;

            try
            {
                #region Execute Command
                // Check connection
                ExecCommand(port, "AT", 300, string.Format(Message.Error.NoModem, port.PortName));
                // Use message format "Text mode"
                ExecCommand(port, "AT+CMGF=1", 300, Message.Error.FailToFormat);
                // Use character set "GSM"
                ExecCommand(port, "AT+CSCS=\"GSM\"", 300, Message.Error.FailToCharSet);
                // Select SIM storage
                ExecCommand(port, "AT+CPMS=\"SM\"", 300, Message.Error.FailToSIM);
                // Read the messages
                string input = ExecCommand(port, command, 5000, Message.Error.FailToRead);
                #endregion

                #region Parse messages
                messages = ParseMessages(input);
                #endregion
            }
            catch (Exception ex)
            {
                throw ex;
            }

            if (messages != null)
            {
                return(messages);
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 4
0
        private static LogTableDetails SendMessage(DataTable dt, Guid processLogRowID)
        {
            const string sourceTable = "Toko";

            int rowsCount = dt.Rows.Count;

            LogTableDetails logTableDetails = new LogTableDetails();

            LogTableDetail logTableDetail = BroadcastLog.LogStart(processLogRowID, rowsCount);

            logTableDetails.Add(logTableDetail);

            SerialPort    port             = new SerialPort();
            SMS           sms              = new SMS();
            ShortMessages objShortMessages = new ShortMessages();

            int sentCount   = 0;
            int failedCount = 0;

            try
            {
                int responseTimeout = MessageSetting.ResponseTimeout;

                port = sms.OpenPort(MessageSetting.PortName);

                logTableDetails.Add(BroadcastLog.LogConnection(processLogRowID, "Akses " + port.PortName, failedCount));

                string allMessageSet = MessageSetting.JTMsg;
                string praMessageSet = MessageSetting.PraJTMsg;
                string posMessageSet = MessageSetting.PosJTMsg;

                foreach (DataRow dr in dt.Rows)
                {
                    string kodeToko   = Tools.isNull(dr["KodeToko"], string.Empty).ToString();
                    string toko       = Tools.isNull(dr["NamaToko"], string.Empty).ToString();
                    string willID     = Tools.isNull(dr["WilID"], string.Empty).ToString();
                    string hp         = Tools.isNull(dr["HP"], string.Empty).ToString();
                    string kategori   = Tools.isNull(dr["Kategori"], string.Empty).ToString();
                    string praHari    = Tools.isNull(dr["<PraHari>"], string.Empty).ToString();
                    string posHari    = Tools.isNull(dr["<PosHari>"], string.Empty).ToString();
                    string praRpSisa  = Tools.isNull(dr["<PraRpSisa>"], string.Empty).ToString();
                    string posRpSisa  = Tools.isNull(dr["<PosRpSisa>"], string.Empty).ToString();
                    string kontakNoHP = Tools.isNull(dr["<KontakNoHP>"], string.Empty).ToString();
                    if (hp != string.Empty)
                    {
                        string processLocation = "SMS HP: " + hp + ", Toko: " + toko + ", IdWil: " + willID + ", Kode Toko: " + kodeToko;

                        string message = string.Empty;

                        switch (kategori.ToUpper())
                        {
                        case "ALL":
                            message = MessageSetting.ParseMsg(allMessageSet, dt.Columns, dr);
                            break;

                        case "PRA":
                            message = MessageSetting.ParseMsg(praMessageSet, dt.Columns, dr);
                            break;

                        case "POS":
                            message = MessageSetting.ParseMsg(posMessageSet, dt.Columns, dr);
                            break;

                        default:
                            break;
                        }

                        try
                        {
                            if (sms.SendMsg(port, hp, message, responseTimeout))
                            {
                                sentCount++;
                                logTableDetails.Add(BroadcastLog.LogSend(processLogRowID, processLocation, message, kategori, sourceTable, kodeToko));
                            }
                            else
                            {
                                failedCount++;
                                logTableDetails.Add(BroadcastLog.LogSend(processLogRowID, processLocation, message, string.Empty, kategori, sourceTable, kodeToko));
                            }
                        }
                        catch (Exception ex)
                        {
                            failedCount++;
                            logTableDetails.Add(BroadcastLog.LogSend(processLogRowID, processLocation, message, ex.Message, kategori, sourceTable, kodeToko));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                failedCount = rowsCount;

                logTableDetails.Add(BroadcastLog.LogConnection(processLogRowID, ex.Message, failedCount));
            }

            sms.ClosePort(port);

            logTableDetails.Add(BroadcastLog.LogEnd(processLogRowID, rowsCount, sentCount, failedCount));

            return(logTableDetails);
        }