From c964f7df4b65a25b1804e59348fbc49fca0291c2 Mon Sep 17 00:00:00 2001 From: dakriy Date: Tue, 28 Jul 2020 01:40:03 -0700 Subject: [PATCH 1/2] Order doors by location - Cache requests query as it is used several times - Add more help example text for creating an access request --- src/backend/helpers.php | 11 ++-- .../views/admin/entities/schedule.blade.php | 3 + .../resources/views/layouts/admin.blade.php | 14 ++++- src/backend/resources/views/request.blade.php | 61 ++++++++++--------- .../Doors/DatabaseDoorsRepository.php | 2 +- .../GetRequests/GetRequestsCached.php | 43 +++++++++++++ .../GetRequestsUseCaseServiceProvider.php | 8 ++- 7 files changed, 102 insertions(+), 40 deletions(-) create mode 100644 src/backend/src/UseCases/Requests/GetRequests/GetRequestsCached.php diff --git a/src/backend/helpers.php b/src/backend/helpers.php index 6dba4488..117a29b8 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 c241175a..19d173d4 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 2e3ae11a..8de45c8a 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 d86f468c..1d9b4864 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 00000000..dcd73397 --- /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 baa96460..42c7bb73 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]; } } -- GitLab From c72e4246cc67df49f407375b7fd7484f24f7b012 Mon Sep 17 00:00:00 2001 From: dakriy Date: Tue, 28 Jul 2020 01:41:24 -0700 Subject: [PATCH 2/2] fix code styles --- .../Requests/GetRequests/GetRequestsUseCaseServiceProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/src/UseCases/Requests/GetRequests/GetRequestsUseCaseServiceProvider.php b/src/backend/src/UseCases/Requests/GetRequests/GetRequestsUseCaseServiceProvider.php index 42c7bb73..300b71e1 100644 --- a/src/backend/src/UseCases/Requests/GetRequests/GetRequestsUseCaseServiceProvider.php +++ b/src/backend/src/UseCases/Requests/GetRequests/GetRequestsUseCaseServiceProvider.php @@ -26,7 +26,7 @@ class GetRequestsUseCaseServiceProvider extends ServiceProvider implements Defer $this->app->singleton( GetRequestsCached::class, - fn(Application $app) => new GetRequestsCached($app->make(RequestsRepository::class)) + fn (Application $app) => new GetRequestsCached($app->make(RequestsRepository::class)) ); } -- GitLab