示例#1
0
        public static decimal GetSendPrice(Guid userGuid, SmsTypes smsType, int smsPartCount, Guid privateNumberGuid, Dictionary <int, int> operatorNumberCount)
        {
            decimal smsPrice = 0;

            Common.PrivateNumber       privateNumber        = Facade.PrivateNumber.LoadNumber(privateNumberGuid);
            List <DataRow>             lstOperatorRatio     = Facade.SmsSenderAgent.GetAgentRatio(privateNumber.SmsSenderAgentGuid).AsEnumerable().ToList();
            Dictionary <Guid, decimal> dictionaryAgentRatio = Facade.GroupPrice.GetAgentRatio(userGuid);

            smsPartCount = privateNumber.Type == (int)Business.TypePrivateNumberAccesses.Bulk ? smsPartCount : 1;

            switch (smsType)
            {
            case SmsTypes.Farsi:
                foreach (KeyValuePair <int, int> opt in operatorNumberCount)
                {
                    smsPrice += opt.Value * GetOperatorRatio(lstOperatorRatio, opt.Key, SmsTypes.Farsi) * smsPartCount;
                }
                break;

            case SmsTypes.Latin:
                foreach (KeyValuePair <int, int> opt in operatorNumberCount)
                {
                    smsPrice += opt.Value * GetOperatorRatio(lstOperatorRatio, opt.Key, SmsTypes.Latin) * smsPartCount;
                }
                break;
            }

            smsPrice *= dictionaryAgentRatio.ContainsKey(privateNumber.SmsSenderAgentGuid) ? Helper.GetDecimal(dictionaryAgentRatio[privateNumber.SmsSenderAgentGuid]) : 1;
            return(smsPrice);
        }
示例#2
0
        public async Task <bool> SendSmsAsync(string mobile, SmsTypes type, string token, string token2 = null, string token3 = null)
        {
            var client = new HttpClient
            {
                BaseAddress = new Uri(BaseUrl)
            };

            client.DefaultRequestHeaders.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            HttpResponseMessage response = null;

            if (type == SmsTypes.Register)
            {
                response = await client.GetAsync("v1/6E65695778564344644231365673544D73794E324C7377634149324F7A5270324F6346774D6753666363633D/verify/lookup.json?receptor=" + mobile + "&token=" + token + "&token10=" + token2 + "&template=SchoolPortalRegister");
            }
            else if (type == SmsTypes.ResetPass)
            {
                response = await client.GetAsync("v1/6E65695778564344644231365673544D73794E324C7377634149324F7A5270324F6346774D6753666363633D/verify/lookup.json?receptor=" + mobile + "&token=" + token + "&template=SahadResetPass");
            }
            else if (type == SmsTypes.SchoolPaymentDone)
            {
                response = await client.GetAsync("v1/6E65695778564344644231365673544D73794E324C7377634149324F7A5270324F6346774D6753666363633D/verify/lookup.json?receptor=" + mobile + "&token=" + token + "&token10=" + token2 + "&token20=" + token3 + "&template=SchoolPaymentDone");
            }
            else if (type == SmsTypes.SchoolPreSubmitDone)
            {
                response = await client.GetAsync("v1/6E65695778564344644231365673544D73794E324C7377634149324F7A5270324F6346774D6753666363633D/verify/lookup.json?receptor=" + mobile + "&token=" + token + "&token10=" + token2 + "&token20=" + token3 + "&template=SchoolPreSubmitDone");
            }
            else if (type == SmsTypes.SchoolRegisterDone)
            {
                response = await client.GetAsync("v1/6E65695778564344644231365673544D73794E324C7377634149324F7A5270324F6346774D6753666363633D/verify/lookup.json?receptor=" + mobile + "&token=" + token + "&token10=" + token2 + "&token20=" + token3 + "&template=SchoolRegisterDone");
            }
            if (response != null && response.IsSuccessStatusCode)
            {
                var result = response.Content.ReadAsStringAsync().Result;

                try
                {
                    var datalist = JsonConvert.DeserializeObject <SMSViewModel.RootObject>(result);
                }
                catch (Exception e)
                {
                    throw;
                }
                return(true);
            }

            return(false);
        }
示例#3
0
        private static decimal GetOperatorRatio(List <DataRow> lstOperatorRatio, int opt, SmsTypes smsType)
        {
            List <DataRow> optInfo = lstOperatorRatio.Where(row => Helper.GetInt(row["OperatorID"]) == opt &&
                                                            Helper.GetInt(row["SmsType"]) == (int)smsType).ToList();

            if (optInfo.Count > 0)
            {
                return(Helper.GetDecimal(optInfo.First()["Ratio"], 1));
            }
            else
            {
                return(1);
            }
        }
