first commit
This commit is contained in:
266
admin/rangliste_prepare.php
Executable file
266
admin/rangliste_prepare.php
Executable file
@ -0,0 +1,266 @@
|
||||
<?php
|
||||
if (!isset($_SESSION))
|
||||
{
|
||||
session_start();
|
||||
}
|
||||
include_once '../classes/TestProjektSmarty.class_subdir.php';
|
||||
require_once ("../config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']) , 0, -3) . "html";
|
||||
$smarty = new SmartyAdmin();
|
||||
require_once "../language/german.inc.php";
|
||||
|
||||
if (isset($_GET['action']))
|
||||
{
|
||||
$action = $_GET['action'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$action = '';
|
||||
}
|
||||
|
||||
if ($action == '')
|
||||
{
|
||||
# Auswahlmaske f<>r welche Studienbeginn die Ranglisten berechnet werden
|
||||
$german = $db->query("SET lc_time_names = 'de_DE';");
|
||||
|
||||
$query1 = "SELECT ausbildungsbeginn
|
||||
FROM bpm_stichtage
|
||||
ORDER BY ausbildungsbeginn ASC";
|
||||
|
||||
$result1 = $db->query($query1) or die("Cannot execute query1");
|
||||
|
||||
while ($row1 = $result1->fetch_array())
|
||||
{
|
||||
$table_data1[] = $row1;
|
||||
}
|
||||
$smarty->assign('table_data1', $table_data1);
|
||||
}
|
||||
|
||||
if ($action == 'ausgabe')
|
||||
{
|
||||
# Berechnung der Personen, f<>r die eine Rangliste erzeugt wird
|
||||
# 1) Personen Selektieren, die zum ausgew<65>hlten Jahrgang geh<65>ren
|
||||
# 2) Personen, die keine HZB Note abgegeben haben l<>schen
|
||||
# 3) Personen l<>schen, die sich nicht beworben haben (Dokumente nicht abschlie<69>end hochgeladen haben beim Bewerbungsverfahren)
|
||||
# 4) ausgeschlossene Personen l<>schen
|
||||
# Berechnung der Ranglistenpl<70>tze 1-3
|
||||
|
||||
|
||||
# 1) Personen des Jahrgangs selektieren
|
||||
$ausbildungsbeginn = $_POST['ausbildungsbeginn'];
|
||||
|
||||
# Performance erh<72>hen, commit erst am Ende absetzen
|
||||
$db->autocommit(false);
|
||||
|
||||
# Drop Table, damit das create Datum ausgelesen werden kann in den Ranglisten
|
||||
$sql1 = $db->query("DROP TABLE bpm_tmp_jahrgang_kandidat");
|
||||
$sql1 = $db->query("CREATE TABLE `bpm_tmp_jahrgang_kandidat` (
|
||||
`tjk_id` int(11) NOT NULL,
|
||||
`ka_id` int(11) NOT NULL,
|
||||
`vorname` varchar(250) NOT NULL,
|
||||
`nachname` varchar(250) NOT NULL,
|
||||
`id` varchar(200) NOT NULL,
|
||||
`mail` varchar(250) NOT NULL,
|
||||
`ausbildungsbeginn` int(4) NOT NULL,
|
||||
`hzb` decimal(10,2) NOT NULL,
|
||||
`tm_datum` datetime DEFAULT NULL,
|
||||
`tm_standort` enum('K','L') NOT NULL,
|
||||
`testergebnis` int(5) NOT NULL COMMENT 'Nur bestandene Tests',
|
||||
`rang1` int(11) NOT NULL,
|
||||
`rang2` int(11) NOT NULL,
|
||||
`rang3` int(11) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
|
||||
$sql1 = $db->query("ALTER TABLE `bpm_tmp_jahrgang_kandidat` ADD PRIMARY KEY (`tjk_id`);");
|
||||
$sql1 = $db->query("ALTER TABLE `bpm_tmp_jahrgang_kandidat` MODIFY `tjk_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;");
|
||||
|
||||
$query = "SELECT ka_id, vorname, nachname,id, mail
|
||||
FROM bpm_kandidat
|
||||
where upper(nachname) not like '%TEST%'
|
||||
ORDER BY nachname ASC, vorname ASC
|
||||
";
|
||||
|
||||
$result = $db->query($query) or die("Cannot execute query");
|
||||
|
||||
while ($row = $result->fetch_array())
|
||||
{
|
||||
|
||||
# Pr<50>fung der Testg<74>ltigkeit: 1) Wann hat der Kandidat den Test gemacht
|
||||
$query_bpmtesttg = $db->query("SELECT date_format(tm_datum, '%Y-%m-%d') tm_datum
|
||||
FROM bpm_term_kand a, bpm_termine b, bpm_kandidat c
|
||||
WHERE a.tm_id = b.tm_id
|
||||
AND a.ka_id = c.ka_id
|
||||
AND upper(c.id) = '$row[id]'
|
||||
ORDER BY tk_id desc
|
||||
LIMIT 1
|
||||
");
|
||||
$row_bpmtesttg = $query_bpmtesttg->fetch_array();
|
||||
|
||||
# Pr<50>fung der Testg<74>ltigkeit: 2) F<>r welchen Ausbildungsbeginn(/Semester) gilt der Test
|
||||
$query_bpmausbb = $db->query("SELECT ausbildungsbeginn
|
||||
FROM bpm_stichtage
|
||||
WHERE beginn <= '$row_bpmtesttg[tm_datum]'
|
||||
AND ende >= '$row_bpmtesttg[tm_datum]'
|
||||
LIMIT 1
|
||||
");
|
||||
$row_bpmausbb = $query_bpmausbb->fetch_array();
|
||||
|
||||
if ($row_bpmausbb['ausbildungsbeginn'] == $ausbildungsbeginn)
|
||||
{
|
||||
$nachname = addslashes(trim($row['nachname']));
|
||||
$vorname = addslashes(trim($row['vorname']));
|
||||
|
||||
$query_bpmnote = $db->query("SELECT hzb
|
||||
FROM bpm_note
|
||||
WHERE ka_id = '$row[ka_id]'
|
||||
ORDER BY no_id desc
|
||||
LIMIT 1
|
||||
");
|
||||
$row_bpmanote = $query_bpmnote->fetch_array();
|
||||
$hzb = $row_bpmanote['hzb'];
|
||||
|
||||
$query_bpmerg = $db->query("SELECT summe, bestanden, tm_datum, tm_standort
|
||||
FROM bpm_ergebnisse a, bpm_tanpool b, bpm_term_kand c, bpm_termine d
|
||||
WHERE a.tan=b.tan
|
||||
AND b.tp_id=c.tp_id
|
||||
AND c.tm_id=d.tm_id
|
||||
AND a.ka_id = '$row[ka_id]'
|
||||
ORDER BY eg_id DESC
|
||||
Limit 1
|
||||
");
|
||||
$row_bpmerg = $query_bpmerg->fetch_array();
|
||||
$summe = $row_bpmerg['summe'];
|
||||
$tm_datum = $row_bpmerg['tm_datum'];
|
||||
$tm_standort = $row_bpmerg['tm_standort'];
|
||||
|
||||
if ($row_bpmerg['bestanden'] == 1)
|
||||
{
|
||||
# Nur wenn der Test bestanden wurde hinzuf<75>gen
|
||||
$sql1 = $db->query("insert into bpm_tmp_jahrgang_kandidat (ka_id, vorname, nachname, id, mail, ausbildungsbeginn, hzb, tm_datum, tm_standort, testergebnis) VALUES('$row[ka_id]', '$vorname', '$nachname', '$row[id]', '$row[mail]', '$ausbildungsbeginn', '$hzb', '$tm_datum', '$tm_standort', '$summe')");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# 2) Personen ohne HZB l<>schen
|
||||
$sql1 = $db->query("DELETE FROM bpm_tmp_jahrgang_kandidat WHERE hzb='0.00'");
|
||||
$sql1 = $db->query("DELETE FROM bpm_tmp_jahrgang_kandidat WHERE ka_id NOT IN (SELECT ka_id FROM bpm_ergebnisse)");
|
||||
|
||||
# 3) Personen ohne vollst<73>ndige Bewerbung l<>schen
|
||||
$sql1 = $db->query("DELETE FROM bpm_tmp_jahrgang_kandidat WHERE ka_id in (SELECT ka_id FROM bpm_upload WHERE upload_dat='0000-00-00 00:00:00')");
|
||||
$sql1 = $db->query("DELETE FROM bpm_tmp_jahrgang_kandidat WHERE ka_id NOT IN (SELECT ka_id FROM bpm_upload)");
|
||||
|
||||
# 4) Ausgeschlossene Personen l<>schen
|
||||
$sql1 = $db->query("DELETE FROM bpm_tmp_jahrgang_kandidat WHERE ka_id in (select ka_id from bpm_ausgeschlossene_kandidaten)");
|
||||
|
||||
# R<>nge berechnen
|
||||
# Rangliste1
|
||||
$query1 = "SELECT ka_id, vorname, nachname
|
||||
, hzb
|
||||
, id
|
||||
, mail
|
||||
FROM bpm_tmp_jahrgang_kandidat
|
||||
ORDER BY hzb ASC, nachname ASC, vorname ASC
|
||||
";
|
||||
$result1 = $db->query($query1) or die("Cannot execute query1");
|
||||
|
||||
$rangliste1 = 0;
|
||||
$lfd_nr2_1 = 0;
|
||||
$lfd_nr3_1 = 0;
|
||||
$hzbvorher = 0;
|
||||
|
||||
while ($row1 = $result1->fetch_array())
|
||||
{
|
||||
|
||||
$lfd_nr2_1++;
|
||||
|
||||
$hzb = $row1['hzb'];
|
||||
if ($hzb == $hzbvorher)
|
||||
{
|
||||
$rangliste1 = $lfd_nr3_1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$rangliste1 = $lfd_nr2_1;
|
||||
$lfd_nr3_1 = $lfd_nr2_1;
|
||||
}
|
||||
$hzbvorher = $row1['hzb'];
|
||||
$sql1 = $db->query("UPDATE bpm_tmp_jahrgang_kandidat SET rang1='$rangliste1' WHERE ka_id=$row1[ka_id]");
|
||||
}
|
||||
|
||||
# Rangliste2
|
||||
$query2 = "SELECT ka_id, vorname, nachname, date_format(tm_datum, '%d.%m.%Y um %H:%i Uhr') tm_datum, CASE tm_standort
|
||||
WHEN 'L' THEN 'Ludwigsburg'
|
||||
WHEN 'K' THEN 'Kehl'
|
||||
ELSE '' END as tm_standort
|
||||
, testergebnis
|
||||
, id
|
||||
, mail
|
||||
FROM bpm_tmp_jahrgang_kandidat
|
||||
ORDER BY testergebnis DESC, nachname ASC, vorname ASC
|
||||
";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
$rangliste2 = 0;
|
||||
$lfd_nr2_2 = 0;
|
||||
$lfd_nr3_2 = 0;
|
||||
$testergebnisvorher = 0;
|
||||
|
||||
while ($row2 = $result2->fetch_array())
|
||||
{
|
||||
|
||||
$lfd_nr2_2++;
|
||||
|
||||
$testergebnis = $row2['testergebnis'];
|
||||
if ($testergebnis == $testergebnisvorher)
|
||||
{
|
||||
$rangliste2 = $lfd_nr3_2;
|
||||
}
|
||||
else
|
||||
{
|
||||
$rangliste2 = $lfd_nr2_2;
|
||||
$lfd_nr3_2 = $lfd_nr2_2;
|
||||
}
|
||||
$testergebnisvorher = $row2['testergebnis'];
|
||||
|
||||
$sql1 = $db->query("UPDATE bpm_tmp_jahrgang_kandidat SET rang2='$rangliste2' WHERE ka_id=$row2[ka_id]");
|
||||
}
|
||||
$smarty->assign('table_data1', $table_data1);
|
||||
|
||||
# Rangliste3
|
||||
$query3 = "SELECT ka_id, (rang1+rang2)/2 rang3
|
||||
FROM bpm_tmp_jahrgang_kandidat
|
||||
ORDER BY rang3 ASC, nachname ASC, vorname ASC
|
||||
";
|
||||
$result3 = $db->query($query3) or die("Cannot execute query3");
|
||||
|
||||
$rangliste3 = 0;
|
||||
$lfd_nr2_3 = 0;
|
||||
$lfd_nr3_3 = 0;
|
||||
$rang3vorher = 0;
|
||||
|
||||
while ($row3 = $result3->fetch_array())
|
||||
{
|
||||
|
||||
$lfd_nr2_3++;
|
||||
|
||||
$rang3 = $row3['rang3'];
|
||||
if ($rang3 == $rang3vorher)
|
||||
{
|
||||
$rangliste3 = $lfd_nr3_3;
|
||||
}
|
||||
else
|
||||
{
|
||||
$rangliste3 = $lfd_nr2_3;
|
||||
$lfd_nr3_3 = $lfd_nr2_3;
|
||||
}
|
||||
$rang3vorher = $row3['rang3'];
|
||||
$sql1 = $db->query("UPDATE bpm_tmp_jahrgang_kandidat SET rang3='$rangliste3' WHERE ka_id=$row3[ka_id]");
|
||||
}
|
||||
|
||||
$db->autocommit(true);
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/admin/$templatename");
|
||||
|
||||
?>
|
Reference in New Issue
Block a user