Edit File: SettlementController.php
<?php namespace App\Http\Controllers\Api; use App\Models\User; use App\Models\Settlement; use App\Traits\ResponseTrait; use App\Models\SettlementOrder; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Schema; use App\Http\Resources\SettlementsResource; use App\Http\Requests\SendRequest; use App\Http\Resources\SettlementOrdersResource; use App\Http\Resources\SettlementDetailsResource; class SettlementController extends Controller { use ResponseTrait; public function waitingSettlements() { $data['financials_info'] = auth()->user()->FinancialInfo(); $data['orders']=[]; $count=auth()->user()->waitingSettlementOrders() ->where('status', 0)->count(); if($count>0) { $data['orders'] =SettlementOrdersResource::collection(auth()->user()->waitingSettlementOrders() ->where('status', 0)->get()); } return $this->response('success', '', $data); } public function newSettlements() { $settlements = SettlementsResource::collection(auth()->user()->settlements() ->where('status', 'pending')->get()); return $this->response('success', '', $settlements); } public function finishedSettlements() { $settlements = SettlementsResource::collection(auth()->user()->settlements() ->whereIn('status', ['rejected', 'accepted'])->get()); return $this->response('success', '', $settlements); } public function settlementDetails($settlement_id) { $settlement = new SettlementDetailsResource(Settlement::findOrFail($settlement_id)); return $this->response('success', '', $settlement); } public function settlementRequest(SendRequest $request) { $data = $request->validated(); $user = auth()->user(); if (Settlement::where(['transactionable_id' => $user->id, 'transactionable_type' => get_class($user)])->where('status', 'pending')->exists()) { $msg = trans('site.exist_settlement'); return $this->failMsg($msg); } $waiting_orders = $user->waitingSettlementOrders()->where('status', 0)->count(); if ($waiting_orders <=0) { $msg = trans('site.notneed_settlement'); return $this->failMsg($msg); } $settlement = Settlement::create(['transactionable_id' => $user->id, 'transactionable_type' => get_class($user), 'status' => 'pending', 'amount' => $request['amount']]); $waiting_orders_ids = $user->waitingSettlementOrders()->where('status', 0)->pluck('id')->toArray(); foreach ($waiting_orders_ids as $id) { Schema::disableForeignKeyConstraints(); SettlementOrder::create([ 'settlement_id' => $settlement->id, 'order_id' => $id, ]); Schema::enableForeignKeyConstraints(); } $settlement->refresh(); return $this->response('success', __('order.'.$settlement->status), new SettlementsResource($settlement)); } }
Back to File Manager