Beta version ready: Fresh template. Loadmore functionality complete.

This commit is contained in:
abhishek_almighty 2018-05-17 19:34:46 +05:30
parent d518e6a60f
commit 353923dc01
37 changed files with 1846 additions and 66 deletions

3
.gitignore vendored
View File

@ -1,3 +1,4 @@
vendor/
.idea/
includes/config.php
includes/config.php
temp.php

21
.htaccess Normal file
View File

@ -0,0 +1,21 @@
Options +FollowSymLinks -Multiviews
<IfModule mod_rewrite.c>
SetEnv HTTP_MOD_REWRITE On
RewriteEngine on
IndexIgnore *
Options +MultiViews
ErrorDocument 404 /pageNotFound.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^My_Messages$ view_all_messages.php [NC,L]
RewriteRule ^My_Orders$ view_all_my_orders_list.php [NC,L]
RewriteRule ^My_Transactions$ view_all_my_transactions.php [NC,L]
RewriteRule ^Recent_Transactions$ view_all_recent_transactions.php [NC,L]
RewriteRule ^traders$ view_all_traders_list.php [NC,L]
</IfModule>

26
ajax/MyMessagesTotal.php Normal file
View File

@ -0,0 +1,26 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 9/27/2017
* Time: 5:21 PM
*/
require_once '../includes/imp_files.php';
if (!checkLoginStatus()) {
return false;
}
if(isset($_POST['job']) && $_POST['job'] == 'total_my_messages') {
if (isset($UserClass, $OrderClass, $user_id)) {
$validate_user = $UserClass->check_user($user_id);
if($validate_user == "" || empty($validate_user)) {
return false;
}
echo $total_my_orders = (int) $OrderClass->total_my_messages();
}
}

27
ajax/MyOrdersTotal.php Normal file
View File

@ -0,0 +1,27 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 9/27/2017
* Time: 5:21 PM
*/
require_once '../includes/imp_files.php';
if (!checkLoginStatus()) {
return false;
}
if(isset($_POST['job']) && $_POST['job'] == 'total_my_orders') {
if (isset($UserClass, $OrderClass, $user_id)) {
$validate_user = $UserClass->check_user($user_id);
if($validate_user == "" || empty($validate_user)) {
return false;
}
echo $total_my_orders = (int) $OrderClass->total_my_orders();
}
}

21
ajax/check_new_orders.php Normal file
View File

@ -0,0 +1,21 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 5/16/2018
* Time: 2:26 PM
*/
require_once '../includes/imp_files.php';
if (!checkLoginStatus()) {
return false;
}
$last_trade_date = $_SESSION['last_trade_date'];
$lod = $OrderClass->get_last_order_date($last_trade_date);
if ($lod) {
$_SESSION['last_trade_date'] = $UserClass->time_now();
}
echo $lod;

View File

