/**
  * Update the specified resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function update($id)
 {
     $a = Booking::where('id', $id)->update(['verify' => 1]);
     $b = BookingDetail::where('bookingID', $id)->update(['verify' => 1]);
     if ($a <= 0 || $b <= 0) {
         return response()->json(['result' => false, 'message' => 'can not find this booking.']);
     }
     $temp_booking = ViewBookingAndDetail::where('active', 1)->where('id', $id)->groupBy('id')->orderBy('zoneNumber')->get();
     foreach ($temp_booking as $key => $value) {
         $value->detail = BookingDetail::where('bookingID', $value->id)->get();
         $value->user = User::where('id', $value->userID)->first();
     }
     return response()->json(['result' => true, 'message' => 'success', 'data' => $temp_booking]);
 }
 public function search(Request $request)
 {
     $rules = array('date' => 'required', 'page' => 'required', 'pageSize' => 'required');
     $validator = Validator::make($request->all(), $rules);
     if ($validator->fails()) {
         return response()->json(array('result' => false, 'message' => $validator->errors()->first()));
     }
     $zone = $request->input('zone');
     $type = $request->input('type');
     $status = $request->input('status');
     $date = $request->input('date') . ' 00:00:00';
     $page = $request->input('page');
     $pageSize = $request->input('pageSize');
     $skip = ($page - 1) * $pageSize;
     if ($zone == 99 && $type == 99 && $status == 99) {
         $booking = Booking::where('sale_at', $date)->where('payment_type', 1)->skip($skip)->take($pageSize)->get();
         $count = Booking::where('sale_at', $date)->where('payment_type', 1)->count();
         return response()->json(['result' => true, 'data' => $booking, 'total' => $count]);
     }
     $query = \DB::table('v_booking_and_detail')->where('sale_at', $date)->where('payment_type', 1);
     if (isset($zone) && $zone != 99) {
         $query->where('zoneID', $zone);
     }
     if (isset($type) && $type != 99) {
         $query->where('type', $type);
     }
     if (isset($status) && $status != 99) {
         $query->where('payment', $status);
     }
     /* \Event::listen('illuminate.query', function($query)
        {
            var_dump($query);
        });*/
     $countQuery = $query->groupBy('id');
     $booking = $query->skip($skip)->take($pageSize)->get();
     $sql = $query->toSql();
     $count = ViewBookingAndDetail::from(\DB::raw('(' . $countQuery->toSql() . ')  as table_count'))->mergeBindings($countQuery)->count();
     return response()->json(['result' => true, 'data' => $booking, 'total' => $count, 'sql' => $sql]);
 }