Esempio n. 1
0
 /**
  * Nadpisana metoda update'u wiersza tabeli z uwzględnieniem mailera
  * @param array $data
  * @return type
  */
 public function setFromArray(array $data)
 {
     $headerMappings = $this->getHeaderMappings();
     if (isset($data['send_mail'])) {
         $this->send_mail = $data['send_mail'];
         unset($data['send_mail']);
     }
     foreach ($data as $key => $value) {
         if (isset($headerMappings[$key]['format'])) {
             switch ($headerMappings[$key]['format']) {
                 case 'currency':
                     $data[$key] = Zend_Locale_Format::getFloat($value);
                     break;
             }
         }
         if ($value == null) {
             $data[$key] = null;
         }
     }
     parent::setFromArray($data);
     if (isset($data['id_state']) && $this->send_mail) {
         $mailer = new Logic_Mailer(Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view'), $translate);
         $userModel = new User();
         //receiver data
         if (get_called_class() === 'Row_DelegationSettlement') {
             if ($data['id_state'] == Logic_Settlements::STATE_APPROVED_2) {
                 $receiverRow = $userModel->findOne($this->settlement_by);
             } elseif (!is_null($this->created_by)) {
                 $receiverRow = $userModel->findOne($this->created_by);
             } else {
                 $receiverRow = $userModel->findOne($this->settlement_by);
             }
             $delegation = $this->findParentRow('Delegation');
         } else {
             if (get_called_class() === 'Row_Delegation') {
                 if ($data['id_state'] == Logic_Settlements::STATE_APPROVED) {
                     $receiverRow = $userModel->findOne($this->acceptance_by);
                 } else {
                     $receiverRow = $userModel->findOne($this->created_by);
                 }
                 $params['deleg_no'] = $this->deleg_no;
             } else {
                 return $this;
             }
         }
         $params['email'] = $receiverRow->email;
         //diee($params['email']);
         //sender data
         $senderRow = Zend_Auth::getInstance()->getIdentity();
         $params['user_full_name'] = $senderRow->first_name . ' ' . $senderRow->surname;
         $params['departament'] = $senderRow->department;
         $params['KOD_MPK'] = $senderRow->jednostka['symbol'];
         //email body data
         $params['id'] = $this->id;
         if (isset($data['deleg_no'])) {
             $params['deleg_no'] = $data['deleg_no'];
         } elseif (isset($this->deleg_no)) {
             $params['deleg_no'] = $this->deleg_no;
         } elseif (isset($delegation->deleg_no)) {
             $params['deleg_no'] = $delegation->deleg_no;
         }
         try {
             switch ($data['id_state']) {
                 case Logic_Settlements::STATE_ACCEPTED:
                     $mailer->acceptedByDelegation($params);
                     break;
                 case Logic_Settlements::STATE_APPROVED:
                     $mailer->acceptDelegation($params);
                     break;
                 case Logic_Settlements::STATE_APPROVED_2:
                     $mailer->settleDelegation($params);
                     break;
                 case Logic_Settlements::STATE_CORRECTION:
                     $mailer->correctDelegation($params);
                     break;
                 case Logic_Settlements::STATE_SETTLED:
                     $mailer->settledDelegation($params);
                     break;
                 case Logic_Settlements::STATE_APPROVED_ACCOUNTING:
                     $mailer->approvedDelegation($params);
                     break;
                     //                case Logic_Settlements::STATE_SETTLED
             }
         } catch (Exception $e) {
             $messenger = new Base_View_Helper_Messenger();
             $messenger->error($e->getMessage());
         }
     }
     return $this;
 }