public function testCanDeleteSchedule()
 {
     $id = 123;
     $schedule = new Schedule($id, null, false, null, null);
     $deleteScheduleCommand = new DeleteScheduleCommand($id);
     $this->scheduleRepository->Delete($schedule);
     $actualDeleteCommand = $this->db->_LastCommand;
     $this->assertEquals($deleteScheduleCommand, $actualDeleteCommand);
 }
 public function Add(Schedule $schedule, $copyLayoutFromScheduleId)
 {
     $user = $this->repo->LoadById($this->user->UserId);
     if (!$user->IsInRole(RoleLevel::SCHEDULE_ADMIN)) {
         throw new Exception(sprintf('Schedule Add Failed. User %s does not have admin access.', $this->user->UserId));
     }
     foreach ($user->Groups() as $group) {
         if ($group->IsScheduleAdmin) {
             $schedule->SetAdminGroupId($group->GroupId);
             break;
         }
     }
     parent::Add($schedule, $copyLayoutFromScheduleId);
 }
 /**
  * Test find schedule by ad id event ad expired
  */
 public function testFindScheduleByAdIdEventAdExpired()
 {
     $schedule = new Schedule();
     $schedule->setName('testEvent');
     $schedule->setEnabled(true);
     $schedule->setStartTime(new \DateTime());
     $schedule->setStartTimeExpired(false);
     $schedule->setStatus('unexpired');
     $schedule->setType('event');
     $schedule->setEvent('ad.expired');
     $schedule->setParameters(['id' => 'test']);
     $this->dm->persist($schedule);
     $this->dm->flush();
     $result = $this->repository->getSchedulesByAdId('test')->getSingleResult();
     $this->assertCount(1, $result->getParameters());
     $this->assertContains('test', $result->getParameters());
 }
Exemple #4
0
 private function MigrateSchedules(Database $legacyDatabase, Database $currentDatabase)
 {
     $schedulesMigrated = MigrationSession::GetLastScheduleRow();
     Log::Debug('Start migrating schedules. Starting at row %s', $schedulesMigrated);
     $scheduleRepo = new ScheduleRepository();
     $getLegacySchedules = new AdHocCommand("select scheduleid, scheduletitle, daystart, dayend, timespan,\n                timeformat, weekdaystart, viewdays, usepermissions, ishidden, showsummary, adminemail, isdefault\n                from schedules order by scheduleid limit {$schedulesMigrated}, 500");
     $getExistingSchedules = new AdHocCommand('select legacyid from schedules');
     $reader = $currentDatabase->Query($getExistingSchedules);
     $knownIds = array();
     while ($row = $reader->GetRow()) {
         $knownIds[] = $row['legacyid'];
     }
     $reader = $legacyDatabase->Query($getLegacySchedules);
     while ($row = $reader->GetRow()) {
         $legacyScheduleId = $row['scheduleid'];
         if (in_array($legacyScheduleId, $knownIds)) {
             continue;
         }
         $newId = $scheduleRepo->Add(new Schedule(null, $row['scheduletitle'], false, $row['weekdaystart'], $row['viewdays']), 1);
         $currentDatabase->Execute(new AdHocCommand("update schedules set legacyid = \"{$row['scheduleid']}\" where schedule_id = {$newId}"));
         $timezone = Configuration::Instance()->GetDefaultTimezone();
         $available = $this->CreateAvailableTimeSlots($row['daystart'], $row['dayend'], $row['timespan']);
         $unavailable = $this->CreateUnavailableTimeSlots($row['daystart'], $row['dayend'], $row['timespan']);
         $layout = ScheduleLayout::Parse($timezone, $available, $unavailable);
         $scheduleRepo->AddScheduleLayout($newId, $layout);
         $schedulesMigrated++;
         MigrationSession::SetLastScheduleRow($schedulesMigrated);
     }
     Log::Debug('Done migrating schedules (%s schedules)', $schedulesMigrated);
     $getLegacyCount = new AdHocCommand('select count(*) as count from schedules');
     $getMigratedCount = new AdHocCommand('select count(*) as count from schedules where legacyid is not null');
     $progressCounts = $this->GetProgressCounts($getLegacyCount, $getMigratedCount);
     $this->page->SetProgress($progressCounts);
     $this->page->SetSchedulesMigrated($progressCounts->MigratedCount);
     MigrationSession::SetLastScheduleRow($progressCounts->MigratedCount);
 }
 public function GetList($pageNumber, $pageSize, $sortField = null, $sortDirection = null, $filter = null)
 {
     $user = $this->repo->LoadById($this->user->UserId);
     if (!$user->IsInRole(RoleLevel::SCHEDULE_ADMIN)) {
         return new PageableData();
     }
     $ids = array();
     $filter = new SqlFilterNull();
     foreach ($user->Groups() as $group) {
         if ($group->IsScheduleAdmin) {
             $ids[] = $group->GroupId;
         }
     }
     $filter->_And(new SqlFilterIn(new SqlFilterColumn(TableNames::SCHEDULES_ALIAS, ColumnNames::RESOURCE_ADMIN_GROUP_ID), $ids));
     return parent::GetList($pageNumber, $pageSize, $sortField, $sortDirection, $filter);
 }
Exemple #6
0
    $resource = BookableResource::CreateNew("load{$i}", 1);
    $resourceId = $resourceRepo->Add($resource);
    $resources[] = $resource;
}
echo "Loaded {$numberOfResources} resources<br/>";
// ACCESSORIES
$db->Execute(new AdHocCommand("delete from accessories where accessory_name like 'load%'"));
$accessoryRepo = new AccessoryRepository();
for ($i = 0; $i < $numberOfAccessories; $i++) {
    $accessory = new Accessory(0, "Load {$i}", 10);
    $id = $accessoryRepo->Add($accessory);
}
echo "Loaded {$numberOfAccessories} accessories<br/>";
// RESERVATIONS
$db->Execute(new AdHocCommand("delete from reservation_series where title like 'load%'"));
$scheduleRepo = new ScheduleRepository();
$layout = $scheduleRepo->GetLayout(1, new ScheduleLayoutFactory('America/Chicago'));
$reservationRepo = new ReservationRepository();
$bookedBy = new UserSession(1);
$bookedBy->Timezone = 'America/Chicago';
$currentDate = Date::Now();
$i = 0;
while ($i < $numberOfReservations) {
    $periods = $layout->GetLayout($currentDate);
    foreach ($periods as $period) {
        $howManyResources = rand(1, count($resources));
        $startResource = rand(0, $howManyResources);
        if ($period->IsReservable()) {
            for ($resourceNum = $startResource; $resourceNum < $howManyResources; $resourceNum++) {
                $userId = getRandomUserId($users)->Id();
                $resource = $resources[$resourceNum];