<?php

namespace App\Http\Controllers;
use App\Mail\ShareDmtEmail;
use App\BankDetails;
use App\Dmt;
use App\DmrBenificiary;
use App\DmtComission;
use App\DmtSurcharge;
use App\Http\Controllers\Comission\AddDmtSurcharge;
use App\Http\Controllers\Comission\AddDmtComission;
use App\Http\Controllers\Comission\DmtRefund;
use App\User;
use App\Wallet;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Mail;

class DmtController extends Controller
{

    
	public function __construct(){
      
        $this->middleware('tokencheck');
		
		$token = Http::withHeaders([
            "Accept" => "application/json",
            "Content-Type" => "application/json",
        ])->timeout(30)->post(env('AepsUrl') . "api/auth/login", [
            "email" => env("AepsUser"),
            "password" => env("AepsPassword"),
            "domain" => url("/") . "/",

        ]);
		$tokenResponse = $token->json();
		
        if ($token->ok()) {
            $tokenResponse = $token->json();
			$services = $tokenResponse["userservice"];
			foreach ($services as $key => $se) {
                $this->services[] = $se["service"];
                $this->services_sta[$se["service"]] = $se["status"];

            }
			if (in_array("dmt", $this->services) && $this->services_sta["dmt"] == 1) {
                $this->token = $tokenResponse["access_token"];
                $this->exp_time = $tokenResponse["expires_in"];
                $this->aepsToken = $tokenResponse["aepsToken"];
                $this->parentUser = $tokenResponse["id"];
            } else {
                abort(401);
            }
		}
		else 
		{

            abort(500);
        }
        
        //$this->middleware("log");
    }
	
	public function dmt_login(){
		$module = request()->input("userMoules");
        if (!in_array("dmt", $module)) {
            return redirect("home");
        }
        return view('dmt.login');
    }
	
	public function login(Request $request){
		$module = request()->input("userMoules");
        if (!in_array("dmt", $module)) {
            return redirect("home");
        }
        if (request()->input("walletBalance") <= 0) {
            Session::flash('error', "Your Wallet Balance Is Low, Kindly Recharge Your Wallet (आपका वॉलेट बैलेंस कम है, कृपया अपने वॉलेट को रिचार्ज करें)");
            return back();
        }

        if ($request->input("mobile_number") != null) {
			
            $data = $this->verifyCustomer($request);
            // return $data;
			if ($data["RESPONSE"] == "EPMONEY_CUST_VALIDATE_SUCCESS") {
                $banks = BankDetails::all();
                // Session::flash('success', $data["RESP_MSG"]);
                return view("dmt.response", compact("banks", 'data'));
            } else {
                Session::flash('error', $data["RESP_MSG"]);
            }
        }
        return back();
    }
	
	public function verifyCustomer(Request $request){
		$response = Http::withToken(request()->session()->get('token'))->withHeaders([
            'Content-Type' => 'application/json',
			//'Authorization' => 'bearer ',

        ])->post(env('RECHARGE_API') . 'epMoney/retvalcustomer/v1.0', [
            "OP" => "EPDMTNUR",
            "ST" => "REMDOMESTIC",
            // "AID" => env('APES_AGCODE'),
            "AID" => Auth()->user()->loginId,
            "CUSTOMER_MOBILE" => $request->input("mobile_number"),

        ]);

        return $response->json();
    }
	
	public function addBenificiary(Request $request){
        if (request()->input("walletBalance") <= 0) {
            Session::flash('error', "Your Wallet Balance Is Low, Kindly Recharge Your Wallet (आपका वॉलेट बैलेंस कम है, कृपया अपने वॉलेट को रिचार्ज करें)");
            return back();
        }
		// Now check from api pro api
		$apiProPayout = Http::withToken($this->token)->withHeaders([
				"Accept" => "application/json",
				"Content-Type" => "application/json",
				])->timeout(30)->post(env('AepsUrl') . "api/auth/getDmrBalance", [
				'user_id' => $this->parentUser,
				]);
		$apiProPayout = json_decode($apiProPayout->body());
		if ($apiProPayout->status == 1) {
			$surchargeAmount = $apiProPayout->surchargeAmount;
			$walletremaining1 = $apiProPayout->balance - $surchargeAmount;
			if ($walletremaining1 < 0) {
				Session::flash("error", "Service down from bank, Contact Administrator");
				return back();
			}
			
		}
		// end check from api pro account api

        $response = Http::withToken(request()->session()->get('token'))->withHeaders([
            'Content-Type' => 'application/json',
			])->post(env('RECHARGE_API') . 'epMoney/add-beneficiary/v1.0', [
            "OP" => "EPDMTNUR",
            "ST" => "REMDOMESTIC",
            // "AID" => env('APES_AGCODE'),
            "AID" => Auth()->user()->loginId,
            "CUSTOMER_MOBILE" => $request->input("CUSTOMER_MOBILE"),
            "OTP_FLAG" => true,
            "BENE_NAME" => $request->input("BENE_NAME"),
            "BANK_ACCOUNTNO" => $request->input("BANK_ACCOUNTNO"),
            "BANKIFSC_CODE" => $request->input("BANKIFSC_CODE"),
        ]);
		
		file_put_contents('ben.txt', $response);
		$responseData = $response->json();
		if(!empty($responseData)){
			if($responseData['RESP_CODE'] == '200' && $responseData['status'] == 'success'){
				$dmr=   DmrBenificiary::updateOrCreate([
					"mobile_number" => $request->input("CUSTOMER_MOBILE"),],
					[
						"user_id" => Auth::user()->id,
						"orderId" => $request->input("ORDER_ID"),
						"benifiary_name" => $request->input("BENE_NAME"),
						"subwalletGuid" => $responseData['beneficiaryId'],
						"beneficiaryAccount" => $request->input("BANK_ACCOUNTNO"),
						"beneficiaryIFSC" => $request->input("BANKIFSC_CODE"),
						"created_at" => date("Y-m-d H:i:s"),
						"updated_at" => date("Y-m-d H:i:s"),
						"otp" => "",
						"status" => 1,
						"responseStatus" => $responseData['status'],
						"statusMessage" => $responseData['RESP_MSG'],
					]);
				// api pro insert
				$payoutTransactions = Http::withToken($this->token)->withHeaders([
					"Accept" => "application/json",
					"Content-Type" => "application/json",
					])->timeout(30)->post(env('AepsUrl') . "api/auth/dmr/store_dmr_benificiary", [
					'user_id' => $this->parentUser,
					'loginId' => Auth::user()->loginId,
					'orderId' => $request->input("ORDER_ID"),
					'mobile_number' => $request->input("CUSTOMER_MOBILE"),
					"benifiary_name" => $request->input("BENE_NAME"),
					"subwalletGuid" => $responseData['beneficiaryId'],
					"beneficiaryAccount" => $request->input("BANK_ACCOUNTNO"),
					"beneficiaryIFSC" => $request->input("BANKIFSC_CODE"),
					"created_at" => date("Y-m-d H:i:s"),
					"updated_at" => date("Y-m-d H:i:s"),
					"otp" => "",
					"responseStatus" => $responseData['status'],
					"statusMessage" => $responseData['RESP_MSG'],
					"status" => 1,
				]);
				$orderId = $request->input("ORDER_ID");
				$payoutTransactions = json_decode($payoutTransactions->body());
				// Wallet::insert(["user_id" => Auth::user()->id, "method" => "DMR Benificiary surcharge (orderId: $orderId)", "type" => 1, "amount" => 5, "created_at" => date("Y-m-d H:i:s"), "updated_at" => date("Y-m-d H:i:s")]);
				Session::flash('success', $responseData['RESP_MSG']);
			}
			else
			{
				Session::flash('error', $responseData['RESP_MSG']);
			}
			
		}
		return redirect("/dmt/login?mobile_number=" . $request->input("CUSTOMER_MOBILE"));

    }
	
