ContractController.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\StoreContractRequest;
  4. use App\Models\Contract;
  5. use Illuminate\Http\Request;
  6. class ContractController extends Controller
  7. {
  8. protected array $data = [
  9. 'active' => 'contracts',
  10. 'title' => 'Договоры',
  11. 'id' => 'contracts',
  12. 'header' => [
  13. 'id' => 'ID',
  14. 'contract_number' => 'Номер договора',
  15. 'contract_date' => 'Дата договора',
  16. 'year' => 'Год',
  17. ],
  18. 'searchFields' => [
  19. 'contract_number',
  20. ],
  21. ];
  22. public function index(Request $request)
  23. {
  24. session(['gp_contracts' => $request->query()]);
  25. $model = new Contract();
  26. // fill filters
  27. $this->createFilters($model, 'year');
  28. $this->data['ranges'] = [];
  29. $this->createDateFilters($model, 'contract_date');
  30. $q = $model::query();
  31. $this->acceptSearch($q, $request);
  32. $this->acceptFilters($q, $request);
  33. $this->setSortAndOrderBy($model, $request);
  34. $q->orderBy($this->data['sortBy'], $this->data['orderBy']);
  35. $this->data['contracts'] = $q->paginate(session('per_page', config('pagination.per_page')))->withQueryString();
  36. return view('contracts.index', $this->data);
  37. }
  38. public function show(Contract $contract)
  39. {
  40. $this->data['contract'] = $contract;
  41. return view('contracts.edit', $this->data);
  42. }
  43. public function create()
  44. {
  45. $this->data['contract'] = null;
  46. return view('contracts.edit', $this->data);
  47. }
  48. public function store(StoreContractRequest $request)
  49. {
  50. Contract::query()->create($request->validated());
  51. return redirect()->route('contract.index');
  52. }
  53. public function update(StoreContractRequest $request, Contract $contract)
  54. {
  55. $contract->update($request->validated());
  56. return redirect()->route('contract.index');
  57. }
  58. public function delete(Contract $contract)
  59. {
  60. $contract->delete();
  61. return redirect()->route('contract.index');
  62. }
  63. }