check()) { return redirect('/signin'); } $this->data['settings'] = Settings::find(1); $this->data['seo']= (object) array( 'page_title' => 'Cart - '.env('APP_NAME'), 'meta_keywords' => '', 'meta_description' => '' ); return view('front.cart.cart', $this->data); } /* | Get order detail |-------------------------------------------------------------------------- */ public function orderDetail(Request $request) { $detail['shipping_type'] = $request->shipping_type; $detail['order_type'] = $request->order_type; $detail['address_id'] = $request->addressID; $detail['additional_instruction'] = $request->note; $request->session()->put('detail', $detail); return redirect('checkout'); } /* | Checkout |-------------------------------------------------------------------------- */ public function checkout(Request $request) { $this->data['settings'] = Settings::find(1); $this->data['seo']= (object) array( 'page_title' => 'Checkout - '.env('APP_NAME'), 'meta_keywords' => '', 'meta_description' => '' ); $this->data['delivery_areas'] = DB::table('delivery_areas')->get(); $this->data['gp_uid'] = rand(10,100000); $request->session()->put('total', $request->get('total')); $this->data['checkoutSettings'] = CheckoutSetting::first(); return view('front.cart.checkout', $this->data); } /* | Verify order |-------------------------------------------------------------------------- */ public function verifyOrder(Request $request) { $request->session()->forget('order_id'); $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required', 'phone' => 'required', // 'delivery_area' => 'required', // 'address' => 'required' ]); if ($validator->fails()) { return response()->json([ 'status' => 0, 'msg' => $validator->messages() ]); } if ($request->order_type == 'delivery' && $request->delivery_charges == 0) { return response()->json([ 'status' => 2, 'msg' => 'Please select delivery area.' ]); } if (Auth::guard('customer')->check()) { $customer = Auth::guard('customer')->user(); if ($customer->id != '') { $customer = Customers::find($customer->id); $customer->name = $request->name; $customer->mobile_number = $request->phone; if($request->order_type == 'delivery'){ $customer->address = $request->address.', '.$request->delivery_area; }else{ $customer->address = NULL; } $customer->save(); } } $order = new TakeawayOrders; if (Auth::guard('customer')->check()) { $order->customer_id = $customer->id; $order->checkout = 'customer'; }else{ $order->checkout = 'guest'; $order->customer_id = NULL; $order->g_name = $request->name; $order->g_phone = $request->phone; $order->g_email = $request->email; if($request->order_type == 'delivery'){ $order->g_address = $request->address.', '.$request->delivery_area; }else{ $order->g_address = NULL; } } $order->subtotal = $request->subtotal; $order->total = $request->total; $order->tax = $request->tax; $order->tax_rate = $request->tax_rate; if ($request->order_type == 'delivery') { $order->pickup_time = NULL; $order->delivery_charges = $request->delivery_charges; }else{ $order->pickup_time = $request->pickup_time; $order->delivery_charges = NULL; } $order->discount = $request->discount; $order->special_instructions = $request->special_instructions; $order->order_type = $request->order_type; $order->payment_type = $request->payment_type; $order->platform = 'web'; $order->order_day = $request->order_day; $order->order_day_date = $request->order_day_date.' '.$request->order_day_time; $order->created_at = date("Y-m-d H:i:s"); $order->save(); $order_id = $order->id; $order_items = json_decode($request->order); foreach ($order_items as $item) { $orderdetail = new TakeawayOrderDetails; $orderdetail->order_id = $order_id; $orderdetail->category_id = $item->category_id; $orderdetail->category_name = $item->category_name; $orderdetail->item_id = $item->item_id; $orderdetail->item_name = $item->itemname; $orderdetail->price_id = $item->price_id; $orderdetail->price_title = $item->price_title; $orderdetail->quantity = $item->qty; $orderdetail->price = $item->price; $orderdetail->item_total_price = $item->price * $item->qty; if (!empty($item->options)) { $orderdetail->addons = json_encode($item->options); } $menuItem = DB::table('menu_items')->where('id', $item->item_id)->select('buy')->first(); $orderdetail->nextday_order = ($menuItem && $menuItem->buy == 1) ? 'yes' : 'no'; $orderdetail->created_at = date("Y-m-d H:i:s"); $orderdetail->save(); } // Manager app push notification // $tokens = PushNotificationsManager::pluck('token')->all(); // if(!empty($tokens)){ // $title = 'New Order Received.'; // if (Auth::guard('customer')->check()) { // $message = ucwords($customer->name)."\n".$customer->mobile_number."\n".$customer->email; // }else{ // $message = ucwords($request->name)."\n".$request->mobile_number."\n".$request->email; // } // $pn = []; // $pn['type'] = 'order'; // $pn['id'] = $order_id; // $pn['name'] = ucwords($request->name); // $pn['email'] = $request->email; // $pn['mobile'] = $request->phone; // Helper::push_notification($title, $message, $tokens, $pn); // } //Loyalty Points if (config('app.mod_loyalty') == true) { $lp = \App\LoyaltyPoints::first(); if($lp && !empty($lp)){ if (Auth::guard('customer')->check()) { $authCustomer = Auth::guard('customer')->user(); $customer = Customers::find($authCustomer->id); $points = ($request->total / $lp->earning_point_value) * $lp->earning_point; if ($lp->enabled_points == 1 && $lp->points_signup != '') { $lpc = \App\LoyaltyPointsCustomers::where('customer_id',$customer->id)->first(); (empty($lpc)) ? $lpc = new \App\LoyaltyPointsCustomers : ''; $lpc->customer_id = $customer->id; $lpc->customer_name = $customer->name; $lpc->customer_email = $customer->email; $lpc->total_points = $lpc->total_points+$points; $lpc->save(); Helper::loyalty_points_log($customer->id, $customer->name, 'points gained by online order', 'loyalty', $points); } } } } Helper::notification('order','You received a new order ['.$order->id.'] from '.$request->name); // Mail::to('pedidosweb@oliva.com.co')->queue(new OnlineOrder($order_id)); $request->session()->put('order_id', $order_id); return response()->json([ 'status' => 1, 'msg' => 'successfull.' ]); } /* | Thankyou |-------------------------------------------------------------------------- */ public function thankyou(Request $request) { if (!$request->b || $request->b == '' || $request->b != 'c') { return redirect()->route('home'); } $order_id = $request->session()->get('order_id'); $this->data['order_id'] = $order_id; $this->data['settings'] = Settings::find(1); $this->data['seo']= (object) array( 'page_title' => 'Thank You - '.env('APP_NAME'), 'meta_keywords' => '', 'meta_description' => '' ); $order = DB::table('takeaway_orders') ->where('id',$order_id) ->select('*','created_at as order_date','id as order_id' ,'status as order_status','customer_id','platform as order_platform') ->first(); if(!empty($order)){ $customer = ($order->checkout != 'guest') ? Auth::guard('customer')->user() : null; $order->customer_name = $customer->name ?? $order->g_name; $order->customer_phone = $customer->mobile_number ?? $order->g_phone; $order->customer_address = $customer->address ?? $order->g_address; } $this->data['order'] = $order; $this->data['order_detail'] = DB::table('takeaway_order_details')->where('order_id',$order_id)->get(); return view('front.cart.thank_you', $this->data); } public function getPaymentIntentId(Request $request) { if(!$request->gp_token || $request->gp_token == ''){ return response()->json([ 'success' => false, ]); } $server_application_code = env('GP_SERVER_APP_CODE'); $server_app_key = env('GP_SERVER_APP_KEY'); $date = new DateTime(); $unix_timestamp = $date->getTimestamp(); $uniq_token_string = $server_app_key.$unix_timestamp; $uniq_token_hash = hash('sha256', $uniq_token_string); $auth_token = base64_encode($server_application_code.";".$unix_timestamp.";".$uniq_token_hash); $data = array( "user" => array ( "id" => $request->guid, "email" => $request->email ), "order" => array ( "amount" => (int)$request->total, "description" => "pozole", "dev_reference" => "referencia", "vat" => 0.00 ), "card" => array ( "token" => $request->gp_token ) ); $postdata = json_encode($data); $ch = curl_init(env('GP_SERVER_URL')); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Auth-Token:'.$auth_token )); $result = curl_exec($ch); curl_close($ch); $temp = json_decode($result); $api_response = $temp->transaction->status; if($api_response == 'success'){ return response()->json([ 'success' => true, 'data' => $api_response ]); }else{ return response()->json([ 'success' => false, 'data' => $result ]); } } }