/**
  * Process Modify Client Employment
  */
 public function processModifyClientEmploymentAction()
 {
     $spouseEmployment = null;
     $return = array();
     if (!$this->_request->isXmlHttpRequest() || !$this->_request->isPost()) {
         $this->_redirect('/admin/clients/');
     }
     $formData = $this->_request->getParams();
     $clientId = $formData['client']['client_id'];
     if (!$formData['spouse']) {
         $spouseEmployment = $formData['client']['spouseEmployment'];
     }
     unset($formData['client']['spouseEmployment']);
     //Create Client Employment Gateway
     $clientEmploymentGateway = new Clients_Model_ClientEmploymentGateway();
     //Check Client Employment data to determine if Create or Modify
     if ($formData['client']['client_employment_id']) {
         $clientForm = $clientEmploymentGateway->getForm('ModifyClientEmployment')->getSubForm('client');
         $validClientForm = $clientForm->isValid($formData['client']);
     } else {
         $clientForm = $clientEmploymentGateway->getForm('CreateClientEmployment')->getSubForm('client');
         $validClientForm = $clientForm->isValid($formData['client']);
     }
     if ($formData['spouse'] || $spouseEmployment) {
         if ($formData['spouse'] && $formData['spouse']['client_employment_id']) {
             $spouseForm = $clientEmploymentGateway->getForm('ModifyClientEmployment')->getSubForm('spouse');
             $validSpouseForm = $spouseForm->isValid($formData['spouse']);
             $spouseData = $spouseForm->getValues();
         } elseif (!$spouseEmployment && $formData['spouse']) {
             $spouseForm = $clientEmploymentGateway->getForm('CreateClientEmployment')->getSubForm('spouse');
             $validSpouseForm = $clientForm->isValid($formData['spouse']);
             $spouseData = $spouseForm->getValues();
         } elseif ($spouseEmployment) {
             // retrieve spouse id
             $clientGateway = new Clients_Model_ClientGateway();
             $spouseId = $clientGateway->fetchClientSpouseId($clientId);
             if ($spouseId) {
                 $spouseForm = $clientEmploymentGateway->getForm('CreateClientEmployment')->getSubForm('spouse');
                 $spouseData['spouse']['client_id'] = $spouseId;
                 $validSpouseForm = true;
             }
         }
         if (!$validSpouseForm) {
             $return['formErrors'] = $this->_errorFormatter->formatErrors($spouseForm->getMessages());
         }
     }
     // Check the form for validity
     if (!$validClientForm || $return['formErrors']) {
         if (!$validClientForm && $return['formErrors']) {
             $return['formErrors'] = array_merge($this->_errorFormatter->formatErrors($clientForm->getMessages()), $return['formErrors']);
         } elseif ($return['formErrors']) {
             $return['formErrors'] = array_merge($this->_errorFormatter->formatErrors($clientForm->getMessages()), $return['formErrors']);
         } else {
             $return['formErrors'] = $this->_errorFormatter->formatErrors($clientForm->getMessages());
         }
         $return['formResult'] = FALSE;
     } else {
         $clientData = $clientForm->getValues();
         unset($clientData['client']['spouseEmployment']);
         $clientEmployment = $clientEmploymentGateway->create($clientData['client']);
         $clientEmployment->save();
         //If spouse form save spouse employment data
         if ($validSpouseForm) {
             $clientSpouseEmployment = $clientEmploymentGateway->create($spouseData['spouse']);
             $clientSpouseEmployment->save();
         }
         $flashMessenger = $this->_helper->getHelper('FlashMessenger');
         $flashMessenger->setNamespace('notifications')->addMessage('Client Employment Updated');
         if ($this->_request->getParam('close') == 1) {
             $return['redirect']['location'] = '/admin/clients/';
         } else {
             $return['redirect']['location'] = '/admin/clients/modify/employment/' . $clientId;
         }
     }
     $this->_helper->json->sendJson($return);
 }