@ -1,8 +1,8 @@
<?php
require_once '../includes/imp_files.php';
if (isset($_POST['task'], $_POST['bc2']) && trim($_POST['task']=='current_prices')) {
$bc2 = isset($_POST['bc2']) ? $_POST['bc2'] : RMT;
if (isset($_POST['task']) && trim($_POST['task']=='current_prices')) {
$bc2 = isset($_POST['bc2']) ? $_POST['bc2'] : null;
$std = new stdClass();
$std->bc = array();

34
ajax/delOrder.php Normal file
View File

@ -0,0 +1,34 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 10/7/2017
* Time: 11:07 AM
*/
require_once '../includes/imp_files.php';
if (!checkLoginStatus()) {
return false;
}
if (isset($_POST['task'], $_POST['id']) && trim($_POST['task'])=="delOrder") {
$del_id = extract_int($_POST['id']);
if (isset($OrderClass, $UserClass, $user_id)) {
$validate_user = $UserClass->check_user($user_id);
if($validate_user == "" || empty($validate_user)) {
return false;
}
$del_order = $OrderClass->del_order($del_id);
if ($del_order) {
echo true;
}
}
return false;
}

View File

@ -0,0 +1,42 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 10/6/2017
* Time: 7:09 PM
*/
require_once '../includes/imp_files.php';
if (!checkLoginStatus()) {
return false;
}
if(isset($_POST['req']) && $_POST['req'] == 'loadMoreMyMessages') {
if (isset($UserClass, $OrderClass, $user_id)) {
$validate_user = $UserClass->check_user($user_id);
if($validate_user == "" || empty($validate_user)) {
return false;
}
$std = new stdClass();
$std->msg = array();
$std->error = true;
if (isset($_POST['records_per_page'], $_POST['start'])) {
$start = (int) $_POST['start'];
$records = (int) $_POST['records_per_page'];
$megs = $UserClass->list_messages_by_userId($user_id, $start, $records);
if (is_array($megs) && !empty($megs)) {
$std->msg = $megs;
$std->error = false;
}
}
echo json_encode($std);
}
}

88
ajax/loadMoreMyOrders.php Normal file
View File

@ -0,0 +1,88 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 10/6/2017
* Time: 7:09 PM
*/
require_once '../includes/imp_files.php';
if (!checkLoginStatus()) {
return false;
}
if(isset($_POST['req']) && $_POST['req'] == 'loadMoreMyOrders') {
if (isset($UserClass, $OrderClass, $user_id)) {
$validate_user = $UserClass->check_user($user_id);
if($validate_user == "" || empty($validate_user)) {
return false;
}
if (isset($_POST['records_per_page'], $_POST['start'])) {
$start = (int) $_POST['start'];
$records = (int) $_POST['records_per_page'];
$iter = "";
if (isset($OrderClass, $user_id)) {
$myOrders = $OrderClass->UserOrdersList($user_id, $start, $records);
if (is_array($myOrders) && !empty($myOrders)) {
foreach($myOrders as $myOrder):
switch ($myOrder->status) {
case '0':
$status = 'Cancelled';
break;
case '1':
$status = 'Successful';
break;
case '2':
$status = 'Pending';
break;
case '3':
$status = 'Pending';
break;
default:
$status = 'Pending';
}
if($myOrder->status == '1') {
$status = 'Successful';
} else if ($myOrder->status == '2') {
$status = 'Pending';
} else if ($myOrder->status == '3'){
$status = 'Pending';
}
if($myOrder->order_type == '1') {
$OrderType = 'Sell';
} elseif($myOrder->order_type == '0') {
$OrderType = 'Buy';
}
$iter .= "<tr>";
$iter .= "<td>$myOrder->price</td>";
$iter .= "<td>$myOrder->qty</td>";
$iter .= "<td>";
if(trim($status) == 'Pending') {
$iter .= "<button class='btn-danger del_order' id='del_$myOrder->id'>Cancel</button>";
}
$iter .= "</td>";
$iter .= "<td>$myOrder->offer_asset</td>";
$iter .= "<td>$myOrder->want_asset</td>";
$iter .= "<td>$status</td>";
$iter .= "<td>".date('d M, Y h:i:sa', strtotime($myOrder->insert_dt))."</td>";
$iter .= "</tr>";
endforeach;
}
}
echo $iter;
}
}
}

View File

@ -0,0 +1,33 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 10/6/2017
* Time: 7:09 PM
*/
require_once '../includes/imp_files.php';
if(isset($_POST['req']) && $_POST['req'] == 'loadMoreRecentTransactions') {
if (isset($UserClass, $OrderClass)) {
$std = new stdClass();
$std->msg = array();
$std->error = true;
if (isset($_POST['records_per_page'], $_POST['start'])) {
$start = (int) $_POST['start'];
$records = (int) $_POST['records_per_page'];
$megs = $OrderClass->last_transaction_list($start, $records);
if (is_array($megs) && !empty($megs)) {
$std->trade_list = $megs;
$std->error = false;
}
}
echo json_encode($std);
}
}

32
ajax/myMessages.php Normal file
View File

@ -0,0 +1,32 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 10/5/2017
* Time: 10:44 AM
*/
require_once '../includes/imp_files.php';
if (!checkLoginStatus()) {
return false;
}
if (isset($_POST['task']) && $_POST['task']=='loadMyMessagesList') {
if (isset($UserClass, $OrderClass, $user_id) && $UserClass!=null && $OrderClass!=null) {
$std = new stdClass();
$std->msg = null;
$std->error = true;
$my_messages = $UserClass->list_messages_by_userId($user_id, 0, 10);
if (is_array($my_messages) && !empty($my_messages)) {
$std->msg = $my_messages;
$std->error = false;
}
echo json_encode($std);
}
}

View File

@ -0,0 +1,17 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 9/27/2017
* Time: 5:21 PM
*/
require_once '../includes/imp_files.php';
if(isset($_POST['job']) && $_POST['job'] == 'total_recent_transactions') {
if (isset($UserClass, $OrderClass)) {
echo $total_my_orders = (int) $OrderClass->total_recent_transactions();
}
}

46
ajax/rm_root.php Normal file
View File

@ -0,0 +1,46 @@
<?php
require_once '../includes/imp_files.php';
if (!checkLoginStatus()) {
return false;
}
if (isset($_SESSION['fb_id'], $_SESSION['user_id'], $_SESSION['user_name'])) {
$root_fb = (int) $_SESSION['fb_id'];
$root_user_id = (int) $_SESSION['user_id'];
$root_user_name = (string) $_SESSION['user_name'];
if ($root_fb != ADMIN_FB_ID && $root_user_id != ADMIN_ID && $root_user_name != ADMIN_UNAME) {
redirect_to("index.php");
}
if (isset($_POST['task'], $_POST['btn_id']) && trim($_POST['task']=="act_user")) {
$u_id = explode('_', trim($_POST['btn_id']));
$u_id_int = extract_int($u_id[1]);
$u_id_str = (string) trim($u_id[0]);
$act = "";
if ($u_id_str == "off") {
$act = "0";
} else if($u_id_str == "on") {
$act = "1";
} else {
return false;
}
if (isset($OrderClass, $UserClass)) {
if ($u_id_str == "off") {
$del_ord = $OrderClass->delete_orders_of_user($u_id_int);
}
$act_user = $UserClass->actions_user($u_id_int, $act);
if ($act_user) {
echo $u_id_str;
}
}
return false;
}
}

View File

@ -18,7 +18,7 @@ if (isset($_POST['task'], $_POST['bc2']) && trim($_POST['task'])=='loadTradersLi
if (isset($OrderClass)) {
$tradersList = $OrderClass->UserBalanceList($bc2);
$tradersList = $OrderClass->UserBalanceList($bc2, 1);
if (is_array($tradersList) && !empty($tradersList)) {
$std->traders_list = $tradersList;
$std->error = false;

133
ajax/transfer_tokens.php Normal file
View File

@ -0,0 +1,133 @@
<?php
require_once '../includes/imp_files.php';
if (!checkLoginStatus()) {
return false;
}
if (isset($_POST['job']) && trim($_POST['job']) == "transfer_tokens") {
if (isset($_POST['_from'], $_POST['_to'], $_POST['_tokens'], $_POST['_bc2'])) {
$from = (int) $_POST['_from'];
$to = (int) $_POST['_to'];
$bc2 = trim($_POST['_bc2']);
$tokens = number_format((float)$_POST['_tokens'], 10);
$std = new stdClass();
$std->mesg = array();
$std->error = true;
if ($from==$to) {
$mess = "Sender and receiver cannot be same.";
$std->error = true;
$std->mesg[] = $mess;
echo json_encode($std);
return false;
}
if ($bc2==""||$bc2==null) {
$mess = "Please choose a Blockchain contract from second dropdown.";
$std->error = true;
$std->mesg[] = $mess;
echo json_encode($std);
return false;
}
$validate_user_from = $UserClass->check_user($from);
$validate_user_to = $UserClass->check_user($to);
if($validate_user_from == "" || empty($validate_user_from) || $validate_user_to == "" || empty($validate_user_to)) {
$mess = "No such user exist. Please re-check user ids.";
$std->error = true;
$std->mesg[] = $mess;
//$OrderClass->storeMessagesPublic(null, $user_id, $mess);
echo json_encode($std);
return false;
}
$customer_bal_fr = (float) $OrderClass->check_customer_balance($bc2, $from)->balance;
$customer_bal_to = (float) $OrderClass->check_customer_balance($bc2, $to)->balance;
if ($tokens > $customer_bal_fr) {
$mess = "Admin Token Transfer: The user has insufficient balance to make this ".$bc2." units transfer. His current Token balance is $customer_bal_fr ".$bc2.".";
$std->error = true;
$std->mesg[] = $mess;
echo json_encode($std);
$OrderClass->storeMessagesPublic(null, $from, $mess);
return false;
}
if ($tokens < 0.0000000001) {
$mess = "Admin Token Transfer: Please provide minimum amount of 0.0000000001 BC units!";
$OrderClass->storeMessagesPublic(null, $from, $mess);
$std->mesg[] = $mess;
echo json_encode($std);
return false;
}
// Check order in sell table
$user_active_orders = $OrderClass->get_active_order_of_user($from, $bc2, TOP_SELLS_TABLE);
$frozen_bal_sells = 0;
$allowed_bid_amount = $customer_bal_fr;
if (is_array($user_active_orders) && !empty($user_active_orders)) {
foreach ($user_active_orders as $uao) {
$frozen_bal_sells += (float) $uao->quantity;
}
$allowed_bid_amount = $customer_bal_fr - $frozen_bal_sells;
$ext_st = "The user can transfer up to $bc2 $allowed_bid_amount only.";
if ($allowed_bid_amount == 0) {
$ext_st = "The user doesn't have any $bc2 to transfer.";
}
$msss = "The user has requested to transfer $frozen_bal_sells $bc2. $ext_st Please cancel it or reduce your transfer amount.";
}
if ((float)$frozen_bal_sells + (float)$tokens > $customer_bal_fr) {
$OrderClass->storeMessagesPublic(null, $from, $msss);
$std->error = true;
$std->mesg[] = $msss;
echo json_encode($std);
return false;
}
/*Finally, transfer the tokens*/
$new_from_bal = $customer_bal_fr - $tokens;
$new_to_bal = (float)$customer_bal_to + (float)$tokens;
// Decrease tokens of 'from'
$update_bal_fr = $OrderClass->update_user_balance($bc2, $new_from_bal, $from);
// Increase tokens of 'to'
$update_bal_to = $OrderClass->update_user_balance($bc2, $new_to_bal, $to);
// Record the balance transfers or errors
if (!$update_bal_fr) {
$msss = "Failed to update Sender's balance.";
$std->error = true;
$std->mesg[] = $msss;
$OrderClass->storeMessagesPublic(null, ADMIN_ID, $msss);
echo json_encode($std);
return false;
} else if(!$update_bal_to) {
$msss = "Failed to update Receiver's balance.";
$std->error = true;
$std->mesg[] = $msss;
$OrderClass->storeMessagesPublic(null, ADMIN_ID, $msss);
echo json_encode($std);
return false;
} else {
$OrderClass->record_root_bal_update($from, $customer_bal_fr, $new_from_bal, $bc2);
$OrderClass->record_root_bal_update($to, $customer_bal_to, $new_to_bal, $bc2);
$msss = "$bc2 transfer for user id ".$from." and ".$to." was processed successfully.";
$mess1 = "Your ".$tokens." $bc2 were transferred by Admin to user ".$to.".";
$mess2 = "You received ".$tokens." $bc2 from user ".$from." transferred by Admin.";
$std->error = false;
$std->mesg[] = $msss;
$OrderClass->storeMessagesPublic(null, ADMIN_ID, $msss);
$OrderClass->storeMessagesPublic(null, $from, $mess1);
$OrderClass->storeMessagesPublic(null, $to, $mess2);
echo json_encode($std);
return true;
}
}
}

96
ajax/update_bc_bal.php Normal file
View File

@ -0,0 +1,96 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 5/16/2018
* Time: 5:56 PM
*/
require_once '../includes/imp_files.php';
if (!checkLoginStatus()) {
return false;
}
if (isset($_POST['job']) && trim($_POST['job']) == "update-user-bc-balance") {
if (isset($_POST['bc_bal_updt'], $_POST['cus_id'], $_POST['_bc2'])) {
$cus_id = (int)$_POST['cus_id'];
$bc2 = trim($_POST['_bc2']);
$balance = number_format((float)$_POST['bc_bal_updt'], 10);
$std = new stdClass();
$std->mesg = array();
$std->error = true;
if ($bc2==""||$bc2==null) {
$mess = "Please choose a Blockchain contract from second dropdown.";
$std->error = true;
$std->mesg[] = $mess;
echo json_encode($std);
return false;
}
$validate_user = $UserClass->check_user($cus_id);
if($validate_user == "" || empty($validate_user)) {
$mess = "No such user exist. Please re-check user ids.";
$std->error = true;
$std->mesg[] = $mess;
echo json_encode($std);
return false;
}
if ($balance < 0) {
$mess = "Balance must be positive number!";
$std->error = true;
$std->mesg[] = $mess;
echo json_encode($std);
return false;
}
if (!isset($OrderClass, $UserClass)) {
$mess = "System Error!";
$std->error = true;
$std->mesg[] = $mess;
echo json_encode($std);
return false;
}
$update_bal = null;
/*Restrict decimal places while updating balance*/
if (!validate_decimal_place($balance, 10)) {
$mess = "Max 10 decimal places allowed.";
$std->error = true;
$std->mesg[] = $mess;
echo json_encode($std);
return false;
}
//Prev balance of user
$bal_prev = (float) $OrderClass->check_customer_balance($bc2, $cus_id)->balance;
$update_bal = $OrderClass->update_user_balance($bc2, $balance, $cus_id);
if (!$update_bal) {
$mess = "Failed to update balance.";
$std->error = true;
$std->mesg[] = $mess;
echo json_encode($std);
return false;
} else if($update_bal) {
// Record this change
$OrderClass->record_root_bal_update($cus_id, $bal_prev, $balance, $bc2);
$mess = "Successfully updated balance!";
$std->error = false;
$std->mesg[] = $mess;
echo json_encode($std);
return false;
} else {
$mess = "Something went wrong. Failed to update balance!";
$std->error = true;
$std->mesg[] = $mess;
echo json_encode($std);
return false;
}
}
}

View File

@ -208,6 +208,23 @@ class Orders extends Users {
return false;
}
public function get_active_order_of_user($user_id, $bc, $top_table) {
if ($this->databaseConnection()) {
$query = $this->db_connection->prepare("
SELECT * FROM $top_table WHERE `uid`= :uid ORDER BY `insert_dt` DESC
");
$query->bindParam('uid', $user_id);
$query->execute();
$arr = array();
while ($qr = $query->fetchObject()) {
$arr[] = $qr;
}
return $arr;
}
return false;
}
public function OrderMatchingQuery($bc1, $bc2) {
if ($this->databaseConnection()) {
@ -1224,7 +1241,6 @@ class Orders extends Users {
public function storeMessages($order_id=null, $user_id=null, $msg=null) {
if($this->databaseConnection()) {
return;
$now = $this->time_now();
if ($user_id == false) {
return false;
@ -1247,18 +1263,25 @@ class Orders extends Users {
return false;
}
public function last_transaction_list($start=0, $limit = 10, $a_bc=null, $b_bc=null) {
public function last_transaction_list($start=0, $limit = 10, $a_bc=null, $b_bc=null, $uid=null) {
if ($this->databaseConnection()) {
$list = array();
$st = "";
if (trim($a_bc)!==null && trim($b_bc == null)) {
$st = "WHERE ".TX_TABLE.".a_bc = '".$a_bc."'";
} elseif(trim($a_bc)==null && trim($b_bc)!==null) {
$st = "WHERE ".TX_TABLE.".b_bc = '".$b_bc."'";
} elseif(trim($a_bc)!==null && trim($b_bc)!==null) {
$st = "WHERE ".TX_TABLE.".a_bc = '".$a_bc."' AND ".TX_TABLE.".b_bc = '".$b_bc."'";
$st2 = "";
if ((int)$uid!=0 || (int)$uid!=null) {
$st2 = " AND a_buyer = $uid OR b_seller=$uid ";
}
if (trim($a_bc)!=null && trim($b_bc == null)) {
$st = "WHERE ".TX_TABLE.".a_bc = '".$a_bc."'";
} elseif(trim($a_bc)==null && trim($b_bc)!=null) {
$st = "WHERE ".TX_TABLE.".b_bc = '".$b_bc."'";
} elseif(trim($a_bc)!=null && trim($b_bc)!=null) {
$st = "WHERE ".TX_TABLE.".a_bc = '".$a_bc."' AND ".TX_TABLE.".b_bc = '".$b_bc."'";
} elseif (trim($a_bc)==null && trim($b_bc)==null && $uid!=null) {
$st2 = " WHERE a_buyer = $uid OR b_seller=$uid ";
}
$st.= $st2;
$query = $this->db_connection->query("
SELECT txid AS T_ID, a_buyer AS BUYER_ID, b_seller AS SELLER_ID, (SELECT ".USERS_TABLE.".name FROM ".USERS_TABLE." WHERE ".USERS_TABLE.".id=BUYER_ID) AS BUYER, (SELECT ".USERS_TABLE.".name FROM ".USERS_TABLE." WHERE ".USERS_TABLE.".id=SELLER_ID) AS SELLER, b_amount AS TRADE_PRICE, ".TX_TABLE.".insert_dt, ".TX_TABLE.".qty_traded AS TRADED_QTY
@ -1280,29 +1303,39 @@ class Orders extends Users {
return false;
}
public function UserBalanceList($bc1='RMT', $is_active=null) {
public function UserBalanceList($bc1='', $is_active=null) {
if ($this->databaseConnection()) {
$list = array();
$extraQuerry = "";
$extraQuerry1 = "";
$extraQuerry2 = "";
if ($is_active != null) {
$extraQuerry = "AND ".USERS_TABLE.".is_active = 0 OR ".USERS_TABLE.".is_active = 1";
$extraQuerry = "WHERE (".USERS_TABLE.".is_active = 0 OR ".USERS_TABLE.".is_active = 1) AND ".USERS_TABLE.".id = ".CREDITS_TABLE.".uid";
} else {
$extraQuerry = "AND ".USERS_TABLE.".is_active = 1";
$extraQuerry = "WHERE ".USERS_TABLE.".is_active = 1 AND ".USERS_TABLE.".id = ".CREDITS_TABLE.".uid";
}
if (trim($bc1)!=null) {
$extraQuerry1 = "AND ".CREDITS_TABLE.".bc = :bc1";
$extraQuerry2 = "ORDER BY ".CREDITS_TABLE.".balance DESC";
} else {
$extraQuerry2 = "ORDER BY ".USERS_TABLE.".name ASC";
}
$query = $this->db_connection->prepare("
SELECT DISTINCT ".USERS_TABLE.".name, ".CREDITS_TABLE.".balance, ".CREDITS_TABLE.".bc
SELECT DISTINCT ".USERS_TABLE.".name, ".USERS_TABLE.".id AS UID, ".USERS_TABLE.".fb_id AS FACEBOOK_ID, ".CREDITS_TABLE.".balance, ".CREDITS_TABLE.".bc, ".USERS_TABLE.".is_active
FROM ".USERS_TABLE.", ".CREDITS_TABLE."
WHERE ".CREDITS_TABLE.".bc = :bc1
AND ".USERS_TABLE.".id = ".CREDITS_TABLE.".uid
$extraQuerry
ORDER BY ".CREDITS_TABLE.".balance DESC
$extraQuerry1
$extraQuerry2
");
$query->bindParam('bc1', $bc1);
if (trim($bc1)!=null) {
$query->bindParam('bc1', $bc1);
}
$query->execute();
if ($query->rowCount() > 0) {
@ -1341,27 +1374,6 @@ class Orders extends Users {
return false;
}
/*public function sel_bc_stats($bc1, $bc2) {
if ($this->databaseConnection()) {
$query = $this->db_connection->prepare("
SELECT a_bc, b_bc, b_amount
FROM ".TX_TABLE."
WHERE a_bc = :a
AND b_bc = :b
ORDER BY insert_dt DESC
LIMIT 1
");
$query->bindParam("a", $bc1);
$query->bindParam("b", $bc2);
$query->execute();
$data = null;
if ($query->rowCount()) {
$data = $query->fetchObject();
}
return$data;
}
}*/
public function tx_data($bc1=null, $bc2=null, $limit=null) {
if ($this->databaseConnection()) {
$st = '';
@ -1373,7 +1385,7 @@ class Orders extends Users {
} else if ($bc1==null && $bc2!=null) {
$st = 'WHERE b_bc = :b GROUP BY b_bc ';
} else {
$st='';
$st=' GROUP BY a_bc ';
}
if ($limit != null) {
$st2 = " LIMIT $limit";
@ -1411,4 +1423,152 @@ class Orders extends Users {
return false;
}
public function record_root_bal_update($uid, $bal_prev, $bal_now, $bal_type) {
if ($this->databaseConnection()) {
$now = $this->time_now();
$root = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : 0;
$query = $this->db_connection->prepare("
INSERT INTO ".ADMIN_BAL_RECORDS."(`BalStatusHistoryId`, `user_id`, `bal_prev`, `bal_now`, `type`, `root_id`, `UpdateDate`)
VALUES ('', :uid, :prev, :now, :btype, :root, '$now')
");
$query->bindParam("uid", $uid);
$query->bindParam("prev", $bal_prev);
$query->bindParam("now", $bal_now);
$query->bindParam("btype", $bal_type);
$query->bindParam("root", $root);
if ($query->execute()) {
return true;
}
}
return false;
}
public function list_root_bal_changes() {
if ($this->databaseConnection()) {
$list_details = array();
$query = $this->db_connection->prepare("
SELECT ".ADMIN_BAL_RECORDS.".*, ".USERS_TABLE.".name, ".USERS_TABLE.".email
FROM ".ADMIN_BAL_RECORDS.", ".USERS_TABLE."
WHERE ".ADMIN_BAL_RECORDS.".user_id=".USERS_TABLE.".id
ORDER BY UpdateDate DESC
LIMIT 200
");
$query->execute();
if ($query->rowCount() > 0) {
while ($list = $query->fetchObject()) {
$list_details[] = $list;
}
}
return $list_details;
}
return false;
}
public function get_last_order_date($date=null) {
if ($this->databaseConnection()) {
$query = $this->db_connection->query("SELECT * FROM ".ORDERS_TABLE." WHERE `insert_dt`> '$date'");
if ($query->rowCount()) {
return true;
}
}
return false;
}
public function delete_orders_of_user($user_id=null) {
if ($this->databaseConnection()) {
$order_ids = array();
$query = $this->db_connection->prepare("
SELECT order_id FROM ".TOP_BUYS_TABLE." WHERE `uid`=:uid
UNION
SELECT order_id FROM ".TOP_SELLS_TABLE." WHERE `uid`=:uid
");
$query->bindParam('uid', $user_id);
$query->execute();
if ($query->rowCount() > 0) {
while ($rr = $query->fetchObject()) {
$order_ids[] = $rr;
}
foreach ($order_ids as $oid) {
$this->del_order($oid->orderId, $user_id);
}
return true;
}
}
return false;
}
public function storeMessagesPublic($order_id=null, $user_id=null, $msg=null) {
if ($this->databaseConnection()) {
$this->storeMessages($order_id, $user_id, $msg);
}
}
public function total_recent_transactions()
{
if ($this->databaseConnection()) {
$total_orders = 0;
$query = $this->db_connection->prepare("
SELECT COUNT(*) AS TOTAL_ORDERS
FROM ".TX_TABLE."
");
if ($query->execute()) {
$fetch = $query->fetchObject();
$total_orders = (int)$fetch->TOTAL_ORDERS;
}
return $total_orders;
}
return false;
}
function total_my_messages() {
if ($this->databaseConnection()) {
$my_total_messages = 0;
if (isset($_SESSION['user_id'])) {
$user_id = (int) $_SESSION['user_id'];
} else {
return $my_total_messages;
}
$query = $this->db_connection->prepare("
SELECT COUNT(*) AS MY_TOTAL_MESSAGES
FROM ".MSG_TABLE."
WHERE `username_key`=:u_id
");
$query->bindParam('u_id', $user_id);
if ($query->execute()) {
$fetch = $query->fetchObject();
$my_total_messages = (int) $fetch->MY_TOTAL_MESSAGES;
}
return $my_total_messages;
}
return false;
}
public function total_my_orders()
{
if ($this->databaseConnection()) {
$my_total_orders = 0;
if (isset($_SESSION['user_id'])) {
$user_id = (int)$_SESSION['user_id'];
} else {
return $my_total_orders;
}
$query = $this->db_connection->prepare("
SELECT COUNT(*) AS MY_TOTAL_ORDERS
FROM ".ORDERS_TABLE."
WHERE `uid`=:u_id
");
$query->bindParam('u_id', $user_id);
if ($query->execute()) {
$fetch = $query->fetchObject();
$my_total_orders = (int)$fetch->MY_TOTAL_ORDERS;
}
return $my_total_orders;
}
return false;
}
}

View File

@ -274,5 +274,29 @@ class Users {
return false;
}
public function list_messages_by_userId($user_id, $start=0, $limit=10) {
if ($this->databaseConnection()) {
$messages = array();
$query = $this->db_connection->prepare("
SELECT * FROM ".MSG_TABLE." WHERE `username_key`= :uk
ORDER BY datetime DESC
LIMIT $start, $limit
");
$query->bindParam("uk", $user_id);
if ($query->execute()) {
$rowCount = $query->rowCount();
if ($rowCount > 0) {
while ($tr = $query->fetchObject()) {
$messages[] = $tr;
}
}
}
return $messages;
}
return false;
}
}

BIN
images/spinner.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -51,6 +51,8 @@ define("USERS_TABLE", "USER TABLE");
define("CREDITS_TABLE", "BALANCE TABLE");
define("ORDERS_TABLE", "ORDERS TABLE");
define("TX_TABLE", "TRANSACTION TABLE");
define("ADMIN_BAL_RECORDS", "ADMIN TABLE");
define("MSG_TABLE", "MESSAGES TABLE");
/*FACEBOOK DETAILS*/
define("APP_ID", 'YOUR FB APP ID');

View File

@ -41,13 +41,14 @@ if(checkLoginStatus()) {
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home</title>
<title>Ranchi Mall Blockchain Contracts</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="<?=STYLE_DIR?>/bootstrap.min.css">
<!-- Custom styles for this template -->
<link href="<?=STYLE_DIR?>/offcanvas.css" rel="stylesheet">
<link href="<?=STYLE_DIR?>/main.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">
</head>
<body class="bg-light">
<body>
<nav class="navbar navbar-expand-md fixed-top navbar-dark bg-dark">
<a class="navbar-brand" href="#">Ranchi Mall Blockchain Contract</a>
@ -81,14 +82,14 @@ if(checkLoginStatus()) {
Investors
<span class="badge badge-pill bg-light align-text-bottom">127</span>
</a>
<a class="nav-link" href="#">Exchange</a>
<a class="nav-link" href="https://www.ranchimall.net/exchange">Buy RMT</a>
<?php if($user_logged_in) { ?>
<a class="nav-link" href="logout.php">Log Out</a>
<?php } elseif(isset($loginUrl)) {?>
<a href="<?=$loginUrl?>" role="button" class="pull-right popup nav-link" name="fb_login">
<div class="btn btn--facebook ">
Continue with Facebook
<a href="<?=$loginUrl?>" role="button" class="nav-link" name="fb_login">
<div class="btn--facebook ">
Login with Facebook
</div>
</a>
<?php } ?>

View File

@ -0,0 +1,97 @@
/**
* Created by Abhishek Kumar Sinha on 9/27/2017.
*/
$(document).ready(function(){
var loading = false;
$total_records = getTotalMyMessages();
$records_per_page = 50;
$number_of_pages = Math.ceil($total_records / $records_per_page);
$current_page = 1;
$start=($current_page*$records_per_page)-$records_per_page;
loadMoreMyMessagesInitial();
$current_page = 2;
$(window).scroll(function() {
// console.log($(window).scrollTop() + window.innerHeight, $(document).height() - 35);
if($(window).scrollTop() + window.innerHeight > $(document).height()-5) {
$start = ($current_page*$records_per_page)-$records_per_page;
if($current_page <= $number_of_pages && loading == false) {
loadMoreMyMessages($start,$records_per_page);
$current_page++;
}
}
});
});
function getTotalMyMessages() {
$total_records = 0;
var job = 'total_my_messages';
$.ajax({
url: "ajax/MyMessagesTotal.php",
data: {job: job},
async: false,
type:"post",
success: function(data) {
$total_records = data;
},
error: function(xhr) {
$total_records = 0;
}
});
return $total_records;
}
function loadMoreMyMessagesInitial() {
loadMoreMyMessages($start,$records_per_page);
}
function loadMoreMyMessages($start,$records_per_page) {
var loading = true;
$.ajax({
url: "ajax/loadMoreMyMessages.php",
type:"post",
data: {req: 'loadMoreMyMessages', records_per_page: $records_per_page, start: $start},
beforeSend: function(){
$('.ajax-loader-span').html("<img src='images/spinner.gif' class='ajax-loader'>");
},
complete: function() {
$('.ajax-loader-span').remove();
},
success: function(data) {
var IS_JSON = true;
try {
var d = jQuery.parseJSON(data);
}
catch(err) {
IS_JSON = false;
}
if(IS_JSON) {
var v = '0 message';
if(isArray(d.msg) && d.msg.length != 0) {
v = '';
var si = 0;
for (var k=0; k<= d.msg.length-1; k++) {
si = k+1;
v += '<tr>';
v += '<td>'+d.msg[k].order_id+'</td>';
v += '<td>'+d.msg[k].messages+'</td>';
v += '<td>'+my_date_format(d.msg[k].datetime)+'</td>';
v += '</tr>';
}
}
$("#myMessagesTable").append(v);
}
},
error: function(xhr) {
//console.log(xhr);
}
});
loading = false;
}

74
js/load_more_my_orders.js Normal file
View File

@ -0,0 +1,74 @@
/**
* Created by Abhishek Kumar Sinha on 9/27/2017.
*/
$(document).ready(function(){
var loading = false;
$total_records = getTotalMyOrders();
$records_per_page = 50;
$number_of_pages = Math.ceil($total_records / $records_per_page);
$current_page = 1;
$start=($current_page*$records_per_page)-$records_per_page;
loadMoreMyOrdersInitial();
$current_page = 2;
$(window).scroll(function() {
if($(window).scrollTop() + window.innerHeight > $(document).height()-5) {
$start = ($current_page*$records_per_page)-$records_per_page;
if($current_page <= $number_of_pages && loading == false) {
loadMoreMyOrders($start,$records_per_page);
$current_page++;
}
}
});
});
function getTotalMyOrders() {
$total_records = 0;
var job = 'total_my_orders';
$.ajax({
url: "ajax/MyOrdersTotal.php",
data: {job: job},
async: false,
type:"post",
success: function(data) {
$total_records = data;
},
error: function(xhr) {
$total_records = 0;
}
});
return $total_records;
}
function loadMoreMyOrdersInitial() {
loadMoreMyOrders($start,$records_per_page);
}
function loadMoreMyOrders($start,$records_per_page) {
var loading = true;
$.ajax({
url: "ajax/loadMoreMyOrders.php",
type:"post",
data: {req: 'loadMoreMyOrders', records_per_page: $records_per_page, start: $start},
beforeSend: function(){
$('.ajax-loader-span').html("<img src='images/spinner.gif' class='ajax-loader'>");
},
complete: function() {
$('.ajax-loader-span').remove();
},
success: function(data) {
if ($.trim(data) != '' || $.trim(data) != undefined) {
$('#view_all_orders_tb').append(data);
}
},
error: function(xhr) {
//console.log(xhr);
}
});
loading = false;
}

View File

@ -0,0 +1,94 @@
$(document).ready(function(){
var loading = false;
$total_records = getTotalRecentTransactions();
$records_per_page = 50;
$number_of_pages = Math.ceil($total_records / $records_per_page);
$current_page = 1;
$start=($current_page*$records_per_page)-$records_per_page;
loadMoreRecentTransactionsInitial();
$current_page = 2;
$(window).scroll(function() {
if($(window).scrollTop() + window.innerHeight > $(document).height()-5) {
$start = ($current_page*$records_per_page)-$records_per_page;
if($current_page <= $number_of_pages && loading == false) {
loadMoreRecentTransactions($start,$records_per_page);
$current_page++;
}
}
});
});
function getTotalRecentTransactions() {
$total_records = 0;
var job = 'total_recent_transactions';
$.ajax({
url: "ajax/recentTransactionsTotal.php",
data: {job: job},
async: false,
type:"post",
success: function(data) {
$total_records = data;
},
error: function(xhr) {
$total_records = 0;
}
});
return $total_records;
}
function loadMoreRecentTransactionsInitial() {
loadMoreRecentTransactions($start,$records_per_page);
}
function loadMoreRecentTransactions($start,$records_per_page) {
var loading = true;
$.ajax({
url: "ajax/loadMoreRecentTransactions.php",
type:"post",
data: {req: 'loadMoreRecentTransactions', records_per_page: $records_per_page, start: $start},
beforeSend: function(){
$('.ajax-loader-span').html("<img src='images/spinner.gif' class='ajax-loader'>");
},
complete: function() {
$('.ajax-loader-span').remove();
},
success: function(data) {
var IS_JSON = true;
try {
var d = jQuery.parseJSON(data);
}
catch(err) {
IS_JSON = false;
}
if(IS_JSON) {
var v = '0 transactions';
if(isArray(d.trade_list) && d.trade_list.length != 0) {
v = '';
for (var k=0; k<= d.trade_list.length-1; k++) {
v += '';
v += '<tr>';
v += '<td>'+d.trade_list[k].SELLER+'</td>';
v += '<td>'+d.trade_list[k].BUYER+'</td>';
v += '<td>'+d.trade_list[k].TRADE_PRICE+'</td>';
v += '<td>'+d.trade_list[k].TRADED_QTY+'</td>';
v += '<td>'+(d.trade_list[k].TRADED_QTY * d.trade_list[k].TRADE_PRICE).toFixed(5)+'</td>';
v += '<td>'+my_date_format(d.trade_list[k].insert_dt)+'</td>';
v += '</tr>';
}
}
$("#myTransactionsTable").append(v);
}
},
error: function(xhr) {
//console.log(xhr);
}
});
loading = false;
}

View File

@ -11,7 +11,8 @@ $(document).ready(function() {
MyTransactions();
sel_bc_stats(sel1, sel2);
user_wallet();
current_prices("RMT");
current_prices();
load_messages();
});
$(document).on('click', '#is_mkt', function() {
@ -109,11 +110,37 @@ function place_order(sel1, sel2, pr, qty, bs_rad, is_mkt, btn) {
function myTimeoutFunction() {
run_OrderMatchingAlgorithm();
check_new_orders();
setTimeout(myTimeoutFunction, 20000);
}
myTimeoutFunction();
function run_all() {
run_OrderMatchingAlgorithm();
tradeList();
tradersList();
MyOrders();
MyTransactions();
load_messages();
}
function check_new_orders() {
$.ajax({
method:'post',
url:'ajax/check_new_orders.php',
async: true,
error: function(xhr, status, error) {
console.log(xhr, status, error);
},
success: function(data) {
if ($.trim(data) != '' && $.trim(data) != undefined && $.trim(data) != null) {
run_all();
}
}
});
}
// Update tables a/c to change in select
$(document).on('change', ".selbc", function() {
var bc1 = $('#sel-bc-1').val();
@ -243,7 +270,6 @@ function tradeList(bc1, bc2) {
}
if(IS_JSON) {
console.log(d);
var v = '';
if(isArray(d.trade_list) && d.trade_list.length != 0) {
for (var k=0; k<= d.trade_list.length-1; k++) {
@ -251,9 +277,9 @@ function tradeList(bc1, bc2) {
v += '<tr>';
v += '<td>'+d.trade_list[k].SELLER+'</td>';
v += '<td>'+d.trade_list[k].BUYER+'</td>';
v += '<td>$ '+d.trade_list[k].TRADE_PRICE+'</td>';
v += '<td>'+d.trade_list[k].TRADE_PRICE+'</td>';
v += '<td>'+d.trade_list[k].TRADED_QTY+'</td>';
v += '<td>$ '+(d.trade_list[k].TRADED_QTY * d.trade_list[k].TRADE_PRICE).toFixed(5)+'</td>';
v += '<td>'+(d.trade_list[k].TRADED_QTY * d.trade_list[k].TRADE_PRICE).toFixed(5)+'</td>';
v += '<td>'+my_date_format(d.trade_list[k].insert_dt)+'</td>';
v += '</tr>';
}
@ -361,8 +387,10 @@ function MyTransactions() {
}
function sel_bc_stats(bc1, bc2) {
$('#bc-one').text(bc1);
$('#bc-two').text(bc2);
var bc_one = $('#bc-one');
var bc_two = $('#bc-two');
bc_one.text(bc1);
bc_two.text(bc2);
$.ajax({
method:'post',
url:'ajax/sel_bc_stats.php',
@ -381,9 +409,9 @@ function sel_bc_stats(bc1, bc2) {
}
if(IS_JSON) {
if(d.data.length != 0) {
$('#bc-one').text(d.data.a_bc);
$('#bc-two').text(d.data.b_bc);
if((d.data.length != 0) && (bc_one.val()!='') && (bc_two.val()!='')) {
bc_one.text(d.data.a_bc);
bc_two.text(d.data.b_bc);
$('#bc-two-pr').text(d.data.b_amount);
}
}
@ -473,4 +501,76 @@ function current_prices(bc2) {
}
}
});
}
}
/*Messages*/
function load_messages() {
$.ajax({
method:'post',
url:'ajax/myMessages.php',
data: { task : 'loadMyMessagesList'},
error: function(xhr, status, error) {
console.log(error);
},
success: function(data) {
if ($.trim(data) != '' && $.trim(data) != undefined && $.trim(data) != null) {
var IS_JSON = true;
try {
var d = jQuery.parseJSON(data);
}
catch(err) {
IS_JSON = false;
}
if (IS_JSON) {
var v = '0 message';
if(isArray(d.msg) && d.msg.length != 0) {
v = '';
var si = 0;
for (var k=0; k<= d.msg.length-1; k++) {
si = k+1;
v += '<tr>';
v += '<td>'+si+'</td>';
v += '<td>'+d.msg[k].order_id+'</td>';
v += '<td>'+d.msg[k].messages+'</td>';
v += '<td>'+my_date_format(d.msg[k].datetime)+'</td>';
v += '</tr>';
}
}
$('#user_msg').html(v);
}
}
}
});
}
/*Delete Orders*/
$(document).on('click', '.del_order', function (e) {
e.preventDefault();
var id = $(this).attr("id");
$.ajax({
method:'post',
url:'ajax/delOrder.php',
data: { task : 'delOrder', id:id},
error: function(xhr, status, error) {
console.log(error);
},
success: function(data) {
if ($.trim(data) != '' && $.trim(data) != undefined && $.trim(data) != null) {
$.notify({
title: "<strong>Order Deleted!:</strong> ",
message: "You deleted the order successfully."
},{
type: 'success'
});
} else {
displayNotice("The order could not be deleted. Try again later.", "failure");
}
run_OrderMatchingAlgorithm();
load_messages();
MyOrders();
}
});
});

26
pageNotFound.php Normal file
View File

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>ERROR</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
</head>
<body>
<div id="big_wrapper" class="container-fluid">
<div style="margin-top: 50px;"></div>
<div class="panel panel-default center-block">
<div class="alert alert-danger" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true" style="font-size: 70px;"></span>
<span class="sr-only">Error:</span>
<span style="font-size: 70px;">Woops! Page Not Found.</span>
</div>
<div class="panel-body">
<h4>Sorry! the page you were looking for does not exists. Press back to return or click <a href="http://ranchimall.net">here</a>.</h4>
</div>
</div>
</div>
<footer style="text-align: center; position: fixed; bottom: 0; width: 100%;">&copy Ranchi Mall <?=date('Y');?></footer>
</body>
</html>

382
rm_root.php Normal file
View File

@ -0,0 +1,382 @@
<?php
ob_start(); date_default_timezone_set('Asia/Kolkata');
$user_id = 0;
require_once 'includes/header.php';
require_once 'includes/imp_files.php';
if (!checkLoginStatus()) {
redirect_to("index.php");
}
if (isset($_SESSION['fb_id'], $_SESSION['user_id'], $_SESSION['user_name'])) {
$root_fb = (int) $_SESSION['fb_id'];
$root_user_id = (int) $_SESSION['user_id'];
$root_user_name = (string) $_SESSION['user_name'];
/*This should match ajax/rm_root.php too*/
if ($root_fb != ADMIN_ID && $root_user_id != ADMIN_ID && $root_user_name != ADMIN_UNAME) {
redirect_to("index.php");
}
$traders = $OrderClass->UserBalanceList('', 1);
?>
<div class="container mt--2">
<h2>Actions table</h2>
<div class="mt--2 mb--2 p--1">
<div class="form-group">
<label class="sr-only" for="cus_id">User Id</label>
<input type="number" class="form-control" name="cus_id" id="cus_id" placeholder="User Id">
</div>
<div class="form-group">
<label class="sr-only" for="bal">Input Balance</label>
<input type="text" class="form-control" name="bal" id="bc-bal-updt" placeholder="Input Balance">
</div>
<input type="submit" class="btn-sm mt--1" id="bc_tr_btn" value="Update balance">
</div>
<input type="text" id="search_traders" onkeyup="search_traders()" placeholder="Search for names..">
<div class="table-responsive" id="traders_table">
<table class="table">
<thead>
<tr>
<th>Id</th>
<th>User</th>
<th>RMT</th>
<th>Cash</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$action_class = null;
$btn_name = null;
$i=1;
if (is_array($traders) && !empty($traders)) {
foreach ($traders as $index=>$trader) {
if ($trader->is_active) {
$action_class = 'off';
$btn_name = "Deactivate Account";
} else {
$action_class = 'on';
$btn_name = "Activate Account";
}
?>
<tr>
<td><?=$trader->UID?></td>
<td><a href="http://facebook.com/<?=$trader->FACEBOOK_ID?>" target="_blank"><?=$trader->name?></a></td>
<td><?=$trader->bc?></td>
<td><?=$trader->balance?></td>
<?php if($i!=$trader->UID) {continue;} ?>
<td><input type="button" class="btn-ra" id="<?=$action_class.'_'.$trader->UID?>" value="<?=$btn_name?>"></td>
</tr>
<?php $i++;
}
}
?>
</tbody>
</table>
</div>
</div>
<!--Transfer tokens-->
<div class="container mt--2">
<h2>Transfer tokens</h2>
<div class="mt--2 mb--2 p--1">
<div class="form-inline">
<div class="form-group">
<label class="sr-only" for="cust_id-fr">From (User Id)</label>
<input type="number" class="form-control" name="cust_id-fr" id="cust_id-fr" placeholder="From (User Id)">
</div>
<div class="form-group">
<label class="sr-only" for="cust_id_to">To (User Id)</label>
<input type="number" class="form-control" name="cust_id_to" id="cust_id_to" placeholder="To (User Id)">
</div>
<div class="form-group">
<label class="sr-only" for="toke_amt">Amount of BC units to transfer </label>
<input type="text" class="form-control" name="toke_amt" id="toke_amt" placeholder="Amount of BC units to transfer">
</div>
<input type="submit" class="btn-sm mt--1" id="btn-tr" value="Transfer tokens">
</div>
</div>
</div>
<!--History-->
<div class="container mt--2">
<div class="table-responsive">
<div class="table-responsive">
<?php $list_bal_changes = $OrderClass->list_root_bal_changes(); ?>
<h2>Update History</h2>
<input type="text" id="audit_input" onkeyup="search_audit_table()" placeholder="Search for names or id..">
<table class="table" id="audit_table">
<thead>
<tr>
<th>S.No</th>
<th>Investor's Id</th>
<th>Name</th>
<th>Email</th>
<th>Previous Balance</th>
<th>Updated Balance</th>
<th>Type</th>
<th>Date</th>
</tr>
</thead>
<tbody>
<?php foreach ($list_bal_changes as $ch): ?>
<tr>
<td><?=$ch->BalStatusHistoryId?></td>
<td><?=$ch->user_id?></td>
<td><?=$ch->name?></td>
<td><?=$ch->email?></td>
<td><?=$ch->bal_prev?></td>
<td><?=$ch->bal_now?></td>
<td><?=$ch->type?></td>
<td><?=$ch->UpdateDate?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
<?php
}
?>
<!--footer-->
<?php include_once 'includes/footer.php'; ?>
<script>
$(document).on('click', '.btn-ra', function (e) {
e.preventDefault();
var btn = $(this);
var btn_id = $(this).attr('id');
var btn_val = parseInt(btn_id.replace ( /[^\d.]/g, '' ));
$.ajax({
method:'post',
url:'ajax/rm_root.php',
data: { task : 'act_user', btn_id:btn_id},
error: function(xhr, status, error) {
console.log(error);
}, success: function(data) {
data = $.trim(data);
if ($.trim(data) != '' && $.trim(data) != undefined && $.trim(data) != null) {
if (data == 'on') {
btn.attr("id", 'off_'+btn_val);
btn.prop("value", "Deactivate Account");
$.notify({
title: "<strong>Success!:</strong> ",
message: "User activated successfully."
},{
type: 'info'
});
} else if (data == 'off') {
btn.attr("id", 'on_'+btn_val);
btn.prop("value", "Activate Account");
$.notify({
title: "<strong>Success!:</strong> ",
message: "User de-activated successfully."
},{
type: 'info'
});
} else {
$.notify({
title: "<strong>Process Failed!:</strong> ",
message: "Process could not be completed."
},{
type: 'warning'
});
}
} else {
displayNotice("Process could not be completed. Try again later.", "failure");
}
run_all();
}
});
});
$(document).on('click', '#bc_tr_btn', function() {
var bc_bal_updt = $('#bc-bal-updt').val();
var cus_id = $('#cus_id').val();
var sel_bc2 = $('#sel-bc-2').val();
var job = 'update-user-bc-balance';
var btn = this;
if (sel_bc2=="") {
$.notify({
title: "<strong>Alert!: </strong> ",
message: "Please choose a contract from second dropdown at top."
},{
type: 'warning'
});
return false;
}
$(btn).val('Please wait....').prop( "disabled", true );
$.ajax({
method: 'post',
url: 'ajax/update_bc_bal.php',
data: {job:job, cus_id:cus_id, bc_bal_updt:bc_bal_updt, _bc2:sel_bc2},
error: function(xhr, status, error) {
console.log(xhr, status, error);
},
success: function(data) {
$(btn).val('Transfer '+sel_bc2).prop( "disabled", false );
if ($.trim(data) != '' && $.trim(data) != undefined && $.trim(data) != null) {
var IS_JSON = true;
try {
var d = jQuery.parseJSON(data);
}
catch(err) {
IS_JSON = false;
}
if(IS_JSON) {
if (isArray(d.mesg) && d.mesg.length != 0) {
for (var k = 0; k <= d.mesg.length - 1; k++) {
var tp = (d.error == true) ? 'danger':'success';
$.notify({
title: "<strong>Alert!:</strong> ",
message: d.mesg[k]
},{
type: tp
});
}
}
}
}
}
});
});
function search_traders() {
// Declare variables
var input, filter, table, tr, td, i;
input = document.getElementById("search_traders");
filter = input.value.toUpperCase();
table = document.getElementById("traders_table");
tr = table.getElementsByTagName("tr");
// Loop through all table rows, and hide those who don't match the search query
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[1];
if (td) {
if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
} else {
tr[i].style.display = "none";
}
}
}
}
// Audit table
function search_audit_table() {
var input, filter, table, tr, td, i;
input = document.getElementById("audit_input");
filter = input.value.toUpperCase();
table = document.getElementById("audit_table");
tr = table.getElementsByTagName("tr");
// Loop through all table rows, and hide those who don't match the search query
if(!isNaN(filter)) {
for (i = 0; i < tr.length; i++) {
tdi = tr[i].getElementsByTagName("td")[1];
if (tdi) {
//filter = input.value;
if (tdi.innerHTML.indexOf(filter) > -1) {
tr[i].style.display = "";
} else {
tr[i].style.display = "none";
}
}
}
} else {
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[2];
if (td) {
if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
} else {
tr[i].style.display = "none";
}
}
}
}
}
// Token transfer
$(document).on('click', '#btn-tr', function (e) {
var _from = $('#cust_id-fr').val();
var _to = $('#cust_id_to').val();
var _tokens = $('#toke_amt').val();
var _bc2 = $('#sel-bc-2').val();
var job = 'transfer_tokens';
var btn = this;
if (_bc2=="") {
$.notify({
title: "<strong>Alert!: </strong> ",
message: "Please choose a contract from second dropdown at top."
},{
type: 'warning'
});
return false;
}
$(btn).val('Please wait....').prop( "disabled", true );
$.ajax({
method: 'post',
url: 'ajax/transfer_tokens.php',
data: {job:job, _from:_from, _to:_to, _bc2:_bc2, _tokens:_tokens},
error: function(xhr, status, error) {
console.log(xhr, status, error);
},
success: function(data) {
console.log(data);
$(btn).val('Transfer '+_bc2).prop( "disabled", false );
if ($.trim(data) != '' && $.trim(data) != undefined && $.trim(data) != null) {
var IS_JSON = true;
try {
var d = jQuery.parseJSON(data);
}
catch(err) {
IS_JSON = false;
}
if(IS_JSON) {
if (isArray(d.mesg) && d.mesg.length != 0) {
var tp = 'info';
if(d.error == true) {
tp = 'danger'
} else if(d.error == false) {
tp = 'success';
}
for (var k = 0; k <= d.mesg.length - 1; k++) {
$.notify({
title: "<strong>Alert!:</strong> ",
message: d.mesg[k]
},{
type: tp
});
}
}
}
}
}
});
});
</script>

View File

@ -1,6 +1,22 @@
html,
body {
overflow-x: hidden; /* Prevent scroll on narrow devices */
color: #ffffff;
background-color: #343a40;
font-family: 'Montserrat', sans-serif;
}
a {
color: #f7f7f7;
}
input[type=text] {
//background: #FAFAFA;
border: 1px solid #F4F4F4;
border-radius: 3px;
display: block;
width: 100%;
padding: 10px;
margin-top: 10px;
margin-bottom: 10px;
}
.dropdown-menu {
@ -97,7 +113,7 @@ h5 > span {
body {
//display: block;
padding-top: 56px;
font-size: 24px;
//font-size: 24px;
width: 100%;
}
.lays {
@ -113,13 +129,14 @@ h5 > span {
@media (min-width: 576px) {
body {
padding-top: 56px;
font-size: 18px; !important;
//font-size: 18px; !important;
}
.lays {
background-color: #c8cbcf;
margin: 0 0 5px 0;
line-height: 19px;
padding: 5px;
font-size: small;
}
}
@ -127,10 +144,11 @@ h5 > span {
@media (min-width: 768px) {
body {
padding-top: 56px;
font-size: 16px;
//font-size: 16px;
}
.lays {
background-color: #c8cbcf;
/*#c8cbcf, rgba(255, 193, 7, 0.32), #ffc293*/
background-color: rgba(0, 0, 0, 0.24);
margin: 0 0 5px 0;
line-height: 19px;
padding: 5px;
@ -145,4 +163,30 @@ h5 > span {
/*Extra large devices (large desktops, 1200px and up)*/
@media (min-width: 1200px) {
}
/*Bootstrap*/
.bg-dark {
/*background-color: #007bff!important;*/
background-color: #343a40!important;
}
.card-header {
background-color: #162029;
color: #ffffff;
font-weight: 600;
//font-size: large;
}
.btn-link {
color: #ffffff;
}
.btn-link:hover {
color: #ffffff;
text-decoration: none;
}
.btn-primary {
color: #fff;
background-color: #162029; !important;
border-color: #282c31; !important;
}

24
view_all_messages.php Normal file
View File

@ -0,0 +1,24 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 10/5/2017
* Time: 11:46 AM
*/
ob_start();
require_once 'includes/imp_files.php';
require_once 'includes/header.php';
if (!checkLoginStatus()) {
redirect_to('index.php?msg=Please login!');
}
//include_once VIEWS_DIR.'/buy_sell_div.php';
//include_once VIEWS_DIR.'/buy_sell_list.php';
include_once VIEWS_DIR.'/view_all_messages.php';
include_once 'includes/footer.php';
?>
<script src="js/load_more_my_messages.js"></script>

View File

@ -0,0 +1,18 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 10/5/2017
* Time: 4:57 PM
*/
ob_start();
require_once 'includes/imp_files.php';
require_once 'includes/header.php';
if (!checkLoginStatus()) {
redirect_to('index.php?msg=Please login!');
}
include_once VIEWS_DIR.'/view_all_my_orders_list.php';
include_once 'includes/footer.php';
?>
<script src="js/load_more_my_orders.js"></script>

View File

@ -0,0 +1,16 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 10/5/2017
* Time: 11:46 AM
*/
ob_start();
require_once 'includes/imp_files.php';
require_once 'includes/header.php';
include_once VIEWS_DIR.'/view_all_recent_transactions.php';
include_once 'includes/footer.php';
?>
<script src="<?=JS_DIR?>/load_more_recent_transactions.js"></script>

View File

@ -111,13 +111,14 @@
<div class="card-header" id="headingTwo">
<h5 class="mb-0">
<button class="btn btn-link collapsed" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
Messages
My Messages
</button>
<span><a href="My_Messages" target="_blank">View All</a></span>
</h5>
</div>
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordion">
<div class="card-body">
<?php include_once 'user_messages.php';?>
</div>
</div>
</div>

View File

@ -3,7 +3,7 @@
<table class="table table-striped" cellpadding="10" cellspacing="0" width="100%">
<thead>
<tr>
<th>Price ($)</th>
<th>Price</th>
<th>Quantity</th>
<th>Cancel Order</th>
<th>Item Sold</th>

16
views/user_messages.php Normal file
View File

@ -0,0 +1,16 @@
<?php
if($user_logged_in) {?>
<div class="table-responsive">
<table class="table table-striped" cellpadding="10">
<thead>
<tr>
<th>S.No</th>
<th>Order No.</th>
<th>Message</th>
<th>Date</th>
</tr>
</thead>
<tbody id="user_msg"></tbody>
</table>
</div>
<?php } ?>

View File

@ -0,0 +1,27 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 10/5/2017
* Time: 11:19 AM
*/
?>
<div class="container">
<div class="col-lg-12">
<h2 class="mt--2">My Messages</h2>
<div class="table-responsive mt--2">
<table class="table table-striped table-bordered" id="messages-datatable" cellspacing="0" width="100%" cellpadding="10">
<thead>
<tr>
<th>Order No.</th>
<th>Message</th>
<th>Date</th>
</tr>
</thead>
<tbody id="myMessagesTable"></tbody>
</table>
</div>
</div>
</div>

View File

@ -0,0 +1,29 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 10/5/2017
* Time: 11:19 AM
*/
?>
<div class="container">
<div class="col-lg-12">
<h2 class="mt--2">My Orders</h2>
<div class="table-responsive mt--2">
<table class="table table-striped table-bordered" id="messages-datatable" cellspacing="0" width="100%" cellpadding="10">
<thead>
<tr>
<th>Price ($)</th>
<th>Quantity</th>
<th>Cancel Order</th>
<th>Item Sold</th>
<th>Item Bought</th>
<th>Status</th>
<th>Date</th>
</tr>
</thead>
<tbody id="view_all_orders_tb"></tbody>
</table>
</div>
</div>
</div>

View File

@ -0,0 +1,28 @@
<?php
/**
* Created by PhpStorm.
* User: Abhishek Kumar Sinha
* Date: 10/5/2017
* Time: 11:19 AM
*/
?>
<div class="container">
<div class="col-lg-12">
<h2 class="mt--2">Recent Transactions</h2>
<div class="table-responsive mt--2">
<table class="table table-striped table-bordered" id="messages-datatable" cellspacing="0" width="100%" cellpadding="10">
<thead>
<tr>
<th>Seller</th>
<th>Buyer</th>
<th>Trade Price</th>
<th>Quantity Traded</th>
<th>Transaction Amount</th>
<th>Trade Date</th>
</tr>
</thead>
<tbody id="myTransactionsTable"></tbody>
</table>
</div>
</div>
</div>