diff --git a/src/backend/helpers.php b/src/backend/helpers.php index 6dba4488e98fa917896d2a629264fd4ec7a4d753..117a29b8e9b19d09d93320d89e4e89f9cf407f04 100644 --- a/src/backend/helpers.php +++ b/src/backend/helpers.php @@ -1,13 +1,14 @@ get($id, $presenter); } catch (EntityNotFoundException $e) { - return null; + return []; } return $presenter->getViewModel()['door']; @@ -71,7 +72,7 @@ if (! function_exists('unread_access_requests')) { $presenter = new MessageHotbarPresenter(); /** @var GetRequestsUseCase $useCase */ - $useCase = app(GetRequestsUseCase::class); + $useCase = app(GetRequestsCached::class); $useCase->filter([ 'resolved' => false, diff --git a/src/backend/resources/views/admin/entities/schedule.blade.php b/src/backend/resources/views/admin/entities/schedule.blade.php index c241175a3b8e6199213e5390c51178377c61fa59..19d173d4eb825726bd608ac7ae7d84f0e386aaba 100644 --- a/src/backend/resources/views/admin/entities/schedule.blade.php +++ b/src/backend/resources/views/admin/entities/schedule.blade.php @@ -53,6 +53,9 @@ Each line defines a property: RRULE, EXRULE, RDATE, EXDATE and DTSTART (there can be only one DTSTART). It is the iCal specification for recurring events

+ Example Every Day
+ RRULE:FREQ=DAILY
+
Example (Schedules every day at 8AM except Saturday starting June 29, 2020):
DTSTART;TZID=America/Los_Angeles:20200629T080000
RRULE:FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR;INTERVAL=1
diff --git a/src/backend/resources/views/layouts/admin.blade.php b/src/backend/resources/views/layouts/admin.blade.php index 2e3ae11a560f87037495370d932749b0fa261857..8de45c8aaa63d2edea9a38c23caf848b092a29c5 100644 --- a/src/backend/resources/views/layouts/admin.blade.php +++ b/src/backend/resources/views/layouts/admin.blade.php @@ -78,8 +78,14 @@ @endcan @@ -184,7 +190,9 @@ @endsection diff --git a/src/backend/src/Gateways/Doors/DatabaseDoorsRepository.php b/src/backend/src/Gateways/Doors/DatabaseDoorsRepository.php index d86f468c729c1038a3c3563c385f6c06b4bbb71b..1d9b48648cb583b930a2bb4b3d58bc985794c6b8 100644 --- a/src/backend/src/Gateways/Doors/DatabaseDoorsRepository.php +++ b/src/backend/src/Gateways/Doors/DatabaseDoorsRepository.php @@ -125,7 +125,7 @@ class DatabaseDoorsRepository implements DoorsRepository */ public function search(?string $query = null, ?int $seenSinceSeconds = null, ?int $awolForSeconds = null): array { - $doors = \App\Door::query()->orderByDesc('created_at'); + $doors = \App\Door::query()->orderBy('location'); if ($seenSinceSeconds > 0) { $doors->whereNotNull('last_seen_at') diff --git a/src/backend/src/UseCases/Requests/GetRequests/GetRequestsCached.php b/src/backend/src/UseCases/Requests/GetRequests/GetRequestsCached.php new file mode 100644 index 0000000000000000000000000000000000000000..dcd73397f4c3a58fb4785ea1693b3d9c377118b9 --- /dev/null +++ b/src/backend/src/UseCases/Requests/GetRequests/GetRequestsCached.php @@ -0,0 +1,43 @@ +requests = $requests; + } + + /** + * @inheritDoc + */ + public function filter(array $filters, Presenter $presenter): void + { + if ($this->cache === null) { + $this->cache = $this->requests->filter( + $filters['query'] ?? null, + $filters['user_id'] ?? null, + $filters['resolved'] ?? null, + $filters['replied'] ?? null + ); + } + + $response = new ResponseModel(); + + foreach ($this->cache as $request) { + $response->addRequest($request); + } + + $presenter->present($response); + } +} diff --git a/src/backend/src/UseCases/Requests/GetRequests/GetRequestsUseCaseServiceProvider.php b/src/backend/src/UseCases/Requests/GetRequests/GetRequestsUseCaseServiceProvider.php index baa96460dc90ea7f9346f45f3f3b0688105afc5c..300b71e12cf0f18e2dcc6fffc09150b318a35527 100644 --- a/src/backend/src/UseCases/Requests/GetRequests/GetRequestsUseCaseServiceProvider.php +++ b/src/backend/src/UseCases/Requests/GetRequests/GetRequestsUseCaseServiceProvider.php @@ -5,6 +5,7 @@ namespace Source\UseCases\Requests\GetRequests; use Illuminate\Support\ServiceProvider; use Illuminate\Contracts\Foundation\Application; +use Source\Gateways\Requests\RequestsRepository; use Illuminate\Contracts\Support\DeferrableProvider; /** @@ -22,6 +23,11 @@ class GetRequestsUseCaseServiceProvider extends ServiceProvider implements Defer $this->app->bind(GetRequestsUseCase::class, static function (Application $app) { return $app->make(GetRequests::class); }); + + $this->app->singleton( + GetRequestsCached::class, + fn (Application $app) => new GetRequestsCached($app->make(RequestsRepository::class)) + ); } /** @@ -29,6 +35,6 @@ class GetRequestsUseCaseServiceProvider extends ServiceProvider implements Defer */ public function provides(): array { - return [GetRequestsUseCase::class]; + return [GetRequestsUseCase::class, GetRequestsCached::class]; } }