示例#1
0
        public OpertionResult Create(SMSIn sms)
        {
            try
            {
                #region Parameters
                var parameters = new List <OracleParameter> {
                    new OracleParameter {
                        ParameterName = "retVal", OracleDbType = OracleDbType.Int32, Direction = ParameterDirection.ReturnValue
                    },
                    new OracleParameter {
                        ParameterName = "v_reciever", OracleDbType = OracleDbType.Varchar2, Value = sms.Receiver
                    },
                    new OracleParameter {
                        ParameterName = "v_sender", OracleDbType = OracleDbType.Varchar2, Value = sms.Sender
                    },
                    new OracleParameter {
                        ParameterName = "v_message", OracleDbType = OracleDbType.NVarchar2, Value = sms.Message
                    },
                    new OracleParameter {
                        ParameterName = "v_ref_no", OracleDbType = OracleDbType.Int32, Value = sms.RefNo
                    },
                    new OracleParameter {
                        ParameterName = "v_lang", OracleDbType = OracleDbType.Varchar2, Value = sms.Lang
                    }
                };
                #endregion
                db.ExecuteStoredProc("pk_infra.fn_create_in_sms", parameters);
                var result = int.Parse(parameters.Find(x => x.ParameterName == "retVal").Value.ToString());

                if (result > 0)
                {
                    return(new OpertionResult {
                        AffectedCount = result, Success = true, Error = string.Empty
                    });
                }
                else
                {
                    return(new OpertionResult {
                        AffectedCount = result, Success = false, Error = string.Empty
                    });
                }
            }
            catch (Exception ex)
            {
                return(new OpertionResult {
                    AffectedCount = -1, Success = false, Error = ex.Message
                });
            }
        }
示例#2
0
        private void smppclient_DeliverEvent(string mobile_no, string short_no, string text_message, string text_language)
        {
            if (mobile_no.StartsWith("967"))
            {
                mobile_no = mobile_no.Substring(3);
            }
            if (short_no.StartsWith("967"))
            {
                short_no = short_no.Substring(3);
            }

            // Commit comming message ...
            try
            {
                Regex re = new Regex("[;\\/:*?\"<>|&']");
                text_message = re.Replace(text_message, string.Empty);

                RegexOptions options = RegexOptions.None;
                Regex        regex   = new Regex("[ ]{2,}", options);
                text_message = regex.Replace(text_message, " ");



                var SMSReception = new SMSIn();
                SMSReception.Sender   = mobile_no;
                SMSReception.Receiver = short_no;
                SMSReception.Message  = text_message;
                SMSReception.Lang     = text_language;
                new SMSInRepo(db).Create(SMSReception);
            }
            catch (Exception ex)
            {
                CurrentLogMessage c = new CurrentLogMessage("", SharedParams.Short_Code.ToString(), "", "Exception in deliver event when trying commit comming message[" + ex.Message + "]", "error");
                WriteLog(c);
            }
            //---------------------------------------------------------
            try
            {
                if (short_no == SharedParams.Short_Code.ToString() && mobile_no.StartsWith("70"))
                {
                    DeliverMessage.Delivered_Message DelMsg = new DeliverMessage.Delivered_Message(mobile_no, short_no, text_message, text_language, CurrentInterface.Channel);
                    CurrentLogMessage c = new CurrentLogMessage("R", short_no, mobile_no, text_message, "deliver");
                    WriteLog(c);
                    if (SharedParams.Application_Status == "stop")
                    {
                        CurrentLogMessage c1 = new CurrentLogMessage("S", short_no, mobile_no, SharedParams.Application_Stop_Message, "sender");
                        WriteLog(c1);

                        var ReplayMessage = new SMSOut();
                        ReplayMessage.Message  = SharedParams.Application_Stop_Message;
                        ReplayMessage.Receiver = mobile_no;
                        bool res = new OutSMSRepo(db).Create(ReplayMessage).Success;
                        if (res == false)
                        {
                            CurrentLogMessage c2 = new CurrentLogMessage("", short_no, mobile_no, "could NOT create message [" + SharedParams.Application_Stop_Message + "]", "error");
                            WriteLog(c2);
                        }
                    }
                    else
                    {
                        bw_Delivery = new BackgroundWorker();
                        bw_Delivery.WorkerReportsProgress      = true;
                        bw_Delivery.WorkerSupportsCancellation = true;
                        bw_Delivery.DoWork             += new DoWorkEventHandler(bw_Delivery_DoWork);
                        bw_Delivery.ProgressChanged    += new ProgressChangedEventHandler(bw_Delivery_ProgressChanged);
                        bw_Delivery.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_Delivery_RunWorkerCompleted);
                        if (bw_Delivery.IsBusy != true)
                        {
                            bw_Delivery.RunWorkerAsync(DelMsg);
                        }
                        else
                        {
                            string            Msg = "عذرا النظام مشغول بمعالجة طلب اخر يرجى المحاولة لاحقا";
                            CurrentLogMessage c1  = new CurrentLogMessage("S", short_no, mobile_no, Msg, "sender");
                            WriteLog(c1);
                            var ReplayMessage = new SMSOut();
                            ReplayMessage.Message  = Msg;
                            ReplayMessage.Receiver = mobile_no;
                            bool res = new OutSMSRepo(db).Create(ReplayMessage).Success;
                            if (res == false)
                            {
                                CurrentLogMessage c2 = new CurrentLogMessage("", short_no, mobile_no, "could NOT create message [" + Msg + "]", "error");
                                WriteLog(c2);
                            }
                        }
                    }
                }
                else
                {
                    CurrentLogMessage c = new CurrentLogMessage("R", short_no, mobile_no, text_message, "invaliddeliver");
                    WriteLog(c);
                }
            }
            catch (Exception ex)
            {
                CurrentLogMessage c = new CurrentLogMessage("", SharedParams.Short_Code.ToString(), "", "Exception in deliver event [" + ex.Message + "]", "error");
                WriteLog(c);
            }
        }
