Edit File: SettlementController.php
<?php namespace App\Http\Controllers\Admin; use App\Http\Requests\Admin\Settlement\Store; use App\Models\Settlement; use App\Models\SettlementOrder; use App\Models\User; use App\Jobs\SettlementChangeStatusNotify; use App\Http\Controllers\Controller; use App\Models\WaitingSettlementOrder; use App\Traits\Report; use App\Traits\Uploadable; class SettlementController extends Controller { public function index($id = null) { $type = request()->segment(3); $settlements = Settlement::where('total_price', '>', 0)->where('status', $type)->get(); return view('admin.settlements.index', compact('settlements')); } public function show($id) { $settlement = Settlement::findOrFail($id); $settlementOrder = SettlementOrder::where('settlement_id', $id)->get(); $types = ['pending', 'accepted', 'refused']; return view('admin.settlements.show', compact('settlement', 'types', 'settlementOrder')); } public function settlementChangeStatus(Store $request) { $data = $request->validated(); $settlement = Settlement::findOrFail($data['id']); $settlementOrder = SettlementOrder::where('settlement_id', $data['id'])->pluck('order_id')->toArray(); $settlementOrderWaiting = WaitingSettlementOrder::whereIn('order_id', $settlementOrder)->get(); if ($data['status'] == 'accepted') { foreach ($settlementOrderWaiting as $waiting_order) { $waiting_order->update([ 'status' => 'accepted', ]); } $settlement->update([ 'status' => $data['status'], 'image' => $data['image'] ] ); $provider = User::where('id', $settlement->provider_id)->first(); $provider->wallet -= $settlement->total_due; $provider->save(); dispatch(new SettlementChangeStatusNotify('accepted' , $provider)); return back()->with('success','تم القبول بنجاح'); } else { foreach ($settlementOrderWaiting as $waiting_order) { $waiting_order->update([ 'status' => 'pending', ]); } $data = $request->validate([ 'status' => 'required|string|max:255', 'refuse_reason' => 'required|string|max:255', ]); $settlement->update( ['status' => $data['status'], 'refuse_reason' => $data['refuse_reason']] ); $provider = User::where('id', $settlement->provider_id)->first(); dispatch(new SettlementChangeStatusNotify('refused' , $provider)); } Report::addToLog(' بتغير حاله طلب التسوية'); return back(); } }
Back to File Manager