Ejemplo n.º 1
0
 public function executeIndex(sfWebRequest $request)
 {
     $this->form = new ReservationDeleteForm(array(), array(), false);
     $formName = $this->form->getName();
     $this->formConfirm = new ReservationDeleteConfirmForm(array(), array(), false);
     $nameConfirm = $this->formConfirm->getName();
     $this->getUser()->syncParameters($this, 'reservationDelete', 'index', array('offset', 'limit', $formName, 'sort_column', 'sort_direction'), $request);
     $this->step = sfConfig::get('app_max_reservations_on_reporting');
     $search = $request->getPostParameter($nameConfirm);
     $deletion_choice = $search['deletion_choices'];
     $this->displayInfo = true;
     if ($request->getParameter('id') != null) {
         $this->forward404Unless($reservation = ReservationPeer::retrieveByPk($request->getParameter('id')), sprintf('Object reservation does not exist (%s).', $request->getParameter('id')));
         $this->reservationId = $request->getParameter('id');
         $this->formConfirm = new ReservationDeleteConfirmForm(array(), array(), false);
         $nameConfirm = $this->formConfirm->getName();
         $search = $request->getPostParameter($nameConfirm);
         $deletion_choice = $search['deletion_choices'];
     } else {
         $this->reservationId = null;
     }
     if (is_null($this->sort_column)) {
         $this->sort_column = 'date';
         $this->sort_direction = 'up';
     }
     if (is_null($this->offset)) {
         $this->offset = 0;
     }
     if (is_null($this->limit) || $this->limit <= 0) {
         $this->limit = $this->step;
     }
     $c = new Criteria();
     SortCriteria::addSortCriteria($c, $this->sort_column, ReservationPeer::getSortAliases(), $this->sort_direction);
     if ($request->getParameter('id') != null) {
         $this->forward404Unless($reservation = ReservationPeer::retrieveByPk($request->getParameter('id')), sprintf('Object reservation does not exist (%s).', $request->getParameter('id')));
         switch ($deletion_choice) {
             case 'this':
                 $room_id = $reservation->getRoomProfile()->getRoomId();
                 if (!$this->isAdmin() || !$reservation->isEditable()) {
                     if (!$this->getUser()->canDeleteReservation($reservation)) {
                         $this->getUser()->setFlash('deleteError', true);
                         $this->redirect('reservation/index?roomId=' . $room_id);
                     }
                 }
                 $this->deleteAReservation($reservation);
                 $this->redirect('reservation/index?roomId=' . $room_id);
                 break;
             case 'next':
                 $this->reservation_list = ReservationPeer::reportRepeatNext($reservation);
                 break;
             case 'previous':
                 $this->reservation_list = ReservationPeer::reportRepeatPrevious($reservation);
                 break;
             case 'all':
                 $this->reservation_list = ReservationPeer::reportRepeatAll($reservation);
                 break;
         }
     }
     $this->getUser()->syncParameters($this, 'reservationDelete', 'index', array('offset', 'limit', $formName, 'sort_column', 'sort_direction'), $request);
     $this->filtered = false;
     if (!is_null($this->{$formName}) && is_null($request->getParameter('id'))) {
         $this->filtered = true;
         $this->form->bind($this->{$formName}, $request->getFiles($formName));
         if ($this->form->isValid()) {
             $this->reservation_list = ReservationPeer::reportTime($this->form->getValue('activity'), $this->form->getValue('rooms'), strtotime($this->form->getValue('start_date')), strtotime($this->form->getValue('end_date')), strtotime($this->form->getValue('start_hour')), strtotime($this->form->getValue('end_hour')), $this->form->getValue('periodicity'), $this->form->getValue('number'), $c);
             //
             $this->getUser()->setAttribute('stop_on_error_tmp', $this->form->getValue('stop_on_error'));
             // -----------------------------------
             $this->count = count($this->reservation_list);
             $this->reservation_list = array_slice($this->reservation_list, $this->offset, $this->limit);
         } else {
             $this->count = 0;
             $this->reservation_list = array();
         }
     } else {
         if (!isset($this->reservation_list)) {
             $this->count = 0;
             $this->reservation_list = array();
         }
         $this->displayInfo = false;
     }
     //
     $this->getUser()->setAttribute('list_delete_tmp', $this->reservation_list);
     // -----------------------------------
     if ($this->offset < 0 || $this->offset >= $this->count && $this->count > 0) {
         $this->forward404('Invalid offset/count values.');
     }
 }