dqureshiumar
dqureshiumar

Reputation: 966

I want to store a value to my variable using eloquent

I want to check the Referal Model for the value and when the value matches with my input I have to pay rupees 350 else I have to pay 375 .But I am redirect to pay 350 everytime even if I have entered invalid code

I have tried this logic but it didn't worked

use App\Theme_User;
use App\Theme;
use App\activity_users;
use Illuminate\Http\Request;
use App\User;
use App\Referal;
use Illuminate\Support\Facades\Auth;
public function pay(Request $request){

        $api = new \Instamojo\Instamojo(
               config('services.instamojo.api_key'),
               config('services.instamojo.auth_token'),
               config('services.instamojo.url')
        );
        $referral = $request->input('refer');
        $valid_referral = Referal::select('referal_code')->where('referal_code', $referral)->get();
        Theme_User::where('Payment_id', '=', 'Dummy')->delete();

        $sale_rel = new Theme_User;
        $sale_rel->User_id = Auth::user()->id;
        if($request->input('purpose') === "Gratitude Theme")
            $sale_rel->Theme_id = 1;
        $sale_rel->Payment_id = "Dummy"; //$response['payments'][0]['payment_id'];
        $sale_rel->Address = $request->input('address');
        $sale_rel->Unlock_key = \Uuid::generate()->string;
        $sale_rel->referal_id = $referral;
        $sale_rel->Unlocked = 0;
        $sale_rel->save();
    if($referral == $valid_referral){
       try {
           $response = $api->paymentRequestCreate(array(
                    "purpose" => $request->input('purpose'),
                    "amount" =>  350,
                    "buyer_name" => Auth::user()->name,
                    "send_email" => true,
                    "email" => Auth::user()->email,
                    "redirect_url" => "http://127.0.0.1:8000/pay-success"
            ));

            header('Location: ' . $response['longurl']);
            exit();
        }catch (Exception $e) {
            print('Error: ' . $e->getMessage());
        }
    }
    else{
        try {
            $response = $api->paymentRequestCreate(array(
                     "purpose" => $request->input('purpose'),
                     "amount" =>  375,
                     "buyer_name" => Auth::user()->name,
                     "send_email" => true,
                     "email" => Auth::user()->email,
                     "redirect_url" => "http://127.0.0.1:8000/pay-success"
             ));

             header('Location: ' . $response['longurl']);
             exit();
         }catch (Exception $e) {
             print('Error: ' . $e->getMessage());
         }
    }


}

I want to pay rupees 350 when I have a valid referal code else I have to pay 375

Upvotes: 0

Views: 181

Answers (2)

Dilip Hirapara
Dilip Hirapara

Reputation: 15296

Try it.

use App\Theme_User;
use App\Theme;
use App\activity_users;
use Illuminate\Http\Request;
use App\User;
use App\Referal;
use Illuminate\Support\Facades\Auth;
public function pay(Request $request){

        $api = new \Instamojo\Instamojo(
               config('services.instamojo.api_key'),
               config('services.instamojo.auth_token'),
               config('services.instamojo.url')
        );


        Theme_User::where('Payment_id', '=', 'Dummy')->delete();

        $sale_rel = new Theme_User;
        $sale_rel->User_id = Auth::user()->id;
        if($request->input('purpose') === "Gratitude Theme")
            $sale_rel->Theme_id = 1;
        $sale_rel->Payment_id = "Dummy"; //$response['payments'][0]['payment_id'];
        $sale_rel->Address = $request->input('address');
        $sale_rel->Unlock_key = \Uuid::generate()->string;
        $sale_rel->referal_id = $referral;
        $sale_rel->Unlocked = 0;
        $sale_rel->save();



    $amount = 375;
    $valid_referral = Referal::select('referal_code')->where('referal_code', $request->input('refer'))->first();
    if(!empty($valid_referral)){
        $amount = 350;
    }

    try {
            $response = $api->paymentRequestCreate(array(
                     "purpose" => $request->input('purpose'),
                     "amount" =>  $amount,
                     "buyer_name" => Auth::user()->name,
                     "send_email" => true,
                     "email" => Auth::user()->email,
                     "redirect_url" => "http://127.0.0.1:8000/pay-success"
             ));

             header('Location: ' . $response['longurl']);
             exit();
         }catch (Exception $e) {
             print('Error: ' . $e->getMessage());
         }


}

Upvotes: 1

zahid hasan emon
zahid hasan emon

Reputation: 6233

Use

$valid_referral = Referal::select('referal_code')->where('referal_code', $referral)->first();

Instead of

$valid_referral = Referal::select('referal_code')->where('referal_code', $referral)->get();

get() gives you a collection which you need to iterate to get values but first() gives you an object. In your case you need the object. Not the collection.

Upvotes: 0

Related Questions