FilterController.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. 'import' => 'imports',
  15. ];
  16. public function getFilters(FilterRequest $request)
  17. {
  18. $table = $request->validated('table');
  19. $column = $request->validated('column');
  20. if(!array_key_exists($table, self::DB_TABLES)) {
  21. abort(400, 'Table not found');
  22. }
  23. $dbTable = self::DB_TABLES[$table];
  24. if (Schema::hasColumn($dbTable, $column)) {
  25. $q = DB::table($dbTable)->select($column)->distinct();
  26. if(!in_array($table, ['reclamations', 'import'])) {
  27. $q->where('year' , year());
  28. }
  29. if (Schema::hasColumn($dbTable, 'deleted_at')) {
  30. $q->whereNull('deleted_at');
  31. }
  32. $result = $q->orderBy($column)->get()->pluck($column)->toArray();
  33. } else {
  34. $result = [];
  35. }
  36. return response()->json($result, 200, [], JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
  37. }
  38. }