예제 #1
0
        public ActionResult Pay(Model_PurchasePay model)
        {
            if (ModelState.IsValid)
            {
                var _User = db.Tbl_User.Where(x => x.User_IsDelete == false && x.User_Mobile == User.Identity.Name).SingleOrDefault();

                if (_User != null)
                {
                    switch ((ProductType)model.Type)
                    {
                    case ProductType.Workshop:

                        if (db.Tbl_UserWorkshopPlan.Where(x => x.UWP_UserID == _User.User_ID && x.UWP_WPID == model.ID && x.UWP_IsDelete == false).FirstOrDefault() != null)
                        {
                            TempData["TosterState"]   = "info";
                            TempData["TosterType"]    = TosterType.Maseage;
                            TempData["TosterMassage"] = "کارگاه مورد نظر قبلا خریداری شده است";

                            return(RedirectToAction("Index"));
                        }
                        ;

                        var _WorkshopPlan = db.Tbl_WorkshopPlan.Where(x => x.WP_ID == model.ID).SingleOrDefault();

                        if (_WorkshopPlan != null)
                        {
                            if (_WorkshopPlan.WP_Capacity <= 0)
                            {
                                TempData["TosterState"]   = "info";
                                TempData["TosterType"]    = TosterType.Maseage;
                                TempData["TosterMassage"] = "ظرفیت کارگاه مورد نظر پر شده است";

                                return(RedirectToAction("Index"));
                            }

                            bool        smsResult = true;
                            Tbl_Payment _Payment  = Purchase(_User, _WorkshopPlan.WP_Cost, (ProductType)model.Type, out bool walletResult, ref smsResult);

                            if (_Payment != null)
                            {
                                if (!walletResult)
                                {
                                    TempData["TosterState"]   = "error";
                                    TempData["TosterType"]    = TosterType.Maseage;
                                    TempData["TosterMassage"] = "موجودی کیف پول شما کافی نمی باشد";

                                    return(RedirectToAction("Index"));
                                }

                                db.Tbl_Payment.Add(_Payment);

                                Tbl_Wallet _Wallet = db.Tbl_Wallet.Where(x => x.Wallet_UserID == _Payment.Payment_UserID).SingleOrDefault();
                                _Wallet.Wallet_Credit       = _Payment.Payment_RemaingWallet - _Payment.Payment_Cost;
                                _Wallet.Wallet_ModifiedDate = DateTime.Now;

                                db.Entry(_Wallet).State = EntityState.Modified;

                                Tbl_UserWorkshopPlan _UserWorkshopPlan = new Tbl_UserWorkshopPlan()
                                {
                                    UWP_Guid         = Guid.NewGuid(),
                                    UWP_UserID       = _User.User_ID,
                                    UWP_WPID         = model.ID,
                                    UWP_IsActive     = true,
                                    Tbl_Payment      = _Payment,
                                    UWP_CreationDate = DateTime.Now,
                                    UWP_ModifiedDate = DateTime.Now
                                };

                                db.Tbl_UserWorkshopPlan.Add(_UserWorkshopPlan);

                                _WorkshopPlan.WP_Capacity -= 1;

                                db.Entry(_WorkshopPlan).State = EntityState.Modified;

                                if (Convert.ToBoolean(db.SaveChanges() > 0))
                                {
                                    if (!smsResult)
                                    {
                                        TempData["TosterState"]   = "warning";
                                        TempData["TosterType"]    = TosterType.Maseage;
                                        TempData["TosterMassage"] = "خطا در ارسال پیامک";
                                    }
                                    else
                                    {
                                        TempData["TosterState"]   = "success";
                                        TempData["TosterType"]    = TosterType.Maseage;
                                        TempData["TosterMassage"] = "کارگاه مورد نظر با موفقیت خریداری شد";
                                    }

                                    return(RedirectToAction("Index"));
                                }

                                TempData["TosterState"]   = "error";
                                TempData["TosterType"]    = TosterType.Maseage;
                                TempData["TosterMassage"] = "کارگاه مورد نظر با موفقیت خریداری نشد";
                            }
                            else
                            {
                                TempData["TosterState"]   = "error";
                                TempData["TosterType"]    = TosterType.Maseage;
                                TempData["TosterMassage"] = "کارگاه مورد نظر با موفقیت خریداری نشد";
                            }

                            return(RedirectToAction("Index"));
                        }
                        else
                        {
                            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                        }

                    case ProductType.Class:

                        Tbl_UserClassPlan _UserClassPlan = db.Tbl_UserClassPlan.Where(x => x.UCP_UserID == _User.User_ID && x.UCP_CPID == model.ID).FirstOrDefault();

                        if (_UserClassPlan != null && !_UserClassPlan.UCP_IsDelete)
                        {
                            TempData["TosterState"]   = "info";
                            TempData["TosterType"]    = TosterType.Maseage;
                            TempData["TosterMassage"] = "کلاس مورد نظر قبلا خریداری شده است و هم اکنون فعال یا در انتظار تایید می باشد";

                            return(RedirectToAction("Index"));
                        }
                        ;

                        var _ClassPlan = db.Tbl_ClassPlan.Where(x => x.CP_ID == model.ID).SingleOrDefault();

                        if (_ClassPlan != null)
                        {
                            if (_ClassPlan.CP_Capacity <= 0)
                            {
                                TempData["TosterState"]   = "info";
                                TempData["TosterType"]    = TosterType.Maseage;
                                TempData["TosterMassage"] = "ظرفیت کلاس مورد نظر پر شده است";

                                return(RedirectToAction("Index"));
                            }

                            bool        smsResult = true;
                            Tbl_Payment _Payment  = Purchase(_User, _ClassPlan.CP_CostPerSession, (ProductType)model.Type, out bool walletResult, ref smsResult);

                            if (_Payment != null)
                            {
                                db.Tbl_Payment.Add(_Payment);

                                if (_UserClassPlan != null)
                                {
                                    _UserClassPlan.UCP_IsDelete     = false;
                                    _UserClassPlan.UCP_ModifiedDate = DateTime.Now;
                                    _UserClassPlan.Tbl_Payment      = _Payment;

                                    db.Entry(_UserClassPlan).State = EntityState.Modified;
                                }
                                else
                                {
                                    _UserClassPlan = new Tbl_UserClassPlan()
                                    {
                                        UCP_Guid         = Guid.NewGuid(),
                                        UCP_UserID       = _User.User_ID,
                                        UCP_CPID         = model.ID,
                                        Tbl_Payment      = _Payment,
                                        UCP_CreationDate = DateTime.Now,
                                        UCP_ModifiedDate = DateTime.Now
                                    };

                                    db.Tbl_UserClassPlan.Add(_UserClassPlan);
                                }

                                _ClassPlan.CP_Capacity -= 1;

                                db.Entry(_ClassPlan).State = EntityState.Modified;

                                if (Convert.ToBoolean(db.SaveChanges() > 0))
                                {
                                    if (!smsResult)
                                    {
                                        TempData["TosterState"]   = "warning";
                                        TempData["TosterType"]    = TosterType.Maseage;
                                        TempData["TosterMassage"] = "خطا در ارسال پیامک";
                                    }
                                    else
                                    {
                                        TempData["TosterState"]   = "success";
                                        TempData["TosterType"]    = TosterType.Maseage;
                                        TempData["TosterMassage"] = "درخواست خرید کلاس مورد نظر با موفقیت ارسال شد";
                                    }

                                    return(RedirectToAction("Index"));
                                }

                                TempData["TosterState"]   = "error";
                                TempData["TosterType"]    = TosterType.Maseage;
                                TempData["TosterMassage"] = "درخواست خرید کلاس مورد نظر با موفقیت ارسال نشد";
                            }
                            else
                            {
                                TempData["TosterState"]   = "error";
                                TempData["TosterType"]    = TosterType.Maseage;
                                TempData["TosterMassage"] = "درخواست خرید کلاس مورد نظر با موفقیت ارسال نشد";
                            }

                            return(RedirectToAction("Index"));
                        }
                        else
                        {
                            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                        }

                    case ProductType.ExamInPerson:

                        if (db.Tbl_UserExamInPersonPlan.Where(x => x.UEIPP_UserID == _User.User_ID && x.UEIPP_EIPPID == model.ID && x.UEIPP_IsDelete == false).FirstOrDefault() != null)
                        {
                            TempData["TosterState"]   = "info";
                            TempData["TosterType"]    = TosterType.Maseage;
                            TempData["TosterMassage"] = "آزمون مورد نظر قبلا خریداری شده است";

                            return(RedirectToAction("Index"));
                        }
                        ;

                        var _ExamInPersonPlan = db.Tbl_ExamInPersonPlan.Where(x => x.EIPP_ID == model.ID).SingleOrDefault();

                        if (_ExamInPersonPlan != null)
                        {
                            if (_ExamInPersonPlan.EIPP_Capacity <= 0)
                            {
                                TempData["TosterState"]   = "info";
                                TempData["TosterType"]    = TosterType.Maseage;
                                TempData["TosterMassage"] = "ظرفیت آزمون مورد نظر پر شده است";

                                return(RedirectToAction("Index"));
                            }

                            bool        smsResult = true;
                            Tbl_Payment _Payment  = Purchase(_User, _ExamInPersonPlan.EIPP_Cost, (ProductType)model.Type, out bool walletResult, ref smsResult);

                            if (_Payment != null)
                            {
                                if (!walletResult)
                                {
                                    TempData["TosterState"]   = "error";
                                    TempData["TosterType"]    = TosterType.Maseage;
                                    TempData["TosterMassage"] = "موجودی کیف پول شما کافی نمی باشد";

                                    return(RedirectToAction("Index"));
                                }

                                db.Tbl_Payment.Add(_Payment);

                                Tbl_Wallet _Wallet = db.Tbl_Wallet.Where(x => x.Wallet_UserID == _Payment.Payment_UserID).SingleOrDefault();
                                _Wallet.Wallet_Credit       = _Payment.Payment_RemaingWallet - _Payment.Payment_Cost;
                                _Wallet.Wallet_ModifiedDate = DateTime.Now;

                                db.Entry(_Wallet).State = EntityState.Modified;

                                Tbl_UserExamInPersonPlan _UserExamInPersonPlan = new Tbl_UserExamInPersonPlan()
                                {
                                    UEIPP_Guid         = Guid.NewGuid(),
                                    UEIPP_UserID       = _User.User_ID,
                                    UEIPP_EIPPID       = model.ID,
                                    UEIPP_SeatNumber   = new Random().Next(10000, 99999),
                                    Tbl_Payment        = _Payment,
                                    UEIPP_CreationDate = DateTime.Now,
                                    UEIPP_ModifiedDate = DateTime.Now
                                };

                                db.Tbl_UserExamInPersonPlan.Add(_UserExamInPersonPlan);

                                _ExamInPersonPlan.EIPP_Capacity -= 1;

                                db.Entry(_ExamInPersonPlan).State = EntityState.Modified;

                                if (Convert.ToBoolean(db.SaveChanges() > 0))
                                {
                                    if (!smsResult)
                                    {
                                        TempData["TosterState"]   = "warning";
                                        TempData["TosterType"]    = TosterType.Maseage;
                                        TempData["TosterMassage"] = "خطا در ارسال پیامک";
                                    }
                                    else
                                    {
                                        TempData["TosterState"]   = "success";
                                        TempData["TosterType"]    = TosterType.Maseage;
                                        TempData["TosterMassage"] = "آزمون مورد نظر با موفقیت خریداری شد";
                                    }

                                    return(RedirectToAction("Index"));
                                }

                                TempData["TosterState"]   = "error";
                                TempData["TosterType"]    = TosterType.Maseage;
                                TempData["TosterMassage"] = "آزمون مورد نظر با موفقیت خریداری نشد";
                            }
                            else
                            {
                                TempData["TosterState"]   = "error";
                                TempData["TosterType"]    = TosterType.Maseage;
                                TempData["TosterMassage"] = "آزمون مورد نظر با موفقیت خریداری نشد";
                            }

                            return(RedirectToAction("Index"));
                        }
                        else
                        {
                            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                        }

                    case ProductType.ExamRemotely:

                        //if (db.Tbl_UserExamRemotelyPlan.Where(x => x.UERP_UserID == _User.User_ID && x.UERP_ERPID == model.ID && x.UERP_IsDelete == false).FirstOrDefault() != null)
                        //{
                        //    TempData["TosterState"] = "info";
                        //    TempData["TosterType"] = TosterType.Maseage;
                        //    TempData["TosterMassage"] = "آزمون مورد نظر قبلا خریداری شده است";

                        //    return RedirectToAction("Index");
                        //};

                        //var _ExamRemotelyPlan = db.Tbl_ExamRemotelyPlan.Where(x => x.ERP_ID == model.ID).SingleOrDefault();

                        //if (_ExamRemotelyPlan != null)
                        //{
                        //    if (_ExamRemotelyPlan.ERP_Capacity <= 0)
                        //    {
                        //        TempData["TosterState"] = "info";
                        //        TempData["TosterType"] = TosterType.Maseage;
                        //        TempData["TosterMassage"] = "ظرفیت آزمون مورد نظر پر شده است";

                        //        return RedirectToAction("Index");
                        //    }

                        //    bool smsResult = true;
                        //    Tbl_Payment _Payment = Purchase(_User, _ExamRemotelyPlan.cost, (ProductType)model.Type, out bool walletResult, ref smsResult);

                        //    if (_Payment != null)
                        //    {
                        //        if (!walletResult)
                        //        {
                        //            TempData["TosterState"] = "error";
                        //            TempData["TosterType"] = TosterType.Maseage;
                        //            TempData["TosterMassage"] = "موجودی کیف پول شما کافی نمی باشد";

                        //            return RedirectToAction("Index");
                        //        }

                        //        db.Tbl_Payment.Add(_Payment);

                        //        Tbl_Wallet _Wallet = db.Tbl_Wallet.Where(x => x.Wallet_UserID == _Payment.Payment_UserID).SingleOrDefault();
                        //        _Wallet.Wallet_Credit = _Payment.Payment_RemaingWallet - _Payment.Payment_Cost;
                        //        _Wallet.Wallet_ModifiedDate = DateTime.Now;

                        //        Tbl_UserExamRemotelyPlan _UserExamRemotelyPlan = new Tbl_UserExamRemotelyPlan()
                        //        {
                        //            UCP_Guid = Guid.NewGuid(),
                        //            UCP_UserID = _User.User_ID,
                        //            UCP_CPID = model.ID,
                        //            Tbl_Payment = _Payment,
                        //            UCP_CreationDate = DateTime.Now,
                        //            UCP_ModifiedDate = DateTime.Now
                        //        };

                        //        db.Tbl_UserExamRemotelyPlan.Add(_UserExamRemotelyPlan);

                        //        _ExamRemotelyPlan.ERP_Capacity -= 1;

                        //        db.Entry(_ExamRemotelyPlan).State = EntityState.Modified;

                        //        if (Convert.ToBoolean(db.SaveChanges() > 0))
                        //        {
                        //            if (!smsResult)
                        //            {
                        //                TempData["TosterState"] = "warning";
                        //                TempData["TosterType"] = TosterType.Maseage;
                        //                TempData["TosterMassage"] = "خطا در ارسال پیامک";
                        //            }
                        //            else
                        //            {
                        //                TempData["TosterState"] = "success";
                        //                TempData["TosterType"] = TosterType.Maseage;
                        //                TempData["TosterMassage"] = "آزمون مورد نظر با موفقیت خریداری شد";
                        //            }

                        //            return RedirectToAction("Index");
                        //        }

                        //        TempData["TosterState"] = "error";
                        //        TempData["TosterType"] = TosterType.Maseage;
                        //        TempData["TosterMassage"] = "آزمون مورد نظر با موفقیت خریداری نشد";
                        //    }
                        //    else
                        //    {
                        //        TempData["TosterState"] = "error";
                        //        TempData["TosterType"] = TosterType.Maseage;
                        //        TempData["TosterMassage"] = "آزمون مورد نظر با موفقیت خریداری نشد";
                        //    }

                        //    return RedirectToAction("Index");
                        //}
                        //else
                        //{
                        //    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                        //}

                        break;

                    default:
                        return(HttpNotFound());
                    }
                }

                return(HttpNotFound());
            }

            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
        }
