public function getAvaiableUserMetaDetails()
 {
     try {
         $result = Usersmeta::join('users', function ($join) {
             $join->on('usersmeta.user_id', '=', 'users.id');
         })->join('location', function ($join) {
             $join->on('location.location_id', '=', 'usersmeta.country');
         })->select()->get();
         return $result;
     } catch (QueryException $e) {
         echo $e;
     }
 }
    public function supplierAjaxHandler(Request $request)
    {
        $inputData = $request->input();
        $method = $request->input('method');
        $ObjUser = User::getInstance();
        $objModelLocation = Location::getInstance();
        $ObjUsermeta = Usersmeta::getInstance();
        if ($method) {
            switch ($method) {
                case 'availableSupplier':
                    $objuser = User::getInstance();
                    $where = array('rawQuery' => 'role = ?', 'bindParams' => [3]);
                    $available_supplier = $objuser->getAvailableSupplierDetails($where);
                    //                    echo"<pre>";print_r($available_supplier);die("gvj");
                    //                    foreach ($available_supplier as $key => $val) {
                    //                        $vail[$key] = $val->id;
                    //                        $available_supplier[$key] = $val;
                    //                        $available_supplier[$key]->usermeta = array();
                    //                        $available_supplier[$key] = $val;
                    //                        $available_supplier[$key]->filter = array();
                    //                    }
                    //                    $supplier = implode(",",$vail);
                    //                    echo"<pre>";print_r($supplier);die("cvjh");
                    //  $whereuser = ['rawQuery' => 'user_id = ?', 'bindParams' => $vail];
                    //                    $usermetaInfo = $ObjUsermeta->getAvaiableUserMetaDetails();
                    //                    foreach($usermetaInfo as $keymeta => $valmeta){
                    //                        $usermetaInfo[$keymeta] = $valmeta;
                    ////                        $usermetaInfo[$keymeta]->filter = array();
                    //                    }
                    //
                    //                    if(!empty($usermetaInfo)){
                    //
                    //                        $available_supplier[$key]->usermeta =  $usermetaInfo;
                    //
                    //                    }
                    //                    echo"<pre>";print_r($available_supplier);die("cvjh");
                    //  echo"<pre>";print_r($usermetaInfo);die("cvjh");
                    //
                    //                    $whereuser = array('rawQuery' => 'user_id IN('.$supplier.')');
                    //                    $available_supplier[$key] = $usermetadescription;
                    ////                    echo"<pre>";print_r($available_customers);die("cvjh");
                    //
                    //  $usermetaInfo = $ObjUsermeta->getAvaiableUserMetaDetails($whereuser);
                    //  foreach ($usermetaInfo as $filtergroupkey => $filtergroupvalue) {
                    //    $usermetaInfo[$filtergroupkey]->filtergroup = array();
                    //                        if ($filtergroupvalue->permission_ids != '') {
                    //                            $catfilterName = array_values(array_unique(explode(',', $filtergroupvalue->permission_ids)));
                    //                            $per = implode(",", $catfilterName);
                    //                            $where = ['rawQuery' => 'permission_id IN(' . $per . ')'];
                    //                            $getcategory = $objPermissionModel->getPermissionNameByIds($where);
                    //
                    //                            foreach ($getcategory as $catkey => $catval) {
                    //                                $availPermissionRelation[$filtergroupkey]->filter = $catval;
                    //                                $available_customers[$key]->filter = $availPermissionRelation[$filtergroupkey]->filter;
                    //                            }
                    //    $available_supplier[$key]->filter = $usermetaInfo[$filtergroupkey]->filtergroup;
                    //
                    //   }
                    //                    }
                    //                    echo"<pre>";print_r($available_supplier);die("gvj");
                    return Datatables::of($available_supplier)->addColumn('action', function ($available_supplier) {
                        $action = '<span class="tooltips" title="Edit Supplier Details." data-placement="top"> <a href="/admin/edit-supplier/' . $available_supplier->id . '" class="btn btn-sm grey-cascade" style="margin-left: 10%;">';
                        $action .= '<i class="fa fa-pencil-square-o"></i></a>';
                        $action .= '</span> &nbsp;&nbsp;';
                        $action .= '<span class="tooltips" title="Delete Supplier Details." data-placement="top"> <a href="#" data-cid="' . $available_supplier->id . '" class="btn btn-danger delete-supplier" style="margin-left: 10%;">';
                        $action .= '<i class="fa fa-trash-o"></i>';
                        $action .= '</a></span>';
                        return $action;
                    })->addColumn('status', function ($available_supplier) {
                        $button = '<td style="text-align: center">';
                        $button .= '<button class="btn ' . ($available_supplier->status == 1 ? "btn-success" : "btn-danger") . ' supplier-status" data-id="' . $available_supplier->id . '">' . ($available_supplier->status == 1 ? "Active" : "Inactve") . ' </button>';
                        $button .= '<td>';
                        return $button;
                    })->addColumn('supplierdetail', function ($available_supplier) {
                        return '<td style = "text-align: center" ><div class="container" style = "width: 50px " >
                             <span class="tooltips" title = "Review Description." data-placement = "top" ><button data-id = "' . $available_supplier->id . '" type = "button" class="btn btn-sm btn-default modaldescription" data-toggle = "modal" data-target = "#mymodel" ><i class="fa fa-expand" ></i ></button ></span >
                               </div >
                            </td >';
                    })->removeColumn('name')->removeColumn('updated_at')->make();
                    break;
                case 'pendingSupplier':
                    $objuser = User::getInstance();
                    $where = array('rawQuery' => 'role = ? and status = ?', 'bindParams' => [3, 0]);
                    //                    $status = array('rawQuery' => 'status = ?', 'bindParams' => [0]);
                    $pending_supplier = $objuser->getPendingUserDetails($where);
                    return Datatables::of($pending_supplier)->addColumn('status', function ($pending_supplier) {
                        return ' < td style = "text-align: center" >
                                            <button class="btn btn-primary customer-status"
                                                    data - id = ' . $pending_supplier->id . ' > Pending
                                            </button >

                                    </td > ';
                    })->removeColumn('name')->removeColumn('updated_at')->make();
                    break;
                case 'deletedSupplier':
                    $objuser = User::getInstance();
                    $where = array('rawQuery' => 'role = ?', 'bindParams' => [3]);
                    $status = array('rawQuery' => 'status = ?', 'bindParams' => [4]);
                    $deleted_supplier = $objuser->getDeletedUserDetails($where, $status);
                    return Datatables::of($deleted_supplier)->addColumn('status', function ($deleted_supplier) {
                        return ' < td style = "text-align: center" >
                                            <button class="btn btn-primary customer-status"
                                                    data - id = ' . $deleted_supplier->id . ' > Deleted
                                            </button >

                                    </td > ';
                    })->removeColumn('name')->removeColumn('updated_at')->make();
                    break;
                case 'changeSupplierStatus':
                    $userId = $inputData['UserId'];
                    $whereForUpdate = ['rawQuery' => 'id =?', 'bindParams' => [$userId]];
                    $dataToUpdate['status'] = $inputData['status'];
                    $updateResult = $ObjUser->updateUserWhere($dataToUpdate, $whereForUpdate);
                    if ($updateResult == 1) {
                        echo json_encode(['status' => 'success', 'msg' => 'Status has been changed . ']);
                    } else {
                        echo json_encode(['status' => 'error', 'msg' => 'Something went wrong, please reload the page and try again . ']);
                    }
                    break;
                case 'deleteSupplierStatus':
                    $userId = $inputData['UserId'];
                    $where = ['rawQuery' => 'id = ?', 'bindParams' => [$userId]];
                    $deleteStatus = $ObjUser->deleteUserDetails($where);
                    if ($deleteStatus) {
                        echo json_encode(['status' => 'success', 'msg' => 'User Deleted']);
                    } else {
                        echo json_encode(['status' => 'error', 'msg' => 'Something went wrong, please reload the page and try again . ']);
                    }
                    break;
                case "locationinfo":
                    $where = ['rawQuery' => 'location_type = ?', 'bindParams' => [0]];
                    $locationdetail = $objModelLocation->getAllCountryDetails($where);
                    echo json_encode($locationdetail);
                    break;
                case 'stateInfoByLocation':
                    $countryId = $request->input('countryId');
                    $where = array('rawQuery' => 'parent_id = ? and location_type = ?', 'bindParams' => [$countryId, 1]);
                    $stateInfo = $objModelLocation->getStateByCountryId($where);
                    echo json_encode($stateInfo);
                    break;
                case 'cityInfoByLocation':
                    $countryId = $request->input('countryId');
                    $where = array('rawQuery' => 'parent_id = ? and location_type = ?', 'bindParams' => [$countryId, 1]);
                    $cityInfo = $objModelLocation->getCityByCountryId($where);
                    echo json_encode($cityInfo);
                    break;
                case 'getUsermetaInfoByUserId':
                    $UserId = $request->input('UserId');
                    $where = array('rawQuery' => 'user_id = ?', 'bindParams' => [$UserId]);
                    $selectedColumns = ['location.*', 'usersmeta.addressline1', 'usersmeta.addressline2', 'usersmeta.city', 'usersmeta.state', 'usersmeta.zipcode', 'usersmeta.phone', 'usersmeta.user_id'];
                    $userMetaInfo = $ObjUsermeta->getUserMetaInfoByUserId($where, $selectedColumns);
                    //                    echo"<pre>";print_r($userMetaInfo);die("Cfh");
                    echo json_encode($userMetaInfo);
                    break;
                default:
                    break;
            }
        }
    }