/**
  * Overview Index Action
  */
 public function indexAction()
 {
     $financials = array();
     if ($this->_request->getParam('id', null) === null) {
         $this->_redirect('/admin/clients/');
     }
     $this->view->clientId = array('client_id' => $this->_request->id);
     //Fetch Client & Spouse Details
     $clientGateway = new Clients_Model_ClientGateway();
     $clientContact = $clientGateway->fetchClient($this->_request->id);
     if (is_object($clientContact)) {
         $clientContact = $clientContact->toArray();
     }
     $clientContact['client_dob'] = $this->_dateFormatter->viewDateFormat($clientContact['client_dob']);
     $clientSpouse = $clientGateway->fetchClientSpouse($this->_request->id);
     if (is_object($clientSpouse)) {
         $clientSpouse = $clientSpouse->toArray();
     }
     if ($clientSpouse) {
         $clientSpouse['client_dob'] = $this->_dateFormatter->viewDateFormat($clientSpouse['client_dob']);
     }
     //Calculate Asset Totals
     $clientAssetGateway = new Clients_Model_ClientAssetGateway();
     $financials['assetsTotalEquity'] = $clientAssetGateway->calculateAssetsTotalEquity($this->_request->id);
     $financials['assetsTotalEquity'] = number_format($financials['assetsTotalEquity'], 2);
     //Calculate Investment Totals - Investments and Retirement Plans
     $clientInvestmentGateway = new Clients_Model_ClientInvestmentGateway();
     $financials['investmentsTotal'] = $clientInvestmentGateway->calculateInvestmentsTotal($this->_request->id);
     $clientEmploymentGateway = new Clients_Model_ClientEmploymentGateway();
     $financials['investmentsTotal'] += $clientEmploymentGateway->calculateRetirementPlanTotals($this->_request->id);
     $financials['investmentsTotal'] = number_format($financials['investmentsTotal'], 2);
     //Calculate Incomes Total
     $clientIncomeGateway = new Clients_Model_ClientIncomeGateway();
     $incomeTotal = $clientIncomeGateway->calculateIncomeTotals($this->_request->id);
     $empIncomeTotal = $clientEmploymentGateway->calculateEmploymentIncomeTotal($this->_request->id);
     $financials['incomeTotal'] = $incomeTotal + $empIncomeTotal;
     $financials['incomeTotal'] = number_format($financials['incomeTotal'], 2);
     //Calculate Total Monthly Expenses
     $financials['mthlyExpenses'] = $clientEmploymentGateway->calculateRetirementMonthlyExpense($this->_request->id);
     $clientInsuranceGateway = new Clients_Model_ClientInsuranceGateway();
     $financials['mthlyExpenses'] += $clientInsuranceGateway->calculateMonthlyInsuranceExpense($this->_request->id);
     $financials['mthlyExpenses'] += $clientAssetGateway->calculateAssetsTotalMonthlyExpense($this->_request->id);
     $financials['mthlyExpenses'] += $clientInvestmentGateway->calculateInvestmentsMonthlyExpense($this->_request->id);
     $clientExpenseGateway = new Clients_Model_ClientExpenseGateway();
     $financials['mthlyExpenses'] += $clientExpenseGateway->calculateTotalMonthlyExpenses($this->_request->id);
     $financials['mthlyExpenses'] = number_format($financials['mthlyExpenses'], 2);
     //Calculate Total Accumulated Debt
     $financials['debtTotal'] = $clientExpenseGateway->calculateTotalAccumulatedExpenses($this->_request->id);
     $financials['debtTotal'] += $clientAssetGateway->calculateAssetsTotalDebt($this->_request->id);
     $financials['debtTotal'] = number_format($financials['debtTotal'], 2);
     //Calculate Emergency Funds
     $financials['emergencyFunds'] = $clientAssetGateway->calculateAssetEmergencyFunds($this->_request->id);
     $financials['emergencyFunds'] = $clientInvestmentGateway->calculateInvestmentEmergencyFunds($this->_request->id);
     $financials['emergencyFunds'] = number_format($financials['emergencyFunds'], 2);
     $request = Zend_Controller_Front::getInstance()->getRequest();
     $this->view->module = $request->getModuleName();
     $this->view->controller = $request->getControllerName();
     $this->view->clientContact = $clientContact;
     $this->view->clientSpouse = $clientSpouse;
     $this->view->financials = $financials;
 }
 /**
  * Add Client Asset Process
  */
 public function processAddClientAssetAction()
 {
     if (!$this->_request->isXmlHttpRequest() || !$this->_request->isPost()) {
         $this->_redirector->gotoRoute(array('controller' => 'index', 'module' => 'clients'), 'admin');
     }
     $return = array();
     $clientAssetGateway = new Clients_Model_ClientAssetGateway();
     $form = $clientAssetGateway->getForm('CreateClientAsset');
     $validForm = $form->isValid($this->_request->getParams());
     // Check the form for validity
     if (!$validForm) {
         $return['formErrors'] = $form->getMessages();
     } else {
         $formData = $form->getValues();
         //set correct date format for Pay Off Date
         $formData['client_asset_payoffdate'] = $this->_dateFormatter->saveDateFormat($formData['client_asset_payoffdate'], $formData['altPayoffDate']);
         unset($formData['altPayoffDate']);
         $clientAsset = $clientAssetGateway->create($formData);
         $clientAssetId = $clientAsset->save();
         $clientAsset = $clientAssetGateway->fetchClientAsset($clientAssetId);
         if (is_object($clientAsset)) {
             $clientAsset = $clientAsset->toArray();
         }
         $clientAsset['client_asset_payoffdate'] = $this->_dateFormatter->viewDateFormat($clientAsset['client_asset_payoffdate']);
         $flashMessenger = $this->_helper->getHelper('FlashMessenger');
         $flashMessenger->setNamespace('notifications')->addMessage('Client Asset Added');
         $return = array('append' => array('target' => '#clientAsset', 'content' => $this->view->partial('partials/_clientAssetRow.phtml', 'clients', $clientAsset)), 'refresh' => true);
         $return['callback'] = '$("#add-asset-dialog").dialog("close");';
     }
     $this->_helper->json->sendJson($return);
 }
 /**
  * Fetch Non-Qualified Monthly Funds Avail for Investment
  * @param int $id
  */
 public function fetchNonQualifiedMonthlyFundsAvail($id)
 {
     $nonQualifiedMoney = '0';
     $this->checkAcl('read');
     //Get Non-Qualified Money Avail from Client Employment Ret Plan
     $clientEmploymentGateway = new Clients_Model_ClientEmploymentGateway();
     //This function simply returns the matching plus amount with no other details
     //Saving this to determine if I want to use this functionality over the function
     //below
     //        $nonQualRetPlanMoney = $clientEmploymentGateway->fetchClientAndSpouseRetMoneyPlus($id);
     $nonQualRetPlanMoney = $clientEmploymentGateway->fetchClientAndSpouseRetFundsAvailForTx($id, 'Non-Qualified');
     if (is_object($nonQualRetPlanMoney)) {
         $nonQualRetPlanMoney = $nonQualRetPlanMoney->toArray();
     }
     if ($nonQualRetPlanMoney) {
         foreach ($nonQualRetPlanMoney as $key => $value) {
             if ($nonQualRetPlanMoney[$key]['client_employment_yourcontribution'] > $nonQualRetPlanMoney[$key]['client_employment_matchingmax']) {
                 $nonQualifiedMoney += $nonQualRetPlanMoney[$key]['client_employment_yourcontribution'] - $nonQualRetPlanMoney[$key]['client_employment_matchingmax'];
             }
         }
     }
     //Get Non-Qualified Monthly Funds Avail from Client Investments
     //Check if Money is labeled as Emer Fund Money. If so enure that Tx Amount
     //does not exceed Total minus Emer Fund Amount.
     $clientInvestmentGateway = new Clients_Model_ClientInvestmentGateway();
     $nonQualInvestments = $clientInvestmentGateway->fetchClientMonthlyFundsAvail($id, 'Non-Qualified');
     if (is_object($nonQualInvestments)) {
         $nonQualInvestments = $nonQualInvestments->toArray();
     }
     if ($nonQualInvestments) {
         foreach ($nonQualInvestments as $key => $value) {
             //				if($nonQualInvestments[$key]['client_investment_emfund']){
             //					$availFunds = $nonQualInvestments[$key]['client_investment_txamount'] + $nonQualInvestments[$key]['client_investment_emfundamt'];
             //					if($availFunds < $nonQualInvestments[$key]['client_investment_amount']){
             //						$nonQualifiedMoney += ($nonQualInvestments[$key]['client_investment_amount'] - $nonQualInvestments[$key]['client_investment_emfundamt'] );
             //					}else{
             //						$nonQualifiedMoney += $nonQualInvestments[$key]['client_investment_txamount'];
             //					}
             //				}else{
             $nonQualifiedMoney += $nonQualInvestments[$key]['client_investment_monthlycontribute'];
             //				}
         }
     }
     //Get Non-Qualified Monthly Funds Avail from Client Assets
     //Check if Money is labeled as Emer Fund Money.
     $clientAssetGateway = new Clients_Model_ClientAssetGateway();
     $nonQualAssets = $clientAssetGateway->fetchClientSavingsAssetByClientId($id);
     if (is_object($nonQualAssets)) {
         $nonQualAssets = $nonQualAssets->toArray();
     }
     if ($nonQualAssets) {
         foreach ($nonQualAssets as $key => $value) {
             if ($nonQualAssets[$key]['client_asset_emfund'] && $nonQualAssets[$key]['client_asset_emfundamt']) {
                 $nonQualifiedMoney += $nonQualAssets[$key]['client_asset_pmtamount'];
             } else {
                 $nonQualifiedMoney += $nonQualAssets[$key]['client_asset_pmtamount'];
             }
         }
     }
     //Get Monthly Premiums from any existing Term Life Policies
     $clientInsuranceGateway = new Clients_Model_ClientInsuranceGateway();
     $termLifePremiums = $clientInsuranceGateway->fetchClientTermLifePremiumByClientId($id);
     if (is_object($termLifePremiums)) {
         $termLifePremiums = $termLifePremiums->toArray();
     }
     if ($termLifePremiums) {
         foreach ($termLifePremiums as $key => $value) {
             $nonQualifiedMoney += $termLifePremiums[$key]['client_insurance_mthlypremium'];
         }
     }
     return $nonQualifiedMoney;
 }