	public function destroy(){
        $mobile = request()->input("mobile");
        $id = request()->input("id");
        $response = Http::withToken(request()->session()->get('token'))->withHeaders([
            'Content-Type' => 'application/json',
		])->post(env('RECHARGE_API') . 'epMoney/generateotp/v1.0', [
            "OP" => "EPDMTNUR",
            "ST" => "REMDOMESTIC",
            // "AID" => env('APES_AGCODE'),
            "AID" => Auth()->user()->loginId,
            "CUSTOMER_MOBILE" => $mobile,
            "REQUEST_FOR" => "BENDELETE",
        ]);
		
        if (isset($response["status"]) && $response["status"] == "success") {
            return view("dmt.otp_delete", ["code" => $response["RESP_CODE"]]);
        } else {
            Session::flash('error', $response["RESPONSE"]);
            echo "<script>window.location.reload();</script>";
        }
        
    }
	
	public function deleteBenificiary(){

        $response = Http::withToken(request()->session()->get('token'))->withHeaders([
            'Content-Type' => 'application/json',

        ])->post(env('RECHARGE_API') . 'epMoney/delete-beneficiary/v1.0', [
            "OP" => "EPDMTNUR",
            "ST" => "REMDOMESTIC",
            // "AID" => env('APES_AGCODE'),
            "AID" => Auth()->user()->loginId,
            "CUSTOMER_MOBILE" => request()->input("mobile_number"),
            "REQUEST_CODE" => 345,
            "BENE_ID" => (int) request()->input("id"),
            "OTP" => request()->input("otp"),

        ]);

        return $response->json();
    }
	
	public function dmt_register(){
		$module = request()->input("userMoules");
        if (!in_array("dmt", $module)) {
            return redirect("home");
        }
        return view('dmt.register');
    }

    public function add_customer(Request $request){
        $dmtParams = [
            "OP" => "EPDMTNUR",
            "ST" => "REMDOMESTIC",
            // "AID" => env('APES_AGCODE'),
            "AID" => Auth()->user()->loginId,
            "CUSTOMER_MOBILE" => $request->input("mobile_number"),
            "CUST_LNAME" => "",
            "STATE" => "",
            "BENE_NAME" => $request->input("customer_name"),
            "CUST_ADDRESS" => "",
            "PINCODE" => "",
            "BANK_ACCOUNTNO" => "858585",
            "CUST_TITLE" => "",
            "CITY" => "",
            "CUST_EMAIL" => "",
            "CUST_FNAME" => $request->input("customer_name"),
            "CUST_ALTMOBILENO" => "",
            "BANKIFSC_CODE" => "ICIC0000361",            
            "BENE_MOBILENO" => "",
            "CUST_DOB" => ""
        ];
        // return $dmtParams;
        $response = Http::withToken(request()->session()->get('token'))->withHeaders([
            'Content-Type' => 'application/json',
        ])->post(env('RECHARGE_API') . 'epMoney/add-customer/v1.0', $dmtParams); 
        
        $responseData = $response->json();
		
        if($responseData['RESP_CODE'] == '200'){
            session()->put('RESPONSE_CODE', $responseData['RESPONSE_CODE']);
            session()->put('BENE_ID', $responseData['BENE_ID']);
            session()->put('MOBILE_NO', $request->input("mobile_number"));            
            return redirect('dmt/user-otp');
        }else{
            return back()->with('error', $responseData['RESP_MSG']);
        }
    }

    public function user_otp(){        
        return view('dmt.user_otp');
    }

