ContractController.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. $model = new Contract();
  25. // fill filters
  26. $this->createFilters($model, 'year');
  27. $this->data['ranges'] = [];
  28. $this->createDateFilters($model, 'contract_date');
  29. $q = $model::query();
  30. $this->acceptSearch($q, $request);
  31. $this->acceptFilters($q, $request);
  32. $this->setSortAndOrderBy($model, $request);
  33. $q->orderBy($this->data['sortBy'], $this->data['orderBy']);
  34. $this->data['contracts'] = $q->paginate(session('per_page', config('pagination.per_page')))->withQueryString();
  35. return view('contracts.index', $this->data);
  36. }
  37. public function show(Contract $contract)
  38. {
  39. $this->data['contract'] = $contract;
  40. return view('contracts.edit', $this->data);
  41. }
  42. public function create()
  43. {
  44. $this->data['contract'] = null;
  45. return view('contracts.edit', $this->data);
  46. }
  47. public function store(StoreContractRequest $request)
  48. {
  49. Contract::query()->create($request->validated());
  50. return redirect()->route('contract.index');
  51. }
  52. public function update(StoreContractRequest $request, Contract $contract)
  53. {
  54. $contract->update($request->validated());
  55. return redirect()->route('contract.index');
  56. }
  57. public function delete(Contract $contract)
  58. {
  59. $contract->delete();
  60. return redirect()->route('contract.index');
  61. }
  62. }