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()); }
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); }
$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];