]> _ Git - psq.git/commitdiff
filter by orga
authorLouis Jeckel <louis.jeckel@outlook.cm>
Thu, 17 Sep 2020 14:26:43 +0000 (16:26 +0200)
committerLouis Jeckel <louis.jeckel@outlook.cm>
Thu, 17 Sep 2020 14:26:43 +0000 (16:26 +0200)
app/Nova/Filters/FilterByOrganization.php [new file with mode: 0644]
app/Nova/User.php

diff --git a/app/Nova/Filters/FilterByOrganization.php b/app/Nova/Filters/FilterByOrganization.php
new file mode 100644 (file)
index 0000000..a79b785
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+
+namespace App\Nova\Filters;
+
+use App\Organization;
+use Illuminate\Http\Request;
+use Laravel\Nova\Filters\Filter;
+
+class FilterByOrganization extends Filter
+{
+    /**
+     * The filter's component.
+     *
+     * @var string
+     */
+    public $component = 'select-filter';
+
+    /**
+     * Apply the filter to the given query.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Illuminate\Database\Eloquent\Builder  $query
+     * @param  mixed  $value
+     * @return \Illuminate\Database\Eloquent\Builder
+     */
+    public function apply(Request $request, $query, $value)
+    {
+        return $query->where('organization_id', $value);
+    }
+
+    /**
+     * Get the filter's available options.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array
+     */
+    public function options(Request $request)
+    {
+        return Organization::query()
+            ->whereHas('members')
+            ->orderBy('name')
+            ->pluck('id', 'name')
+            ->toArray();
+    }
+}
index 61e771561ebce302fe8c82a8c1e8affaedfa785f..fc7c93462f93e4f1e0056bf3c303c45b0c5c11d7 100644 (file)
@@ -7,6 +7,7 @@ use App\Nova\Actions\SendNotification;
 use App\Nova\Actions\StartTrial;
 use App\Nova\Actions\ValidateAddress;
 use App\Nova\Actions\VerifyEmail;
+use App\Nova\Filters\FilterByOrganization;
 use App\Nova\Lenses\FailedMailgun;
 use App\Nova\Lenses\MailgunStatus;
 use App\Nova\Lenses\NonDeliverableAddresses;
@@ -146,7 +147,9 @@ class User extends Resource
      */
     public function filters(Request $request)
     {
-        return [];
+        return [
+            new FilterByOrganization
+        ];
     }
 
     /**