MafOrderController.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\StoreMafOrderRequest;
  4. use App\Models\MafOrder;
  5. use App\Models\MafOrdersView;
  6. use Illuminate\Http\Request;
  7. class MafOrderController extends Controller
  8. {
  9. protected array $data = [
  10. 'active' => 'maf_order',
  11. 'title' => 'Заказы МАФ',
  12. 'id' => 'maf_order',
  13. 'header' => [
  14. 'product-image' => 'Картинка',
  15. 'id' => 'ID',
  16. 'order_number' => '№ заказа',
  17. 'status' => 'Статус',
  18. 'user_name' => 'Менеджер',
  19. 'article' => 'Артикул',
  20. 'nomenclature_number' => 'Номер номенклатуры',
  21. 'quantity' => 'Заказано',
  22. 'in_stock' => 'Остаток',
  23. 'created_at' => 'Дата создания',
  24. ],
  25. 'searchFields' => [
  26. 'order_number',
  27. 'nomenclature_number',
  28. 'article',
  29. ],
  30. ];
  31. public function index(Request $request)
  32. {
  33. $model = new MafOrdersView;
  34. session(['gp_maf_order' => $request->all()]);
  35. $this->createDateFilters($model, 'created_at');
  36. $this->createFilters($model, 'user_name');
  37. $this->createRangeFilters($model, 'in_stock');
  38. $q = $model::query();
  39. $this->acceptFilters($q, $request);
  40. $this->acceptSearch($q, $request);
  41. $this->setSortAndOrderBy($model, $request);
  42. $q->orderBy($this->data['sortBy'], $this->data['orderBy']);
  43. $this->data['maf_orders'] = $q->paginate(session('per_page', config('pagination.per_page')))->withQueryString();
  44. return view('maf_orders.index', $this->data);
  45. }
  46. public function store(StoreMafOrderRequest $request)
  47. {
  48. MafOrder::query()->create($request->validated() + ['user_id' => $request->user()->id, 'in_stock' => 0]);
  49. return redirect()->route('maf_order.index', session('gp_maf_order'));
  50. }
  51. public function show(Request $request, MafOrder $maf_order)
  52. {
  53. $this->data['maf_order'] = $maf_order;
  54. $this->data['previous_url'] = $request->get('previous_url');
  55. return view('maf_orders.edit', $this->data);
  56. }
  57. public function update(StoreMafOrderRequest $request, MafOrder $maf_order)
  58. {
  59. MafOrder::query()->where('id', $maf_order->id)->update($request->validated());
  60. return redirect()->route('maf_order.index', session('gp_maf_order'));
  61. }
  62. public function destroy(MafOrder $maf_order)
  63. {
  64. $maf_order->delete();
  65. return redirect()->route('maf_order.index', session('gp_maf_order'));
  66. }
  67. public function setInStock(MafOrder $maf_order)
  68. {
  69. $maf_order->update(['in_stock' => $maf_order->quantity, 'status' => 'на складе']);
  70. return redirect()->route('maf_order.show', $maf_order);
  71. }
  72. }