diff --git a/api/checkout.php b/api/checkout.php index 7d5ebaf..e1b3784 100644 --- a/api/checkout.php +++ b/api/checkout.php @@ -22,8 +22,26 @@ $data = getFinalData($cnn, $tableId); echo ''; +db__pushData($cnn, "user", array( + "state" => '0', + "updated_at" => date("Y-m-d H:i:s", time()) +), array( + "user" => $hash, + "table" => $tableId +)); +$itemId = hash('sha256', time().$hash.$tableId.rand(222,999)); +db__pushData($cnn, "account", array( + "id" => $itemId, + "table" => $tableId, + "user" => $hash, + "type" => 'placeholde', + "state" => '0', + "value" => -$data['average'], + "created_at" => date("Y-m-d H:i:s", time()) +)); + /* close connection */ ob_end_flush(); flush(); @@ -36,7 +54,6 @@ set_time_limit(0); - if($data['average'] > $data['virtualTotals'][$hash]){ foreach($data['users'] as $user){ $to = $user; @@ -54,11 +71,4 @@ if($data['average'] < $data['virtualTotals'][$hash]){ } -db__pushData($cnn, "user", array( - "state" => '0', - "updated_at" => date("Y-m-d H:i:s", time()) -), array( - "user" => $hash, - "table" => $tableId -)); diff --git a/api/functions.php b/api/functions.php index 52fb097..a8c65a6 100644 --- a/api/functions.php +++ b/api/functions.php @@ -694,7 +694,7 @@ function getTotals($tableData){ $data = $tableData; $data['total'] = 0; foreach($data['items'] as $index=>$item){ - $data['total'] += $item['value']; + if($item['type'] == 'external') $data['total'] += $item['value']; $data['items'][$index]['timestamp'] = strtotime($item['created_at']); } @@ -705,7 +705,7 @@ function getTotals($tableData){ $virtualTotal = 0; foreach($data['items'] as $item){ if($item['user'] == $user){ - if($item['state'] == 1){ + if($item['type'] == 'external' || (($item['type'] == 'innerF' || $item['type'] == 'innerT') && $item['state'] == '1')){ $actualTotal += $item['value']; } $virtualTotal += $item['value']; @@ -719,9 +719,15 @@ function getTotals($tableData){ } -function getAverage($tableData){ - $tableData['average'] = $tableData['total'] / count($tableData['users']); - return $tableData; +function getAverage($data){ + $data['average'] = 0; + foreach($data['items'] as $item){ + if($item['type'] == 'external' || $item['type'] == 'placeholde'){ + $data['average'] += $item['value']; + } + }; + $data['average'] = $data['average'] / count($data['users']); + return $data; } function getUsersInfo($tableData){ diff --git a/api/joinTable.php b/api/joinTable.php index 44ff00e..57c45f2 100644 --- a/api/joinTable.php +++ b/api/joinTable.php @@ -10,11 +10,11 @@ if(!isset($hash) || !isset($tableId) || strlen($hash)<60 || strlen($tableId)<60) $cnn = db__connect(); -$data = getFinalData($cnn, $tableId); if(!db__rowNum($cnn, "user", "user", $hash, "table", $tableId, "state", "1")){ - $itemId = hash('sha256', time().$hash.$tableId.rand(222,999)); + $data = getFinalData($cnn, $tableId); + $itemId = hash('sha256', time().$hash.$tableId.rand(222,999)); db__pushData($cnn, "account", array( "id" => $itemId, "table" => $tableId, @@ -24,7 +24,7 @@ if(!db__rowNum($cnn, "user", "user", $hash, "table", $tableId, "state", "1")){ "value" => $data['average'], "created_at" => date("Y-m-d H:i:s", time()) )); -} + db__pushData($cnn, "user", array( "user" => $hash, "table" => $tableId, @@ -34,6 +34,9 @@ if(!db__rowNum($cnn, "user", "user", $hash, "table", $tableId, "state", "1")){ "user" => $hash, "table" => $tableId )); +} + + setcookie("tableId", $tableId, time()+3600*12*60*365, "/"); diff --git a/api/newItem.php b/api/newItem.php index 736fa09..d553e95 100644 --- a/api/newItem.php +++ b/api/newItem.php @@ -66,7 +66,11 @@ while(!checkBalance($data, $threshold)){ end($data['virtualTotals']); $last = key($data['virtualTotals']); if($data['average'] - $data['virtualTotals'][$first] > $threshold){ - setBalance($first, $last, $threshold, $tableId, $cnn); + $divisor_f = ($data['average'] - $data['virtualTotals'][$first])/$threshold; + settype($divisor_f, "int"); + $divisor_l = ($data['virtualTotals'][$last] - $data['average'])/$threshold; + settype($divisor_l, "int"); + setBalance($first, $last, min($divisor_f, $divisor_l)*$threshold, $tableId, $cnn); } Sleep(10); $data = getFinalData($cnn, $tableId); diff --git a/index.html b/index.html index 576905e..d6cf81e 100644 --- a/index.html +++ b/index.html @@ -367,7 +367,7 @@ function load(){ $('#title').html(data.name); $('#total').html(Number(data.total)); $('#total-usr').html(Number(data['actualTotals'][session.get('hash')])); - $('#total-usr-bar').css('width', (data['actualTotals'][session.get('hash')] / data.average)*100+'%'); + $('#total-usr-bar').css('width', (data['virtualTotals'][session.get('hash')] / data.average)*100+'%'); $('#checkout').unbind(); $('#checkout').click(function(){ alert('You will checkout and quit from group '+data.name+'!!'); @@ -381,6 +381,7 @@ function load(){ lastWeekByUser[user] = 0; }); data.items.forEach(function(item){ + if(item.state == '0') return; if(item.timestamp > new Date().valueOf()/1000 - 7*24*60*60){ lastWeekTotal += Number(item.value); lastWeekByUser[item.user] += Number(item.value); @@ -589,12 +590,13 @@ function load(){ var colors = ['#F782AA', '#0084B4', '#3FC5AC', '#FFD06B', '#CCCCCC', '#8F3D39', '#9A3481', '#492034', '#593204', '#71e39d', '#B32083', '#D39D32']; Piedata = []; - Object.keys(data.actualTotals).forEach((user, index)=>{ + Object.keys(data.virtualTotals).forEach((user, index)=>{ advStats += '
  • '+data.usersName[user]+' '+((lastWeekByUser[user]/lastWeekTotal)*100).toFixed(2)+'%
  • '; - Piedata.push({ label: "", data: Math.floor(data.actualTotals[user]) }); - variance += Math.pow(data.actualTotals[user] - data.average, 2); + Piedata.push({ label: "", data: Math.floor(data.virtualTotals[user]) }); + variance += Math.pow(data.virtualTotals[user] - data.average, 2); }); + //Piedata.reverse(); variance = variance/data.users.length; $('#a-balance').html(variance.toFixed(2)); chartOptions = {