Exemple #1
0
 public function updateRegionalTransaction($regionalRow, $regionalTransactionData, $regionalGestorId = null, $roleRow)
 {
     $serviceArea = new Model_ServiceArea();
     // start transaction externo
     Zend_Registry::get('db')->beginTransaction();
     try {
         $regionalId = $regionalRow->getId();
         // 1.1 Update Regional
         $updateRegional = $this->updateRegional($regionalRow, $regionalTransactionData['regional']);
         if (!$updateRegional['status']) {
             throw new Vtx_UserException($updateRegional['messageError']);
         }
         // 2.1 Delete ServiceArea by Regional
         $serviceArea->deleteServiceAreaByRegional($regionalRow);
         // 2.2 Create ServiceArea
         // inserir bairros
         if ($regionalTransactionData['allNeights'] == 's') {
             if (!isset($regionalTransactionData['serviceArea']['neighborhoods'])) {
                 $error['messageError'] = 'Escolha o(s) bairro(s)';
                 throw new Vtx_UserException($error['messageError']);
             }
             $serviceAreaData['NeighborhoodId'] = $regionalTransactionData['serviceArea']['neighborhoods'];
             $indice = 'NeighborhoodId';
             // inserir cidades
         } else {
             if ($regionalTransactionData['allCities'] == 's') {
                 if (!isset($regionalTransactionData['serviceArea']['cities'])) {
                     $error['messageError'] = 'Escolha a(s) cidade(s)';
                     throw new Vtx_UserException($error['messageError']);
                 }
                 $serviceAreaData['CityId'] = $regionalTransactionData['serviceArea']['cities'];
                 $indice = 'CityId';
                 // inserir estados selecionados
             } else {
                 if ($regionalTransactionData['allUfs'] == 's') {
                     if (!isset($regionalTransactionData['serviceArea']['states'])) {
                         $error['messageError'] = 'Escolha o(s) estado(s)';
                         throw new Vtx_UserException($error['messageError']);
                     }
                     $serviceAreaData['StateId'] = $regionalTransactionData['serviceArea']['states'];
                     $indice = 'StateId';
                     // inserir todos estados
                 } else {
                     for ($index = 1; $index <= 27; $index++) {
                         $allStates[] = $index;
                     }
                     // Seta regional como nacional
                     $regionalTransactionData['regional']['national'] = 'S';
                     $serviceAreaData['StateId'] = $allStates;
                     $indice = 'StateId';
                 }
             }
         }
         if ($roleRow->getIsSystemAdmin() != 1) {
             $newServiceAreaData = $serviceAreaData;
             $this->hasPermissionToCreateRegional($regionalGestorId, $newServiceAreaData, $indice);
         }
         $dataSA = array();
         $controle = array();
         foreach ($serviceAreaData as $keyDados => $keyValue) {
             foreach ($keyValue as $value) {
                 if (!in_array($value, $controle)) {
                     $dataSA[$keyDados] = $value;
                     $createServiceArea = $serviceArea->createServiceArea($regionalId, $dataSA);
                     if (!$createServiceArea['status']) {
                         throw new Vtx_UserException($createServiceArea['messageError']);
                     }
                 }
                 $controle[] = $value;
             }
         }
         // end transaction externo
         Zend_Registry::get('db')->commit();
         return array('status' => true);
     } catch (Vtx_UserException $e) {
         Zend_Registry::get('db')->rollBack();
         return array('status' => false, 'messageError' => $e->getMessage());
     } catch (Exception $e) {
         Zend_Registry::get('db')->rollBack();
         throw new Exception($e);
     }
 }