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'] . ";"; $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'])); $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']); 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']); $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']); 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; $de_array[] = $new_diary_entry;
} }
//itt csak hivatkozással adjuk át a tömböt, a calculate_balance kiszámolja, belerakja és visszadja //itt csak hivatkozással adjuk át a tömböt, a calculate_balance kiszámolja, belerakja és visszadja
$this->calculate_balance($de_array, $this); $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; border-left: 2px solid #000;
font-size: 18px; font-size: 18px;
font-family: Arial; 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 { .user_mod_form {
@@ -727,82 +735,85 @@ form#auto_filters > div > label {
@media (min-width: 680px) { @media (min-width: 680px) {
.categories { .categories {
width: unset; width: unset;
text-align: left; text-align: left;
margin: 0px 0px 0px 45px; margin: 0px 0px 0px 45px;
padding: 0; padding: 0;
} }
.toggle { .toggle {
width: 50px; width: 50px;
height: 50px; height: 50px;
position: relative; position: relative;
right: -5px; right: -5px;
top: -10px; top: -10px;
background-color: #edfc5a; background-color: #edfc5a;
float: right; float: right;
border-right: 3px solid; border-right: 3px solid;
cursor: pointer; cursor: pointer;
} }
.list .list_item .toggle img { .list .list_item .toggle img {
position: relative; position: relative;
left: 12px; left: 12px;
top: 10px; top: 10px;
width: 25px; width: 25px;
height: 25px; height: 25px;
} }
.name_span { .name_span {
min-width: 200px; min-width: 200px;
display: inline-block; display: inline-block;
margin: 0; margin: 0;
} }
.category_list { .category_list {
width: 25%; width: 25%;
margin: 0; margin: 0;
display: inline; display: inline;
} }
.add_category { .add_category {
width: 25%; width: 25%;
margin: 0; margin: 0;
} }
.list .date_separator { .list .date_separator {
width: 100%; width: 100%;
} }
.balance { .balance {
clear: both; clear: both;
text-align: left; text-align: left;
margin: 10px 0px 15px 0px; margin: 10px 0px 15px 0px;
font-size: 20px; font-size: 20px;
font-weight: bold; font-weight: bold;
padding-left: 5px; padding-left: 5px;
border-bottom: 2px solid; border-bottom: 2px solid;
width: 30%; width: 30%;
} }
.list_item table.money td.no_mobile_show { .list_item table.money td.no_mobile_show {
display: table-cell; display: table-cell;
} }
.list_item table.money td.sum { .list_item table.money td.sum {
width: 1%; width: 1%;
white-space: nowrap; white-space: nowrap;
} }
.list_item table.money td.quarter_width {
width: 25%;
min-width: 100px;
text-align: left;
}
.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) { @media (min-width: 1250px) {
@@ -875,6 +886,4 @@ form#auto_filters > div > label {
.diary_header .balance_text { .diary_header .balance_text {
} }
} }

View File

@@ -129,6 +129,8 @@ if ($this->is_id()) {
$s_users[] = $s_user; $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); $smarty->assign('training', $training);
@@ -141,12 +143,11 @@ if ($this->is_id()) {
$smarty->assign('sorted_users', $s_users); $smarty->assign('sorted_users', $s_users);
$smarty->assign('rest_users', $rest_users); $smarty->assign('rest_users', $rest_users);
$smarty->assign('tr_id', $this->get_id()); $smarty->assign('tr_id', $this->get_id());
$smarty->assign('has_credit', $credit !== null);
$smarty->assign('credit', $credit);
$smarty->display("presence.tpl"); $smarty->display("presence.tpl");
} }
} }
else { else {

View File

@@ -296,6 +296,10 @@ if (isset($_POST['action'])) {
$tmp_user->update_balance(); $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"); header("Location: /admin/money_deposit");
break; break;
case 'money_deposit_update': case 'money_deposit_update':

View File

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