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);
}
}