Sh3ll
OdayForums


Server : Apache
System : Linux 145.162.205.92.host.secureserver.net 5.14.0-611.45.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Apr 1 05:56:53 EDT 2026 x86_64
User : tradze ( 1001)
PHP Version : 8.1.34
Disable Function : NONE
Directory :  /home/tradze/public_html/app/Modules/Vouchers/Http/Controllers/Frontend/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/tradze/public_html/app/Modules/Vouchers/Http/Controllers/Frontend/VoucherGiftController.php
<?php

namespace App\Modules\Vouchers\Http\Controllers\Frontend;



use App\Http\Controllers\SiteController;

use App\Modules\Banners\Repositories\BannersRepo;

use App\Modules\Services\Models\ServiceDuration;

use App\Modules\Users\Models\UserBillingAddress;

use App\Modules\Vouchers\Http\Requests\BuyVoucherPackageRequest;

use App\Modules\Vouchers\Models\VoucherOffer;

use App\Modules\Vouchers\Models\VoucherPackage;

use App\Modules\Vouchers\Repositories\VoucherRepository;

use App\User;

use Carbon\Carbon;

use Illuminate\Support\Facades\Auth;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Session;

use Illuminate\Support\Facades\Storage;

use Illuminate\Http\Request;

use Laracasts\Flash\Flash;

use Omnipay\Common\CreditCard;

use Omnipay\Omnipay;



class VoucherGiftController extends SiteController

{

    /**

     * The book repository instance

     *

     * @var BookingRepository

     */

    protected $voucher;





    /**

     * Create a new controller instance.

     */

    public function __construct(BannersRepo $banners, VoucherRepository $voucher)

    {

        parent::__construct($banners);

        $this->voucher = $voucher;

    }



    /**

     * Checkout page

     */

    public function buy($slug)

    {



        $obj = $this->getGift($slug);



        //if offer is inative or does not exists, return page 404

        if (!$obj)

            return abort(404,'page not found');



        //create data array

        $this->data = [

            'meta_title' => 'Buy gift',

            'meta_description' => '',

            'meta_keywords' => '',

            'obj' => $obj,

            'user' => \Auth::user(),

        ];



        //render page

        return view('vouchers::frontend_new.gifts.buy',$this->data);

    }



    /**

     * Pay method

     * @param Request $request

     */

    /**

     * Pay method

     * @param Request $request

     */

    public function pay(BuyVoucherPackageRequest $request)

    {

        $obj = $this->getGift($request->slug);

        // dd($obj);

        if (!$obj){

            return abort(404,'Error! The gift package does not exists. Try again!');

        }



        $total = $obj->value;

        $user = User::find(Auth::user()->id);

        $token = $request->input('payment-method-nonce');



        $gateway = Omnipay::create('SagePay\Direct');

        $gateway->setVendor(env('SAGEPAY_VENDOR_NAME'));

        $gateway->setTestMode(env('SAGEPAY_TEST_MODE'));



        $user = User::find(Auth::user()->id);

        $billingAddress = $user->address()->orderBy('is_main','desc')->first();



        try {

            $card = new CreditCard([

                'firstName' => $user->profile->first_name,

                'lastName' => $user->profile->last_name,

                'number' => $request->card_number, //4462000000000003

                'expiryMonth' => $request->expiry_month, //6

                'expiryYear' => $request->expiry_year, //2030

                'cvv' => $request->card_cvv, //123



                //billing

                'billingAddress1' => $request->billing_address?: env('SAGEPAY_BILLING_ADDR1'),

                'billingCity' => $request->billing_county?: env('SAGEPAY_BILLING_CITY'),

                'billingPostcode' => $request->billing_postcode?: env('SAGEPAY_BILLING_POSTCODE'),

                'billingCountry' => $request->billing_country?:'GB',

                'billingPhone' => $user->profile->mobile_number,



                //shipping

                'shippingAddress1' => $billingAddress?$billingAddress->address : env('SAGEPAY_BILLING_ADDR1'),

                'shippingState' => $billingAddress?$billingAddress->county : env('SAGEPAY_BILLING_CITY'),

                'shippingCity' => $billingAddress?$billingAddress->county : env('SAGEPAY_BILLING_CITY'),

                'shippingPostcode' => $billingAddress?$billingAddress->postcode : env('SAGEPAY_BILLING_POSTCODE'),

                'shippingCountry' => 'GB',

                'shippingPhone' => $user->profile->mobile_number,

            ]);

        }

        catch(\Exception $e){

            flash(strtoupper($e->getMessage()), 'danger');

            return redirect(route('gifts.buy.page',['offer'=>$data['offer']->slug,'option'=>$data['service']->id]));

        }



//        dd($card);



        $transactionId = time().'-'.$user->id.'-'.str_slug($obj->name,'');

        $request->transaction_id = $transactionId;



        try{

            $response = $gateway->purchase(array(

                'amount' => $total,

                'currency' => env('SAGEPAY_CCY'),

                'card' => $card,

                'notifyUrl' => route('gifts.buy.page',['slug'=>$obj->slug]),

                'redirectUrl' => route('gifts.buy.page',['slug'=>$obj->slug]),

                'transactionId' => $transactionId,

                'description' => 'Gift voucher: '.$obj->name,

                'billingCountry' => 'GB',

            ))->send();

        }

        catch(\Exception $e){

            flash(strtoupper($e->getMessage()), 'danger');

            return redirect(route('gifts.buy.page',['slug'=>$obj->slug]));

        }







        //if the payment is with successs

        if ($response->isSuccessful()) {


            
            //generate voucher code

            $this->voucher->new_gift_voucher($obj,$request,$response);



            //save billing address

            $billingAddrObj = UserBillingAddress::firstOrCreate([

                'address'=>$request->billing_address,

                'county'=>$request->billing_county,

                'postcode'=>$request->billing_postcode,

                'user_id' => \Auth::user()->id

            ]);


            // dd("inside sucess");
            //redirect to success page

            return redirect(route('gifts.buy.paysuccess'));

        }

        elseif ($response->isRedirect()){

            return redirect($response->redirect());

        }

        else{

            flash(strtoupper($response->getMessage()), 'danger');

            return redirect(route('gifts.buy.page',['slug'=>$obj->slug]));

        }



        //redirect to success page

        return redirect(route('gifts.buy.paysuccess'));

    }