    public function dmtVerifyOtp(Request $request){
        // return $request->all();
        $otpParams = [
            "OP" => "EPDMTNUR",
            "ST" => "REMDOMESTIC",
            // "AID" => env('APES_AGCODE'),
            "AID" => Auth()->user()->loginId,
            "CUSTOMER_MOBILE" => $request->input("mobile_number"),
            "REQUEST_CODE" => 341,
            "BENE_ID" => (int) $request->input("bene_id"),
            "OTP" => $request->input("verify_otp"),
            "REQUEST_FOR" => "CUSTVERIFICATION",                 
        ];
        // return $post_data = json_encode($otpParams, JSON_UNESCAPED_SLASHES);
        // return $otpParams;
        $response = Http::withToken(request()->session()->get('token'))->withHeaders([
            'Content-Type' => 'application/json',
        ])->post(env('RECHARGE_API') . 'epMoney/verifyotp/v1.0', $otpParams); 

        $responseData = $response->json();
        if($responseData['RESP_CODE'] == '200'){                     
            return redirect('dmt/login')->with('success', 'Customer verification successfully!!');
        }else{
            return back()->with('error', $responseData['RESP_MSG']);
        }
    }
	
	
	
    
    public function transferEpayAmount(Wallet $wallet, Dmt $dmt, Request $request){        
        // return $request->all();
        // return request()->session()->get('token');
		$amount = request()->input('TXN_AMOUNT');
        if (((float) request()->input("walletBalance") < (float) $amount) || request()->input("walletBalance") <= 0) {
			Session::flash('error', "Your Wallet Balance Is Low, Kindly Recharge Your Wallet (आपका वॉलेट बैलेंस कम है, कृपया अपने वॉलेट को रिचार्ज करें)");
            return back();
        }
        
        if (((float) request()->input("walletBalance") < (float) request()->input('TXN_AMOUNT')) || request()->input("walletBalance") <= 0) {
            Session::flash('error', "Your Wallet Balance Is Low, Kindly Recharge Your Wallet (आपका वॉलेट बैलेंस कम है, कृपया अपने वॉलेट को रिचार्ज करें)");
            return back();
        }
        
		// Now check from api pro api
		$apiProPayout = Http::withToken($this->token)->withHeaders([
				"Accept" => "application/json",
				"Content-Type" => "application/json",
				])->timeout(30)->post(env('AepsUrl') . "api/auth/getDmtPayoutBalance", [
				'amount' => $amount,
				'user_id' => $this->parentUser,
				]);
		$apiProPayout = json_decode($apiProPayout->body());
		if ($apiProPayout->status == 1) {
			$surchargeAmount = $apiProPayout->surchargeAmount;
			$totalPayoutAmount = $amount+$surchargeAmount;
			$walletremaining1 = $apiProPayout->balance-$totalPayoutAmount;
			if ($walletremaining1 < 0) {
				Session::flash("error", "Service down from bank, Contact Administrator");
				return back();
			}
			
		}
		// end check from api pro account api
		$balance = request()->input("walletBalance");
		$user_member_type=Auth::User()->member_type;
        $data =  DmtComission::where(["member_type_id" => $user_member_type])->where("start", "<=", $amount)->where("end", ">=", $amount)->first();
		$surcharge=0;
		if(!empty($data)){
			$start=$data->start;
			$end=$data->end;
			$surcharge =  $data->is_flat == 0 ? (($amount) *  $data->surcharge / 100) :  $data->surcharge;
			if($amount<$start || $amount>$end){
				Session::flash("error", "Given amount is out of range.");
				return back();
			}
		}
		$walletremaining = request()->input("walletBalance") - $amount - $surcharge;
        if ($balance < $amount || $walletremaining < 0) {
            Session::flash("error", "Kindly enter amount less than total balance (कुल बैलेंस से कम राशि दर्ज करें)");
			return back();
        }
        
        // $request = [
        // "jsonData" => '{
        // "HEADER": {
        // "OP": "EPDMTNUR",
        // "ST": "REMDOMESTIC",
        // "TXN_AMOUNT": ' . request()->input('TXN_AMOUNT') . ',
        // "PAYABLE_AMOUNT": ' . request()->input('TXN_AMOUNT') . ',
        // "AID": "' . Auth::user()->loginId . '"

        // },
        // "DATA": {
        // "CUSTOMER_MOBILE": "' . request()->input("CUSTOMER_MOBILE") . '",
        // "ORDER_ID": ' . (int) request()->input("ORDER_ID") . ',
        // "KEY_KYC_STATUS": "' . request()->input("KEY_KYC_STATUS") . '",
        // "BENE_BANKNAME": "' . request()->input("bankName") . '",
        // "TRANSFER_TYPE": "NEFT",
        // "BENE_NAME": "' . request()->input("BENE_NAME") . '",
        // "CN": "' . request()->input("CUSTOMER_MOBILE") . '",
        // "BANKIFSC_CODE":"' . request()->input("BANKIFSC_CODE") . '",
        // "BANK_ACCOUNTNO":"' . request()->input("BANK_ACCOUNTNO") . '",
        // "BENE_ID": "' . request()->input("beniId") . '"
        // }
        // }',
        // ];

        // return $request;
		// env('APES_AGCODE')
        // return env('RECHARGE_API') . 'epMoney/cp/dmt/moneytransfer/v1.0';
		$response = Http::withToken(request()->session()->get('token'))->withHeaders([
            'Content-Type' => 'application/x-www-form-urlencoded',        
        ])->asForm()->post(env('RECHARGE_API') . 'epMoney/cp/dmt/moneytransfer/v1.0', [
        "jsonData" => '{
            "HEADER": {
                "OP": "EPDMTNUR",
                "ST": "REMDOMESTIC",
                "TXN_AMOUNT": ' . request()->input('TXN_AMOUNT') . ',
                "PAYABLE_AMOUNT": ' . request()->input('TXN_AMOUNT') . ',
                "AID": "' .Auth()->user()->loginId. '"
            },
            "DATA": {
                "CUSTOMER_MOBILE": "' . request()->input("CUSTOMER_MOBILE") . '",
                "ORDER_ID": ' . (int) request()->input("ORDER_ID") . ',
                "KEY_KYC_STATUS": "' . request()->input("KEY_KYC_STATUS") . '",
                "BENE_BANKNAME": "' . request()->input("bankName") . '",
                "TRANSFER_TYPE": "IMPS",
                "BENE_NAME": "' . request()->input("BENE_NAME") . '",
                "CN": "' . request()->input("CUSTOMER_MOBILE") . '",
                "BENE_MOBILENO":"",
                "BANKIFSC_CODE":"' . request()->input("BANKIFSC_CODE") . '",
                "BANK_ACCOUNTNO":"' . request()->input("BANK_ACCOUNTNO") . '",
                "BENE_ID": "' . request()->input("beniId") . '"
            }
        }',
        ]);

		$responseData = $response->json();
		
