Exemplo n.º 1
0
 public function executeDelete(sfWebRequest $request)
 {
     $request->checkCSRFProtection();
     $this->forward404Unless($zone = ZonePeer::retrieveByPk($request->getParameter('id')), sprintf('Object zone does not exist (%s).', $request->getParameter('id')));
     $zone->delete();
     $this->redirect('zone/index');
 }
Exemplo n.º 2
0
 public function isParentOf($zoneId)
 {
     $zone = ZonePeer::retrieveByPk($zoneId);
     if (!is_null($zone)) {
         return $zone->isChildOfObject($this);
     }
     return false;
 }
Exemplo n.º 3
0
 public function executeNew(sfWebRequest $request)
 {
     $this->form = new RoomForm();
     $this->checkReferer($request);
     if ($request->hasParameter('parentZoneId')) {
         $this->forward404Unless($parentZone = ZonePeer::retrieveByPk($request->getParameter('parentZoneId')), sprintf('Object zone does not exist (%s).', $request->getParameter('parentZoneId')));
         $this->form->addParentZone($parentZone);
     }
 }
Exemplo n.º 4
0
 public static function getOccupancy($zone, $activities, $begin_date, $end_date)
 {
     $begin_date_str = date('Y-m-d', $begin_date);
     $end_date_str = date('Y-m-d', $end_date);
     /*print('Begin date: '.$begin_date_str.'<br>');
     		print('End date: '.$end_date_str.'<br>');*/
     if (!is_null($zone)) {
         $zone = ZonePeer::retrieveByPk($zone);
         //print('Zone is not null: '.$zone.' - Getting rooms....'.'<br>');
         $rooms = $zone->getRooms($activities);
     } else {
         //print('Zone is null !'.'<br>');
         $c = new Criteria();
         if (!empty($activities)) {
             $c->addJoin(RoomHasActivityPeer::ROOM_ID, RoomPeer::ID);
             $c->addAnd(RoomHasActivityPeer::ACTIVITY_ID, $activities, Criteria::IN);
         }
         $rooms = RoomPeer::doSelect($c);
     }
     /*print('All Rooms To Check:'.'<br>');
     		print_r ($rooms);
     		print('<br>');*/
     $report = array();
     foreach ($rooms as $room) {
         // Occupancy
         //print('Processing room: '.$room.'<br>');
         $c = new Criteria();
         $c->addJoin(ReservationPeer::ROOMPROFILE_ID, RoomprofilePeer::ID);
         $c->addJoin(RoomprofilePeer::ROOM_ID, RoomPeer::ID);
         $c->add(RoomPeer::ID, $room->getId(), Criteria::EQUAL);
         $c->addAnd(ReservationPeer::DATE, $begin_date_str, Criteria::GREATER_EQUAL);
         $c->addAnd(ReservationPeer::DATE, $end_date_str, Criteria::LESS_THAN);
         // We only keep finished reservation ?
         //$c->addAnd(ReservationPeer::STATUS, Reservation::BLOCKED, Criteria::EQUAL);
         if (!empty($activities)) {
             $c->addAnd(ReservationPeer::ACTIVITY_ID, $activities, Criteria::IN);
         }
         $c->clearSelectColumns();
         $c->addSelectColumn('SUM(' . ReservationPeer::DURATION . ')');
         $c->setLimit(1);
         //print ('SQL Command: '.$c->toString().'<br>');
         $stmt = ReservationPeer::doSelectStmt($c);
         if ($row = $stmt->fetch(PDO::FETCH_NUM)) {
             $occupancy_time = $row[0];
         }
         //print('Ocupancy time: '.$occupancy_time.'<br>');
         $total_time = 0;
         // Total time => Total number of opening hours in minutes during the begin and end date
         for ($date = $begin_date; $date < $end_date; $date = strtotime('+1 day', $date)) {
             $total_time += $room->getOpeningDuration(date('N', $date) - 1);
         }
         //print('Total door opening duration: '.$total_time.'<br>');
         if ($total_time <= 0) {
             continue;
         }
         // Results
         $report[$room->getId()] = array('room' => $room, 'occupancy_time' => $occupancy_time, 'total_time' => $total_time, 'ratio' => $total_time > 0 ? $occupancy_time / $total_time : null);
     }
     /*print('Final report:'.'<br>');
     		print_r ($report);
     		print('<br>');*/
     return $report;
 }
