/** * Adds a Service to an Order Cart. * @return mixed */ public function actionAdd($title = null) { if (isset($title) and $service = $this->findServiceByTitle($title)) { $object_models = Yii::$app->request->get('CsObjects') ? Yii::$app->request->get('CsObjects')['id'] : null; $products = Yii::$app->request->get('CsProducts') ? Yii::$app->request->get('CsProducts')['id'] : null; $presentation = Yii::$app->request->get('Presentations') ? $this->findPresentation(Yii::$app->request->get('Presentations')['id']) : null; //service = $this->findService($ser_tr->service_id); $key = isset(Yii::$app->session['cart']['industry'][$service->industry_id]['data']) && Yii::$app->session['cart']['industry'][$service->industry_id]['data'] != null ? count(Yii::$app->session['cart']['industry'][$service->industry_id]['data']) + 1 : 1; $model = $this->loadCartFormModel($service, $object_models, $key, $products, $presentation); // method model $model_action_properties = $this->loadServiceActionProperties($service, $key); // specification model $model_object_properties = $this->loadServiceObjectProperties($service, $object_models, $products, $key); if ($model->load(Yii::$app->request->post()) and $model->storeToCart()) { if ($model_action_properties != null) { // methods if (yii\base\Model::loadMultiple($model_action_properties, Yii::$app->request->post()) and yii\base\Model::validateMultiple($model_action_properties)) { foreach ($model_action_properties as $model_action_property) { $model_action_property->store(); } } } if ($model_object_properties != null and ($model->user_object == '' or $model->user_object == null)) { // specifications if (yii\base\Model::loadMultiple($model_object_properties, Yii::$app->request->post()) and yii\base\Model::validateMultiple($model_object_properties)) { foreach ($model_object_properties as $model_object_property) { $model_object_property->store(); } } } if ($model->imageFiles) { $model->upload(); } if (isset($_POST['searchPresentationIndex']) and $_POST['searchPresentationIndex'] == '') { return $this->redirect($this->addParamsForPresentationIndex($model_object_properties, $model_action_properties, $model, $service)); } if (isset($_POST['addMoreServices']) and $_POST['addMoreServices'] == '') { return $this->redirect(['/services', 'i' => $service->industry_id]); } return $this->redirect(['/new-order', 'industry' => $service->industry_id]); } else { return $this->render('add', ['model' => $model, 'model_object_properties' => $model_object_properties, 'model_action_properties' => $model_action_properties, 'service' => $service, 'object_models' => $object_models, 'objects' => $this->getObjectModels($object_models), 'serviceObjectProperties' => $service->serviceObjectProperties, 'objectProperties' => $this->objectProperties($service, $object_models, $products), 'userObjects' => $this->checkUserObjectsExist($service, $object_models), 'serviceActionProperties' => $service->serviceActionProperties]); } } else { return $this->redirect('/services'); } }