/var/www/vhosts/nabawater/frontend/controllers
NameSizeModeActions
AdsController.php16160644editdlrm
BranchController.php910030644editdlrm
CmsController.php19540644editdlrm
DriverController.php26350644editdlrm
HomeController.php24080644editdlrm
ItemController.php63130644editdlrm
OrderController.php55780644editdlrm
PageController.php13990644editdlrm
PaymentController.php331140644editdlrm
SiteController.php9920644editdlrm
UserController.php456530644editdlrm
Edit: /var/www/vhosts/nabawater/frontend/controllers/UserController.php (45653B)
google [state] => fba7a556afc3bb3001467f15fb84255299d87e55fd3b1ef5917caf2b314b17ea [code] => 4/XQDnrI_QBVyZrQo1IwYjyuaW-JqUk1c5UnMYTxGO1Z0pv7IrYghXJWB0zRIqXxx-K8thHcMVWtNoCE2vrIXfZLQ [scope] => https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email ) */ /** * @return array */ public function actions() { return [ 'auth' => [ 'class' => 'yii\authclient\AuthAction', 'cancelCallback' => [$this, 'onAuthSuccess'], 'successCallback' => [$this, 'onAuthSuccess'], ], ]; } /** * * @param type $client */ public function onAuthSuccess($client) { $url = Url::previous(); (new AuthHandler($client))->handle(); } /** * * @throws \Exception * @throws \Throwable */ public function actionOtpGenerterForLogin() { $request = Yii::$app->getRequest()->post(); $response = ['status' => STATUS_FAIL, 'msg' => '', 'errors' => []]; $model = new LoginForm(); $model->setScenario($model::SCENARIO_LOGIN_MOBILE); if ($model->load($request)) { $user = User::find() ->where(['mobile_number' => $model->username]) ->andwhere(['<>','status', User::DELETE]) ->one(); if($user == null){ $response['msg'] = yii::t('frontend','Mobile number does not exist. Please Register and continue'); goto skip; } if($user->status == User::INACTIVE){ $response['msg'] = Yii::t('frontend', 'Sorry, Your accound blocked by admin, Please contact Admin'); goto skip; } $user->otp = OtpTemp::generateOtp(); //$user->otp = 1234; $user->save(false); Com::send_sms($user->mobile_number, Configuration::get(Configuration::APP_NAME).' - Please use '.$user->otp.' for login.'); $response['status'] = User::STATUS; $response['msg'] = Yii::t('frontend', 'OTP sent to your mobile number'); } else { $response['errors'] = $this->prepareErrors($model); } skip: return $this->asJson($response); } /** * * @throws \Exception * @throws \Throwable */ public function actionLogin() { //$otp = 1234; //Com::send_sms(548200100, Configuration::get(Configuration::APP_NAME).' - Thank you for registering with us, Please use '.$otp.' to complete your registration'); $request = Yii::$app->getRequest()->post(); $response = ['status' => STATUS_FAIL, 'msg' => '', 'errors' => []]; $model = new LoginForm(); $model->setScenario($model::SCENARIO_LOGIN_DEFAULT); if ($model->load($request) && $model->login()) { $user = Yii::$app->getUser()->getIdentity(); $model = User::findOne(['user_key' => $user->user_key]); $model->generateAuthKey(); $model->save(false); Com::successFlash(yii::t('frontend','User logged in successfully')); $response['status'] = User::STATUS; } else { /*Com::failureFlash('Invalid username');*/ $response['msg'] = Yii::t('backend','Invalid OTP'); } return $this->asJson($response); } /** * @throws \yii\base\InvalidParamException * @throws \yii\base\Exception */ public function actionRegister() { $request = Yii::$app->getRequest()->post(); $response = ['status' => STATUS_FAIL, 'msg' => '', 'errors' => []]; unset($request['country_name_qq']); $modelUser = new User(); $user_temp = new OtpTemp(); $modelUser->setScenario($modelUser::SCENARIO_REGISTER_NORMAL_TYPE); $modelUser->load($request); $modelUser->setPassword($modelUser->password); $modelUser->status = $modelUser::STATUS_ACTIVE; $modelUser->referral_code = Com::generateRandomString(5, true); $request['User']['mobile_number'] = $request['User']['mobile_number']; if(!$modelUser->validate()) { $response['errors'] = $this->prepareErrors($modelUser); } $model = User::find() ->where(['email' => $request['User']['email']]) ->andWhere('status = 1 or status = 2') ->one(); if($model != null) { /* Com::failureFlash('User Already registered ');*/ $response = ['status'=> Com::UNAUTHORIZED,'errors' => yii::t('frontend','Email Already Exists')]; return $this->asJson($response); /* $response['errors'] = $this->prepareErrors($modelUser);*/ } $modelMobile = User::find() ->where(['mobile_number' => $request['User']['mobile_number']]) ->andWhere('status = 1 or status = 2') ->one(); if($modelMobile != null){ $response = ['errors' => yii::t('frontend','Mobile Number Already Exists')]; return $this->asJson($response); } // $phone = preg_replace('/[^\dxX]/', '', $request['User']['mobile_number']); // $modelMobileNew = User::find() // ->where(['mobile_number' => $phone]) // ->andWhere('status = 1 or status = 2') // ->one(); // if($modelMobileNew != null){ // $response = ['errors' => yii::t('frontend','Mobile Number Already Exists')]; // return $this->asJson($response); // } $otp = OtpTemp::generateOtp(); // $otp = 1234; $user_temp->email = $modelUser->email; $country_code = $request['country_code']; $user_temp->mobile_no = $modelUser->mobile_number; $user_temp->user_details = Json::encode($request); $user_temp->otp = $otp; if($user_temp->save()){ $mail = \common\helpers\Mailer::getInstance() ->setTo($modelUser->email) ->setSubject('Verify OTP') ->setMessage(Configuration::get(Configuration::APP_NAME). ' - Thank you for registering with us, Please use '.$otp.' to complete your registration') ->send(); //$msg = Com::send_sms($user_temp->mobile_no, $otp); Com::send_sms($user_temp->mobile_no, Configuration::get(Configuration::APP_NAME).' - Thank you for registering with us, Please use '.$otp.' to complete your registration'); //$status = SmsGateway::getInstance()->sendSMS($user_temp->mobile_no, Configuration::get(Configuration::APP_NAME).' - Thank you for registering with us, Please use '.$otp.' to complete your registration'); $response = ['status'=> Com::SUCCESS,'otp_id' => $user_temp->otp_temp_id]; return $this->asJson($response); exit; } return $this->asJson($response); } public function actionOtpVerify() { $request = Yii::$app->getRequest()->post(); $model = OtpTemp::find() ->where(['otp_temp_id' => $request['otp_id']]) ->one(); if( $request['OTP'] == $model->otp ){ $modelUser = new User(); $modelUser->setScenario($modelUser::SCENARIO_REGISTER_NORMAL); $data = Json::Decode($model->user_details); $modelUser->load($data); $modelUser->validate(); // $modelUser->setPassword($data['User']['password']); $modelUser->status = $modelUser::STATUS_ACTIVE; $modelUser->otp = $request['OTP']; //print_r($modelUser); die; if($modelUser->save(false)){ $response = ['status'=> Com::SUCCESS]; Com::successFlash(yii::t('frontend','Registration Successfull')); $model = new LoginForm(); $model->setScenario($model::SCENARIO_LOGIN_DEFAULT); $model->username = $data['User']['mobile_number']; $model->otp = $request['OTP']; //print_r($model); die; if ($model->login()) { $user = Yii::$app->getUser()->getIdentity(); // print_r($user); die; $model = User::findOne(['user_key' => $user->user_key]); $model->generateAuthKey(); $model->save(false); return $this->asJson($response); } else { $response = ['status'=> Com::ERROR, 'Error'=> yii::t('frontend','OTP not match')]; } } else { $response = ['status'=> Com::ERROR, 'Error'=> yii::t('frontend','OTP not match')]; } } else { $response = ['status'=> Com::ERROR, 'Error'=> yii::t('frontend','OTP not match')]; return $this->asJson($response); } } /** * @return string * @throws \yii\base\InvalidParamException * @throws NotFoundHttpException * @throws \Exception * @throws \Throwable * @throws \yii\db\StaleObjectException */ public function actionIndex() { $userIdentity = UserIdentity::getInstance()->getUser(); $model = User::findOne($userIdentity->getId()); if ($model === null) { throw new NotFoundHttpException('User Not Found'); } $model->setScenario($model::SCENARIO_PROFILE_UPDATE); $request = Yii::$app->getRequest()->post(); if ($model->load($request) && $model->validate() && $model->update()) { Com::successFlash('Profile updated successfully'); } return $this->render('index', ['model' => $model]); } /** * * @throws \yii\base\InvalidParamException */ public function actionSubscribe() { $params = ['name', 'email']; $post = Yii::$app->getRequest()->post(); $data = ['status' => STATUS_FAIL, 'msg' => '']; foreach ($params as $param) { if (!array_key_exists($param, $post['NewsletterSubscriber'])) { $data['msg'] = Yii::t('backend', 'Required param missing'); goto skip; } } $model = new NewsletterSubscriber(); $model->name = $post['NewsletterSubscriber']['name']; $model->email = $post['NewsletterSubscriber']['email']; if (!$model->save()) { $data['msg'] = $model->getFirstErrors(); goto skip; } $data['status'] = STATUS_SUCCESS; skip: echo Json::encode($data); } /** * @return string * @throws \yii\base\InvalidParamException */ public function actionChangePassword() { $model = new ChangePassword(); $post = Yii::$app->getRequest()->post(); if ($model->load($post) && $model->validate()) { if ($model->changePassword()) { Com::successFlash(yii::t('frontend','Password changed successfully')); } else { Com::failureFlash(yii::t('frontend','Error in updating password please try again')); } } return $this->render('change-password', ['model' => $model]); } /** * @return \yii\web\Response */ public function actionLogout() { Yii::$app->user->logout(); return $this->logout() ; } /** * @return \yii\web\Response * @throws \yii\base\InvalidParamException * @throws \Facebook\Exceptions\FacebookSDKException */ public function actionFbCallback() { $fbHelper = FBHelper::getInstance(); $fbHelper->setAccessToken(); if (($error = $fbHelper->getError()) !== false) { Com::failureFlash($error); return $this->goHome(); } $fbUserData = $fbHelper->getUserData(); if ($fbUserData->getId() === null || $fbUserData->getEmail() === null) { Com::failureFlash('Facebook login failed'); return $this->goHome(); } $request = [ 'fb_token' => $fbUserData->getId(), 'first_name' => $fbUserData->getName(), 'email' => $fbUserData->getEmail() ]; $model = new User(); $model->fb_token = $request['fb_token']; $model->first_name = $request['first_name']; $model->email = $request['email']; $model->setScenario($model::SCENARIO_REGISTER_SOCIAL_MEDIA); $modelUser = User::find()->where(['fb_token' => $request['fb_token']]); if ( $request['email'] != '' ) { $modelUser = $modelUser->orWhere(['email' => $request['email']]); } $modelUser = $modelUser->one(); if ( $modelUser !== null ) { $modelUser->fb_token = $request['fb_token']; $modelUser->save(false); } else { if ( !$model->validate() ) { Com::failureFlash($model->getError()); return $this->goHome(); } $model->status = User::STATUS_ACTIVE; $model->save(); } $modelLogin = new LoginForm(); $modelLogin->auth_id = $request['fb_token']; $modelLogin->setScenario($modelLogin::SCENARIO_SOCIAL_MEDIA_LOGIN); if ( $modelLogin->login() ) { $user = Yii::$app->getUser()->getIdentity(); $modelLogin = User::findOne(['user_key' => $user->user_key]); $modelLogin->generateAuthKey(); $modelLogin->save(false); $url = Url::previous(); return $this->goBack($url); //return $this->goHome(); } Com::failureFlash('Facebook login failed'); return $this->goHome(); } /** * */ public function actionForgotPassword() { $data = ['status' => STATUS_FAIL, 'msg' => '']; $post = Yii::$app->getRequest()->post(); $model = User::find() ->where(['email' => $post["LoginForm"]["username"]]) ->andWhere(['status' => User::ACTIVE]) ->one(); if ($model === null) { $response = ['Error'=>'User is inactive/User does not exist']; return $this->asJson($response); } $model->generatePasswordResetToken(); $model->save(false); MailerQueueHelper::getInstance() ->setTo($post["LoginForm"]["username"]) ->setSubject('Password Reset Link') ->setView( 'forgotPassword', [ 'name' => $model->first_name, 'resetLink' => Url::to( 'user/reset-password?reset_token=' . $model->password_reset_token, true ) ] )->push(); $response = ['status'=> Com::SUCCESS,'msg'=> yii::t('frontend', 'Reset link sent to your email')]; return $this->asJson($response); } /** * * @param type $reset_token * @return type */ public function actionResetPassword($reset_token) { $this->layout = 'reset-password'; $model = new ResetPassword(); if (!Yii::$app->getUser()->getIsGuest()) { return $this->goHome(); } if (Yii::$app->getRequest()->get('error') !== null) { return $this->render('reset-password', ['model' => $model]); } $modelUser = User::findByPasswordResetToken($reset_token); if ($modelUser === null) { Com::failureFlash(yii::t('frontend','Password reset token expired try again !')); if (User::findOne(['password_reset_token' => $reset_token]) === null) { Com::failureFlash(yii::t('frontend','Password reset token not valid !')); } return $this->goHome(); } if ($model->load(Yii::$app->getRequest()->post()) && $model->validate()) { $modelUser->removePasswordResetToken(); $modelUser->setPassword($model->password); $modelUser->save(false); Com::successFlash(yii::t('frontend','Password changed successfully')); return $this->goHome(); } return $this->render('reset-password', ['model' => $model,'token' => $reset_token]); } public function actionSendOtpProfileUpdate() { $user = Yii::$app->getUser()->getIdentity(); if($user === null) { $this->asJson(['status' => Com::ERROR, 'message' => yii::t('frontend','User is not active')]); } $model = User::findOne(['user_id' => $user->getId(),'status' => User::ACTIVE]); $request = Yii::$app->getRequest()->post(); $otp = OtpTemp::generateOtp(); $model->otp = $otp; if($model->save(false)) { $mail = \common\helpers\Mailer::getInstance() ->setTo($model['email']) ->setSubject('Verify OTP') ->setMessage(Configuration::get(Configuration::APP_NAME). ' - Please use '.$otp.' to update your mobile number') ->send(); SmsGateway::getInstance()->sendSMS($request['country_code'].$request['mobile_number'], Configuration::get(Configuration::APP_NAME).' - Please use '.$otp.' to update your mobile number'); return $this->asJson(['status' => Com::SUCCESS]); } return $this->asJson(['status' => Com::ERROR]); } public function actionResend_otp() { $request = Yii::$app->getRequest()->post(); $user_temp = OtpTemp::findOne(['otp_temp_id' => $request['otp_id']]); if($user_temp == null) { $this->commonError('INVALID_REQUEST'); } $otp = OtpTemp::generateOtp(); $user_temp->otp = $otp; $data = Json::Decode($user_temp->user_details); if($user_temp->save()) { $mail = \common\helpers\Mailer::getInstance() ->setTo($user_temp->email) ->setSubject('Verify OTP') ->setMessage(Configuration::get(Configuration::APP_NAME). ' - Thank you for registering with us, Please use '.$otp.' to complete your registration') ->send(); //$msg = Com::send_sms($user_temp->mobile_no, $otp); Com::send_sms($user_temp->mobile_no, Configuration::get(Configuration::APP_NAME).' - Thank you for registering with us, Please use '.$otp.' to complete your registration'); //SmsGateway::getInstance()->sendSMS($data['User']['mobile_number'],Configuration::get(Configuration::APP_NAME).' - Thank you for registering with us, Please use '.$otp.' to complete your registration '); $response = ['status'=> Com::SUCCESS,'otp_id' => $user_temp->otp_temp_id]; } return $this->asJson($response); } /** * * @return string */ public function actionProfile() { $model = User::findOne(Yii::$app->getUser()->getId()); $modelUploadForm = new UserUploadForm; $modelNewsletter = NewsletterSubscriber::find() ->select('status') ->where([ 'email' => $model->email, ]) ->one(); return $this->render('profile', ['model' => $model, 'modelUploadForm' => $modelUploadForm, 'isSubscribed' => $modelNewsletter]); } public function actionProfileUpdate() { $modelUploadForm = new UserUploadForm; if (yii::$app->request->isAjax) { $model = $this->findModel(Yii::$app->getUser()->getId()); $model->setScenario(User::PROFILE_UPDATE); $post = Yii::$app->request->post(); $mobile = $model->mobile_number; $post['User']['mobile_number'] = $post['User']['mobile_number']; if ($model->load($post) && $model->validate()) { // $model = User::find() // ->where([ // 'email' => $model->email // ]) // ->andWhere(['<>','user_id', $model->user_id]) // ->andWhere(['<>','status', User::DELETE]) // ->one(); // if($model != null) { // return $this->asJson([ // 'status' => Com::ERROR, // 'errors' => 'Email address already exist' // ]); // } if(isset($post['User']['new_password']) && $post['User']['new_password'] != '') { $model->setPassword($model->new_password); } $uploadedFile = UploadedFile::getInstance($modelUploadForm, 'profile_image'); if (!$uploadedFile == null) { $uploadHelper = UploadHelper::getInstance(); $uploadHelper->setPath($uploadHelper::USER); $uploadHelper->setUploadedFile($uploadedFile); $path = $uploadHelper->getPath(true); $uploadedFile->saveAs($path); $realpath = $uploadHelper->getRealPath($path); $model->profile_image = '/'.$realpath; } if ($mobile == $model->mobile_number) { $model->save(false); return $this->asJson(['status' => Com::SUCCESS]); } else { /*if(isset($post['otp'])) { if($post['otp'] == $model->otp) { $model->save(); return $this->asJson(['status' => Com::SUCCESS]); } else { return $this->asJson([ 'status' => Com::ERROR, 'errors' => yii::t('frontend', 'OTP not match') ]); } }*/ if($model->save(false)){ return $this->asJson(['status' => Com::SUCCESS]); } else { return $this->asJson([ 'status' => Com::ERROR, 'errors' => $model->getErrors() ]); } } } else { Com::log( json_encode($model->getErrors(), true), 'password'); // print_r($model->getErrors()); die; $errors = $model->getFirstErrors(); return $this->asJson([ 'status' => Com::ERROR, 'errors' => reset($errors) ]); } return $this->render('profile', ['model' => $model, 'modelUploadForm' => $modelUploadForm]); } } public function findModel($id) { if (($model = User::findOne(['user_id' => $id])) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } } public function actionAddress() { $model = UserAddress::getaddress(Yii::$app->getUser()->getId()); $addresstype = AddressType::getaddresstype(); if (yii::$app->request->isAjax) { $post = Yii::$app->request->post(); $model=null; if(!$post['address_id'] == ''){ $model = UserAddress::findOne(['user_address_id' => $post['address_id']]); } if($model == null){ $model = new UserAddress(); } $model->setScenario(UserAddress::ADD_ADDRESS); if ($model->load($post) && $model->validate()) { $model->user_id = Yii::$app->getUser()->getId(); if ($model->save()){ $UserAddressLang = UserAddressLang::findOne(['user_address_id' => $model->getPrimaryKey()]); if($UserAddressLang == null){ $UserAddressLang = new UserAddressLang(); $UserAddressLang->user_address_id = $model->user_address_id; } $UserAddressLang->setScenario(UserAddressLang::ADD_ADDRESS); if ($UserAddressLang->load($post) && $UserAddressLang->validate()) { $UserAddressLang->language_code = UserAddress::DEFAULT_LANG; if ($UserAddressLang->save()){ $msg = \yii::t('frontend','Address added successfully'); if(!$post['address_id'] == ''){ $msg = \yii::t('frontend','Address updated successfully'); } Com::successFlash($msg); return $this->asJson(['status' => Com::SUCCESS,'msg' =>$msg]); } } } } } return $this->render('address',['model' => $model, 'addresstype' => $addresstype]); } public function actionDeleteAddress() { if (yii::$app->request->isAjax) { $post = Yii::$app->request->post(); /* print_r($post); die;*/ $model = UserAddress::findOne($post); $model->address_status = 2; $model->save(); return $this->asJson(['status' => Com::SUCCESS]); } } public function actionUpdateAddress() { if (yii::$app->request->isAjax) { $post = Yii::$app->request->post(); $model = UserAddress::findaddress($post['address-id']); $useraddresslang = UserAddressLang::findOne(['user_address_id' => $post['address-id']]); $data = ['address' => $model,'addresslang' => $useraddresslang]; return $this->asJson($data); } } public function actionOrders($page = 1) { if (!Yii::$app->getUser()->getIsGuest()) { $userIdentity = Yii::$app->getUser()->getIdentity(); $bearer = $userIdentity->getAuthKey(); } $headers = [ 'Content-Type: application/json; charset=utf-8', sprintf('Authorization: Bearer %s', $bearer), 'Accept-Language: ' . \Yii::$app->language, ]; $apiResponse = ApiHelper::getInstance() ->setUrl('order/index', ['page' => $page])->run(); if(!$apiResponse->isSuccess()) { $message = $apiResponse->getMessage(); $DataArray['message'] = $message; } $DataArray['data'] = $apiResponse->getData(); // echo "
";
// print_r($DataArray); die;
        if (yii::$app->request->isAjax) {  
        
            $result['status'] = STATUS_SUCCESS;
            $result['nextPage'] = ($DataArray['data']['total_page'] == $page) ? $DataArray['data']['total_page'] : $page + 1;
            $result['html'] = $this->renderPartial('_order_div',['data' => $DataArray['data']]);
            return $this->asJson($result);
        }
        return $this->render('order',['data' => $DataArray['data']]);
    
    }

    public function actionReviews($page = 1)
    {
        if (!Yii::$app->getUser()->getIsGuest()) {
            $userIdentity = Yii::$app->getUser()->getIdentity();
            $bearer = $userIdentity->getAuthKey();
        }
        
        $headers = [
            'Content-Type: application/json; charset=utf-8',
            sprintf('Authorization: Bearer %s', $bearer),
            'Accept-Language: ' . \Yii::$app->language,
        ];
        $apiResponse = ApiHelper::getInstance()
            ->setUrl('rating/index', ['page' => $page])->run();

        if(!$apiResponse->isSuccess()) {
            $message = $apiResponse->getMessage();
            $DataArray['message'] = $message;
        }
        
        $DataArray['data'] = $apiResponse->getData();

        if (yii::$app->request->isAjax) {  
        
            $result['status'] = STATUS_SUCCESS;
            $result['nextPage'] = ($DataArray['data']['total_page'] == $page) ? $DataArray['data']['total_page'] : $page + 1;
            $result['html'] = $this->renderPartial('_order_div',['data' => $DataArray['data']]);
            return $this->asJson($result);
        }
        return $this->render('review',['review' => $DataArray['data']]);
 
    }

    public function actionEditReview()
    {
        if (yii::$app->request->isAjax) {
            $post = Yii::$app->request->post();
            $model = BranchReview::findOne($post['id']);
            return $this->asJson($model);

        }
    }
    public function actionReviewUpdate()
    {
        if (yii::$app->request->isAjax) {
            $post = Yii::$app->request->post();
            $model = BranchReview::findOne($post['id']);
            $model->rating = $post['rating'];
            $model->review = $post['Comments'];
            $model->save();
            return $this->asJson(['status' => Com::SUCCESS]);

        }
    }
    public function actionDeleteReview()
    {
        if (yii::$app->request->isAjax) {
            $post = Yii::$app->request->post();
            $model = BranchReview::findOne($post['id']);
            $model->delete();
            return $this->asJson(['status' => Com::SUCCESS]);

        }
    }

    public function actionFavourites()
    {
        if (!Yii::$app->getUser()->getIsGuest()) {
            $userIdentity = Yii::$app->getUser()->getIdentity();
            $bearer = $userIdentity->getAuthKey();
        }
        
        $headers = [
            'Content-Type: application/json; charset=utf-8',
            sprintf('Authorization: Bearer %s', $bearer),
            'Accept-Language: ' . \Yii::$app->language,
        ];
        $apiResponse = ApiHelper::getInstance()
            ->setUrl('favourite/index')->run();

        if(!$apiResponse->isSuccess()) {
            $message = $apiResponse->getMessage();
            $cartDataArray['message'] = $message;
        }
        
        $cartDataArray['data'] = $apiResponse->getData();

        return $this->render('favourites',['data' => $cartDataArray['data']]);
    }
     public function actionNewsletterSubscribe()
    {
        if (yii::$app->request->isAjax) {
            $model = new NewsletterSubscriber();
            $post = Yii::$app->request->post();
            $user = User::findOne($post['id']);
            $result = ['status' => STATUS_SUCCESS, 'msg' => ''];
            $NewsletterSubscriber = NewsletterSubscriber::find()->where(['email' => $user->email])->one();
            if(!$NewsletterSubscriber == ""){
                if($NewsletterSubscriber->status == 1){
                    $NewsletterSubscriber->status = 3;
                    $result['msg'] = yii::t('frontend','Newsletter Unsubscribed successfully');
                    $NewsletterSubscriber->save();
                }else{
                    $NewsletterSubscriber->status = 1;
                    $result['msg'] = yii::t('frontend','Newsletter Subscribed successfully');
                    $NewsletterSubscriber->save();
                }
            }else{
                $model->email = $user->email;
                $model->name = $user ->first_name;
                $model->status = 1;
                $model->save();
                $result['msg'] = yii::t('frontend','Newsletter Subscribed successfully');
            }
            return $this->asJson($result);

        }

    }
    
     
    public function actionCheck_mobile_exist() {
        if (Yii::$app->request->isAjax) {
            $request = Yii::$app->getRequest()->post();
            if($request['mobile'] != '') {
                $count = User::find()->where(['mobile_number' => $request['mobile']])->count();
                echo $count;
            }
            die;
        }
    }

    //Email ID Uniqueness Checking
    public function actionCheck_email_exist() {
        if (Yii::$app->request->isAjax) {
            $request = Yii::$app->getRequest()->post();
            if($request['email'] != '') {
                $count = User::find()->where(['email' => $request['email']])->count();
                echo $count;
            }
            die;
        }
    }
    
    public function actionWebPushNotification()
    {
        $post = Yii::$app->getRequest()->post();
        $userIdentity =Yii::$app->getUser()->getIdentity(); 
        $model = User::find()->where(['user_id' => $userIdentity->user_id])->one();
        $model->web_token = $post['playerId'];
        $model->save(false);  
    }

    /**
     * @return \yii\web\Response
     * @throws \Throwable
     * @throws \yii\base\InvalidConfigException
     */
    public function actionWalletTrans()
    {
        $post = Yii::$app->getRequest()->post();
      //  print_r($post); die;
        $walletModel = new WalletTransaction();

        $result = ['status' => STATUS_SUCCESS, 'msg' => ''];
        $userIdentity =Yii::$app->getUser()->getIdentity();

        if (($walletModel->pay_type == WalletTransaction::PAY_TYPE_TRANSACTION)) {
            if ($userIdentity == null) {
                $result['msg'] = yii::t('frontend','Please login in and then continue.');
                $result['status'] = 0;
            }
        }

        if ($walletModel->load($post)) {
            $receiverModel = User::findOne(['mobile_number' => $walletModel->mobile_number]);
            if ($receiverModel == null) {
                $result['msg'] = yii::t('frontend','User not found for given mobile number!');
                $result['status'] = 0;
                goto skip;
            }
            $requestData = [
                'mobile_number' => $walletModel->mobile_number,
                'first_name' => $receiverModel->first_name,
                'last_name' => $receiverModel->last_name,
                'email' => $receiverModel->email,
                'amount' => $walletModel->amount,
                'pay_type' => ($walletModel->pay_type == WalletTransaction::PAY_TYPE_RECHARGE) ? WalletTransaction::PAY_TYPE_RECHARGE : WalletTransaction::PAY_TYPE_TRANSACTION,
                'transaction_type' => ($walletModel->pay_type == WalletTransaction::PAY_TYPE_RECHARGE) ? WalletTransaction::TRANS_TYPE_RECHARGE : WalletTransaction::TRANS_TYPE_TRANSACTION,
                'payment_option' => $walletModel->payment_option,
                'type' => 'web'
            ];
//print_r($requestData); die;
            $walletRequest = ApiHelper::getInstance()
                ->setRequestMethod(ApiHelper::REQUEST_METHOD_POST)
                ->setRequestParam($requestData)
                ->setUrl('wallet/transfer-amount');
            $apiResponse = $walletRequest->run();

            if(!$apiResponse->isSuccess()) {
                $message = $apiResponse->getMessage();
                $result['status'] = false;
                $result['message'] = $message;
            }

            if($walletModel->pay_type == WalletTransaction::PAY_TYPE_RECHARGE){
                $data = $apiResponse->getData();
                return $this->redirect($data['payment_url']); 

            }
        }

        skip:
        return $this->asJson($result);
    }

    /**
     * @return string
     * @throws \Throwable
     */
    public function actionWallet($page = 1)
    {
        
        if (!Yii::$app->getUser()->getIsGuest()) {
            $userIdentity = Yii::$app->getUser()->getIdentity();
            $bearer = $userIdentity->getAuthKey();
        }
        
        $headers = [
            'Content-Type: application/json; charset=utf-8',
            sprintf('Authorization: Bearer %s', $bearer),
            'Accept-Language: ' . \Yii::$app->language,
        ];
        $apiResponse = ApiHelper::getInstance()
            ->setUrl('wallet/index',['page' => $page])->run();

        if(!$apiResponse->isSuccess()) {
            $message = $apiResponse->getMessage();
            $cartDataArray['message'] = $message;
        }
        $cartDataArray['data'] = $apiResponse->getData();
        if (yii::$app->request->isAjax) {  
        
            $result['status'] = STATUS_SUCCESS;
            $result['nextPage'] = ($cartDataArray['data']['total_page'] == $page) ? $cartDataArray['data']['total_page'] : $page + 1;
            $result['html'] = $this->renderPartial('_wallet_tr',['data' => $cartDataArray['data']]);
            return $this->asJson($result);
        }
   
        return $this->render('wallet',['data' => $cartDataArray['data']]);
    }


    /**
     * @return string
     * @throws \Throwable
     */
    public function actionLoyality()
    {
        if (!Yii::$app->getUser()->getIsGuest()) {
            $userIdentity = Yii::$app->getUser()->getIdentity();
            $bearer = $userIdentity->getAuthKey();
        }
        
        $headers = [
            'Content-Type: application/json; charset=utf-8',
            sprintf('Authorization: Bearer %s', $bearer),
            'Accept-Language: ' . \Yii::$app->language,
        ];
        $apiResponse = ApiHelper::getInstance()
            ->setUrl('wallet/get-loyality-point')->run();

        if(!$apiResponse->isSuccess()) {
            $message = $apiResponse->getMessage();
            $cartDataArray['message'] = $message;
        }
        $cartDataArray['data'] = $apiResponse->getData();
        return $this->render('loyalty', ['data' => $cartDataArray['data']]);
    }

      /**
     * @return string
     * @throws \Throwable
     */
    public function actionRedeemLoyality()
    {
        if (!Yii::$app->getUser()->getIsGuest()) {
            $userIdentity = Yii::$app->getUser()->getIdentity();
            $bearer = $userIdentity->getAuthKey();
        }
        
        $headers = [
            'Content-Type: application/json; charset=utf-8',
            sprintf('Authorization: Bearer %s', $bearer),
            'Accept-Language: ' . \Yii::$app->language,
        ];
        $apiResponse = ApiHelper::getInstance()
            ->setUrl('wallet/redeem-loyality-point')->run();
        $status = 200;
        $dataArray = [];
        if(!$apiResponse->isSuccess()) {
            $status = 400;
        }
        $dataArray['data'] = $apiResponse->getData();
        $dataArray['data']['status'] = $status;
        $dataArray['data']['message'] = $apiResponse->getMessage();;

        return $this->asJson($dataArray['data']);
        
    }

    /**
     * @return string
     * @throws \Throwable
     */
    public function actionSubscription($page = 1)
    {
           
        if (!Yii::$app->getUser()->getIsGuest()) {
            $userIdentity = Yii::$app->getUser()->getIdentity();
            $bearer = $userIdentity->getAuthKey();
        }
        
        $headers = [
            'Content-Type: application/json; charset=utf-8',
            sprintf('Authorization: Bearer %s', $bearer),
            'Accept-Language: ' . \Yii::$app->language,
        ];
        $apiResponse = ApiHelper::getInstance()
            ->setUrl('order-subscription/index',['page' => $page])->run();

        if(!$apiResponse->isSuccess()) {
            $message = $apiResponse->getMessage();
            $cartDataArray['message'] = $message;
        }
        $cartDataArray['data'] = $apiResponse->getData();

        if (yii::$app->request->isAjax) {  
        
            $result['status'] = STATUS_SUCCESS;
            $result['nextPage'] = ($cartDataArray['data']['total_page'] == $page) ? $cartDataArray['data']['total_page'] : $page + 1;
            $result['html'] = $this->renderPartial('subscription_tr',['subscribeData' => $cartDataArray['data']]);
            return $this->asJson($result);
        }

        return $this->render('subscription', ['subscribeData' => $cartDataArray['data']]);
    }


    /**
     * @return string
     * @throws \Throwable
     */
    public function actionRefundBottle()
    {
        if (yii::$app->request->isAjax) {
            $requestObj = Yii::$app->getRequest();
            $request = $requestObj->get();

            if (!Yii::$app->getUser()->getIsGuest()) {
                $userIdentity = Yii::$app->getUser()->getIdentity();
                $bearer = $userIdentity->getAuthKey();
            }
        
            $headers = [
                'Content-Type: application/json; charset=utf-8',
                sprintf('Authorization: Bearer %s', $bearer),
                'Accept-Language: ' . \Yii::$app->language,
            ];
            $_GET = [
                'refund_bottle_qty' => $request['bottle'],
            ];
            $apiResponse = ApiHelper::getInstance()
                ->setUrl('user/refund-bottle-request')->run();
            if(!$apiResponse->isSuccess()) {
                $message = $apiResponse->getMessage();
                $result['status'] = STATUS_FAIL;
                $result['msg'] = $message;
                return $this->asJson($result);
            }
            $cartDataArray['data'] = $apiResponse->getData();
            $result['status'] = STATUS_SUCCESS;
            $result['msg'] = $apiResponse->getMessage();

            return $this->asJson($result);

        }
        
        $model = ItemBottleRefundHistory::find()
                ->orderBy(['item_bottle_refund_history_id' => SORT_DESC])
                ->asArray()
                ->all();
 
        return $this->render('refund-bottle', ['datas' => $model]);
    }

    public function actionEnableHealthAdvice()
    {
        $userIdentity = Yii::$app->getUser()->getIdentity();
        if($userIdentity->is_health_advice == User::ACTIVE) {
            $userIdentity->is_health_advice = User::INACTIVE;
        } else {
            $userIdentity->is_health_advice = User::ACTIVE; 
        }
        $userIdentity->save();
        return $this->asJson($userIdentity->is_health_advice);

    }

    public function actionCartDataAvailableCheck()
    {
        $cart = Com::Session(Com::CART);

        foreach ($cart as $key => $cartItem) {
            $item = Item::getItemDetails($cartItem['item_key']);
            if($item == null) {
                $result['msg'] = "invalid Item";
            }
            
            $cartType = 2;
            if($key == 'bulk_order') {
                $cartType = 1;
            }

        }

        return $this->asJson($cartType);
    }

    public function actionReminder()
    {
        if (!Yii::$app->getUser()->getIsGuest()) {
            $userIdentity = Yii::$app->getUser()->getIdentity();
            $bearer = $userIdentity->getAuthKey();
        }
        

        $headers = [
            'Content-Type: application/json; charset=utf-8',
            sprintf('Authorization: Bearer %s', $bearer),
            'Accept-Language: ' . \Yii::$app->language,
        ];
        $apiResponse = ApiHelper::getInstance()
            ->setUrl('user/user-drinking')->run();

        if(!$apiResponse->isSuccess()) {
            $message = $apiResponse->getMessage();
            $dataArray['message'] = $message;
        }
        
        $dataArray['drinking'] = $apiResponse->getData();

        $apiResponse = ApiHelper::getInstance()
            ->setUrl('user/reminder-schedule')->run();
        $dataArray['list'] = $apiResponse->getData();
      //
        return $this->render('reminder', ['dataArray' => $dataArray]);
    }

}