/** * Метод создания пользователя, путешествия, покупки * возвращает массив JSON с ошибками */ public function actionaddPurchase() { if (empty(Yii::app()->request->csrfToken)) { throw new CHttpException('403', 'Ошибочный запрос, отказано в доступе.'); } $params = CJSON::decode(file_get_contents('php://input'), true); $errors = array(); $user = new Users(); $user->username = $params['data']['userfullname']; $user->password = $params['data']['password']; $user->email = $params['data']['email']; $user->first_name = strpos($params['data']['userfullname'], ' ') === false ? $params['data']['userfullname'] : substr($params['data']['userfullname'], 0, strpos($params['data']['userfullname'], ' ')); $user->last_name = strpos($params['data']['userfullname'], ' ') === false ? $params['data']['userfullname'] : substr($params['data']['userfullname'], strpos($params['data']['userfullname'], ' ')); if ($user->validate()) { if (!$user->save()) { throw new CHttpException('403', 'Ошибочный запрос, не удалось обновить user'); } } else { throw new CHttpException('403', 'Ошибочный запрос, не удалось обновить user'); } $trip = new Trip(); $trip->users__id = $user->id; $trip->departure = $params['data']['departure']; $trip->destination = $params['data']['destination']; $trip->date_start = date("Y-m-d", strtotime($params['data']['date_start'])); $trip->date_end = date("Y-m-d", strtotime($params['data']['date_end'])); if ($trip->validate()) { if (!$trip->save()) { throw new CHttpException('403', 'Ошибочный запрос, не удалось обновить trip'); } } else { throw new CHttpException('403', 'Ошибочный запрос, не удалось обновить trip'); } $purchase = new Purchases(); $purchase->users__id = $user->id; $purchase->trip__id = $trip->id; $purchase->name = $params['data']['name']; $purchase->price = $params['data']['price']; if ($purchase->validate()) { if (!$purchase->save()) { throw new CHttpException('403', 'Ошибочный запрос, не удалось обновить purchase'); } } else { throw new CHttpException('403', 'Ошибочный запрос, не удалось обновить purchase validate'); } $errors['customer'] = array_merge($user->getErrors(), $trip->getErrors()); echo CJSON::encode($errors); }