Files
airtime-reseller/bits-pieces.md
Kwesi Banson Jnr 2cfcfade4e Initial commit
2026-08-04 14:50:01 +00:00

2.7 KiB

public function refundStoreOld(Request $request){
$validatedData = $request->validate([ 'dealer_id' => 'required', 'merchant_id' => 'required', 'amount' => 'required|numeric', 'transaction_id' => 'required|string', 'reason' => 'required|string', ]); // dd($request->all()); $merchant = Models\Merchant::findorfail($request->merchant_id); // dd($merchant);

    $merchant_name = $merchant->fullname;
    $dealer = Models\OrgUser::findorfail($request->dealer_id);
    $dealer_name = $dealer->name;
    $organisation = Models\Organisation::findorfail($request->dealer_id);
    $result = Models\MerchantToDealerRefund::create([
        'dealer_id' => $request->dealer_id,
        'merchant_id' => $request->merchant_id,
        'amount' => $request->amount,
        'dealer_msisdn' => $dealer->phone,
        'reason' => $request->reason,
    ]);
    $merchant_balance = $merchant->balance;
    $merchant->balance = $merchant_balance - $request->amount;
    $merchant->save();

    //Review this -- should dealers belong to a larger organisation or they should be on their own
    $dealer_balance = $organisation->balance;
    $organisation->balance = $dealer_balance + $request->amount;
    $organisation->save();

    $desc = [
        'title' => 'Dealer Refund',
        'data' => "Redunded a dealer with an amount of  " . $request->amount,
        'type' => 'merchant',
    ];

    $activity = new ActivityLog;
    $activity->user_id = $request->session()->get('current_org_user.id'); // org_user_id ;
    $activity->user_type = 'merchant';
    $activity->description = json_encode($desc);
    $activity->save();
    
    $msg = "You have been Successfully refunded a dealer ($dealer_name) with an amount of $request->amount.";
    $dealer_msg = "You have received a refund amount of $request->amount from Airtime Merchant ($merchant_name)";
    $smsgateway = new Smsgateway; 
    if(env('APP_ENV') !== 'local'){
        $result = $smsgateway->sendSmsNew($merchant->phone, $msg);
        $result = $smsgateway->sendSmsNew($dealer->phone, $dealer_msg);
    }
    \Log::info($msg);
    \Log::info($dealer_msg);
    // $this->sendNtfy($msg);
    if($request->ajax()){
        return response()->json([
            'code' => 1,
            'status' => 'success',
            'message' => 'Dealer Refund Successfully processed'
        ]);
    }
    else{
        return redirect()->to('merchant/refunds')->with('success_message', 'Dealer Refund Successfully processed');
    }
}