/** * Save drug set data from the admin interface. */ public function actionSaveDrugSet() { // we need to decide if it's a new set or modification $drugSet = Yii::app()->request->getParam('DrugSet'); $prescriptionItem = Yii::app()->request->getParam('prescription_item'); if (isset($drugSet['id'])) { $drugSetId = $drugSet['id']; } if ($drugSetId > 0) { $drugset = DrugSet::model()->findByPk($drugSetId); } else { $drugset = new DrugSet(); } $drugset->name = $drugSet['name']; $drugset->subspecialty_id = $drugSet['subspecialty']; $drugset->active = $drugSet['active']; if ($drugset->save()) { // we delete previous tapers and items, and insert the new ones $currentDrugRows = DrugSetItem::model()->findAll(new CDbCriteria(array('condition' => "drug_set_id = '" . $drugset->id . "'"))); foreach ($currentDrugRows as $currentDrugRow) { DrugSetItemTaper::model()->deleteAll(new CDbCriteria(array('condition' => "item_id = '" . $currentDrugRow->id . "'"))); $currentDrugRow->delete(); } if (isset($prescriptionItem) && is_array($prescriptionItem)) { foreach ($prescriptionItem as $item) { $item_model = new DrugSetItem(); $item_model->drug_set_id = $drugset->id; $item_model->attributes = $item; $item_model->save(); // we need an id to save tapers if (isset($item['taper'])) { $tapers = array(); foreach ($item['taper'] as $taper) { $taper_model = new DrugSetItemTaper(); $taper_model->attributes = $taper; $taper_model->item_id = $item_model->id; $taper_model->save(); $tapers[] = $taper_model; } //$item_model->tapers = $tapers; } //$items[] = $item_model; //$item_model->save(); } Yii::app()->user->setFlash('info.save_message', 'Save successful.'); } else { Yii::app()->user->setFlash('info.save_message', 'Unable to save drugs, please add at least one drug to the set. Set name and subspecialty saved.'); } $this->redirect('/OphDrPrescription/DrugSetAdmin/DrugSets'); } else { // TODO: maybe more error handling need to be added here!! if ($drugSetId > 0) { $admin = $this->initAdmin($drugSetId); } else { $admin = $this->initAdmin(false); } $this->render('//admin/generic/edit', array('admin' => $admin, 'errors' => $drugset->getErrors())); } }