CabinetController.php 5.32 KB
<?php
    namespace frontend\controllers;
    
    use common\models\User;
    use frontend\models\IntellectualProperty;
    use frontend\models\UserData;
    use frontend\models\UserPassport;
    use yii\filters\VerbFilter;
    use yii\web\Controller;
    use yii\web\NotFoundHttpException;

    /**
     * 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();
            }
            
            $table = IntellectualProperty::find()->where([
                'user_id' => \Yii::$app->user->identity->id,
                                                         ])->all();
            
            return $this->render('index', [
                'userData' => $userData,
                'userPassport' => $userPassport,
                'table' => $table,
            ]);
        }
        
        public function actionSales($id = null)
        {
            if($id) {
                $property = $this->findProperty($id);
            } else {
                $property = new IntellectualProperty();
            }
            if($property->load(\Yii::$app->request->post()) && $property->save()) {
                $response = \Yii::$app->response;
                $response->format = $response::FORMAT_JSON;
                return [
                    'success' => true,
                    'message' => 'Данные успешно сохранены',
                ];
            }
            return $this->render('sales', [
                'property' => $property,
            ]);
        }
        
        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' => 'Ошибка сохранения данных',
                ];
            }
        }
    
        public function actionAddIntProp()
        {
            $request = \Yii::$app->request;
            $response = \Yii::$app->response;
            $response->format = $response::FORMAT_JSON;
            
            $intProperty = new IntellectualProperty();
            
            $intProperty->user_id = \Yii::$app->user->identity->id;
            
            if($intProperty->load($request->post()) && $intProperty->save()) {
                return [
                    'success' => true,
                    'message' => 'Данные успешно сохранены',
                ];
            } else {
                return [
                    'error' => true,
                    'message' => 'Ошибка сохранения данных',
                ];
            }
        }
        
        public function findProperty($id)
        {
            $model = IntellectualProperty::findOne($id);
            if(empty($model)) {
                throw new NotFoundHttpException();
            }
            return $model;
        }
    }