示例#3
0
        public async Task <List <SMSIn> > GetSMSMessagesAsync(string mobileNo, string Msg, bool IncludeDates, DateTime?startDate, DateTime?endDate)
        {
            #region Parameters
            var parameters  = new List <OracleParameter>();
            var whereCluase = new StringBuilder();

            if (!string.IsNullOrEmpty(mobileNo))
            {
                whereCluase.Append(" WHERE sender = :mobileNo");
                var p = new OracleParameter {
                    ParameterName = "mobileNo", OracleDbType = OracleDbType.Varchar2, Value = mobileNo
                };
                parameters.Add(p);
            }

            if (!string.IsNullOrEmpty(Msg))
            {
                whereCluase.Append(whereCluase.Length > 0 ? " AND message LIKE '%' || :Msg || '%' " : " WHERE message LIKE '%' || :Msg || '%' ");
                var p = new OracleParameter {
                    ParameterName = "Msg", OracleDbType = OracleDbType.Varchar2, Value = Msg
                };
                parameters.Add(p);
            }

            //if (IncludeDates)
            {
                if (startDate > DateTime.MinValue && startDate != null)
                {
                    whereCluase.Append(whereCluase.Length > 0 ? " AND createdon >= :StartDate" : " WHERE createdon >= :StartDate");
                    var p = new OracleParameter {
                        ParameterName = "StartDate", OracleDbType = OracleDbType.Date, Value = startDate
                    };
                    parameters.Add(p);
                }
                if (endDate > DateTime.MinValue && endDate != null)
                {
                    whereCluase.Append(whereCluase.Length > 0 ? " AND createdon <= :EndDate" : " WHERE createdon <= :EndDate");
                    var p = new OracleParameter {
                        ParameterName = "EndDate", OracleDbType = OracleDbType.Date, Value = endDate
                    };
                    parameters.Add(p);
                }
            }
            #endregion

            string    strSql = $"select * from sms_in {whereCluase} order by createdon";
            DataTable masterDataTable;
            masterDataTable = await db.GetDataAsync(strSql, parameters);

            if (masterDataTable == null)
            {
                return(null);
            }
            if (masterDataTable.Rows.Count == 0)
            {
                return(null);
            }

            var results = new List <SMSIn>();
            foreach (DataRow row in masterDataTable.Rows)
            {
                var obj = new SMSIn();
                obj.Id        = row["in_no"] == DBNull.Value ? 0 : int.Parse(row["in_no"].ToString());
                obj.CreatedOn = row["createdon"] == DBNull.Value ? DateTime.MinValue : DateTime.Parse(row["createdon"].ToString());
                obj.Message   = row["message"] == DBNull.Value ? string.Empty : row["message"].ToString();
                obj.Receiver  = row["reciever"] == DBNull.Value ? string.Empty : row["reciever"].ToString();
                obj.Sender    = row["sender"] == DBNull.Value ? string.Empty : row["sender"].ToString();
                obj.Lang      = row["lang"] == DBNull.Value ? string.Empty : row["lang"].ToString();
                obj.RefNo     = row["ref_no"] == DBNull.Value ? 0 : int.Parse(row["ref_no"].ToString());
                results.Add(obj);
            }
            return(results);
        }