        if ($response["RESPONSE"] == "PENDING" || $response["RESPONSE"] == "SUCCESS") {

			$transactionFee = (float) $response["DATA"]["TRANSACTION_DETAILS"][0]["TRANSACTIONN_FEE"];
			$dmt->user_id = Auth::user()->id;
			$amount = (float) $response["DATA"]["TRANSACTION_DETAILS"][0]["TRANSFER_AMOUNT"] + $transactionFee;
			$dmt->custname = $response["DATA"]["CUSTOMER_DETAILS"]["CUST_NAME"];
			$dmt->sender_mobile = $response["DATA"]["CUSTOMER_DETAILS"]["CUSTOMER_MOBILE"];

			$dmt->account = $response["DATA"]["BENEFICIARY_DETAILS"]["BANK_ACCOUNTNO"];
			$account = $response["DATA"]["BENEFICIARY_DETAILS"]["BANK_ACCOUNTNO"];
			$dmt->amount = $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"];
			$dmt->tansaction_fee = $response["DATA"]["TRANSACTION_DETAILS"][0]["TRANSACTIONN_FEE"];
			$dmt->ben_name = $response["DATA"]["TRANSACTION_DETAILS"][0]["TXN_BENENAME"];
			$dmt->ref_no = $response["DATA"]["CUSTOMER_REFERENCE_NO"] ?? "";
			$dmt->order_id = $response["DATA"]["TRANSACTION_DETAILS"][0]["REQUEST_REFERENCE_NO"];
			$dmt->bank = $response["DATA"]["BENEFICIARY_DETAILS"]["BENE_BANKNAME"];
			$dmt->response = json_encode($response["DATA"]);
			$dmt->status = $response["RESPONSE"];
			$dmt->created_at = date("Y-m-d H:i:s");
			$dmt->updated_at = date("Y-m-d H:i:s");
			$dmt->save();
			if ((float) $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"] !== 0) {
				$payoutTransactions = Http::withToken($this->token)->withHeaders([
					"Accept" => "application/json",
					"Content-Type" => "application/json",
					])->timeout(30)->post(env('AepsUrl') . "api/auth/dmt/store_dmt_payout", [
					'user_id' => $this->parentUser,
					'loginId' => Auth::user()->loginId,
					'custname' => Auth::user()->name,
					'sender_mobile' => $response["DATA"]["CUSTOMER_DETAILS"]["CUSTOMER_MOBILE"],
					'account' => $account,
					'amount' => $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"],
					'ref_no' => $response["DATA"]["CUSTOMER_REFERENCE_NO"] ?? "",
					'order_id' => $response["DATA"]["TRANSACTION_DETAILS"][0]["REQUEST_REFERENCE_NO"],
					'bank' => $response["DATA"]["BENEFICIARY_DETAILS"]["BENE_BANKNAME"],
					'status' => $response["RESPONSE"],
					'tansaction_fee' =>$response["DATA"]["TRANSACTION_DETAILS"][0]["TRANSACTIONN_FEE"],
					'ben_name' =>$response["DATA"]["TRANSACTION_DETAILS"][0]["TXN_BENENAME"],
					'response' => json_encode($response["DATA"]),
					"created_at" => date("Y-m-d H:i:s"),
					"updated_at" => date("Y-m-d H:i:s"),
				]);
				$payoutTransactions = json_decode($payoutTransactions->body());
				
				Wallet::create(["user_id" => Auth::user()->id, "method" => "DMT Transaction", "type" => 1, "amount" => $amount, "order_id" => $dmt->order_id, "transaction_id" => $dmt->order_id, "created_at" => date("Y-m-d H:i:s"), "updated_at" => date("Y-m-d H:i:s")]);
				$orderId = $response["DATA"]["TRANSACTION_DETAILS"][0]["REQUEST_REFERENCE_NO"];
				// surcharge slave               
				$AddDmtSurcharge = new AddDmtSurcharge();
				$AddDmtSurcharge->index((float) $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"], $dmt->id,$orderId);
				
				// Comission slave
				$AddDmtComission = new AddDmtComission();
				$AddDmtComission->index((float) $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"], $dmt->id,$orderId);
			}
            Session::flash('success', $response["RESPONSE"]);
            return redirect("/dmt/dmtReport");

        } 
		else 
		{
            Session::flash('error', $response->body());

        }
        return back();
        
    }

    public function validateAccount(Wallet $wallet, Dmt $dmt, Request $request){        
         
        $amount = request()->input('TXN_AMOUNT');
        // return request()->all();
        if (((float) request()->input("walletBalance") < (float) $amount) || request()->input("walletBalance") <= 0) {
            Session::flash('error', "Your Wallet Balance Is Low, Kindly Recharge Your Wallet (आपका वॉलेट बैलेंस कम है, कृपया अपने वॉलेट को रिचार्ज करें)");
            return back();
        }
       
        
        // Now check from api pro api
        $apiProPayout = Http::withToken($this->token)->withHeaders([
                "Accept" => "application/json",
                "Content-Type" => "application/json",
                ])->timeout(30)->post(env('AepsUrl') . "api/auth/getDmtPayoutBalance", [
                'amount' => $amount,
                'user_id' => $this->parentUser,
                ]);
        $apiProPayout = json_decode($apiProPayout->body());
        if ($apiProPayout->status == 1) {
            $surchargeAmount = $apiProPayout->surchargeAmount;
            $totalPayoutAmount = $amount+$surchargeAmount;
            $walletremaining1 = $apiProPayout->balance-$totalPayoutAmount;
            if ($walletremaining1 < 0) {
                Session::flash("error", "Service down from bank, Contact Administrator");
                return back();
            }
            
        }
        // end check from api pro account api
        $balance = request()->input("walletBalance");
        $user_member_type=Auth::User()->member_type;
        $data =  DmtComission::where(["member_type_id" => $user_member_type])->where("start", "<=", $amount)->where("end", ">=", $amount)->first();
        $surcharge=0;
        if(!empty($data)){
            $start=$data->start;
            $end=$data->end;
            $surcharge =  $data->is_flat == 0 ? (($amount) *  $data->surcharge / 100) :  $data->surcharge;
            if($amount<$start || $amount>$end){
                Session::flash("error", "Given amount is out of range.");
                return back();
            }
        }
        $walletremaining = request()->input("walletBalance") - $amount - $surcharge;
        if ($balance < $amount || $walletremaining < 0) {
            Session::flash("error", "Kindly enter amount less than total balance (कुल बैलेंस से कम राशि दर्ज करें)");
            return back();
        }
        
        // $request = [
        // "jsonData" => '{
        // "HEADER": {
        // "OP": "EPDMTNUR",
        // "ST": "BENEVALIDATE",
        // "TXN_AMOUNT": ' . request()->input('TXN_AMOUNT') . ',
        // "PAYABLE_AMOUNT": ' . request()->input('TXN_AMOUNT') . ',
        // "AID": "' . env('APES_AGCODE') . '"

        // },
        // "DATA": {
        // "CUSTOMER_MOBILE": "' . request()->input("CUSTOMER_MOBILE") . '",
        // "ORDER_ID": ' . (int) request()->input("ORDER_ID") . ',
        // "KEY_KYC_STATUS": "' . request()->input("KEY_KYC_STATUS") . '",
        // "BENE_BANKNAME": "' . request()->input("bankName") . '",
        // "TRANSFER_TYPE": "IMPS",
        // "APM_CHARGE":0.0,
        // "BENE_NAME": "' . request()->input("BENE_NAME") . '",
        // "CN": "' . request()->input("CUSTOMER_MOBILE") . '",
        // "BANKIFSC_CODE":"' . request()->input("BANKIFSC_CODE") . '",
        // "BANK_ACCOUNTNO":"' . request()->input("BANK_ACCOUNTNO") . '",
        // "BENE_ID": "' . request()->input("beniId") . '"
        // }
        // }',
        // ];
        // echo $this->token;
        // print_r($request);
        // env('APES_AGCODE')
        // return env('RECHARGE_API') . 'epMoney/cp/dmt/moneytransfer/v1.0';
        $response = Http::withToken(request()->session()->get('token'))->withHeaders([
        'Content-Type' => 'application/x-www-form-urlencoded',

        ])->asForm()->post(env('RECHARGE_API') . 'epMoney/cp/dmt/moneytransfer/v1.0', [
        "jsonData" => '{
        "HEADER": {
        "OP": "EPDMTNUR",
        "ST": "BENEVALIDATE",
        "TXN_AMOUNT": ' . request()->input('TXN_AMOUNT') . ',
        "PAYABLE_AMOUNT": ' . request()->input('TXN_AMOUNT') . ',
        "AID": "' .env('APES_AGCODE'). '"

        },
        "DATA": {
        "CUSTOMER_MOBILE": "' . request()->input("CUSTOMER_MOBILE") . '",
        "ORDER_ID": ' . (int) request()->input("ORDER_ID") . ',
        "KEY_KYC_STATUS": "' . request()->input("KEY_KYC_STATUS") . '",
        "BENE_BANKNAME": "' . request()->input("bankName") . '",
        "TRANSFER_TYPE": "IMPS",
        "APM_CHARGE":0.0,
        "BENE_NAME": "' . request()->input("BENE_NAME") . '",
        "CN": "' . request()->input("CUSTOMER_MOBILE") . '",
        "BENE_MOBILENO":"",
        "BANKIFSC_CODE":"' . request()->input("BANKIFSC_CODE") . '",
        "BANK_ACCOUNTNO":"' . request()->input("BANK_ACCOUNTNO") . '",
        "BENE_ID": "' . request()->input("beniId") . '"
        }
        }',
        ]);
        // return $response;
        $responseData = $response->json();
        
        if ($response["RESPONSE"] == "PENDING" || $response["RESPONSE"] == "SUCCESS") {

            $transactionFee = (float) $response["DATA"]["TRANSACTION_DETAILS"][0]["TRANSACTIONN_FEE"];
            $dmt->user_id = Auth::user()->id;
            $amount = (float) $response["DATA"]["TRANSACTION_DETAILS"][0]["TRANSFER_AMOUNT"] + $transactionFee;
            $dmt->custname = $response["DATA"]["CUSTOMER_DETAILS"]["CUST_NAME"];
            $dmt->sender_mobile = $response["DATA"]["CUSTOMER_DETAILS"]["CUSTOMER_MOBILE"];

            $dmt->account = $response["DATA"]["BENEFICIARY_DETAILS"]["BANK_ACCOUNTNO"];
            $account = $response["DATA"]["BENEFICIARY_DETAILS"]["BANK_ACCOUNTNO"];
            $dmt->amount = $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"];
            $dmt->tansaction_fee = $response["DATA"]["TRANSACTION_DETAILS"][0]["TRANSACTIONN_FEE"];
            $dmt->ben_name = $response["DATA"]["TRANSACTION_DETAILS"][0]["TXN_BENENAME"];
            $dmt->ref_no = $response["DATA"]["CUSTOMER_REFERENCE_NO"] ?? "";
            $dmt->order_id = $response["DATA"]["TRANSACTION_DETAILS"][0]["REQUEST_REFERENCE_NO"];
            $dmt->bank = $response["DATA"]["BENEFICIARY_DETAILS"]["BENE_BANKNAME"];
            $dmt->response = json_encode($response["DATA"]);
            $dmt->status = $response["RESPONSE"];
            $dmt->created_at = date("Y-m-d H:i:s");
            $dmt->updated_at = date("Y-m-d H:i:s");
            $dmt->save();
            if ((float) $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"] !== 0) {
                $payoutTransactions = Http::withToken($this->token)->withHeaders([
                    "Accept" => "application/json",
                    "Content-Type" => "application/json",
                    ])->timeout(30)->post(env('AepsUrl') . "api/auth/dmt/store_dmt_payout", [
                    'user_id' => $this->parentUser,
                    'loginId' => Auth::user()->loginId,
                    'custname' => Auth::user()->name,
                    'sender_mobile' => $response["DATA"]["CUSTOMER_DETAILS"]["CUSTOMER_MOBILE"],
                    'account' => $account,
                    'amount' => $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"],
                    'ref_no' => $response["DATA"]["CUSTOMER_REFERENCE_NO"] ?? "",
                    'order_id' => $response["DATA"]["TRANSACTION_DETAILS"][0]["REQUEST_REFERENCE_NO"],
                    'bank' => $response["DATA"]["BENEFICIARY_DETAILS"]["BENE_BANKNAME"],
                    'status' => $response["RESPONSE"],
                    'tansaction_fee' =>$response["DATA"]["TRANSACTION_DETAILS"][0]["TRANSACTIONN_FEE"],
                    'ben_name' =>$response["DATA"]["TRANSACTION_DETAILS"][0]["TXN_BENENAME"],
                    'response' => json_encode($response["DATA"]),
                    "created_at" => date("Y-m-d H:i:s"),
                    "updated_at" => date("Y-m-d H:i:s"),
                ]);
                $payoutTransactions = json_decode($payoutTransactions->body());
                
                Wallet::create(["user_id" => Auth::user()->id, "method" => "DMT Transaction", "type" => 1, "amount" => 3, "order_id" => $dmt->order_id, "transaction_id" => $dmt->order_id, "created_at" => date("Y-m-d H:i:s"), "updated_at" => date("Y-m-d H:i:s")]);
                $orderId = $response["DATA"]["TRANSACTION_DETAILS"][0]["REQUEST_REFERENCE_NO"];
                // surcharge slave               
                // $AddDmtSurcharge = new AddDmtSurcharge();
                // $AddDmtSurcharge->index((float) $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"], $dmt->id,$orderId);
                
                // Comission slave
                // $AddDmtComission = new AddDmtComission();
                // $AddDmtComission->index((float) $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"], $dmt->id,$orderId);
            }
            Session::flash('success', "Your Account validate successfull!!");
            return redirect("/dmt/dmtReport");

        } 
        else 
        {
            Session::flash('error', $response->body());

        }
        return back();
        
    }
	
