예제 #1
0
 public function __construct(IRestServer $server, Schedule $schedule)
 {
     $this->daysVisible = $schedule->GetDaysVisible();
     $this->id = $schedule->GetId();
     $this->isDefault = $schedule->GetIsDefault();
     $this->name = $schedule->GetName();
     $this->timezone = $schedule->GetTimezone();
     $this->weekdayStart = $schedule->GetWeekdayStart();
     $this->AddService($server, WebServices::GetSchedule, array(WebServiceParams::ScheduleId => $schedule->GetId()));
 }
예제 #2
0
 public function testWhenHourlyLimitIsExceededInYear()
 {
     $duration = new QuotaDurationYear();
     $limit = new QuotaLimitHours(1.5);
     $startDate = Date::Parse('2011-04-03 0:30', $this->schedule->GetTimezone());
     $endDate = Date::Parse('2011-04-03 1:30', $this->schedule->GetTimezone());
     $series = $this->GetHourLongReservation($startDate, $endDate);
     $quota = new Quota(1, $duration, $limit, $series->ResourceId());
     $res1 = new ReservationItemView('ref1', $startDate->SetTimeString('00:00'), $endDate->SetTimeString('00:31'), '', $series->ResourceId(), 98712);
     $res1->ScheduleId = $series->ScheduleId();
     $reservations = array($res1);
     $this->SearchReturns($reservations);
     $exceeds = $quota->ExceedsQuota($series, $this->user, $this->schedule, $this->reservationViewRepository);
     $this->assertTrue($exceeds);
 }
예제 #3
0
 public function __construct(IRestServer $server, Schedule $schedule, IScheduleLayout $layout)
 {
     $this->daysVisible = $schedule->GetDaysVisible();
     $this->id = $schedule->GetId();
     $this->isDefault = $schedule->GetIsDefault();
     $this->name = $schedule->GetName();
     $this->timezone = $schedule->GetTimezone();
     $this->weekdayStart = $schedule->GetWeekdayStart();
     if ($schedule->GetIsCalendarSubscriptionAllowed()) {
         $url = new CalendarSubscriptionUrl(null, $schedule->GetPublicId(), null);
         $this->icsUrl = $url->__toString();
     }
     $layoutDate = Date::Now()->ToTimezone($server->GetSession()->Timezone);
     for ($day = 0; $day < 7; $day++) {
         $periods = $layout->GetLayout($layoutDate);
         foreach ($periods as $period) {
             $this->periods[$layoutDate->Weekday()][] = new SchedulePeriodResponse($period);
         }
         $layoutDate = $layoutDate->AddDays(1);
     }
 }
예제 #4
0
 public function GetDisplayTimezone(UserSession $user, Schedule $schedule)
 {
     return $schedule->GetTimezone();
 }
예제 #5
0
파일: Quota.php 프로젝트: utn-frm-si/booked
 /**
  * @param ReservationSeries $reservationSeries
  * @param User $user
  * @param Schedule $schedule
  * @param IReservationViewRepository $reservationViewRepository
  * @return bool
  */
 public function ExceedsQuota($reservationSeries, $user, $schedule, IReservationViewRepository $reservationViewRepository)
 {
     $timezone = $schedule->GetTimezone();
     if (!is_null($this->resourceId)) {
         $appliesToResource = false;
         foreach ($reservationSeries->AllResourceIds() as $resourceId) {
             if (!$appliesToResource && $this->AppliesToResource($resourceId)) {
                 $appliesToResource = true;
             }
         }
         if (!$appliesToResource) {
             return false;
         }
     }
     if (!is_null($this->groupId)) {
         $appliesToGroup = false;
         foreach ($user->Groups() as $group) {
             if (!$appliesToGroup && $this->AppliesToGroup($group->GroupId)) {
                 $appliesToGroup = true;
             }
         }
         if (!$appliesToGroup) {
             return false;
         }
     }
     if (!$this->AppliesToSchedule($reservationSeries->ScheduleId())) {
         return false;
     }
     if (count($reservationSeries->Instances()) == 0) {
         return false;
     }
     $dates = $this->duration->GetSearchDates($reservationSeries, $timezone);
     $reservationsWithinRange = $reservationViewRepository->GetReservationList($dates->Start(), $dates->End(), $reservationSeries->UserId(), ReservationUserLevel::OWNER);
     try {
         $this->CheckAll($reservationsWithinRange, $reservationSeries, $timezone);
     } catch (QuotaExceededException $ex) {
         return true;
     }
     return false;
 }
예제 #6
0
 /**
  * @param Schedule $schedule
  * @return IScheduleLayout
  */
 public function GetLayout($schedule)
 {
     return $this->scheduleRepository->GetLayout($schedule->GetId(), new ScheduleLayoutFactory($schedule->GetTimezone()));
 }