Exemplo n.º 1
0
 public function listJsonAction()
 {
     $criteria = new RM_Unit_Search_Criteria(array(), true);
     $dao = new RM_Units();
     $filters = $this->_getParam('filter', array());
     $isSelector = $this->_getParam('selector', false);
     $showOnlyAvailable = $this->_getParam('showOnlyAvailable', false);
     if ($showOnlyAvailable) {
         $reservationPeriod = new RM_Reservation_Period(new RM_Date(strtotime($this->_getParam('start_datetime'))), new RM_Date(strtotime($this->_getParam('end_datetime'))));
         $unitsReserved = $dao->getReservedUnits($reservationPeriod);
         $unitArray = array();
         foreach ($unitsReserved as $unit) {
             $unitArray[] = $unit->getId();
         }
         if (count($unitArray) > 0) {
             $filters[] = array('field' => "id", 'data' => array('type' => "listin", 'value' => implode(",", $unitArray), 'comparison' => 'notin'));
         }
     }
     if ($this->_getParam('reservationID') !== null) {
         $reservationID = $this->_getParam('reservationID');
         $reservationModel = new RM_Reservations();
         $reservation = $reservationModel->find($reservationID)->current();
         if ($reservation !== null) {
             $detailsModel = new RM_ReservationDetails();
             $details = $detailsModel->getAllByReservation($reservation);
             $reservedUnitIDs = array();
             foreach ($details as $detail) {
                 $reservedUnitIDs[] = $detail->unit_id;
             }
             if (count($reservedUnitIDs) > 0) {
                 $filters[] = array('field' => "id", 'data' => array('type' => "listin", 'value' => implode(",", $reservedUnitIDs), 'comparison' => 'notin'));
             }
         }
     }
     $criteria->filters = $filters;
     $units = $dao->getAll($criteria)->toArray();
     $criteria->offset = $this->_getParam('start');
     $criteria->order = $this->_getParam('sort', 'id') . ' ' . $this->_getParam('dir', 'DESC');
     $criteria->count = $this->_getParam('limit');
     $total = $dao->getAll($criteria)->count();
     $json = new stdClass();
     $json->total = $total;
     $json->data = $units;
     return array('data' => $json);
 }