added credits

This commit is contained in:
Tóth Richárd
2019-08-05 17:59:01 +02:00
parent 1f7b0a06d0
commit d760306d97
6 changed files with 275 additions and 172 deletions

View File

@@ -12,13 +12,21 @@ else $sql = new sql('localhost','id9073794_tollashodos','uprRscU8bGpJ','id907379
$check_query = "SELECT * FROM presence WHERE pr_training_tr_id = " . $_POST['tr_id'] . " AND pr_user_kid_uk_id = " . $_POST['user_id'] . ";";
if (!$sql->num_of_rows($check_query) && $_POST['checked'] == "true") {
if (!$sql->num_of_rows($check_query) && $_POST['checked'] == "false") {
$sql->insert_into('presence', array('pr_user_kid_uk_id' => $_POST['user_id'], 'pr_training_tr_id' => $_POST['tr_id']));
log::register('new_presence', 'Edzés: ' . $_POST['tr_id'] . ', gyerek: ' . $_POST['user_id'], null, $_POST['admin_id']);
if ($_POST['credited']) {
$sql->update_table('user_kid', array('uk_credit' => $_POST['credit'] + 1), array('uk_id' => $_POST['user_id']));
}
}
elseif ($sql->num_of_rows($check_query) && $_POST['checked'] != "true") {
elseif ($sql->num_of_rows($check_query) && $_POST['checked'] == "true") {
$sql->execute_query('delete from presence where pr_user_kid_uk_id = ' . $_POST['user_id'] . ' AND pr_training_tr_id = ' . $_POST['tr_id']);
log::register('delete_presence', 'Edzés: ' . $_POST['tr_id'] . ', gyerek: ' . $_POST['user_id'], null, $_POST['admin_id']);
if ($_POST['credit'] > 0) {
$sql->update_table('user_kid', array('uk_credit' => $_POST['credit'] - 1), array('uk_id' => $_POST['user_id']));
}
}
?>

View File

@@ -657,11 +657,34 @@ class user_kid extends user_parent {
}
$de_array[] = $new_diary_entry;
}
//itt csak hivatkozással adjuk át a tömböt, a calculate_balance kiszámolja, belerakja és visszadja
$this->calculate_balance($de_array, $this);
}
public function get_credit_color($has_credit, $credit, $trainingPrice) {
//vizsgálni kell, hogy: negatív egyenleg előfordulhat-e
//ha igen, van-e hitelezés
//ha igen, túllepte-e PIROS
//ha nem, akkor SÁRGA
//ha nincs, akkor azonnal PIROS
if ($this->get_uk_balance() < 0 || ($this->get_uk_balance() - $trainingPrice) < 0) {
if (!$has_credit) {
return 'restricted';
}
else {
if ($this->get_uk_credit() < $credit) {
return 'credit-warning';
}
else {
return 'credit-restricted';
}
}
}
return false;
}
}
?>

View File

