public function actionAddSiteSecretary($id = null) { $firmId = $id; $siteSecretaries = array(); $errors = array(); if ($firmId === null && isset(Yii::app()->session['selected_firm_id'])) { $firmId = Yii::app()->session['selected_firm_id']; } $errorList = array(); if (Yii::app()->request->isPostRequest) { foreach ($_POST['FirmSiteSecretary'] as $i => $siteSecretaryPost) { if (empty($siteSecretaryPost['site_id']) && empty($siteSecretaryPost['direct_line']) && empty($siteSecretaryPost['fax'])) { //The entire row is empty, ignore it $errorList[] = array('You must supply at least a Site and Direct Line'); continue; } //Are we updating an existing object if ($siteSecretaryPost['id'] !== '') { $siteSecretary = FirmSiteSecretary::model()->findByPk($siteSecretaryPost['id']); } else { $siteSecretary = new FirmSiteSecretary(); } //Set to have posted attributes $siteSecretary->attributes = $siteSecretaryPost; if (!$siteSecretary->firm_id) { $siteSecretary->firm_id = (int) $firmId; } if (!$siteSecretary->validate()) { $errorList[] = $siteSecretary->getErrors(); } else { if (!$siteSecretary->save()) { throw new CHttpException(500, 'Unable to save Site Secretary: ' . $siteSecretary->site->name); } } //Add to array so updated version can be rendered $siteSecretaries[] = $siteSecretary; } } else { //Find all of the contacts for the current firm $siteSecretary = new FirmSiteSecretary(); $siteSecretaries = $siteSecretary->findSiteSecretaryForFirm($firmId); } //Add a blank one to the end of the form for adding $siteSecretaries[] = new FirmSiteSecretary(); if (count($errorList)) { $errors = call_user_func_array('array_merge', $errorList); } $outputArray = array('siteSecretaries' => $siteSecretaries, 'errors' => $errors, 'success' => count($errors) === 0); if (Yii::app()->request->isAjaxRequest) { if (!$outputArray['success']) { $outputArray['errors'] = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($outputArray['errors'])), false); } $this->renderJSON($outputArray); } else { $this->render('/admin/secretary/edit', $outputArray); } }
public function actionEditFirm($id) { if (!($firm = Firm::model()->findByPk($id))) { throw new Exception("Firm not found: {$id}"); } if (!empty($_POST)) { $firm->attributes = $_POST['Firm']; if (!$firm->validate()) { $errors = $firm->getErrors(); } else { if (!$firm->save()) { throw new Exception("Unable to save firm: " . print_r($firm->getErrors(), true)); } Audit::add('admin-Firm', 'edit', $firm->id); $this->redirect('/admin/firms/' . ceil($firm->id / $this->items_per_page)); } } else { Audit::add('admin-Firm', 'view', $id); } $siteSecretaries = array(); if (isset(Yii::app()->modules['OphCoCorrespondence'])) { $firmSiteSecretaries = new FirmSiteSecretary(); $siteSecretaries = $firmSiteSecretaries->findSiteSecretaryForFirm($id); $firmSiteSecretaries->firm_id = $id; $siteSecretaries[] = $firmSiteSecretaries; } $this->render('/admin/editfirm', array('firm' => $firm, 'errors' => @$errors, 'siteSecretaries' => $siteSecretaries)); }