示例#4
0
        protected void btnSendSms_Click(object sender, EventArgs e)
        {
            Common.ScheduledSms scheduledSms = new Common.ScheduledSms();
            try
            {
                #region GetSendSmsInfo
                List <string>               recieversNumber     = new List <string>();
                Dictionary <int, int>       operatorNumberCount = new Dictionary <int, int>();
                Dictionary <string, string> dicFileInfo         = new Dictionary <string, string>();
                SmsTypes smsType = Helper.HasUniCodeCharacter(txtSmsBody.Text) ? SmsTypes.Farsi : SmsTypes.Latin;

                if (Helper.GetGuid(hdnGroupGuid.Value.Trim('\'')) != Guid.Empty)
                {
                    scheduledSms.ReferenceGuid = hdnGroupGuid.Value.Trim('\'');
                    operatorNumberCount        = Facade.PhoneNumber.GetCountPhoneBooksNumberOperator(scheduledSms.ReferenceGuid);
                }

                string fileInfo = string.Empty;
                if (!string.IsNullOrEmpty(hdnFilePath.Value))
                {
                    dicFileInfo = Facade.PhoneNumber.GetFileNumberInfo(Server.MapPath("~/Uploads/" + hdnFilePath.Value), recieversNumber);
                    fileInfo    = string.Format(@"<p>عنوان فایل {0}</p>
																		<p>تعداد کل شماره ها {1} عدد</p>
																		<p>تعداد شماره های تکراری {2} عدد</p>
																		<p>تعداد شماره های صحیح {3} عدد</p>"                                                                        , hdnFilePath.Value.Split('/')[1], dicFileInfo["TotalNumberCount"], dicFileInfo["DuplicateNumberCount"], dicFileInfo["CorrectNumberCount"]);
                }
                recieversNumber.AddRange(txtRecievers.Text.Split(new string[] { "\n", "\r\n", ",", " ", ";" }, StringSplitOptions.RemoveEmptyEntries).ToList());

                Facade.Outbox.AddCountNumberOfOperatorsToDictionary(ref recieversNumber, ref operatorNumberCount);

                decimal sendPrice = Facade.Transaction.GetSendPrice(UserGuid, smsType, Helper.GetSmsCount(txtSmsBody.Text), Helper.GetGuid(drpSenderNumber.SelectedValue.Split(';')[0]), operatorNumberCount);

                int numberType = Facade.PrivateNumber.LoadNumber(Helper.GetGuid(drpSenderNumber.SelectedValue.Split(';')[0])).Type;

                string result = "Result{(OK)}TotalCount{(" + operatorNumberCount.Values.Sum() + ")}SendPrice{(" + sendPrice + ")}NumberType{(" + numberType + ")}";

                if (!string.IsNullOrEmpty(fileInfo))
                {
                    result += "FileInfo{(" + fileInfo + ")}FilePath{(" + hdnFilePath.Value + ")}FileCorrectNumberCount{(" + dicFileInfo["CorrectNumberCount"] + ")}";
                }

                foreach (KeyValuePair <int, int> opt in operatorNumberCount)
                {
                    result += opt.Key + "{(" + opt.Value + ")}";
                }
                #endregion

                scheduledSms.PrivateNumberGuid = Helper.GetGuid(drpSenderNumber.SelectedValue.Split(';')[0]);
                if (!string.IsNullOrEmpty(hdnFileSoundPath.Value))
                {
                    scheduledSms.SmsLen = int.Parse(hdnFileSoundLength.Value);
                    //scheduledSms.SmsText = txtVoiceTitle.Text;
                    scheduledSms.VoiceURL       = Server.MapPath("~/Uploads/" + hdnFileSoundPath.Value);
                    scheduledSms.VoiceMessageId = int.Parse(hdnFileSoundID.Value);
                }
                else
                {
                    scheduledSms.SmsText = txtSmsBody.Text;
                    scheduledSms.SmsLen  = Helper.GetSmsCount(txtSmsBody.Text);
                }
                scheduledSms.PresentType      = txtSmsBody.IsFlashSms ? (int)Arad.SMS.Gateway.Business.Messageclass.Flash : (int)Arad.SMS.Gateway.Business.Messageclass.Normal;
                scheduledSms.Encoding         = Helper.HasUniCodeCharacter(txtSmsBody.Text) ? (int)Encoding.Utf8 : (int)Encoding.Default;
                scheduledSms.UserGuid         = UserGuid;
                scheduledSms.Status           = (int)ScheduledSmsStatus.Stored;
                scheduledSms.IP               = Ip;
                scheduledSms.Browser          = Browser;
                scheduledSms.ScheduledSmsGuid = Guid.NewGuid();


                if (operatorNumberCount.Values.Sum() == 0)
                {
                    throw new Exception(Language.GetString("RecieverListIsEmpty"));
                }

                if (rdbSendDateTime.Checked)
                {
                    var dateTime = dtpSendDateTime.FullDateTime;
                    if (Session["Language"].ToString() == "fa")
                    {
                        scheduledSms.DateTimeFuture = DateManager.GetChristianDateTimeForDB(dateTime);
                    }
                    else
                    {
                        scheduledSms.DateTimeFuture = DateTime.Parse(dateTime);
                    }

                    if (scheduledSms.DateTimeFuture < DateTime.Now)
                    {
                        scheduledSms.DateTimeFuture = DateTime.Now.AddSeconds(15);
                    }

                    if (recieversNumber.Count > 0)
                    {
                        scheduledSms.TypeSend = (int)SmsSendType.SendSms;
                        Facade.ScheduledSms.InsertSms(scheduledSms, recieversNumber);
                    }

                    if (!string.IsNullOrEmpty(scheduledSms.ReferenceGuid))
                    {
                        scheduledSms.TypeSend = (int)SmsSendType.SendGroupSms;
                        Facade.ScheduledSms.InsertGroupSms(scheduledSms);
                    }
                }
                else if (rdbSendPeriod.Checked)
                {
                    scheduledSms.PeriodType = Helper.GetInt(drpPeriodType.SelectedValue);
                    scheduledSms.Period     = Helper.GetInt(txtPeriod.Text);
                    //scheduledSms.StartDateTime = DateManager.GetChristianDateTimeForDB(dtpPeriodStart.FullDateTime);
                    //scheduledSms.EndDateTime = DateManager.GetChristianDateTimeForDB(dtpPeriodEnd.FullDateTime);
                    var dateTime    = dtpPeriodStart.FullDateTime;
                    var dateTimeEnd = dtpPeriodEnd.FullDateTime;
                    if (Session["Language"].ToString() == "fa")
                    {
                        scheduledSms.StartDateTime = DateManager.GetChristianDateTimeForDB(dateTime);
                        scheduledSms.EndDateTime   = DateManager.GetChristianDateTimeForDB(dateTimeEnd);
                    }
                    else
                    {
                        scheduledSms.StartDateTime = DateTime.Parse(dateTime);
                        scheduledSms.EndDateTime   = DateTime.Parse(dateTimeEnd);
                    }


                    Facade.ScheduledSms.InsertPeriodSms(scheduledSms, recieversNumber);
                }
                else if (rdbGradual.Checked)
                {
                    scheduledSms.PeriodType     = (int)SmsSentPeriodType.Minute;
                    scheduledSms.Period         = Helper.GetInt(txtGradualPeriod.Text);
                    scheduledSms.SendPageSize   = Helper.GetInt(txtGradualPageSize.Text);
                    scheduledSms.SendPageNo     = 0;
                    scheduledSms.DateTimeFuture = DateTime.Now.AddMinutes(scheduledSms.Period);

                    Facade.ScheduledSms.InsertGradualSms(scheduledSms, recieversNumber);
                }

                ClientSideScript = string.Format("result('step4','OK','{0}');setSendPriceTableInfo('step4','{1}');", Language.GetString("SendSmsSuccessful"), result);
                Response.Redirect(string.Format("/PageLoader.aspx?c={0}", Helper.Encrypt((int)UserControls.UI_SmsReports_ScheduledSms, Session)));
            }
            catch (Exception ex)
            {
                ClientSideScript = string.Format("result('step4','Error','{0}');setSendPriceTableInfo('step4','{1}');", ex.Message, string.Empty);
            }
        }
示例#5
0
 private static string FormatSmsRate(List <UserSmsRateInfo> smsRates, SmsSenderAgentReference agent, Operators operators, SmsTypes smsType)
 {
     if (smsRates.Any(rate => rate.Agent == agent && rate.Operator == operators && rate.SmsType == smsType))
     {
         return(smsRates.Where(rate => rate.Agent == agent && rate.Operator == operators && rate.SmsType == smsType).First().Rate.ToString());
     }
     else
     {
         return("------");
     }
 }