	public function dmtReport(Request $request){
        $module = request()->input("userMoules");
		if (request()->role != "") {
			if (!in_array("dmt", $module)) {
				return redirect("home");
			}
		}
        $response = null;
        $simple = "";
		
         $subadmin =  Auth::user()->subadmin; 

        if (request()->input("role") == "" || $subadmin==1) {
            $dmr = Dmt::with("user")->newQuery();
            if ($request->has("loginId") && $request->input("loginId") != '') {

                $dmr->whereHas('user', function ($q) {
                    $loginId = request()->input("loginId");
                    $q->where("loginId", "LIKE", "%$loginId%");
                });
            }

            if ($request->has("name") && $request->input("name") != '') {
                $name = $request->input("name");
                $dmr->where("custname", "LIKE", "%$name%");
            }

            if ($request->has("bname") && $request->input("bname") != '') {
                $bname = $request->input("bname");
                $dmr->where("ben_name", "LIKE", "%$bname%");
            }

            if ($request->has("accountno") && $request->input("accountno") != '') {
                $accountno = $request->input("accountno");
                $dmr->where("account", "LIKE", "%$accountno%");
            }

            if ($request->has("from_date") && $request->input("from_date") != '') {
                $from_date = Carbon::parse($request->input("from_date"))->format("Y-m-d H:i:s");
                $dmr->where("updated_at", ">=", "$from_date");
            }
            if ($request->has("to_date") && $request->input("to_date") != '') {
                $to_date = Carbon::parse(request()->input('to_date'))->format("Y-m-d 23:59:59");
                $dmr->where("updated_at", "<=", "$to_date");
            }
            if ($_GET == null) {
                $date = date("Y-m-d");
                $dmr->where("updated_at", "LIKE", "%$date%");
            }

        } 
		else 
		{
            $dmr = Dmt::with("user")->where(['user_id' => Auth::user()->id])->newQuery();
            if ($request->has("accountno") && $request->input("accountno") != '') {
                $accountno = $request->input("accountno");
                $dmr->where("account", "LIKE", "%$accountno%");
            }

            if ($request->has("from_date") && $request->input("from_date") != '') {
                $from_date = Carbon::parse($request->input("from_date"))->format("Y-m-d H:i:s");
                $dmr->where("updated_at", ">=", "$from_date");
            }
            if ($request->has("to_date") && $request->input("to_date") != '') {
				$to_date = Carbon::parse(request()->input('to_date'))->format("Y-m-d 23:59:59");
                $dmr->where("updated_at", "<=", "$to_date");
            }
			if ($_GET == null) {
                $date = date("Y-m-d");
                $dmr->where("updated_at", "LIKE", "%$date%");
            }
        }
        $response = $dmr->paginate(10);
        // return $response;
        $alldmr = null;
     
        return view("dmt.dmtReport", compact("response", "simple", 'alldmr'));
    }
	
