training/presence visibility by coach

This commit is contained in:
Tóth Richárd
2019-07-28 15:45:19 +02:00
parent 13bf590aa0
commit ec3256b3cc
4 changed files with 204 additions and 155 deletions

View File

@@ -135,6 +135,11 @@ class training {
return !empty($this->tr_coaches); return !empty($this->tr_coaches);
} }
public static function has_any_coach($training_id) {
global $sql;
return $sql->num_of_rows("SELECT * FROM training_coach WHERE trc_training_tr_id = " . $training_id);
}
public function is_helper() { public function is_helper() {
//megadja, hogy van-e beállítva segédedző az edzéshez //megadja, hogy van-e beállítva segédedző az edzéshez
//TRUE HA IGEN, FALSE EGYÉBKÉNT //TRUE HA IGEN, FALSE EGYÉBKÉNT

View File

@@ -165,6 +165,11 @@ class user {
return $this->authorities; return $this->authorities;
} }
public static function user_can_edit_training($user_id, $training_id) {
global $sql;
return $sql->num_of_rows("SELECT * FROM training_coach WHERE trc_coach_uc_id = " . $user_id ." AND trc_training_tr_id = " . $training_id);
}
public static function create_user($_name, $_password, $_authorities = array()) { public static function create_user($_name, $_password, $_authorities = array()) {
global $sql; global $sql;
$new_user_id = $sql->insert_into('user_coach', array( $new_user_id = $sql->insert_into('user_coach', array(

View File

@@ -11,140 +11,161 @@ if ($this->is_id()) {
//alg.: lekérjük, hogy az elmúlt 4 hétben, ezen a napon, ezzel az edzés típussal milyen edzés ID-k vannak //alg.: lekérjük, hogy az elmúlt 4 hétben, ezen a napon, ezzel az edzés típussal milyen edzés ID-k vannak
//presence-ből countoljuk az user_kid ID-kat //presence-ből countoljuk az user_kid ID-kat
if (!$user->has_authority_by_name('admin') && !user::user_can_edit_training($user->get_ua_id(), $this->get_id()) && training::has_any_coach($this->get_id())) {
$presence_query = "SELECT * FROM user_kid ORDER BY uk_name;"; $smarty->display('access_denied.tpl');
$presence_assoc_array = $sql->assoc_array($presence_query);
//végig kell menni rajta h legeneráljuk az usereket
$users = array();
//var_dump($presence_assoc_array);
/*
foreach ($presence_assoc_array as $presence) {
$user = new user_kid();
$user->set_user_data_by_id($presence['uk_id']);
$users[] = $user;
} }
*/ else {
$presence_query = "SELECT * FROM user_kid ORDER BY uk_name;";
//training data
$training = new training();
$training->set_training_data_by_id($this->get_id());
//SZŰRÉS
$tr_ids = array();
for ($i=1; $i <=4 ; $i++) {
$actual_date = date("Y-m-d H:i:s" , strtotime($training->get_tr_date() . " - " . $i . " weeks"));
$tr_ids_query = "SELECT * FROM training WHERE tr_deleted = 0 AND tr_date = '" . $actual_date . "' and tr_training_type_trt_id = " . $training->get_tr_training_type_trt_id() . ";";
$tr_id = $sql->single_variable($tr_ids_query);
if ($tr_id) $tr_ids[] = $tr_id;
}
//végigmegyünk az edzésekkel a presencen
$presence_query = "
SELECT `pr_user_kid_uk_id` , count( `pr_id` ) AS 'presence'
FROM `presence`
JOIN user_kid ON uk_id = pr_user_kid_uk_id
JOIN training ON tr_id = pr_training_tr_id
WHERE `pr_training_tr_id`".
(!empty($tr_ids)?"IN ( " . implode(',', $tr_ids) . " ) ":" ")
."AND `uk_deleted` = 0
AND `tr_deleted` = 0
AND `uk_is_active` = 1
GROUP BY `pr_user_kid_uk_id`
ORDER BY count( `pr_id` ) DESC, uk_name ASC;
";
//echo $presence_query;
if (!empty($tr_ids)) {
$presence_assoc_array = $sql->assoc_array($presence_query); $presence_assoc_array = $sql->assoc_array($presence_query);
//végig kell menni rajta h legeneráljuk az usereket
$users = array();
//var_dump($presence_assoc_array);
/*
foreach ($presence_assoc_array as $presence) { foreach ($presence_assoc_array as $presence) {
$user = new user_kid(); $user = new user_kid();
$user->set_user_data_by_id($presence['pr_user_kid_uk_id']); $user->set_user_data_by_id($presence['uk_id']);
$users[] = $user; $users[] = $user;
} }
} */
//legeneráljuk a maradékot //training data
$exeptions = array(); $training = new training();
$rest_users = array(); $training->set_training_data_by_id($this->get_id());
foreach ($users as $user) {
$exeptions[] = $user->get_uk_id();
}
if (!empty($exeptions)) $rest_user_query = "SELECT * FROM user_kid WHERE uk_id NOT IN (" . implode(',', $exeptions) . ") AND uk_deleted = 0 AND uk_is_active = 1 ORDER BY uk_name ASC;"; //ha vannak kiemelt userek //SZŰRÉS
else $rest_user_query = "SELECT * FROM user_kid WHERE uk_deleted = 0 AND uk_is_active = 1 ORDER BY uk_name;"; //ha nincsenek kiemelt userek $tr_ids = array();
$rest_user_assoc_array = $sql->assoc_array($rest_user_query); for ($i=1; $i <=4 ; $i++) {
foreach ($rest_user_assoc_array as $rest_user) { $actual_date = date("Y-m-d H:i:s" , strtotime($training->get_tr_date() . " - " . $i . " weeks"));
$user = new user_kid(); $tr_ids_query = "SELECT * FROM training WHERE tr_deleted = 0 AND tr_date = '" . $actual_date . "' and tr_training_type_trt_id = " . $training->get_tr_training_type_trt_id() . ";";
$user->set_user_data_by_id($rest_user['uk_id']); $tr_id = $sql->single_variable($tr_ids_query);
$rest_users[] = $user; if ($tr_id) $tr_ids[] = $tr_id;
}
//végigmegyünk az edzésekkel a presencen
$presence_query = "
SELECT `pr_user_kid_uk_id` , count( `pr_id` ) AS 'presence'
FROM `presence`
JOIN user_kid ON uk_id = pr_user_kid_uk_id
JOIN training ON tr_id = pr_training_tr_id
WHERE `pr_training_tr_id`".
(!empty($tr_ids)?"IN ( " . implode(',', $tr_ids) . " ) ":" ")
."AND `uk_deleted` = 0
AND `tr_deleted` = 0
AND `uk_is_active` = 1
GROUP BY `pr_user_kid_uk_id`
ORDER BY count( `pr_id` ) DESC, uk_name ASC;
";
//echo $presence_query;
if (!empty($tr_ids)) {
$presence_assoc_array = $sql->assoc_array($presence_query);
foreach ($presence_assoc_array as $presence) {
$user = new user_kid();
$user->set_user_data_by_id($presence['pr_user_kid_uk_id']);
$users[] = $user;
}
}
//legeneráljuk a maradékot
$exeptions = array();
$rest_users = array();
foreach ($users as $user) {
$exeptions[] = $user->get_uk_id();
}
if (!empty($exeptions)) $rest_user_query = "SELECT * FROM user_kid WHERE uk_id NOT IN (" . implode(',', $exeptions) . ") AND uk_deleted = 0 AND uk_is_active = 1 ORDER BY uk_name ASC;"; //ha vannak kiemelt userek
else $rest_user_query = "SELECT * FROM user_kid WHERE uk_deleted = 0 AND uk_is_active = 1 ORDER BY uk_name;"; //ha nincsenek kiemelt userek
$rest_user_assoc_array = $sql->assoc_array($rest_user_query);
foreach ($rest_user_assoc_array as $rest_user) {
$user = new user_kid();
$user->set_user_data_by_id($rest_user['uk_id']);
$rest_users[] = $user;
}
//TRAINING-COACH ARRAY
$trc_query = "SELECT * FROM training_coach JOIN user_coach ON ua_id = trc_coach_uc_id WHERE trc_helper = 0 AND ua_deleted = 0 AND trc_training_tr_id = " . $this->get_id();
$trc_coaches = array();
$trc_assoc_array = $sql->assoc_array($trc_query);
foreach ($trc_assoc_array as $trc_data) {
$new_coach = new user();
$new_coach->set_user_data_by_id($trc_data['trc_coach_uc_id']);
$trc_coaches[] = $new_coach;
}
//TRAINING-HELPER ARRAY
$trc_query = "SELECT * FROM training_coach JOIN user_coach ON ua_id = trc_coach_uc_id WHERE trc_helper = 1 AND ua_deleted = 0 AND trc_training_tr_id = " . $this->get_id();
$trc_helpers = array();
$trc_assoc_array = $sql->assoc_array($trc_query);
foreach ($trc_assoc_array as $trc_data) {
$new_coach = new user();
$new_coach->set_user_data_by_id($trc_data['trc_coach_uc_id']);
$trc_helpers[] = $new_coach;
}
//var_dump($users);
//headcount
$headcount_query = "SELECT * FROM presence WHERE pr_training_tr_id = " . $this->get_id() . ";";
$headcount = $sql->num_of_rows($headcount_query);
//csak lista
$s_users = array();
$presence_query = "
SELECT `pr_user_kid_uk_id`
FROM `presence`
JOIN user_kid ON uk_id = pr_user_kid_uk_id
WHERE `pr_training_tr_id` = ".$this->get_id()."
AND uk_deleted = 0
ORDER BY uk_name ASC;
";
$presence_assoc_array = $sql->assoc_array($presence_query);
foreach ($presence_assoc_array as $presence) {
$s_user = new user_kid();
$s_user->set_user_data_by_id($presence['pr_user_kid_uk_id']);
$s_users[] = $s_user;
}
$smarty->assign('training', $training);
$smarty->assign('trainings', $tr_ids);
$smarty->assign('headcount', count($presence_assoc_array));
$smarty->assign("trc_coaches", $trc_coaches);
$smarty->assign("trc_helpers", $trc_helpers);
$smarty->assign('presence_assoc_array', $presence_assoc_array);
$smarty->assign('users', $users);
$smarty->assign('sorted_users', $s_users);
$smarty->assign('rest_users', $rest_users);
$smarty->assign('tr_id', $this->get_id());
$smarty->display("presence.tpl");
} }
//TRAINING-COACH ARRAY
$trc_query = "SELECT * FROM training_coach JOIN user_coach ON ua_id = trc_coach_uc_id WHERE trc_helper = 0 AND ua_deleted = 0 AND trc_training_tr_id = " . $this->get_id();
$trc_coaches = array();
$trc_assoc_array = $sql->assoc_array($trc_query);
foreach ($trc_assoc_array as $trc_data) {
$new_coach = new user();
$new_coach->set_user_data_by_id($trc_data['trc_coach_uc_id']);
$trc_coaches[] = $new_coach;
}
//TRAINING-HELPER ARRAY
$trc_query = "SELECT * FROM training_coach JOIN user_coach ON ua_id = trc_coach_uc_id WHERE trc_helper = 1 AND ua_deleted = 0 AND trc_training_tr_id = " . $this->get_id();
$trc_helpers = array();
$trc_assoc_array = $sql->assoc_array($trc_query);
foreach ($trc_assoc_array as $trc_data) {
$new_coach = new user();
$new_coach->set_user_data_by_id($trc_data['trc_coach_uc_id']);
$trc_helpers[] = $new_coach;
}
//var_dump($users);
//headcount
$headcount_query = "SELECT * FROM presence WHERE pr_training_tr_id = " . $this->get_id() . ";";
$headcount = $sql->num_of_rows($headcount_query);
//csak lista
$s_users = array();
$presence_query = "
SELECT `pr_user_kid_uk_id`
FROM `presence`
JOIN user_kid ON uk_id = pr_user_kid_uk_id
WHERE `pr_training_tr_id` = ".$this->get_id()."
AND uk_deleted = 0
ORDER BY uk_name ASC;
";
$presence_assoc_array = $sql->assoc_array($presence_query);
foreach ($presence_assoc_array as $presence) {
$s_user = new user_kid();
$s_user->set_user_data_by_id($presence['pr_user_kid_uk_id']);
$s_users[] = $s_user;
}
$smarty->assign('training', $training);
$smarty->assign('trainings', $tr_ids);
$smarty->assign('headcount', count($presence_assoc_array));
$smarty->assign("trc_coaches", $trc_coaches);
$smarty->assign("trc_helpers", $trc_helpers);
$smarty->assign('presence_assoc_array', $presence_assoc_array);
$smarty->assign('users', $users);
$smarty->assign('sorted_users', $s_users);
$smarty->assign('rest_users', $rest_users);
$smarty->assign('tr_id', $this->get_id());
$smarty->display("presence.tpl");
} }
else { else {
$traning_list_query = "SELECT * FROM training WHERE tr_deleted = 0 ORDER BY tr_date DESC;"; if ($user->has_authority_by_name('admin')) {
$traning_list_query = "SELECT * FROM training WHERE tr_deleted = 0 ORDER BY tr_date DESC;";
}
else {
$traning_list_query = "
SELECT DISTINCT
tr_id
FROM
training
LEFT JOIN
training_coach ON trc_training_tr_id = tr_id
WHERE
tr_deleted = 0 AND (trc_coach_uc_id = ". $user->get_ua_id() ." OR trc_coach_uc_id IS NULL)
ORDER BY tr_date DESC;
";
}
$training_list_assoc_array = $sql->assoc_array($traning_list_query); $training_list_assoc_array = $sql->assoc_array($traning_list_query);
$training_array = array(); $training_array = array();

View File

@@ -5,47 +5,65 @@
if ($this->is_id()) { if ($this->is_id()) {
# ADOTT EDZÉS ADATAINAK MEGJELENÍTÉSE if (!$user->has_authority_by_name('admin') && !user::user_can_edit_training($user->get_ua_id(), $this->get_id()) && training::has_any_coach($this->get_id())) {
//training adatok $smarty->display('access_denied.tpl');
$training_data_query = "SELECT * FROM training WHERE tr_id = " . $this->get_id();
$training_data_assoc_array = $sql->assoc_array($training_data_query);
$smarty->assign('training_data', $training_data_assoc_array[0]);
//TRAINING TYPE ARRAY
$training_type_query = "SELECT * FROM training_type WHERE trt_deleted = 0 ORDER BY trt_name ASC;";
$training_type_assoc_array = $sql->assoc_array($training_type_query);
$smarty->assign("training_type_assoc_array", $training_type_assoc_array);
//COACH ARRAY
$coach_data_query = "SELECT * FROM user_coach WHERE ua_deleted = 0 ORDER BY ua_id ASC;";
$coach_data_assoc_array = $sql->assoc_array($coach_data_query);
$coach_array = array();
foreach ($coach_data_assoc_array as $coach_data) {
$new_coach = new user();
$new_coach->set_user_data_by_id($coach_data['ua_id']);
$coach_array[] = $new_coach;
} }
//TRAINING-COACH ARRAY else {
$trc_query = "SELECT * FROM training_coach WHERE trc_training_tr_id = " . $this->get_id(); # ADOTT EDZÉS ADATAINAK MEGJELENÍTÉSE
$trc_coaches = array(); //training adatok
$trc_assoc_array = $sql->assoc_array($trc_query); $training_data_query = "SELECT * FROM training WHERE tr_id = " . $this->get_id();
foreach ($trc_assoc_array as $trc_data) { $training_data_assoc_array = $sql->assoc_array($training_data_query);
$new_coach = new user(); $smarty->assign('training_data', $training_data_assoc_array[0]);
$new_coach->set_user_data_by_id($trc_data['trc_coach_uc_id']); //TRAINING TYPE ARRAY
$trc_coaches[] = $new_coach; $training_type_query = "SELECT * FROM training_type WHERE trt_deleted = 0 ORDER BY trt_name ASC;";
$training_type_assoc_array = $sql->assoc_array($training_type_query);
$smarty->assign("training_type_assoc_array", $training_type_assoc_array);
//COACH ARRAY
$coach_data_query = "SELECT * FROM user_coach WHERE ua_deleted = 0 ORDER BY ua_id ASC;";
$coach_data_assoc_array = $sql->assoc_array($coach_data_query);
$coach_array = array();
foreach ($coach_data_assoc_array as $coach_data) {
$new_coach = new user();
$new_coach->set_user_data_by_id($coach_data['ua_id']);
$coach_array[] = $new_coach;
}
//TRAINING-COACH ARRAY
$trc_query = "SELECT * FROM training_coach WHERE trc_training_tr_id = " . $this->get_id();
$trc_coaches = array();
$trc_assoc_array = $sql->assoc_array($trc_query);
foreach ($trc_assoc_array as $trc_data) {
$new_coach = new user();
$new_coach->set_user_data_by_id($trc_data['trc_coach_uc_id']);
$trc_coaches[] = $new_coach;
}
$smarty->assign("coach_data_assoc_array", $coach_data_assoc_array);
$smarty->assign("coach_array", $coach_array); //összes coach
$smarty->assign("trc_coaches", $trc_coaches); //csak a bejelölt coach coach
$smarty->assign("tr_id", $this->get_id()); //aktualis training id
$smarty->display('training_data_'.$tpl.'.tpl');
} }
$smarty->assign("coach_data_assoc_array", $coach_data_assoc_array);
$smarty->assign("coach_array", $coach_array); //összes coach
$smarty->assign("trc_coaches", $trc_coaches); //csak a bejelölt coach coach
$smarty->assign("tr_id", $this->get_id()); //aktualis training id
$smarty->display('training_data_'.$tpl.'.tpl');
} }
else { else {
if ($user->has_authority_by_name('admin')) {
$traning_list_query = "SELECT * FROM training WHERE tr_deleted = 0 ORDER BY tr_date DESC;"; $traning_list_query = "SELECT * FROM training WHERE tr_deleted = 0 ORDER BY tr_date DESC;";
}
else {
$traning_list_query = "
SELECT DISTINCT
tr_id
FROM
training
LEFT JOIN
training_coach ON trc_training_tr_id = tr_id
WHERE
tr_deleted = 0 AND (trc_coach_uc_id = ". $user->get_ua_id() ." OR trc_coach_uc_id IS NULL)
ORDER BY tr_date DESC;
";
}
$training_list_assoc_array = $sql->assoc_array($traning_list_query); $training_list_assoc_array = $sql->assoc_array($traning_list_query);
$training_array = array(); $training_array = array();