Example #1
0
        private void SendSmsChangeStatus(ShopOrderStatusSSOT status, string phoneNumber, string orderId, string fullName)
        {
            int bodyId = -1;

            switch (status)
            {
            case ShopOrderStatusSSOT.Ordered:
                bodyId = (int)SmsBaseCodeSSOT.Ordered;
                break;

            case ShopOrderStatusSSOT.Preparation:
                bodyId = (int)SmsBaseCodeSSOT.Preparation;
                break;

            case ShopOrderStatusSSOT.Loading:
                bodyId = (int)SmsBaseCodeSSOT.Loading;
                break;

            case ShopOrderStatusSSOT.transmission:
                bodyId = (int)SmsBaseCodeSSOT.transmission;
                break;

            case ShopOrderStatusSSOT.Delivery:
                bodyId = (int)SmsBaseCodeSSOT.Delivery;
                break;
            }
            string text   = $"{fullName};{orderId}";
            var    result = _smsRestClient.SendByBaseNumber(text, phoneNumber, bodyId);
        }
Example #2
0
        public IActionResult testMobasher()
        {
            ViewBag.MQuery = this._newsGroupRepository.ddd();

            var text        = $"{12345},{DateTime.Now.ToPersianDay()}";
            var phoneNumber = "09034537712";

            var smsResult = _smsRestClient.SendByBaseNumber(text, phoneNumber, (int)SmsBaseCodeSSOT.SetOrder);

            return(View());
        }
        public async Task <IActionResult> ForgetPassword(ForgetPasswordViewModel vm)
        {
            var model = await _userRepository
                        .GetByConditionAsync(a => a.UserName == vm.UserName && a.PhoneNumber == vm.PhoneNumber);

            if (model == null)
            {
                TempData.AddResult(SweetAlertExtenstion.Error("کاربری یافت نشد"));
                return(View());
            }
            var text = "param1;param2";

            var resultSms = _smsRestClient.SendByBaseNumber(model.ActiveCode.ToPersianNumbers(), model.PhoneNumber, (int)SmsBaseCodeSSOT.ForgetPassword);

            return(RedirectToAction("AuthorizeCode", new { code = model.SecurityStamp }));
        }
        public async Task <IActionResult> Register(RegisterViewModel model, string ReturnUrl = null)
        {
            if (ModelState.IsValid)
            {
                //if (!model.IsAccept)
                //{
                //    TempData.AddResult(SweetAlertExtenstion.Error("لطفا شرایط را مطالعه و تایید کنید"));

                //    return View(model);
                //}

                var user = AutoMapper.Mapper.Map <Users>(model);

                // درصورتی که چنین کاربری از قبل وجود نداشته باشد
                var userResult = await _userRepository.GetByConditionAsync(x => x.UserName == model.UserName);

                if (userResult == null)
                {
                    var isPhoneNumberExist = await _userRepository.GetByConditionAsync(x => x.PhoneNumber == model.PhoneNumber);

                    if (isPhoneNumberExist == null)
                    {
                        var resultCreatUser = await _userManager.CreateAsync(user, model.Password);

                        // درصورتیکه کاربر مورد نظر با موفقیت ثبت شد آن را لاگین میکنیم
                        if (resultCreatUser.Succeeded)
                        {
                            //await _signInManager.SignInAsync(user, isPersistent: false);
                            var activeCode = await _userRepository.GenerateCode(user.Id);

                            var text = activeCode.ToPersianNumbers();

                            var resultSms = _smsRestClient.SendByBaseNumber(text, user.PhoneNumber, (int)SmsBaseCodeSSOT.Register);

                            return(RedirectToAction("AuthorizePhoneNumber", "Account", new { sec = user.SecurityStamp }));
                        }
                        else
                        {
                            if (resultCreatUser.Errors.Any(a => a.Code.Contains("DuplicateEmail")))
                            {
                                ViewBag.ErrorMessages = "ایمیل وارد شده تکراری می باشد";
                            }

                            TempData.AddResult(SweetAlertExtenstion.Error("عملیات با خطا مواجه شد لطفا مجددا تلاش نمایید"));
                            return(View(model));
                        }
                    }
                    else
                    {
                        TempData.AddResult(SweetAlertExtenstion.Error("شماره تلفن وارد شده تکراری می باشد"));
                        return(View(model));
                    }
                }
                else
                {
                    TempData.AddResult(SweetAlertExtenstion.Error("چنین کاربری از قبل وجود دارد"));
                    return(View(model));
                }
            }
            var errorMessage = ModelState.ExpressionsMessages();

            TempData.AddResult(SweetAlertExtenstion.Error(errorMessage));
            return(View(model));
        }
        public async Task <IActionResult> VerifyRequest(BankVerifyViewModel vm)
        {
            try
            {
                _logRepository.Add(new Log()
                {
                    Text = $"Start => "
                });
                // گرفتن اطلاعات فاکتور بر اساس شناسه خرید و شناسه گاربری
                var model = _usersPaymentRepository.GetByCondition(a => a.OrderId == vm.OrderId && a.Token == vm.Token);

                await _usersPaymentRepository.ResultOrderCallBack(model.ShopOrderId.Value, model.OrderId, UserId);

                // رمز گذاری توکن
                var dataBytes = Encoding.UTF8.GetBytes(vm.Token);

                var symmetric = SymmetricAlgorithm.Create("TripleDes");
                symmetric.Mode    = CipherMode.ECB;
                symmetric.Padding = PaddingMode.PKCS7;

                var encryptor = symmetric.CreateEncryptor(Convert.FromBase64String(_bankConfig.MerchantKey), new byte[8]);

                var signedData = Convert.ToBase64String(encryptor.TransformFinalBlock(dataBytes, 0, dataBytes.Length));

                var data = new
                {
                    token    = vm.Token,
                    SignData = signedData
                };

                var ipgUri = string.Format("{0}/api/v0/Advice/Verify", _bankConfig.PurchasePage);

                var res = CallApi <BankCallBackResultViewModel>(ipgUri, data);
                _logRepository.Add(new Log()
                {
                    Text = $"1 => " + ((res != null && res.Result != null) ? "" : "")
                });
                if (res != null && res.Result != null)
                {
                    await _usersPaymentRepository.ResultOrder(model.ShopOrderId.Value, model.OrderId, UserId, res.Result.Succeed, res.Result.ResCode);

                    _logRepository.Add(new Log()
                    {
                        Text = $"2 => " + res.Result.ResCode.ToString()
                    });
                    if (res.Result.ResCode == "3000")
                    {
                        vm.VerifyResultData = res.Result;
                        res.Result.Succeed  = true;
                        ViewBag.Success     = res.Result.Description;

                        // تغییر وضعیت فاکتور از پیش خرید به خرید شده
                        await _shopOrderRepository.SuccessedOrder(model.ShopOrderId.Value, model.UserId);

                        // تغییر وضعیت سبد خرید
                        await _shopProductRepository.SuccessedOrder(model.ShopOrderId.Value, model.UserId);

                        // ثبت کردن اطلاعات در وضعیت
                        await _shopOrderStatusRepository.InsertAsync(new ShopOrderStatusInsertViewModel()
                        {
                            Date        = DateTime.Now,
                            ShopOrderId = model.ShopOrderId.Value,
                            Status      = ShopOrderStatusSSOT.Ordered
                        });

                        //// ارسال اس ام اس به کاربر جهت ثبت سفارش
                        //var text = $"{model.OrderId};{DateTime.Now.ToPersianDay()}";
                        //var phoneNumber = _userRepository.GetByCondition(a => a.Id == model.UserId).PhoneNumber;

                        //var smsResult = _smsRestClient.SendByBaseNumber(text, phoneNumber, (int)SmsBaseCodeSSOT.SetOrder);

                        //// ارسال اس ام اس به مدیریت
                        //var ResultTest = $"{DateTime.Now.ToPersianDay()};{model.OrderId}";

                        //var ResultSms = _smsRestClient.SendByBaseNumber(ResultTest, "09122013443", (int)SmsBaseCodeSSOT.Result);


                        _logRepository.Add(new Log()
                        {
                            Text = $"3 => " + "Start send message"
                        });
                        // ارسال اس ام اس به کاربر جهت ثبت سفارش
                        var text        = $"{model.ShopOrderId};{DateTime.Now.ToPersianDay()}";
                        var phoneNumber = _userRepository.GetByCondition(a => a.Id == model.UserId).PhoneNumber;

                        var smsResult = _smsRestClient.SendByBaseNumber(text, phoneNumber, (int)SmsBaseCodeSSOT.SetOrder);

                        // ارسال اس ام اس به مدیریت
                        var ResultTest = $"{DateTime.Now.ToPersianDay()};{model.ShopOrderId}";


                        var sms1Result = _smsRestClient.SendByBaseNumber(ResultTest, "09122013443", (int)SmsBaseCodeSSOT.Result);
                        var sms2Result = _smsRestClient.SendByBaseNumber(ResultTest, "09351631398", (int)SmsBaseCodeSSOT.Result);
                        var sms3Result = _smsRestClient.SendByBaseNumber(ResultTest, "09104996615", (int)SmsBaseCodeSSOT.Result);



                        _logRepository.Add(new Log()
                        {
                            Text = $"sms -> FirstUser>{sms1Result.RetStatus}-{sms1Result.Value}-{sms1Result.StrRetStatus}"
                        });
                        _logRepository.Add(new Log()
                        {
                            Text = $"sms -> SecondUser>{sms2Result.RetStatus}-{sms2Result.Value}-{sms2Result.StrRetStatus}"
                        });
                        _logRepository.Add(new Log()
                        {
                            Text = $"sms -> ThirtUser>{sms3Result.RetStatus}-{sms3Result.Value}-{sms3Result.StrRetStatus}"
                        });
                        _logRepository.Add(new Log()
                        {
                            Text = $"3 => " + "End send message"
                        });

                        return(RedirectToAction("Result", "UserOrder", new { orderId = res.Result.OrderId, shopOrderId = model.ShopOrderId }));
                    }

                    ViewBag.Message = res.Result.Description;
                    return(RedirectToAction("Result", "UserOrder", new { orderId = model.OrderId, shopOrderId = model.ShopOrderId }));
                }
            }
            catch (Exception ex)
            {
                ViewBag.Message = ex.ToString();
                _logRepository.Add(new Log()
                {
                    Text = $"Error => {ex.ToString()}"
                });
            }

            return(Redirect("/"));
        }