Exemplo n.º 5
0
 public static function report($users, $usergroups, $activities, $zones, $rooms, $begin_date, $end_date, $c = null)
 {
     if (is_null($c)) {
         $c = new Criteria();
     }
     $begin_date = date('Y-m-d', $begin_date);
     $end_date = date('Y-m-d', $end_date);
     $c->addAnd(ReservationPeer::DATE, $begin_date, Criteria::GREATER_EQUAL);
     $c->addAnd(ReservationPeer::DATE, $end_date, Criteria::LESS_THAN);
     if (!empty($users)) {
         $c->addAnd(ReservationPeer::USER_ID, $users, Criteria::IN);
     }
     if (!empty($usergroups)) {
         //print ('Before usergroup'.$c->toString());
         //$c->addJoin(ReservationPeer::USER_ID, UsergroupHasUserPeer::USER_ID, Criteria::LEFT_JOIN);
         //$c->addJoin(ReservationPeer::USER_ID, UsergroupHasChiefPeer::USER_ID, Criteria::LEFT_JOIN);
         //$critUser = $c->getNewCriterion(UsergroupHasUserPeer::USERGROUP_ID, $usergroups, Criteria::IN);
         //$critChief = $c->getNewCriterion(UsergroupHasChiefPeer::USERGROUP_ID, $usergroups, Criteria::IN);
         //$critChief->addOr($critUser);
         //$c->addAnd($critChief);
         $c->addAnd(ReservationPeer::USERGROUP_ID, $usergroups, Criteria::IN);
         //print ('After usergroup'.$c->toString());
     }
     if (!empty($activities)) {
         $c->addAnd(ReservationPeer::ACTIVITY_ID, $activities, Criteria::IN);
     }
     if (is_null($rooms)) {
         $rooms = array();
     }
     if (!empty($zones)) {
         // Retrieving all rooms from the zone and adding to the rooms array
         foreach ($zones as $zone) {
             //print ('   Current zone: '.$zone.'<br>');
             $zp = ZonePeer::retrieveByPk($zone);
             if (!is_null($zp)) {
                 $rms = $zp->getRooms();
                 if (!is_null($rms) && is_array($rms)) {
                     foreach ($rms as $r) {
                         //print ('      Room ID: '.$r->getId().'<br>');
                         $rooms[] = $r->getId();
                     }
                 }
             }
         }
     }
     //print_r ($rooms);
     if (!empty($rooms) && is_array($rooms) && count($rooms) > 0) {
         // Retrieve room profile ID from all rooms
         $roomsProfiles = array();
         foreach ($rooms as $room) {
             //print ('   Current room: '.$room.'<br>');
             $rpp = RoomprofilePeer::doSelectFromRoom($room);
             if (!is_null($rpp) && is_array($rpp)) {
                 foreach ($rpp as $prof) {
                     //print ('      Room profile: '.$prof->getId().'<br>');
                     $roomsProfiles[] = $prof->getId();
                 }
             }
         }
         //print_r ($roomsProfiles);
         if (!empty($roomsProfiles) && is_array($roomsProfiles) && count($roomsProfiles) > 0) {
             $c->addAnd(ReservationPeer::ROOMPROFILE_ID, $roomsProfiles, Criteria::IN);
         }
     }
     // These joins are needed for sorting purposes
     $c->addJoin(ReservationPeer::USER_ID, UserPeer::ID);
     $c->addJoin(ReservationPeer::ACTIVITY_ID, ActivityPeer::ID);
     $c->addJoin(ReservationPeer::RESERVATIONREASON_ID, ReservationreasonPeer::ID, Criteria::LEFT_JOIN);
     $c->addJoin(ReservationPeer::ROOMPROFILE_ID, RoomprofilePeer::ID);
     $c->addJoin(RoomprofilePeer::ROOM_ID, RoomPeer::ID);
     $c->addJoin(ReservationPeer::USERGROUP_ID, UsergroupPeer::ID, Criteria::LEFT_JOIN);
     $c->addGroupByColumn(ReservationPeer::ID);
     //print ($c->toString().'<br>');
     return self::doSelect($c);
 }