@@ -241,7 +241,15 @@ a.addbutton.noti {
border-left: 2px solid #000;
font-size: 18px;
font-family: Arial;
}
.list .name_tag.credit-warning {
background-color: rgb(255, 190, 120);
}
.list .name_tag.restricted, .list .name_tag.credit-restricted {
background-color: #fd4d4d;
cursor: not-allowed;
}
.user_mod_form {
@@ -727,82 +735,85 @@ form#auto_filters > div > label {
@media (min-width: 680px) {
.categories {
width: unset;
text-align: left;
margin: 0px 0px 0px 45px;
padding: 0;
}
.categories {
width: unset;
text-align: left;
margin: 0px 0px 0px 45px;
padding: 0;
}
.toggle {
width: 50px;
height: 50px;
position: relative;
right: -5px;
top: -10px;
background-color: #edfc5a;
float: right;
border-right: 3px solid;
cursor: pointer;
}
.toggle {
width: 50px;
height: 50px;
position: relative;
right: -5px;
top: -10px;
background-color: #edfc5a;
float: right;
border-right: 3px solid;
cursor: pointer;
}
.list .list_item .toggle img {
position: relative;
left: 12px;
top: 10px;
width: 25px;
height: 25px;
}
.list .list_item .toggle img {
position: relative;
left: 12px;
top: 10px;
width: 25px;
height: 25px;
}
.name_span {
min-width: 200px;
display: inline-block;
margin: 0;
}
.name_span {
min-width: 200px;
display: inline-block;
margin: 0;
}
.category_list {
width: 25%;
margin: 0;
display: inline;
}
.category_list {
width: 25%;
margin: 0;
display: inline;
}
.add_category {
width: 25%;
margin: 0;
}
.add_category {
width: 25%;
margin: 0;
}
.list .date_separator {
width: 100%;
}
.list .date_separator {
width: 100%;
}
.balance {
clear: both;
text-align: left;
margin: 10px 0px 15px 0px;
font-size: 20px;
font-weight: bold;
padding-left: 5px;
border-bottom: 2px solid;
width: 30%;
}
.balance {
clear: both;
text-align: left;
margin: 10px 0px 15px 0px;
font-size: 20px;
font-weight: bold;
padding-left: 5px;
border-bottom: 2px solid;
width: 30%;
}
.list_item table.money td.no_mobile_show {
display: table-cell;
}
.list_item table.money td.no_mobile_show {
display: table-cell;
}
.list_item table.money td.sum {
width: 1%;
white-space: nowrap;
}
.list_item table.money td.quarter_width {
width: 25%;
min-width: 100px;
text-align: left;
}
.list_item table.money td.sum {
width: 1%;
white-space: nowrap;
}
.list_item table.money td.quarter_width {
width: 25%;
min-width: 100px;
text-align: left;
}
.credit-text {
float: right;
margin-right: 15px;
}
}
@media (min-width: 1250px) {
@@ -875,6 +886,4 @@ form#auto_filters > div > label {
.diary_header .balance_text {
}
}

View File

@@ -129,6 +129,8 @@ if ($this->is_id()) {
$s_users[] = $s_user;
}
//lekérjük a hitelalkalom beállítást
$credit = $sql->single_variable("SELECT setv_int FROM setting_value JOIN setting ON setv_setting_set_id = set_id WHERE set_name = 'Hitelalkalom';");
$smarty->assign('training', $training);
@@ -141,12 +143,11 @@ if ($this->is_id()) {
$smarty->assign('sorted_users', $s_users);
$smarty->assign('rest_users', $rest_users);
$smarty->assign('tr_id', $this->get_id());
$smarty->assign('has_credit', $credit !== null);
$smarty->assign('credit', $credit);
$smarty->display("presence.tpl");
}
}
else {

View File

@@ -296,6 +296,10 @@ if (isset($_POST['action'])) {
$tmp_user->update_balance();
//ha pozitiv az egyenleg, akkor lenullázhatjuk a hitelalkalmait (???)
if (($tmp_user->get_uk_balance() + $_POST['mod_sum']) > 0) {
$sql->update_table('user_kid', array('uk_credit' => '0'), array('uk_id' => $_POST['mod_user_kid_uk_id']));
}
header("Location: /admin/money_deposit");
break;
case 'money_deposit_update':

View File

@@ -42,22 +42,30 @@
</div>
{if $trc_coaches || $trc_helpers}
<div class="list_item">
<label class="desc" id="title1" for="coaches">
<img src="/_image/coach.png">
Edző(k):
</label>
<div style="display: inline-block;">
{foreach $trc_coaches as $coach}
{$coach->get_ua_name()}<br>
{/foreach}
{foreach $trc_helpers as $coach}
<span class="italic">{$coach->get_ua_name()}</span><br>
{/foreach}
<div class="list_item">
<label class="desc" id="title1" for="coaches">
<img src="/_image/coach.png">
Edző(k):
</label>
<div style="display: inline-block;">
{foreach $trc_coaches as $coach}
{$coach->get_ua_name()}<br>
{/foreach}
{foreach $trc_helpers as $coach}
<span class="italic">{$coach->get_ua_name()}</span><br>
{/foreach}
</div>
</div>
</div>
{/if}
<div class="list_item">
<label>
<img src="/_image/deposit.png">
Edzés díja:
</label>
<div>{$training->get_tr_price()} Ft</div>
</div>
<div class="list_item">
<label class="desc" id="title1" for="tr_headcount">
<img src="/_image/letszam.png">
@@ -69,14 +77,13 @@
</div>
</div>
<input type="hidden" id="tr_id" value="{$tr_id}">
<input type="hidden" id="admin_id" value="{$user_login->get_ua_id()}">
<br><br><br>
{if !$training->get_tr_locked()}
<div class="list">
<div class="list" id="main-list-container" data-max-credit="{$credit}">
{foreach $users as $user}
{if $user@first ||
$users[$user@index]->get_uk_presence_on_previous_trainings($trainings) !=
@@ -86,9 +93,11 @@
{$users[$user@index]->get_uk_presence_on_previous_trainings($trainings)}/4
</span>
{/if}
<div class="{if $user->get_uk_presence($tr_id)}name_tag_checked{else}name_tag{/if} width70" id="{$user->get_uk_id()}">
<div class="{if $user->get_uk_presence($tr_id)}name_tag_checked{else}name_tag{/if} width70 {$user->get_credit_color($has_credit, $credit, $training->get_tr_price())}" id="{$user->get_uk_id()}" data-credit="{$user->get_uk_credit()}">
<img src="/_image/shuttlecock.png">
<div>{$user->get_uk_name()}</div>
<div>
{$user->get_uk_name()}
</div>
</div>
{/foreach}
@@ -97,20 +106,26 @@
<br><br>
<div class="list">
{foreach $rest_users as $rest_user}
<div class="{if $rest_user->get_uk_presence($tr_id)}name_tag_checked{else}name_tag{/if} width70" id="{$rest_user->get_uk_id()}">
<img src="/_image/shuttlecock.png">
<div>{$rest_user->get_uk_name()}</div>
</div>
{/foreach}
{foreach $rest_users as $rest_user}
<div class="{if $rest_user->get_uk_presence($tr_id)}name_tag_checked{else}name_tag{/if} width70 {$rest_user->get_credit_color($has_credit, $credit, $training->get_tr_price())}" id="{$rest_user->get_uk_id()}" data-credit="{$rest_user->get_uk_credit()}">
<img src="/_image/shuttlecock.png">
<div>
{$rest_user->get_uk_name()}
{if $rest_user->get_credit_color($has_credit, $credit, $training->get_tr_price())}
<span class="credit-text">(<span class="credit-counter">{$rest_user->get_uk_credit()}</span>/{$credit})</span>
{/if}
</div>
</div>
{/foreach}
</div>
{else}
<div class="list">
{foreach $sorted_users as $user}
<div class="list_item">
<div class="list_item {$user->get_credit_color($has_credit, $credit, $training->get_tr_price())}" data-credit="{$user->get_uk_credit()}">
<img src="/_image/shuttlecock.png">
{$user->get_uk_name()}
<div>
{$user->get_uk_name()}
</div>
</div>
{/foreach}
</div>
@@ -118,91 +133,134 @@
{/if}
<script>
$('.name_tag').click(function() {
//alert($(this).css('backgroundColor'));
var user_id = $(this).attr('id');
var x = $(this).css('backgroundColor');
hexc(x);
var checked = (color == '#e2edff');
var tr_id = $("#tr_id").val();
//ha kék, akkor zöldre változtatja, egyébként fordítva
if (color == '#e2edff') {
$(this).css('backgroundColor', '#1eea0b');
var el = $('#headcount');
var num = parseInt(el.text());
el.text(num+1).append(" fő");
function leaveClassesAndAdd(obj, className) {
$(obj).removeClass('restricted').removeClass('credit-restricted').removeClass('credit-warning').addClass(className);
}
else {
$(this).css('backgroundColor', '#e2edff');
var el = $('#headcount');
var num = parseInt(el.text());
el.text(num-1).append(" fő");
}
//alert(checked);
var admin_id = $("#admin_id").val();
$('.name_tag, .name_tag_checked').click(function() {
if (($(this).hasClass('restricted') || $(this).hasClass('credit-restricted')) && !$(this).hasClass('name_tag_checked')) {
console.log('stop');
return false;
}
//alert($(this).css('backgroundColor'));
var user_id = $(this).attr('id');
var x = $(this).css('backgroundColor');
hexc(x);
//var checked = (color == '#e2edff');
var checked = $(this).hasClass('name_tag_checked');
var tr_id = $("#tr_id").val();
$.ajax({
type: "POST",
url: '/_ajax/update_presence.php',
data: { checked : checked, user_id : user_id, tr_id : tr_id, admin_id : admin_id},
success: function(data) {
//hitelezett alkalom, logikai változó
var credited = $(this).hasClass('credit-warning');
var credit = $(this).data('credit');
var originalCredit = $(this).data('credit');
//ha kék, akkor zöldre változtatja, egyébként fordítva
//if (color == '#e2edff') {
if ($(this).hasClass('name_tag')) {
//$(this).css('backgroundColor', '#1eea0b');
$(this).addClass('name_tag_checked');
$(this).removeClass('name_tag');
var el = $('#headcount');
var num = parseInt(el.text());
el.text(num+1).append(" fő");
if (credited) {
credit++;
$(this).data('credit', credit);
$(this).attr('data-credit', credit);
$(this).find('.credit-counter').html(credit);
//meg kell nézni, hogy a classokat le kell-e venni/hozzá kell-e adni
if (credit == $('#main-list-container').data('max-credit')) {
leaveClassesAndAdd($(this), 'credit-restricted');
}
}
}
else {
//$(this).css('backgroundColor', '#e2edff');
$(this).addClass('name_tag');
$(this).removeClass('name_tag_checked');
var el = $('#headcount');
var num = parseInt(el.text());
el.text(num-1).append(" fő");
if (credit > 0) {
credit--;
$(this).data('credit', credit);
$(this).attr('data-credit', credit);
$(this).find('.credit-counter').html(credit);
//meg kell nézni, hogy a classokat le kell-e venni/hozzá kell-e adni
if ($('#main-list-container').data('max-credit') > 0) {
leaveClassesAndAdd($(this), 'credit-warning');
}
else {
leaveClassesAndAdd($(this), 'credit-restricted');
}
}
}
//alert(checked);
var admin_id = $("#admin_id").val();
$.ajax({
type: "POST",
url: '/_ajax/update_presence.php',
data: { checked : checked, user_id : user_id, tr_id : tr_id, admin_id : admin_id, credited : credited, credit : originalCredit},
success: function(data) {
}
});
});
});
$('.name_tag_checked').click(function() {
//alert($(this).css('backgroundColor'));
var user_id = $(this).attr('id');
var x = $(this).css('backgroundColor');
hexc(x);
var checked = (color == '#e2edff');
var tr_id = $("#tr_id").val();
//ha kék, akkor zöldre változtatja, egyébként fordítva
if (color == '#e2edff') {
$(this).css('backgroundColor', '#1eea0b');
var el = $('#headcount');
var num = parseInt(el.text());
el.text(num+1).append(" fő");
}
else {
$(this).css('backgroundColor', '#e2edff');
var el = $('#headcount');
var num = parseInt(el.text());
el.text(num-1).append(" fő");
}
//alert(checked);
var admin_id = $("#admin_id").val();
$.ajax({
type: "POST",
url: '/_ajax/update_presence.php',
data: { checked : checked, user_id : user_id, tr_id : tr_id, admin_id : admin_id},
success: function(data) {
/* $('.name_tag_checked').click(function() {
//alert($(this).css('backgroundColor'));
var user_id = $(this).attr('id');
var x = $(this).css('backgroundColor');
hexc(x);
var checked = (color == '#e2edff');
var tr_id = $("#tr_id").val();
//ha kék, akkor zöldre változtatja, egyébként fordítva
if (color == '#e2edff') {
$(this).css('backgroundColor', '#1eea0b');
var el = $('#headcount');
var num = parseInt(el.text());
el.text(num+1).append(" fő");
}
});
else {
$(this).css('backgroundColor', '#e2edff');
var el = $('#headcount');
var num = parseInt(el.text());
el.text(num-1).append(" fő");
}
//alert(checked);
});
var admin_id = $("#admin_id").val();
$.ajax({
type: "POST",
url: '/_ajax/update_presence.php',
data: { checked : checked, user_id : user_id, tr_id : tr_id, admin_id : admin_id},
success: function(data) {
}
});
});*/
function hexc(colorval) {
var parts = colorval.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
delete(parts[0]);
for (var i = 1; i <= 3; ++i) {
parts[i] = parseInt(parts[i]).toString(16);
if (parts[i].length == 1) parts[i] = '0' + parts[i];
function hexc(colorval) {
var parts = colorval.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
delete(parts[0]);
for (var i = 1; i <= 3; ++i) {
parts[i] = parseInt(parts[i]).toString(16);
if (parts[i].length == 1) parts[i] = '0' + parts[i];
}
color = '#' + parts.join('');
}
color = '#' + parts.join('');
}
</script>