Viewing File: /home/ubuntu/shop-website-base/app/Http/Controllers/User/LookupController.php

<?php

namespace App\Http\Controllers\User;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use App\Helpers\Helper;

use App\Models\StaticPage;

use Auth, DB, Hash, Exception, File, Setting, Log ,Validator;

use App\Models\Cart, App\Models\Order;

use App\Models\SupportContact;

use App\Repositories\ProductRepository as ProductRepo;

class LookupController extends Controller {

	/**
    * Create a new controller instance.
    *
    * @return void
    */
    public function __construct() {

        // $this->middleware('auth:user');

    }

    /**
     * @method index()
     *
     * @uses Index
     *
     * @created Ganesh 
     *
     * @updated  
     *
     * @param object $request - User Id
     * 
     * @return response of success/failure details with view page
     *
     */
    public function static_pages(Request $request) {

    	$static_pages = StaticPage::where('type',$request->type)->first();

    	return view('user.pages.index')
    		->with('static_pages',$static_pages);

    }

    /**
     * @method cart_checkout()
     *
     * @uses Index
     *
     * @created Ganesh 
     *
     * @updated  
     *
     * @param object $request - User Id
     * 
     * @return response of success/failure details with view page
     *
     */
    public function cart_checkout(Request $request) {

        $query = Cart::where('carts.ip_address',get_ip_address())
                    ->CommonResponse()
                    ->where('products.status', APPROVED);

        $cart = $query->orderBy('carts.id','DESC')->get();

        $total_price = formatted_amount($cart->sum('total_price'));

        return view('user.checkout.direct_checkout')
                ->with('cart',$cart)
                ->with('total_price' , $total_price);

    }

    /**
     * @method direct_checkout_save()
     *
     * @uses Save Payment
     *
     * @created Bhawya
     * 
     * @updated Bhawya
     *
     * @param object $request
     *
     * @return view page
     */
    public function direct_checkout_save(Request $request) {

        try {

            $cart = Cart::where('carts.ip_address', get_ip_address())->CommonResponse()
                ->where('products.status', APPROVED)
                ->first();

            if(!$cart) {

                throw new Exception(api_error(106),106);

            }

            $validator = Validator::make( $request->all(), [

              'name' => 'required|min:2|max:100',
              'email' => 'required|email|max:255',
              'mobile' => 'required|digits_between:4,16|unique:users,mobile',
              'password' => 'required|min:6',

            ]);

            if($validator->fails()) {

                $error = implode(',', $validator->messages()->all());

                throw new Exception($error, 101);
            }

            DB::beginTransaction();

            $user_details = ProductRepo::user_details_save($request);

            $request->request->add([ 
                'id' => $user_details->id,
            ]);  

            $billing_details = ProductRepo::user_billing_address_save($request);

            $request->request->add([ 
                'user_billing_address_id' => $billing_details->id,
            ]); 

            $order = ProductRepo::orders_save($request);

            $total = $user_pay_amount = $order->total ?? 0.00;

            $request->request->add([
                'total' => $total, 
                'user_pay_amount' => $user_pay_amount,
                'paid_amount' => $user_pay_amount,
                'payment_id' => 'FREE-'.rand()
            ]);

            $payment_response = ProductRepo::order_payment_save($request, $order)->getData();
           
            if($payment_response->success) {
                
                $cart = Cart::where('carts.ip_address', get_ip_address())->delete();

                DB::commit();

                \Auth::guard('user')->login($user_details);

                $order = Order::where('id',$payment_response->data->order_id)->first();

                return view('user.orders.success')
                    ->with('order',$order)
                    ->with('flash_success', $payment_response->message);

            } else {

                return back()->with('flash_error',  $payment_response->message);
            }          

        } catch (Exception $e) {

            return redirect()->route('cart_checkout')->with('flash_error', $e->getMessage());

        }

    }

    public function contact_request(Request $request) {

        try {

            $validator = Validator::make( $request->all(), [

              'name' => 'required|min:2|max:100',
              'email' => 'required|email|max:255',
              'mobile' => 'required|digits_between:4,16,mobile',
              'subject' => 'required|min:4|max:100',
              'country' => 'required|min:4|max:30',

            ]);

            if($validator->fails()) {

                $error = implode(',', $validator->messages()->all());

                throw new Exception($error, 101);
            }

            DB::beginTransaction();

            $support_contact = new SupportContact();

            $support_contact->name = $request->name ?? '';

            $support_contact->email = $request->email ?? '';

            $support_contact->mobile = $request->mobile ?? '';

            $support_contact->subject = $request->subject ?? '';

            $support_contact->message = $request->message ?? '';

            $support_contact->country = $request->country ?? '';

             $support_contact->timezone = $request->timezone ?? 'Asia/Kolkata';

             if($support_contact->save()){

                DB::commit();

                $email_data['subject'] = tr('user_contact_message').' '.Setting::get('site_name');

                $email_data['page'] = "emails.contact-response";

                $email_data['data'] = $support_contact;

                $email_data['email'] = Setting::get('admin_email_id') ?? 'admin@shop.com';

                $email_data['message'] = tr('admin_contact_message',$support_contact->name ?? '');

                $this->dispatch(new \App\Jobs\SendEmailJob($email_data));

                $code = 200; $message = tr('contact_submit_success');

                return $this->sendResponse($message,$code, $data=[]);

             }

              
        throw new Exception(tr('contact_save_failed'), 101);


        } catch (Exception $e) {

            DB::rollback();

            return $this->sendError($e->getMessage(), $e->getCode());

        }

    }
}
Back to Directory File Manager