Example #6
0
        public async Task <IActionResult> SendToBank(int id, bool isOnlinePay = true)
        {
            var listOrders = await _shopProductRepository.GetListAsync(a => a.UserId == UserId &&
                                                                       !a.IsFinaly && !a.IsFactorSubmited);

            var orderId = await _shopOrderRepository.UpdatePaymentFactor(id, listOrders);

            // اگر پرداخت درب منزل بود ابتدا برایش یک فاکتور ایجاد میکنیم سپس به صفحه جزئیات فاکتور منتقلش میکنیم
            if (!isOnlinePay)
            {
                var createPayment = await _shopOrderPaymentRepository.CreateOfflinePayment(orderId);


                // ارسال اس ام اس به کاربر جهت ثبت سفارش
                var text        = $"{orderId};{DateTime.Now.ToPersianDay()}";
                var phoneNumber = _userRepository.GetByCondition(a => a.Id == UserId).PhoneNumber;

                var smsResult = _smsRestClient.SendByBaseNumber(text, phoneNumber, (int)SmsBaseCodeSSOT.SetOrder);

                // ارسال اس ام اس به مدیریت
                var ResultTest = $"{DateTime.Now.ToPersianDay()};{orderId}";


                var sms1Result = _smsRestClient.SendByBaseNumber(ResultTest, "09122013443", (int)SmsBaseCodeSSOT.Result);
                var sms2Result = _smsRestClient.SendByBaseNumber(ResultTest, "09351631398", (int)SmsBaseCodeSSOT.Result);
                var sms3Result = _smsRestClient.SendByBaseNumber(ResultTest, "09104996615", (int)SmsBaseCodeSSOT.Result);

                _logRepository.Add(new Log()
                {
                    Text = $"sms1Result+>{sms1Result.RetStatus}-{sms1Result.Value}-{sms1Result.StrRetStatus}"
                });
                _logRepository.Add(new Log()
                {
                    Text = $"sms2Result+>{sms2Result.RetStatus}-{sms2Result.Value}-{sms2Result.StrRetStatus}"
                });
                _logRepository.Add(new Log()
                {
                    Text = $"sms3Result+>{sms3Result.RetStatus}-{sms3Result.Value}-{sms3Result.StrRetStatus}"
                });

                // await _treeRepository.CalculateRateTreeFromAmountAndInsert(result.PaymentAmount, model.UserId);


                // mohammad
                return(RedirectToAction("Result2", "UserOrder", new { shopOrderId = orderId }));
                //return RedirectToAction("OrderDetail", "Profile", new { id = orderId });
            }

            // اگر پرداخت آنلاین بود ابتدا باید چک شود که فاکتور بیشتر از 50 ملیون میباشد یا خیر
            var countPaymentFactor = await _shopOrderPaymentRepository.CreatePayment(orderId);

            // اگر مبلغ کل بیشتر از 50 ملیون بود به صفحه جزئیات فاکتور منتقل شده
            if (orderId != 0 && countPaymentFactor > 1)
            {
                return(RedirectToAction("OrderDetail", "Profile", new { id = orderId }));
            }

            // اگر مبلغ کل کمتر از 50 ملیون بود به درگاه بانک منتقل می شود
            else if (orderId != 0 && countPaymentFactor == 1)
            {
                var paymentId = await _shopOrderPaymentRepository.GetByConditionAsync(a => a.ShopOrderId == orderId &&
                                                                                      !a.IsSuccess);

                return(await RequestByOrderPayment(paymentId.Id));
            }
            //TODO
            // اینجا باید به جای دیگه ایی Redirectشود
            return(RedirectToAction("Index"));
        }