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\Http\Controllers\Controller; use App\Models\WaitingSettlementOrder; use App\Notifications\SettlementAcceptedNotification; use App\Traits\Report; use App\Traits\Uploadable; use App\Jobs\AdminAcceptSettlement; class SettlementController extends Controller { public function index($id = null) { $type = request()->segment(3); $settlements = Settlement::where('amount', '>', 0)->where('status', $type)->get(); return view('admin.settlements.index', compact('settlements')); } public function show($id) { $settlement = Settlement::findOrFail( $id ); $settlement_orders = $settlement->settlementOrders()->where( [ 'settlement_id' => $settlement->id ] )->first(); $ids = $settlement_orders->pluck( 'order_id' )->toArray(); $needs_settlement_orders = WaitingSettlementOrder::whereIn( 'id', $ids )->where( [ 'userable_id' => $settlement->transactionable_id, 'status' => 0, ] )->get(); $types = [ 'pending', 'accepted', 'rejected' ]; return view( 'admin.settlements.show', compact( 'settlement', 'types', 'settlement_orders', 'needs_settlement_orders' ) ); } public function settlementChangeStatus(Store $request) { $data = $request->validated(); $settlement = Settlement::findOrFail( $data[ 'id' ] ); if ( $data[ 'status' ] == 'accepted' ) { $settlement->update( [ 'status' => $data[ 'status' ], 'image' => $data[ 'image' ], 'amount' => $data[ 'amount' ] ] ); $settlementOrder = $settlement->transactionable()->first(); foreach ( $settlementOrder->waitingSettlementOrders as $waiting_order ) { $waiting_order->update( [ 'status' => 1, ] ); } /* Add Your Transactions Service here */ $settlement->transactionable()->increment( 'wallet', $data[ 'amount' ] ); /* Add Your Transactions Service here */ // $settlement->transactionable->notify(new SettlementAcceptedNotification($settlement)); dispatch( new AdminAcceptSettlement( $settlementOrder ) ); /* Add Your Notification here */ } else { $data = $request->validate( [ 'status' => 'required|string|max:255', 'reason' => 'required|string|max:255', ] ); $settlement->update( [ 'status' => $data[ 'status' ], 'notes' => $data[ 'reason' ] ] ); // $settlement->transactionable->notify(new SettlementCanceledNotification($settlement)); /* Add Your Notification here */ } Report::addToLog( ' بتغير حاله طلب التسوية' ); return back(); } }
Back to File Manager