	public function getDMTReciept(){
        $alldmr = Dmt::with("user")->where(['id'=>request()->id])->first(); 
        return view('dmt.recieptdmt',compact('alldmr'));
    }
	
	public function sendEmailReciept(Request $request){
		if(request()->input("email") && request()->input("orderid")){
			$email = request()->input("email");
			$transactionHistory = Dmt::with("user")->where(['id'=>request()->input("orderid")])->first(); 
			
			$explodeEmail = explode(',',$email);
			if(!empty($explodeEmail)){
				foreach($explodeEmail as $em){
					if(!empty($em)){
						Mail::to($em)->send(new ShareDmtEmail($transactionHistory));
					}
				}
			}
			
			$response['error'] = 0;
			$response['message'] = "The email successully send.";
			
		}
		else
		{
			$response['error'] = 1;
			$response['message'] = "Please enter email.";
		}
		
        echo json_encode($response);exit;
    }
	
	public function dmtcheckStatus(){
		if(request()->has('orderId')){
			$orderId = Crypt::decrypt(request()->orderId);
			$dmtData = Dmt::where(["order_id" => $orderId])->first();
			
			$response = Http::withToken(request()->session()->get('token'))->withHeaders([
				'Content-Type' => 'application/json'
			])->post(env('RECHARGE_API') . 'epMoney/transaction-status/v1.0', [
				"OP" => "EPDMTNUR",
				"ST" => "REMDOMESTIC",
				// "AID" => env('APES_AGCODE'),
                "AID" => Auth()->user()->loginId,
				"CUSTOMER_MOBILE" => $dmtData->sender_mobile,
				"REQUEST_REFERENCE_NO" => $orderId,

			]);
			$responseData = $response->json();
			if(!empty($responseData)){
				if($responseData['RESP_CODE']=='200'){
					if($responseData['DATA']['TRANSACTION_STATUS']=='SUCCESS'){
						Dmt::where(["id" => $dmtData->id])->update([
							"status" => $responseData['DATA']['TRANSACTION_STATUS'],
						]);
						Session::flash("success", ($responseData['DATA']['TRANSACTION_STATUSMESSAGE']));
					}
					else if($responseData['DATA']['TRANSACTION_STATUS']=='FAILED'){
						Wallet::insert(["user_id" => $dmtData->user_id, "method" => "DMT Refund", "type" => 0, "amount" => $dmtData->amount, "order_id" => $dmtData->order_id, "transaction_id" => $dmtData->order_id, "created_at" => date("Y-m-d H:i:s"), "updated_at" => date("Y-m-d H:i:s")]);
						$DmtRefund = new DmtRefund();
						$DmtRefund->index($dmtData->amount, $dmtData->user_id,$dmtData->order_id);
						Dmt::where(["id" => $dmtData->id])->update([
							"status" => $responseData['DATA']['TRANSACTION_STATUS'],
						]);
						Session::flash("error", ($responseData['DATA']['TRANSACTION_STATUSMESSAGE']));
					}
				}
				else
				{
					Session::flash('error', $responseData["RESP_MSG"]);
						
				}
			}
			
		}
		return redirect("/dmt/dmtReport");
	}
	
	public function approveDmtStatus($orderId = null,$responseBody = null,$status = null){
		$payout = Dmt::where(["order_id" => $orderId])->first();
		if($payout->order_id==$orderId){
			Dmt::where(["order_id" => $payout->order_id])->update([

				"response" => $responseBody,
				"status" => $status,
			]);
			return response()->json([
					"status" => 1,
					"message" => "successfull",
				]);
		}
		else
		{
			return response()->json([
                "status" => 0,
                "message" => "something went wrong",
            ]);
		}
	}
	
	
	public function rejectDmtStatus($orderId = null,$responseBody = null,$status = null){
		$payout = Dmt::where(["order_id" => $orderId])->first();
		if($payout->order_id==$orderId){
			Dmt::where(["order_id" => $payout->order_id])->update([

				"response" => $responseBody,
				"status" => $status,
			]);
			
			Wallet::insert(["user_id" => $payout->user_id, "method" => "DMT Refund", "type" => 0, "amount" => $payout->amount, "order_id" => $payout->order_id, "transaction_id" => $payout->order_id, "created_at" => date("Y-m-d H:i:s"), "updated_at" => date("Y-m-d H:i:s")]);
			$DmrRefund = new DmtRefund();
			$DmrRefund->index($payout->amount, $payout->user_id,$orderId);
			
			return response()->json([
					"status" => 1,
					"message" => "successfull",
				]);
		}
		else
		{
			return response()->json([
                "status" => 0,
                "message" => "something went wrong",
            ]);
		}
	}


