public function changeAvatar(Request $request)
 {
     $response = new stdClass();
     if ($request->isMethod('post')) {
         $postData = $request->all();
         $objUserModel = new User();
         $userId = "";
         if (isset($postData['user_id'])) {
             $userId = $postData['user_id'];
         }
         $authFlag = false;
         if (isset($postData['api_token'])) {
             if ($userId != '') {
                 $apiToken = $postData['api_token'];
                 if ($apiToken == $this->API_TOKEN) {
                     $authFlag = true;
                 } else {
                     $where = ['rawQuery' => 'id=?', 'bindParams' => [$userId]];
                     $selectColumn = array('login_token');
                     $userCredentials = $objUserModel->getUsercredsWhere($where, $selectColumn);
                     if ($userCredentials) {
                         if ($apiToken == $userCredentials->login_token) {
                             $authFlag = true;
                         }
                     }
                 }
             }
         }
         if ($authFlag) {
             if ($userId != '') {
                 if (Input::hasFile('file')) {
                     $validator = Validator::make($request->all(), ['file' => 'image']);
                     if (!$validator->fails()) {
                         $destinationPath = $_SERVER['DOCUMENT_ROOT'] . '/../../web/public/assets/uploads/useravatar/';
                         $fileName = $userId . '_' . time() . ".jpg";
                         File::makeDirectory($destinationPath, 0777, true, true);
                         $filePath = $destinationPath . $fileName;
                         $quality = 70;
                         //$this->imageQuality(Input::file('file'));
                         Image::make(Input::file('file'))->resize($this->imageWidth, $this->imageHeight, function ($constraint) {
                             $constraint->aspectRatio();
                         })->save($destinationPath . $fileName, $quality);
                         $filePathUpdate = '/assets/uploads/useravatar/' . $fileName;
                         $updateData['profile_pic'] = $filePathUpdate;
                         $where = ['rawQuery' => 'id =?', 'bindParams' => [$userId]];
                         $userData = $objUserModel->getUsercredsWhere($where);
                         $updatedResult = $objUserModel->UpdateUserDetailsbyId($where, $updateData);
                         if ($updatedResult) {
                             if ($userData->profile_pic != '') {
                                 File::delete(public_path() . '/../../web/public' . $userData->profile_pic);
                             }
                             $response->code = 200;
                             $response->message = "Successfully updated profile image.";
                             $response->data = $filePathUpdate;
                             echo json_encode($response);
                         } else {
                             $response->code = 400;
                             $response->message = "Something went wrong, please try again.";
                             $response->data = null;
                             echo json_encode($response);
                         }
                     } else {
                         $response->code = 100;
                         $response->message = $validator->messages();
                         $response->data = null;
                         echo json_encode($response);
                     }
                 } else {
                     $response->code = 400;
                     $response->message = "Give correct input and Input Image files should be(jpg,gif,png,jpeg)only";
                     $response->data = null;
                     echo json_encode($response, true);
                 }
             } else {
                 $response->code = 400;
                 $response->message = "You need to login to change Avtar.";
                 $response->data = null;
                 echo json_encode($response, true);
             }
         } else {
             $response->code = 401;
             $response->message = "Access Denied";
             $response->data = null;
             echo json_encode($response, true);
         }
     } else {
         $response->code = 400;
         $response->message = "Request not allowed";
         $response->data = null;
         echo json_encode($response, true);
     }
 }
 public function emailNotifications(Request $request)
 {
     $response = new stdClass();
     if ($request->isMethod('post')) {
         $postData = $request->all();
         $objUserModel = new User();
         $objUsersmetaModel = new Usersmeta();
         $userId = isset($request['user_id']) ? $request['user_id'] : '';
         $authFlag = false;
         if (isset($request['api_token'])) {
             $apiToken = $request['api_token'];
             if ($apiToken == $this->API_TOKEN) {
                 $authFlag = true;
             } else {
                 if ($userId != '') {
                     $where = ['rawQuery' => 'id=?', 'bindParams' => [$userId]];
                     $selectColumn = array('login_token');
                     $userCredentials = $objUserModel->getUsercredsWhere($where, $selectColumn);
                     if ($apiToken == $userCredentials->login_token) {
                         $authFlag = true;
                     }
                 }
             }
         }
         if ($authFlag) {
             $rules = ['notifyBalance' => 'required', 'notifyProfileLikes' => 'required', 'notifyDailySubscription' => "required", 'user_id' => 'required|exists:users,id'];
             $validatePlanId = Validator::make($postData, $rules);
             if (!$validatePlanId->fails()) {
                 $data['notify_bal'] = intval($postData['notifyBalance']);
                 $data['notify_profile_likes'] = intval($postData['notifyProfileLikes']);
                 $data['notify_daily_subscription'] = intval($postData['notifyDailySubscription']);
                 $isUserExistInUsersmeta = $objUsersmetaModel->getUsermetaWhere(['rawQuery' => 'user_id=?', 'bindParams' => [intval($postData['user_id'])]]);
                 $queryResult = '';
                 if ($isUserExistInUsersmeta) {
                     $queryResult = $objUsersmetaModel->updateUsermetaWhere(['rawQuery' => 'user_id=?', 'bindParams' => [intval($postData['user_id'])]], $data);
                 } else {
                     $data['user_id'] = intval($postData['user_id']);
                     $data['account_bal'] = 0.0;
                     $queryResult = $objUsersmetaModel->addUsermeta($data);
                 }
                 if ($queryResult != 2) {
                     $response->code = 200;
                     $response->message = "Email Notification successfully updated";
                     $response->data = $data;
                     echo json_encode($response);
                 } else {
                     $response->code = 204;
                     $response->message = "Something went wrong! please try again after sometime.";
                     $response->data = null;
                     echo json_encode($response);
                 }
             } else {
                 $response->code = 204;
                 $response->message = $validatePlanId->messages();
                 $response->data = null;
                 echo json_encode($response);
             }
         } else {
             $response->code = 401;
             $response->message = "Access Denied";
             $response->data = null;
             echo json_encode($response, true);
         }
     } else {
         $response->code = 400;
         $response->message = "Request not allowed";
         $response->data = null;
         echo json_encode($response, true);
     }
 }
 public function tempajax(Request $request)
 {
     $response = new stdClass();
     if ($request->isMethod('post')) {
         $postData = $request->all();
         $objUserModel = new User();
         $objOrderModel = new Order();
         $userId = isset($postData['user_id']) ? $postData['user_id'] : '';
         $authFlag = false;
         if (isset($postData['api_token'])) {
             $apiToken = $postData['api_token'];
             if ($apiToken == $this->API_TOKEN) {
                 $authFlag = true;
             } else {
                 if ($userId != '') {
                     $where = ['rawQuery' => 'id=?', 'bindParams' => [$userId]];
                     $selectColumn = array('login_token');
                     $userCredentials = $objUserModel->getUsercredsWhere($where, $selectColumn);
                     if ($apiToken == $userCredentials->login_token) {
                         $authFlag = true;
                     }
                 }
             }
         }
         if ($authFlag) {
             $validator = Validator::make($postData, ['user_id' => 'required']);
             if (!$validator->fails()) {
                 $requestParam = json_decode($postData['requestData'], true);
                 $iTotalRecords = $iDisplayLength = intval($requestParam['length']);
                 $iDisplayLength = $iDisplayLength < 0 ? $iTotalRecords : $iDisplayLength;
                 $iDisplayStart = intval($requestParam['start']);
                 $sEcho = intval($requestParam['draw']);
                 $whereOderUserID = ['rawQuery' => 'by_user_id=? and orders.status!=6', 'bindParams' => [$userId]];
                 $data = ['orders.order_id', 'orders.server_order_id', 'orders.ins_url', 'orders.quantity_total', 'orders.price', 'orders.quantity_done', 'orders.status', 'orders.added_time', 'orders.updated_time', 'plans.plan_name', 'plans.supplier_server_id'];
                 //GET TOTAL NUMBER OF NEW ORDERS
                 $iTotalRecords = count($objOrderModel->getOrderHistory($whereOderUserID, $data));
                 $iTotalFilteredRecords = $iTotalRecords;
                 $records = array();
                 $records["data"] = array();
                 $columns = array('orders.order_id', 'plans.plan_name', 'orders.ins_url', 'orders.quantity_total', 'orders.price', 'orders.added_time', 'orders.updated_time', 'orders.status');
                 $sortingOrder = "";
                 if (isset($requestParam['order'])) {
                     $sortingOrder = [$columns[$requestParam['order'][0]['column'] - 1], $requestParam['order'][0]['dir']];
                 }
                 //FIRLTERING START FROM HERE
                 $filteringRules = '';
                 if (isset($requestParam['action']) && $requestParam['action'] == 'filter' && $requestParam['action'][0] != 'filter_cancel') {
                     if ($requestParam['search_order_id'] != '') {
                         $filteringRules[] = "( orders.order_id LIKE '%" . $requestParam['search_order_id'] . "%' )";
                     }
                     if ($requestParam['search_service_type'] != '') {
                         $filteringRules[] = "( plans.plan_name LIKE '%" . $requestParam['search_service_type'] . "%' )";
                     }
                     if ($requestParam['search_link'] != '') {
                         $filteringRules[] = "( orders.ins_url LIKE '%" . $requestParam['search_link'] . "%' )";
                     }
                     if ($requestParam['search_amount'] != '') {
                         $filteringRules[] = "( orders.quantity_total LIKE '%" . $requestParam['search_amount'] . "%' )";
                     }
                     if ($requestParam['search_price'] != '') {
                         $filteringRules[] = "( orders.price LIKE '%" . $requestParam['search_price'] . "%' )";
                     }
                     if ($requestParam['search_status'] != '') {
                         $filteringRules[] = "( orders.status LIKE '%" . $requestParam['search_status'] . "%' )";
                     }
                     if (!empty($filteringRules)) {
                         $whereOderUserID['rawQuery'] .= " AND " . implode(" AND ", $filteringRules);
                         $iTotalFilteredRecords = count($objOrderModel->getOrderHistory($whereOderUserID, $data));
                     }
                 }
                 $ordersResult = $objOrderModel->getAllOrders($whereOderUserID, $sortingOrder, $iDisplayStart, $iDisplayLength);
                 $records['data'] = $ordersResult;
                 $records["draw"] = $sEcho;
                 $records["recordsTotal"] = $iTotalRecords;
                 $records["recordsFiltered"] = $iTotalFilteredRecords;
                 if ($ordersResult) {
                     foreach ($ordersResult as $order) {
                         $order->added_time = $this->getDateDifference($order->added_time);
                         $order->updated_time = $this->getDateDifference($order->updated_time);
                     }
                     $response->code = 200;
                     $response->message = "Success";
                     $response->data = $records;
                     echo json_encode($response, true);
                 } else {
                     $response->code = 401;
                     $response->message = "Error in connection please try again.";
                     $response->data = null;
                     echo json_encode($response, true);
                 }
             } else {
                 $response->code = 401;
                 $response->message = $validator->messages();
                 $response->data = null;
                 echo json_encode($response, true);
             }
         } else {
             $response->code = 401;
             $response->message = "Access Denied";
             $response->data = null;
             echo json_encode($response, true);
         }
     } else {
         $response->code = 400;
         $response->message = "Request not allowed";
         $response->data = null;
         echo json_encode($response, true);
     }
 }
 function login(Request $request)
 {
     $response = new stdClass();
     if ($request->isMethod("POST")) {
         $postData = $request->all();
         $apiToken = "";
         if (isset($postData['api_token'])) {
             $apiToken = $postData['api_token'];
         }
         if ($apiToken == $this->API_TOKEN) {
             $rules = array('emailOrUsername' => 'required', 'password' => 'required');
             $messages = ['emailOrUsername.required' => 'Please enter email address or username ', 'password.required' => 'Please enter a password'];
             $validator = Validator::make($request->all(), $rules, $messages);
             if (!$validator->fails()) {
                 $objUserModel = new User();
                 $objUsermetaModel = new Usersmeta();
                 $username = $postData['emailOrUsername'];
                 $password = $postData['password'];
                 $field = 'username';
                 if (strpos($username, '@') !== false) {
                     $field = 'email';
                 }
                 if (Auth::attempt([$field => $username, 'password' => $password])) {
                     $whereForUser = ['rawQuery' => 'id =?', 'bindParams' => [Auth::id()]];
                     $userDetails = $objUserModel->getUsercredsWhere($whereForUser);
                     $whereForUsermeta = ['rawQuery' => 'user_id =?', 'bindParams' => [Auth::id()]];
                     //check if user id is exist in usersmeta if not then insert data in usersmeta table.
                     $isUserAvailable = $objUsermetaModel->getUsermetaWhere($whereForUsermeta, ['account_bal', 'notify_bal', 'notify_profile_likes', 'notify_daily_subscription']);
                     if (!isset($isUserAvailable->account_bal)) {
                         $addUsermeta = $objUsermetaModel->addUsermeta(['user_id' => Auth::id(), 'account_bal' => 0]);
                     } else {
                         $userDetails->account_bal = $isUserAvailable->account_bal;
                         $userDetails->notify_bal = $isUserAvailable->notify_bal;
                         $userDetails->notify_profile_likes = $isUserAvailable->notify_profile_likes;
                         $userDetails->notify_daily_subscription = $isUserAvailable->notify_daily_subscription;
                     }
                     if ($userDetails->status == 1) {
                         if (isset($postData['device_id']) && $postData['device_id'] != "") {
                             $data['device_id'] = $postData['device_id'];
                             $string = $userDetails->id . $postData['device_id'] . $this->API_TOKEN;
                             $token = hash('sha256', $string);
                             $data['login_token'] = $token;
                             $id = $userDetails->id;
                             $whereForUpdate = ['rawQuery' => 'id =?', 'bindParams' => [$id]];
                             $objUserModel->UpdateUserDetailsbyId($whereForUpdate, $data);
                             $userDetails->login_token = $token;
                             $userDetails->device_id = $postData['device_id'];
                         }
                         //                            dd($userDetails);
                         // update the user timezone in user table
                         if (isset($postData['user_timezone'])) {
                             $whereForUpdate = ['rawQuery' => 'id =?', 'bindParams' => [$userDetails->id]];
                             $data['user_timezone'] = $postData['user_timezone'];
                             $queryResult = $objUserModel->UpdateUserDetailsbyId($whereForUpdate, $data);
                         }
                         $response->code = 200;
                         $response->message = "Login successful.";
                         $response->data = $userDetails;
                         echo json_encode($response, true);
                     } else {
                         if ($userDetails->status == 0) {
                             $response->code = 400;
                             $response->message = " Your account is currently pending approval by the site administrator";
                             $response->data = null;
                             echo json_encode($response, true);
                         } else {
                             if ($userDetails->status == 2) {
                                 $response->message = 'This account has not been activated.';
                                 $response->code = 400;
                                 $response->data = null;
                                 echo json_encode($response, true);
                             } else {
                                 if ($userDetails->status == 3) {
                                     $response->message = ' Your account is currently rejected by the site administrator.';
                                     $response->code = 400;
                                     $response->data = null;
                                     echo json_encode($response, true);
                                 } else {
                                     if ($userDetails->status == 4) {
                                         $response->message = 'This account has been deleted.';
                                         $response->code = 400;
                                         $response->data = null;
                                         echo json_encode($response, true);
                                     }
                                 }
                             }
                         }
                     }
                 } else {
                     $response->message = 'Invalid login Credentials';
                     $response->code = 400;
                     $response->data = null;
                     echo json_encode($response, true);
                 }
             } else {
                 $response->code = 100;
                 $response->message = $validator->messages();
                 echo json_encode($response, true);
             }
         } else {
             $response->code = 401;
             $response->message = "Access Denied";
             $response->data = null;
             echo json_encode($response, true);
         }
     } else {
         $response->code = 401;
         $response->message = "Request Not allowed";
         $response->data = null;
         echo json_encode($response);
     }
 }