ResponsibleController.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\StoreResponsibleRequest;
  4. use App\Models\Dictionary\Area;
  5. use App\Models\Responsible;
  6. use Illuminate\Http\Request;
  7. class ResponsibleController extends Controller
  8. {
  9. protected array $data = [
  10. 'active' => 'responsibles',
  11. 'title' => 'Ответственные',
  12. 'id' => 'responsibles',
  13. 'header' => [
  14. 'id' => 'ID',
  15. 'area-name' => 'Район',
  16. 'name' => 'ФИО',
  17. 'phone' => 'Телефон',
  18. 'created_at' => 'Дата создания'
  19. ],
  20. 'searchFields' => [
  21. 'name',
  22. 'phone',
  23. ],
  24. 'ranges' => [],
  25. 'filters' => [],
  26. ];
  27. public function __construct()
  28. {
  29. $this->data['areas'] = Area::query()->get()->pluck('name', 'id');
  30. }
  31. public function index(Request $request)
  32. {
  33. $model = new Responsible;
  34. // $this->data['ranges'] = [];
  35. // $this->createFilters($model, 'area-name');
  36. $this->createDateFilters($model, 'created_at');
  37. $q = $model::query();
  38. $this->acceptFilters($q, $request);
  39. $this->acceptSearch($q, $request);
  40. $this->setSortAndOrderBy($model, $request);
  41. $q->orderBy($this->data['sortBy'], $this->data['orderBy']);
  42. $this->data['responsibles'] = $q->paginate()->withQueryString();
  43. return view('responsibles.index', $this->data);
  44. }
  45. public function store(StoreResponsibleRequest $request)
  46. {
  47. $responsible = Responsible::query()->create($request->validated());
  48. Area::query()->where('id', $request->validated('area_id'))->update(['areas.responsible_id' => $responsible->id]);
  49. return redirect()->route('responsible.index');
  50. }
  51. public function update(StoreResponsibleRequest $request, Responsible $responsible)
  52. {
  53. }
  54. public function destroy()
  55. {
  56. }
  57. }