FilterController.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\FilterRequest;
  4. use Illuminate\Support\Facades\DB;
  5. use Illuminate\Support\Facades\Schema;
  6. class FilterController extends Controller
  7. {
  8. const DB_TABLES = [
  9. 'orders' => 'orders_view',
  10. 'product_sku' => 'mafs_view',
  11. 'products' => 'products',
  12. 'reclamations' => 'reclamations_view',
  13. 'maf_order' => 'maf_orders_view',
  14. ];
  15. public function getFilters(FilterRequest $request)
  16. {
  17. $table = $request->validated('table');
  18. $column = $request->validated('column');
  19. if(!array_key_exists($table, self::DB_TABLES)) {
  20. abort(400, 'Table not found');
  21. }
  22. $dbTable = self::DB_TABLES[$table];
  23. if (Schema::hasColumn($dbTable, $column)) {
  24. $q = DB::table($dbTable)->select($column)->distinct();
  25. if($table !== 'reclamations') {
  26. $q->where('year' , year());
  27. }
  28. $q->whereNull('deleted_at');
  29. $result = $q->orderBy($column)->get()->pluck($column)->toArray();
  30. } else {
  31. $result = [];
  32. }
  33. return response()->json($result, 200, [], JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
  34. }
  35. }