	public function dmtExport()
    {
        $accountNumber = request()->input('accountno');         
        $fromDate = request()->input('from_date'); 
        $toDate = request()->input('to_date');  

        $subadmin =  Auth::user()->subadmin; 
        if (request()->input("role") == "" || $subadmin == 1) {    
            // $loginId = request()->input('loginId');
            $name = request()->input('name'); 
            $dmr = Dmt::with("user")->newQuery();
            // if ($loginId && $loginId != '') {
            //     $dmr->whereHas('user', function ($q) {                    
            //         $q->where("loginId", "LIKE", "%$loginId%");
            //     });
            // }
            if ($name && $name != '') {                
                $dmr->where("custname", "LIKE", "%$name%");
            }
        }else{
            $dmr = Dmt::with("user")->where(['user_id' => Auth::user()->id])->newQuery();
        }        
        if ($accountNumber && $accountNumber != '') {            
            $dmr->where("account", "LIKE", "%$accountNumber%");
        } 
        if ($fromDate && $fromDate != '') {
            $from_date = Carbon::parse($fromDate)->format("Y-m-d H:i:s");
            $dmr->where("updated_at", ">=", "$from_date");
        }
        if ($toDate && $toDate != '') {
            $to_date = Carbon::parse($toDate)->format("Y-m-d 23:59:59");
            $dmr->where("updated_at", "<=", "$to_date");
        }            
        if(!$accountNumber && (!$fromDate) && (! $toDate)){
            $date = date("Y-m-d");
            $dmr->whereDate("updated_at", "<=", $date);
        }
        $response = $dmr->get();       

        $datatbl = '';
        $datatbl .= '<table collspacing="2" collpadding="5" style="border:2px;text-align:center;" border="1" width="100%">';
        $datatbl .= '<tr>  
            <th style="text-align:center;">Id</th>
            <th style="text-align:center;">User Id</th>
            <th style="text-align:center;">MemberId</th>
            <th style="text-align:center;">SENDER NAME</th>
            <th style="text-align:center;">ORDER_ID</th> 
            <th style="text-align:center;">BANK Name</th>           
            <th style="text-align:center;">BANK_ACCOUNTNO</th>
            <th style="text-align:center;">TRANSACTION_STATUS</th>
            <th style="text-align:center;">Amount</th>            
            <th style="text-align:center;">Transaction Date Time</th>               
            </tr>';        
        // return $getFackData;
        //var_dump($getRegisterByData);
        foreach ($response as $key => $value) {    
        $datatbl .=         
            '<tr>
                <td style="text-align:center;">'.$value->id.'</td>
                <td style="text-align:center;">'.$value->user_id.'</td>
                <td style="text-align:center;">'.$value->user->loginId.'</td>
                <td style="text-align:center;">'.$value->custname.'</td>  
                <td style="text-align:center;">'.$value->order_id.'</td>               
                <td style="text-align:center;">'.$value->bank.'</td> 
                <td style="text-align:center;">'.$value->account.'</td>  
                <td style="text-align:center;">'.$value->status.'</td>
                <td style="text-align:center;">'.$value->amount.'</td>                
                <td style="text-align:center;">'.$value->created_at->format("d, M Y, H:i:s").'</td>
            </tr>';
        } 
        $datatbl .= '</table>';    
            header("Content-Type: application/force-download");     
            header("Content-disposition: attachment; filename=DMTExportData.xls");
            header("Pragma: ");  
            header("Cache-Control: ");
            echo $datatbl;
            die;
    }

    public function validateBenificiary(Wallet $wallet, Dmt $dmt, Request $request){        
        
        // return request()->input();
        $amount = 1.00;
        $bankName = 'BANK OF INDIA';
        $baneId = '549';
        // if (((float) request()->input("walletBalance") < (float) $amount) || request()->input("walletBalance") <= 0) {
        //     Session::flash('error', "Your Wallet Balance Is Low, Kindly Recharge Your Wallet (आपका वॉलेट बैलेंस कम है, कृपया अपने वॉलेट को रिचार्ज करें)");
        //     return back();
        // }
       
        
        // Now check from api pro api
        // $apiProPayout = Http::withToken($this->token)->withHeaders([
        //         "Accept" => "application/json",
        //         "Content-Type" => "application/json",
        //         ])->timeout(30)->post(env('AepsUrl') . "api/auth/getDmtPayoutBalance", [
        //         'amount' => $amount,
        //         'user_id' => $this->parentUser,
        //         ]);
        // $apiProPayout = json_decode($apiProPayout->body());
        // if ($apiProPayout->status == 1) {
        //     $surchargeAmount = $apiProPayout->surchargeAmount;
        //     $totalPayoutAmount = $amount+$surchargeAmount;
        //     $walletremaining1 = $apiProPayout->balance-$totalPayoutAmount;
        //     if ($walletremaining1 < 0) {
        //         Session::flash("error", "Service down from bank, Contact Administrator");
        //         return back();
        //     }
            
        // }
        // // end check from api pro account api
        // $balance = request()->input("walletBalance");
        // $user_member_type=Auth::User()->member_type;
        // $data =  DmtComission::where(["member_type_id" => $user_member_type])->where("start", "<=", $amount)->where("end", ">=", $amount)->first();
        // $surcharge=0;
        // if(!empty($data)){
        //     $start=$data->start;
        //     $end=$data->end;
        //     $surcharge =  $data->is_flat == 0 ? (($amount) *  $data->surcharge / 100) :  $data->surcharge;
        //     if($amount<$start || $amount>$end){
        //         Session::flash("error", "Given amount is out of range.");
        //         return back();
        //     }
        // }
        // $walletremaining = request()->input("walletBalance") - $amount - $surcharge;
        // if ($balance < $amount || $walletremaining < 0) {
        //     Session::flash("error", "Kindly enter amount less than total balance (कुल बैलेंस से कम राशि दर्ज करें)");
        //     return back();
        // }
        // env('APES_AGCODE')
        $request = [
        "jsonData" => '{
        "HEADER": {
        "OP": "EPDMTNUR",
        "ST": "REMDOMESTIC",
        "TXN_AMOUNT": ' . request()->input('TXN_AMOUNT') . ',
        "PAYABLE_AMOUNT": ' . request()->input('TXN_AMOUNT') . ',
        "AID": "' . Auth()->user()->loginId . '"

        },
        "DATA": {
        "CUSTOMER_MOBILE": "' . request()->input("CUSTOMER_MOBILE") . '",
        "ORDER_ID": ' . (int) request()->input("ORDER_ID") . ',
        "KEY_KYC_STATUS": "' . request()->input("KEY_KYC_STATUS") . '",
        "BENE_BANKNAME": "' . request()->input("bankName") . '",
        "TRANSFER_TYPE": "NEFT",
        "BENE_NAME": "' . request()->input("BENE_NAME") . '",
        "CN": "' . request()->input("CUSTOMER_MOBILE") . '",
        "BANKIFSC_CODE":"' . request()->input("BANKIFSC_CODE") . '",
        "BANK_ACCOUNTNO":"' . request()->input("BANK_ACCOUNTNO") . '",
        "BENE_ID": "' . request()->input("beniId") . '"
        }
        }',
        ];

