D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
forge
/
almahero.online
/
app
/
Http
/
Controllers
/
Instructor
/
Filename :
RefundController.php
back
Copy
<?php namespace App\Http\Controllers\Instructor; use App\Http\Controllers\Controller; use App\Http\Services\EmailSendService; use App\Models\Refund; use App\Models\Transaction; use App\Traits\General; use App\Traits\SendNotification; use Exception; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class RefundController extends Controller { use General, SendNotification; public function index() { $data['title'] = 'Refund List'; $data['navRefundActiveClass'] = 'active'; $data['refunds'] = Refund::where('instructor_user_id', auth()->id())->with('order_item.course')->get(); return view('instructor.refund.list', $data); } public function processRefund(Request $request) { try{ DB::beginTransaction(); $refund = Refund::where('id', $request->id)->first(); if(is_null($refund)){ return response()->json(['status' => false, 'message' => 'Request not found'], 404); } $sendEmail = new EmailSendService(); if($request->type == 2){ $refund->update([ 'status' => STATUS_REJECTED, 'feedback' => $request->feedback, ]); $this->send('Refund Request Rejected', 3, null, $refund->user_id); $sendEmail->sendRefundRequestRejectedToUser($refund->user, $request->feedback); DB::commit(); return response()->json(['status' => true, 'message' => 'Rejected successfully'], 200); } else{ $refund->update([ 'status' => STATUS_SUCCESS ]); $refund->enrollment()->update(['status' => STATUS_PENDING]); //refund process createTransaction($refund->user_id, $refund->amount, TRANSACTION_REFUND, 'Refund', 'Order_item (' . $refund->order_item_id . ')'); if ($refund->user) { $refund->user->increment('balance', decimal_to_int($refund->amount)); } $allTransaction = Transaction::where('order_item_id', $refund->order_item_id)->get(); foreach($allTransaction as $transaction){ createTransaction($transaction->user_id, $transaction->amount, TRANSACTION_SELL_REFUND, 'Refund Reversed', 'Order_item (' . $transaction->order_item_id . ')'); if ($transaction->user) { $transaction->user->decrement('balance', decimal_to_int($transaction->amount)); } } $this->send('Refund Request Accepted', 3, null, $refund->user_id); $sendEmail->sendRefundRequestAcceptedToUser($refund->user); DB::commit(); return response()->json(['status' => true, 'message' => 'Approved Successfully'], 200); } }catch(Exception $e){ DB::rollback(); return response()->json(['status' => false, 'message' => $e->getMessage()], 500); } } }