Alexander Musikhin 1 mês atrás
pai
commit
86fc35c4ee

+ 36 - 0
app/Http/Controllers/FilterController.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Http\Requests\FilterRequest;
+use Illuminate\Support\Facades\DB;
+
+class FilterController extends Controller
+{
+    const DB_TABLES = [
+        'orders'        => 'orders_view',
+        'product_sku'   => 'mafs_view',
+        'products'      => 'products',
+        'reclamations'  => 'reclamations',
+        'maf_order'     => 'maf_orders_view',
+    ];
+    public function getFilters(FilterRequest $request)
+    {
+        $table = $request->validated('table');
+        $column = $request->validated('column');
+        if(!array_key_exists($table, self::DB_TABLES)) {
+            abort(400, 'Table not found');
+        }
+
+        $dbTable = self::DB_TABLES[$table];
+
+        $q = DB::table($dbTable)->select($column)->distinct();
+        if($table !== 'reclamations') {
+            $q->where('year' , year());
+        }
+
+        $result = $q->orderBy($column)->get()->pluck($column)->toArray();
+
+        return response()->json($result, 200, [], JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
+    }
+}

+ 5 - 0
app/Http/Controllers/OrderController.php

@@ -55,8 +55,13 @@ class OrderController extends Controller
         ],
         'searchFields' => [
             'name',
+            'user_name',
+            'district_name',
+            'area_name',
+            'object_type_name',
             'comment',
             'object_address',
+            'installation_date',
             'tg_group_name',
             'tg_group_link',
         ],

+ 29 - 0
app/Http/Requests/FilterRequest.php

@@ -0,0 +1,29 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class FilterRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     */
+    public function authorize(): bool
+    {
+        return auth()->check();
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
+     */
+    public function rules(): array
+    {
+        return [
+            'table' => 'string|required',
+            'column' => 'string|required',
+        ];
+    }
+}

+ 3 - 0
routes/web.php

@@ -2,6 +2,7 @@
 
 use App\Http\Controllers\AreaController;
 use App\Http\Controllers\ContractController;
+use App\Http\Controllers\FilterController;
 use App\Http\Controllers\MafOrderController;
 use App\Http\Controllers\OrderController;
 use App\Http\Controllers\ProductController;
@@ -65,6 +66,8 @@ Route::middleware('auth:web')->group(function () {
     Route::post('profile/store', [UserController::class, 'storeProfile'])->name('profile.store');
     Route::delete('profile', [UserController::class, 'deleteProfile'])->name('profile.delete');
 
+    Route::get('get-filters', [FilterController::class, 'getFilters'])->name('getFilters');
+
     Route::middleware('role:admin,manager')->group(function () {
         // catalog
         Route::get('catalog', [ProductController::class, 'index'])->name('catalog.index');