CabinetController.php 3.25 KB
<?php
    namespace frontend\controllers;
    
    use common\models\User;
    use frontend\models\UserData;
    use frontend\models\UserPassport;
    use yii\filters\VerbFilter;
    use yii\web\Controller;
    
    /**
     * Cabinet controller
     */
    class CabinetController extends Controller
    {
        
        public $layout = 'cabinet';
        
        /**
         * @inheritdoc
         */
        public function behaviors()
        {
            return [
                'verbs' => [
                    'class' => VerbFilter::className(),
                    'actions' => [
                        'personal' => ['post'],
                        'passport' => ['post'],
                    ],
                ],
            ];
        }
        
        /**
         * Displays index page.
         *
         * @return mixed
         */
        public function actionIndex()
        {
            \Yii::$app->user->login(User::findOne(1));
            /**
             * @var User $user
             */
            $user = \Yii::$app->user->identity;
            if(!$userData = $user->userData) {
                $userData = new UserData();
            }
            if(!$userPassport = $user->userPassport) {
                $userPassport = new UserPassport();
            }
            return $this->render('index', [
                'userData' => $userData,
                'userPassport' => $userPassport,
            ]);
        }
        
        public function actionPersonal()
        {
            $request = \Yii::$app->request;
            $response = \Yii::$app->response;
            $response->format = $response::FORMAT_JSON;
            /**
             * @var User $user
             */
            $user = \Yii::$app->user->identity;
            if(!$userData = $user->userData) {
                $userData = new UserData();
                $userData->user_id = $user->id;
            }
            if($userData->load($request->post()) && $userData->save()) {
                return [
                    'success' => true,
                    'message' => 'Данные успешно сохранены',
                ];
            } else {
                return [
                    'error' => true,
                    'message' => 'Ошибка сохранения данных',
                ];
            }
        }
    
        public function actionPassport()
        {
            $request = \Yii::$app->request;
            $response = \Yii::$app->response;
            $response->format = $response::FORMAT_JSON;
            /**
             * @var User $user
             */
            $user = \Yii::$app->user->identity;
            if(!$userPassport = $user->userPassport) {
                $userPassport = new UserPassport();
                $userPassport->user_id = $user->id;
            }
            if($userPassport->load($request->post()) && $userPassport->save()) {
                return [
                    'success' => true,
                    'message' => 'Данные успешно сохранены',
                ];
            } else {
                return [
                    'error' => true,
                    'message' => 'Ошибка сохранения данных',
                ];
            }
        }
    }