public function actionEditCommissioningBody() { if (isset($_GET['commissioning_body_id'])) { if (!($cb = CommissioningBody::model()->findByPk(@$_GET['commissioning_body_id']))) { throw new Exception("CommissioningBody not found: " . @$_GET['commissioning_body_id']); } if (!($address = $cb->contact->address)) { $address = new Address(); $address->country_id = 1; } } else { $cb = new CommissioningBody(); $address = new Address(); $address->country_id = 1; } $errors = array(); if (!empty($_POST)) { $cb->attributes = $_POST['CommissioningBody']; if (!$cb->validate()) { $errors = $cb->getErrors(); } $address->attributes = $_POST['Address']; if (!$address->validate()) { $errors = array_merge($errors, $address->getErrors()); } if (empty($errors)) { if (!($contact = $cb->contact)) { $contact = new Contact(); if (!$contact->save()) { throw new Exception("Unable to save contact for commissioning body: " . print_r($contact->getErrors(), true)); } } $cb->contact_id = $contact->id; $method = $cb->id ? 'edit' : 'add'; $audit = $_POST; if ($method == 'edit') { $audit['id'] = $cb->id; } if (!$cb->save()) { throw new Exception("Unable to save CommissioningBody : " . print_r($cb->getErrors(), true)); } $address->contact_id = $contact->id; if (!$address->save()) { throw new Exception("Unable to save CommissioningBody address: " . print_r($address->getErrors(), true)); } Audit::add('admin-CommissioningBody', $method, $cb->id); $this->redirect('/admin/commissioning_bodies'); } } else { Audit::add('admin-CommissioningBody', 'view', @$_GET['commissioning_body_id']); } $this->render('/admin/editCommissioningBody', array('cb' => $cb, 'address' => $address, 'errors' => $errors)); }