예제 #2
0
        public ActionResult Create(Model_UserWorkshopPlanCreate model)
        {
            if (ModelState.IsValid)
            {
                var _User = db.Tbl_User.Where(x => x.User_Guid == model.UserGuid && x.User_IsDelete == false).SingleOrDefault();

                if (db.Tbl_UserWorkshopPlan.Where(x => x.UWP_UserID == _User.User_ID && x.UWP_WPID == model.WorkshopID && x.UWP_IsDelete == false).FirstOrDefault() != null)
                {
                    TempData["TosterState"]   = "info";
                    TempData["TosterType"]    = TosterType.Maseage;
                    TempData["TosterMassage"] = "کارگاه مورد نظر قبلا خریداری شده است";

                    return(RedirectToAction("Details", "Workshop", new { area = "Dashboard", id = model.WorkshopID }));
                }
                ;

                var _WorkshopPlan = db.Tbl_WorkshopPlan.Where(x => x.WP_ID == model.WorkshopID).SingleOrDefault();

                if (_WorkshopPlan != null)
                {
                    bool        smsResult = true;
                    Tbl_Payment _Payment  = Purchase(_User, _WorkshopPlan.WP_Cost, ProductType.Workshop, out bool walletResult, ref smsResult);

                    if (_Payment != null)
                    {
                        db.Tbl_Payment.Add(_Payment);

                        Tbl_Wallet _Wallet = db.Tbl_Wallet.Where(x => x.Wallet_UserID == _Payment.Payment_UserID).SingleOrDefault();
                        _Wallet.Wallet_Credit       = _Payment.Payment_RemaingWallet - _Payment.Payment_Cost;
                        _Wallet.Wallet_ModifiedDate = DateTime.Now;

                        db.Entry(_Wallet).State = EntityState.Modified;

                        Tbl_UserWorkshopPlan _UserWorkshopPlan = new Tbl_UserWorkshopPlan
                        {
                            UWP_Guid         = Guid.NewGuid(),
                            UWP_UserID       = new Rep_User().Get_UserIDWithGUID(model.UserGuid),
                            UWP_WPID         = model.WorkshopID,
                            Tbl_Payment      = _Payment,
                            UWP_IsActive     = true,
                            UWP_CreationDate = DateTime.Now,
                            UWP_ModifiedDate = DateTime.Now
                        };

                        db.Tbl_UserWorkshopPlan.Add(_UserWorkshopPlan);

                        _WorkshopPlan.WP_Capacity -= 1;

                        db.Entry(_WorkshopPlan).State = EntityState.Modified;

                        if (Convert.ToBoolean(db.SaveChanges() > 0))
                        {
                            //if (_WorkshopPlan.WP_Capacity <= 0)
                            //{
                            //    TempData["TosterState"] = "warning";
                            //    TempData["TosterType"] = TosterType.Maseage;
                            //    TempData["TosterMassage"] = "ظرفیت کارگاه مورد نظر پر شده است";

                            //    return RedirectToAction("Details", "Workshop", new { area = "Dashboard", id = model.WorkshopID });
                            //}

                            if (!walletResult && !smsResult)
                            {
                                TempData["TosterState"]   = "warning";
                                TempData["TosterType"]    = TosterType.WithTitel;
                                TempData["TosterTitel"]   = "خطا در ارسال پیامک";
                                TempData["TosterMassage"] = "کمبود موجودی کیف پول کاربر";
                            }
                            else if (!walletResult)
                            {
                                TempData["TosterState"]   = "warning";
                                TempData["TosterType"]    = TosterType.Maseage;
                                TempData["TosterMassage"] = "کمبود موجودی کیف پول کاربر";
                            }
                            else if (!smsResult)
                            {
                                TempData["TosterState"]   = "warning";
                                TempData["TosterType"]    = TosterType.Maseage;
                                TempData["TosterMassage"] = "خطا در ارسال پیامک";
                            }
                            else
                            {
                                TempData["TosterState"]   = "success";
                                TempData["TosterType"]    = TosterType.Maseage;
                                TempData["TosterMassage"] = "ثبت نام با موفقیت انجام شد";
                            }

                            return(RedirectToAction("Details", "Workshop", new { area = "Dashboard", id = model.WorkshopID }));
                        }

                        TempData["TosterState"]   = "error";
                        TempData["TosterType"]    = TosterType.Maseage;
                        TempData["TosterMassage"] = "ثبت نام با موفقیت انجام نشد";

                        return(RedirectToAction("Details", "Workshop", new { area = "Dashboard", id = model.WorkshopID }));
                    }
                    else
                    {
                        TempData["TosterState"]   = "error";
                        TempData["TosterType"]    = TosterType.Maseage;
                        TempData["TosterMassage"] = "ثبت نام با موفقیت انجام نشد";

                        return(RedirectToAction("Details", "Workshop", new { area = "Dashboard", id = model.WorkshopID }));
                    }
                }
                else
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
            }

            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
        }