        // return $request;
        // env('APES_AGCODE')
        $response = Http::withToken(request()->session()->get('token'))->withHeaders([
        'Content-Type' => 'application/x-www-form-urlencoded',

        ])->asForm()->post(env('RECHARGE_API') . 'epMoney/cp/dmt/moneytransfer/v1.0', [
        "jsonData" => '{
        "HEADER": {
        "OP": "EPDMTNUR",
        "ST": "REMDOMESTIC",
        "TXN_AMOUNT": ' . request()->input('TXN_AMOUNT') . ',
        "PAYABLE_AMOUNT": ' . request()->input('TXN_AMOUNT') . ',
        "AID": "' . Auth()->user()->loginId . '"

        },
        "DATA": {
        "CUSTOMER_MOBILE": "' . request()->input("CUSTOMER_MOBILE") . '",
        "ORDER_ID": ' . (int) request()->input("ORDER_ID") . ',
        "KEY_KYC_STATUS": "' . request()->input("KEY_KYC_STATUS") . '",
        "BENE_BANKNAME": "' . request()->input("bankName") . '",
        "TRANSFER_TYPE": "IMPS",
        "BENE_NAME": "' . request()->input("BENE_NAME") . '",
        "CN": "' . request()->input("CUSTOMER_MOBILE") . '",
        "BENE_MOBILENO":"",
        "BANKIFSC_CODE":"' . request()->input("BANKIFSC_CODE") . '",
        "BANK_ACCOUNTNO":"' . request()->input("BANK_ACCOUNTNO") . '",
        "BENE_ID": "' . request()->input("beniId") . '"
        }
        }',
        ]);
        return $response;
        $responseData = $response->json();
        
        if ($response["RESPONSE"] == "PENDING" || $response["RESPONSE"] == "SUCCESS") {

            $transactionFee = (float) $response["DATA"]["TRANSACTION_DETAILS"][0]["TRANSACTIONN_FEE"];
            $dmt->user_id = Auth::user()->id;
            $amount = (float) $response["DATA"]["TRANSACTION_DETAILS"][0]["TRANSFER_AMOUNT"] + $transactionFee;
            $dmt->custname = $response["DATA"]["CUSTOMER_DETAILS"]["CUST_NAME"];
            $dmt->sender_mobile = $response["DATA"]["CUSTOMER_DETAILS"]["CUSTOMER_MOBILE"];

            $dmt->account = $response["DATA"]["BENEFICIARY_DETAILS"]["BANK_ACCOUNTNO"];
            $account = $response["DATA"]["BENEFICIARY_DETAILS"]["BANK_ACCOUNTNO"];
            $dmt->amount = $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"];
            $dmt->tansaction_fee = $response["DATA"]["TRANSACTION_DETAILS"][0]["TRANSACTIONN_FEE"];
            $dmt->ben_name = $response["DATA"]["TRANSACTION_DETAILS"][0]["TXN_BENENAME"];
            $dmt->ref_no = $response["DATA"]["CUSTOMER_REFERENCE_NO"] ?? "";
            $dmt->order_id = $response["DATA"]["TRANSACTION_DETAILS"][0]["REQUEST_REFERENCE_NO"];
            $dmt->bank = $response["DATA"]["BENEFICIARY_DETAILS"]["BENE_BANKNAME"];
            $dmt->response = json_encode($response["DATA"]);
            $dmt->status = $response["RESPONSE"];
            $dmt->created_at = date("Y-m-d H:i:s");
            $dmt->updated_at = date("Y-m-d H:i:s");
            $dmt->save();
            if ((float) $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"] !== 0) {
                $payoutTransactions = Http::withToken($this->token)->withHeaders([
                    "Accept" => "application/json",
                    "Content-Type" => "application/json",
                    ])->timeout(30)->post(env('AepsUrl') . "api/auth/dmt/store_dmt_payout", [
                    'user_id' => $this->parentUser,
                    'loginId' => Auth::user()->loginId,
                    'custname' => Auth::user()->name,
                    'sender_mobile' => $response["DATA"]["CUSTOMER_DETAILS"]["CUSTOMER_MOBILE"],
                    'account' => $account,
                    'amount' => $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"],
                    'ref_no' => $response["DATA"]["CUSTOMER_REFERENCE_NO"] ?? "",
                    'order_id' => $response["DATA"]["TRANSACTION_DETAILS"][0]["REQUEST_REFERENCE_NO"],
                    'bank' => $response["DATA"]["BENEFICIARY_DETAILS"]["BENE_BANKNAME"],
                    'status' => $response["RESPONSE"],
                    'tansaction_fee' =>$response["DATA"]["TRANSACTION_DETAILS"][0]["TRANSACTIONN_FEE"],
                    'ben_name' =>$response["DATA"]["TRANSACTION_DETAILS"][0]["TXN_BENENAME"],
                    'response' => json_encode($response["DATA"]),
                    "created_at" => date("Y-m-d H:i:s"),
                    "updated_at" => date("Y-m-d H:i:s"),
                ]);
                $payoutTransactions = json_decode($payoutTransactions->body());
                
                Wallet::create(["user_id" => Auth::user()->id, "method" => "DMT Transaction", "type" => 1, "amount" => $amount, "order_id" => $dmt->order_id, "transaction_id" => $dmt->order_id, "created_at" => date("Y-m-d H:i:s"), "updated_at" => date("Y-m-d H:i:s")]);
                $orderId = $response["DATA"]["TRANSACTION_DETAILS"][0]["REQUEST_REFERENCE_NO"];
                // surcharge slave               
                $AddDmtSurcharge = new AddDmtSurcharge();
                $AddDmtSurcharge->index((float) $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"], $dmt->id,$orderId);
                
                // Comission slave
                $AddDmtComission = new AddDmtComission();
                $AddDmtComission->index((float) $response["DATA"]["TRANSACTION_DETAILS"][0]["PAID_AMOUNT"], $dmt->id,$orderId);
            }
            Session::flash('success', $response["RESPONSE"]);
            return redirect("/dmt/dmtReport");

        } 
        else 
        {
            Session::flash('error', $response->body());

        }
        return back();
        
    }
    
    
}
