| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <?php
- namespace App\Http\Controllers;
- use App\Http\Requests\StoreMafOrderRequest;
- use App\Models\MafOrder;
- use App\Models\MafOrdersView;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Validation\ValidationException;
- class MafOrderController extends Controller
- {
- protected array $data = [
- 'active' => 'maf_order',
- 'title' => 'Заказы МАФ',
- 'id' => 'maf_order',
- 'header' => [
- 'product-image' => 'Картинка',
- 'id' => 'ID',
- 'order_number' => '№ заказа',
- 'status' => 'Статус',
- 'user_name' => 'Менеджер',
- 'article' => 'Артикул',
- 'nomenclature_number' => 'Номер номенклатуры',
- 'quantity' => 'Заказано',
- 'in_stock' => 'Остаток',
- 'created_at' => 'Дата создания',
- ],
- 'searchFields' => [
- 'order_number',
- 'nomenclature_number',
- 'article',
- ],
- ];
- public function index(Request $request)
- {
- $model = new MafOrdersView;
- session(['gp_maf_order' => $request->all()]);
- $this->createDateFilters($model, 'created_at');
- $this->createFilters($model, 'user_name');
- $this->createRangeFilters($model, 'in_stock');
- $q = $model::query();
- $this->acceptFilters($q, $request);
- $this->acceptSearch($q, $request);
- $this->setSortAndOrderBy($model, $request);
- $this->applyStableSorting($q);
- $this->data['maf_orders'] = $q->paginate($this->data['per_page'])->withQueryString();
- $this->data['order_numbers'] = MafOrder::query()
- ->whereNotNull('order_number')
- ->where('order_number', '!=', '')
- ->orderBy('order_number')
- ->distinct()
- ->pluck('order_number');
- return view('maf_orders.index', $this->data);
- }
- public function store(StoreMafOrderRequest $request)
- {
- MafOrder::query()->create($request->validated() + ['user_id' => $request->user()->id, 'in_stock' => 0]);
- return redirect()->route('maf_order.index', session('gp_maf_order'));
- }
- public function show(Request $request, int $maf_order)
- {
- $this->data['maf_order'] = MafOrder::query()->withoutGlobalScope(\App\Models\Scopes\YearScope::class)->find($maf_order);
- $this->data['previous_url'] = $this->resolvePreviousUrl(
- $request,
- 'previous_url_maf_order',
- route('maf_order.index', session('gp_maf_order'))
- );
- return view('maf_orders.edit', $this->data);
- }
- public function update(StoreMafOrderRequest $request, MafOrder $maf_order)
- {
- MafOrder::query()->where('id', $maf_order->id)->update($request->validated());
- return redirect()->route('maf_order.index', session('gp_maf_order'));
- }
- public function destroy(MafOrder $maf_order)
- {
- $maf_order->delete();
- return redirect()->route('maf_order.index', session('gp_maf_order'));
- }
- public function setInStock(MafOrder $maf_order)
- {
- $maf_order->update(['in_stock' => $maf_order->quantity, 'status' => 'на складе']);
- return redirect()->route('maf_order.show', $maf_order);
- }
- public function setOrderInStock(Request $request)
- {
- $validated = $request->validate([
- 'bulk_order_number' => 'required|string',
- ]);
- $orderNumber = trim((string) $validated['bulk_order_number']);
- $query = MafOrder::query()->where('order_number', $orderNumber);
- if (!$query->exists()) {
- throw ValidationException::withMessages([
- 'bulk_order_number' => 'Заказ не найден в выбранном году.',
- ]);
- }
- $query->update([
- 'in_stock' => DB::raw('quantity'),
- 'status' => 'на складе',
- ]);
- return redirect()->route('maf_order.index', session('gp_maf_order'));
- }
- }
|