| Server IP : 121.121.20.254 / Your IP : 216.73.216.202 Web Server : Microsoft-IIS/10.0 System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64 User : IUSR ( 0) PHP Version : 8.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /inetpub/wwwroot/OPENPOSLITE/wp-content/plugins/wpos-lite-version/includes/api/ |
Upload File : |
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
if(!class_exists('OP_REST_API_Table'))
{
class OP_REST_API_Table extends OP_REST_API{
public function register_routes() {
register_rest_route( $this->namespace, '/table/tables', array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array($this,'tables'),
'permission_callback' => array($this,'permission_callback'),
)
);
register_rest_route( $this->namespace, '/table/takeaways', array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array($this,'takeaways'),
'permission_callback' => array($this,'permission_callback'),
)
);
register_rest_route( $this->namespace, '/table/upload-table', array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array($this,'upload_table'),
'permission_callback' => array($this,'permission_callback'),
)
);
register_rest_route( $this->namespace, '/table/get', array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array($this,'pull_table'),
'permission_callback' => array($this,'permission_callback'),
)
);
register_rest_route( $this->namespace, '/table/clean-table', array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array($this,'clean_table'),
'permission_callback' => array($this,'permission_callback'),
)
);
register_rest_route( $this->namespace, '/table/remove-takeaway', array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array($this,'remove_takeaway'),
'permission_callback' => array($this,'permission_callback'),
)
);
register_rest_route( $this->namespace, '/table/messages', array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array($this,'pull_messages'),
'permission_callback' => array($this,'permission_callback'),
)
);
register_rest_route( $this->namespace, '/table/delete-message', array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array($this,'delete_message'),
'permission_callback' => array($this,'permission_callback'),
)
);
register_rest_route( $this->namespace, '/table/send-message', array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array($this,'send_message'),
'permission_callback' => array($this,'permission_callback'),
)
);
}
public function tables(WP_REST_Request $request = null){
$result = array(
'code' =>'unknown_error',
'response' => array(
'status' => 0,
'data' => array(),
'message' => ''
),
'api_message' => ''
);
try{
$desk_ids = $request->get_param('desk_ids') ? json_decode($request->get_param('desk_ids'),true) : array();
if(empty($desk_ids))
{
throw new Exception('Desk Not found');
}
foreach($desk_ids as $desk_id)
{
$desk_data = $this->table_class->bill_screen_data($desk_id);
$items = isset($desk_data['items']) ? $desk_data['items'] : array();
$version = isset($desk_data['ver']) ? $desk_data['ver'] : 0;
$sys_version = isset($desk_data['system_ver']) ? $desk_data['system_ver'] : 0;
$start_time = isset($desk_data['start_time']) ? $desk_data['start_time'] : 0;
$parent = isset($desk_data['parent']) ? $desk_data['parent'] : 0;
$child_desks = isset($desk_data['child_desks']) ? $desk_data['child_desks'] : [];
$seller = isset($desk_data['seller']) ? $desk_data['seller'] : null;
$fee_item = isset($desk_data['fee_item']) ? $desk_data['fee_item'] : null;
if(!isset($seller['id']))
{
$seller = null;
}
$note = isset($desk_data['note']) ? $desk_data['note'] : '';
$customer = isset($desk_data['customer']) ? $desk_data['customer'] : null;
$result_data = array(
'items' => $items,
'version' => $version,
'system_ver' => $sys_version,
'start_time' => $start_time,
'parent' => $parent,
'child_desks' => $child_desks,
'seller' => $seller,
'note' => $note,
'customer' => $customer,
'fee_item' => $fee_item,
);
$result['response']['data'][$desk_id] = apply_filters('op_pull_desk_data',$result_data,$desk_data);
}
$result['code'] = 200;
$result['response']['status'] = 1;
}catch(Exception $e)
{
$result['code'] = 400;
$result['response']['status'] = 0;
$result['response']['message'] = $e->getMessage();
}
return $this->rest_ensure_response($result);
}
public function takeaways(WP_REST_Request $request = null){
$result = array(
'code' =>'unknown_error',
'response' => array(
'status' => 0,
'data' => array(),
'message' => ''
),
'api_message' => ''
);
try{
$desk_ids = $request->get_param('desk_ids') ? json_decode($request->get_param('desk_ids'),true) : array();
if(!is_array($desk_ids))
{
$desk_ids = array();
}
$warehouse_id = $this->session_data['login_warehouse_id'];
$list = $this->table_class->takeawayJsonTables($warehouse_id,$desk_ids);
$result['response']['data'] = $list;
$result['code'] = 200;
$result['response']['status'] = 1;
}catch(Exception $e)
{
$result['code'] = 400;
$result['response']['status'] = 0;
$result['response']['message'] = $e->getMessage();
}
return $this->rest_ensure_response($result);
}
public function upload_table(WP_REST_Request $request = null){
$result = array(
'code' =>'unknown_error',
'response' => array(
'status' => 0,
'data' => array(),
'message' => ''
),
'api_message' => ''
);
try{
$tables =json_decode($request->get_param('tables'),true);
$is_force = $request->get_param('fore_update') == 'yes' ? true : false;
$session_data = $this->session_data;
do_action('op_upload_desk_before',$tables,$session_data);
$_tables = array();
$_old_tables = array();
if($session_data)
{
$warehouse_id = $session_data['login_warehouse_id'];
//save to table data
foreach($tables as $table_id => $table)
{
$desk_type = $this->table_class->getDeskType($table);
//old data
if(strpos($table_id,'desk') !== false )
{
$_table_id = str_replace('desk-','',$table_id);
$_old_tables[$table_id] = $this->table_class->bill_screen_data($_table_id);
}
if(strpos($table_id,'takeaway') !== false )
{
$_table_id = str_replace('takeaway-','',$table_id);
$_old_tables[$table_id] = $this->table_class->bill_screen_data($_table_id,'takeaway');
}
//end old data
if($desk_type == 'guest_takeaway')
{
$table_id = 'takeaway-'.$table['desk']['id'];
if($this->table_class->isDeletedGuestTakeay($table_id,$warehouse_id))
{
throw new Exception(__('Your order has been deleted. Please scan order QRcode and try again.','wpos-lite'));
}
}
if(strpos($table_id,'takeaway') !== false )
{
$this->table_class->removed_deleted_markup($warehouse_id,$table_id);
}
$_tables[$table_id] = $table;
}
}
do_action('op_upload_desk_after',$_tables,$this->table_class,$tables,$_old_tables,$session_data);
$result['response']['data'] = $this->table_class->update_bill_screen($_tables,$is_force);
$result['response']['status'] = 1;
$result['code'] = 200;
}catch(Exception $e)
{
$result['code'] = 400;
$result['response']['status'] = 0;
$result['response']['message'] = $e->getMessage();
}
return $this->rest_ensure_response($result);
}
public function upload_takeaway(WP_REST_Request $request = null){
$result = array(
'code' =>'unknown_error',
'data' => array(
'status' => 0,
'result' => array(),
),
'message' => ''
);
try{
$takeaway_id = $request->get_param('takeaway_id');
if(!$takeaway_id)
{
throw new Exception(__('Takeaway not found','wpos-lite'));
}
$register = isset($this->session_data['register']) ? $this->session_data['register'] : [];
if(!isset($register['id']))
{
throw new Exception(__('Register not found','wpos-lite'));
}
$warehouse_id = $register['outlet_id'];
$raw_json = $request->get_body();
$by_data = json_decode($raw_json, true);
if(!$by_data)
{
throw new Exception(__('Please enter table data','wpos-lite'));
}
$_tables = array(
'takeaway-'.$takeaway_id = $by_data
);
$result['data']['result'] = $this->table_class->update_bill_screen($_tables,true);
$result['data']['status'] = 1;
$result['code'] = 200;
}catch(Exception $e)
{
$result['code'] = 400;
$result['data']['status'] = 0;
$result['message'] = $e->getMessage();
}
return $this->rest_ensure_response($result);
}
public function clean_table(WP_REST_Request $request = null){
$result = array(
'code' =>'unknown_error',
'data' => array(
'status' => 0,
'result' => array(),
),
'message' => ''
);
try{
$table_id = $request->get_param('table_id');
if(!$table_id)
{
throw new Exception(__('Table not found','wpos-lite'));
}
$result['data']['status'] = 1;
$result['code'] = 200;
}catch(Exception $e)
{
$result['code'] = 400;
$result['data']['status'] = 0;
$result['message'] = $e->getMessage();
}
return $this->rest_ensure_response($result);
}
public function remove_takeaway(WP_REST_Request $request = null){
$result = array(
'code' =>'unknown_error',
'response' => array(
'status' => 0,
'data' => array(),
'message' => ''
),
'api_message' => ''
);
try{
$takeaway_id = $request->get_param('desk_number') ? trim($request->get_param('desk_number'),'#') : 0;
$force = $request->get_param('force_remove') == 'yes' ? true : false;
if(!$takeaway_id)
{
throw new Exception( __('Takeaway Not found','wpos-lite') );
}
$allow = apply_filters('op_allow_remove_takeaway',true,$takeaway_id);
if($allow)
{
$this->table_class->removeJsonTable($takeaway_id,$force);
$result['response']['status'] = 1;
}else{
throw new Exception( __('You do not allow remove this','wpos-lite') );
}
$result['code'] = 200;
}catch(Exception $e)
{
$result['code'] = 400;
$result['response']['status'] = 0;
$result['response']['message'] = $e->getMessage();
}
return $this->rest_ensure_response($result);
}
public function pull_table($request){
$result = array(
'code' =>'unknown_error',
'response' => array(
'status' => 0,
'data' => array(),
'message' => ''
),
'api_message' => ''
);
try{
$desk_id = $request->get_param('desk_id') ? trim($request->get_param('desk_id'),'#') : 0;
if(!$desk_id)
{
throw new Exception('Desk Not found');
}
if(strpos($desk_id,'takeaway-') === 0)
{
$desk_data = $this->table_class->bill_screen_data($desk_id);
$result_data = $desk_data;
}else{
$desk_data = $this->table_class->bill_screen_data($desk_id);
$items = isset($desk_data['items']) ? $desk_data['items'] : array();
$version = isset($desk_data['ver']) ? $desk_data['ver'] : 0;
$system_ver = isset($desk_data['system_ver']) ? $desk_data['system_ver'] : 0;
$start_time = isset($desk_data['start_time']) ? $desk_data['start_time'] : 0;
$seller = isset($desk_data['seller']) ? $desk_data['seller'] : null;
$fee_item = isset($desk_data['fee_item']) ? $desk_data['fee_item'] : null;
$parent = isset($desk_data['parent']) ? $desk_data['parent'] : 0;
$child_desks = isset($desk_data['child_desks']) ? $desk_data['child_desks'] : [];
if(!isset($seller['id']))
{
$seller = null;
}
$note = isset($desk_data['note']) ? $desk_data['note'] : '';
$customer = isset($desk_data['customer']) ? $desk_data['customer'] : null;
$result_data = array(
'items' => $items,
'version' => $version,
'system_ver' => $system_ver,
'start_time' => $start_time,
'parent' => $parent,
'child_desks' => $child_desks,
'seller' => $seller,
'note' => $note,
'customer' => $customer,
'fee_item' => $fee_item,
);
}
$result['response']['data'] = apply_filters('op_pull_desk_data',$result_data,$desk_data);
$result['response']['status'] = 1;
$result['code'] = 200;
}catch(Exception $e)
{
$result['code'] = 400;
$result['response']['status'] = 0;
$result['response']['message'] = $e->getMessage();
}
return $this->rest_ensure_response($result);
}
public function pull_messages($request){
$result = array(
'code' =>'unknown_error',
'response' => array(
'status' => 0,
'data' => array(),
'message' => ''
),
'api_message' => ''
);
try{
$time_stamp = $request->get_param('time_stamp') ? $request->get_param('time_stamp') : 0;
$client_time_offset = $request->get_param('client_time_offset');
$session_data = $this->session_data;
if(!empty($session_data))
{
$warehouse_id = isset($session_data['login_warehouse_id']) ? $session_data['login_warehouse_id'] : -1;
if($warehouse_id >= 0)
{
$tables = $this->table_class->tables($warehouse_id);
$messages = array();
foreach($tables as $table)
{
$table_id = $table['id'];
$_messages = $this->table_class->getMessages($table_id);
foreach($_messages as $k => $v)
{
$messages[$k] = $v;
}
}
krsort($messages);
if(!empty($messages))
{
$result['status'] = 1;
$result['data'] = $messages;
}
}
}
$result['response']['status'] = 1;
$result['code'] = 200;
}catch(Exception $e)
{
$result['code'] = 400;
$result['response']['status'] = 0;
$result['response']['message'] = $e->getMessage();
}
return $this->rest_ensure_response($result);
}
public function send_message($request){
$result = array(
'code' =>'unknown_error',
'response' => array(
'status' => 0,
'data' => array(),
'message' => ''
),
'api_message' => ''
);
try{
$time_stamp = $request->get_param('time_stamp') ? $request->get_param('time_stamp') : 0;
$client_time_offset = $request->get_param('client_time_offset');
$session_data = $this->session_data;
if(!empty($session_data))
{
$data_request = $request->get_param('data_request') ? json_decode($request->get_param('data_request'),true) : array();
if(isset($data_request['messages']) && !empty($data_request['messages']))
{
$desk = $data_request['desk'];
if($desk && isset($desk['id']))
{
$messages = array();
foreach($data_request['messages'] as $time => $m)
{
$utc_time = $time_stamp ;//+ ($client_time_offset * 60 * 1000);
$messages[$utc_time] = $m;
}
if($this->table_class->addMessage($desk['id'],$data_request['messages']))
{
$result['response']['status'] = 1;
$result['response']['message'] = __('Your request has been sent to our waiter. Please wait.','wpos-lite');
}else{
$result['response']['message'] = __('All by waiter is busy. Pls try later','wpos-lite');
}
}
}
}
$result['code'] = 200;
}catch(Exception $e)
{
$result['code'] = 400;
$result['response']['status'] = 0;
$result['response']['message'] = $e->getMessage();
}
return $this->rest_ensure_response($result);
}
public function delete_message($request){
$result = array(
'code' =>'unknown_error',
'response' => array(
'status' => 0,
'data' => array(),
'message' => ''
),
'api_message' => ''
);
try{
$session_data = $this->session_data;
if(!empty($session_data))
{
$time_stamp = $request->get_param('time_stamp') ? $request->get_param('time_stamp') : 0;
$client_time_offset = $request->get_param('client_time_offset');
$warehouse_id = isset($session_data['login_warehouse_id']) ? $session_data['login_warehouse_id'] : -1;
if($warehouse_id >= 0)
{
$tables = $this->table_class->tables($warehouse_id);
foreach($tables as $table)
{
$table_id = $table['id'];
if($this->table_class->clearMessages($table_id))
{
$result['response']['status'] = 1;
$result['response']['message'] = __('Deleted.','wpos-lite');
}
}
}
}
$result['code'] = 200;
}catch(Exception $e)
{
$result['code'] = 400;
$result['response']['status'] = 0;
$result['response']['message'] = $e->getMessage();
}
return $this->rest_ensure_response($result);
}
}
}