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'); }
public function isParentOf($zoneId) { $zone = ZonePeer::retrieveByPk($zoneId); if (!is_null($zone)) { return $zone->isChildOfObject($this); } return false; }
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); } }
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; }
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); }