    public function pay_old(BuyVoucherPackageRequest $request)

    {

        $obj = $this->getGift($request->slug);

        if (!$obj){

            return abort(404,'Error! The gift package does not exists. Try again!');

        }



        $total = $obj->value;

        $user = User::find(Auth::user()->id);

        $token = $request->input('payment-method-nonce');







        //if user has no plans, create one

        if (!$user->braintree_id){

            try{

                $user->newSubscription('single-charge', env(BRAINTREE_PLAN,'qrjb'))->create($token,[

                    'email'=>$user->email,

                    'phone'=>$user->profile->mobile_phone,

                ]);



                $name = "{$obj->name}";

                $response = $user->invoiceFor($name,$total);



                //generate voucher code

                $this->voucher->new_gift_voucher($obj,$request,$response);

            }

            catch (\Exception $e){

                flash(strtoupper(trans('scheduless::payment.incorrect_card_details')), 'danger');

                return redirect(route('offers.buy.page',['offer'=>$data['offer']->slug,'option'=>$data['service']->id]));

            }

        }

        else{

            //update token for each payment



            try{

                $user->updateCard($token);



                $name = "{$obj->name}";

                $response = $user->invoiceFor($name,$total);



                //generate voucher code

                $this->voucher->new_gift_voucher($obj,$request,$response);

            }

            catch (\Exception $e){



                $message = $e->getMessage();

                $message = str_ireplace('braintree','Tradze',$message);



                flash(strtoupper($message), 'danger');

                return redirect(route('gifts.buy.page',['slug'=>$obj->slug]));

            }

        }



        //change user amount

//        try {

//            $name = "{$obj->name}";

//            $response = $user->invoiceFor($name,$total);

//

//            //generate voucher code

//            $this->voucher->new_gift_voucher($obj,$request,$response);

//

//        } catch (\Exception $e) {

//            flash(strtoupper($e->getMessage()), 'danger');

//            return redirect(route('gifts.buy.page',['slug'=>$obj->slug]));

//        }



        //redirect to success page

        return redirect(route('gifts.buy.paysuccess'));

    }



    /**

     * Checkout success payment page

     */

    public function paysuccess()

    {

        $this->data = [

            'meta_title' => 'Voucher gift generated',

            'meta_description' => '',

            'meta_keywords' => '',

        ];



        //render page

        return view('vouchers::frontend_new.gifts.checkoutsuccess',$this->data);

    }



    /**

     * Get offer an option info

     * @param $offer

     * @param $option

     * @return array

     */

    protected function getGift($slugString)

    {

        $obj = VoucherPackage::where('slug',$slugString)

                                ->where('is_active',1)

                                ->first();



        //return data

        return $obj;

    }



}


ZeroDay Forums Mini