From 43de9af71f7f4ca5731b94a06d688ae8412ba427 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Fri, 6 Jul 2018 11:14:41 +0200 Subject: 2018/Feb/28 -i állapot hozzáadva, mint a módosítások kiindulási állapota --- .../include/modules/naplo/tanev/checkStatus.php | 33 +++ .../www/include/modules/naplo/tanev/fogadoOra.php | 142 +++++++++++ .../www/include/modules/naplo/tanev/munkaterv.php | 145 +++++++++++ .../include/modules/naplo/tanev/tankorBlokk.php | 277 +++++++++++++++++++++ .../include/modules/naplo/tanev/tankorCsoport.php | 164 ++++++++++++ .../include/modules/naplo/tanev/targyBontas.php | 240 ++++++++++++++++++ .../include/modules/naplo/tanev/targyOraszam.php | 28 +++ .../modules/naplo/tanev/vegzosOrarendLezaras.php | 33 +++ 8 files changed, 1062 insertions(+) create mode 100644 mayor-orig/www/include/modules/naplo/tanev/checkStatus.php create mode 100644 mayor-orig/www/include/modules/naplo/tanev/fogadoOra.php create mode 100644 mayor-orig/www/include/modules/naplo/tanev/munkaterv.php create mode 100644 mayor-orig/www/include/modules/naplo/tanev/tankorBlokk.php create mode 100644 mayor-orig/www/include/modules/naplo/tanev/tankorCsoport.php create mode 100644 mayor-orig/www/include/modules/naplo/tanev/targyBontas.php create mode 100644 mayor-orig/www/include/modules/naplo/tanev/targyOraszam.php create mode 100644 mayor-orig/www/include/modules/naplo/tanev/vegzosOrarendLezaras.php (limited to 'mayor-orig/www/include/modules/naplo/tanev') diff --git a/mayor-orig/www/include/modules/naplo/tanev/checkStatus.php b/mayor-orig/www/include/modules/naplo/tanev/checkStatus.php new file mode 100644 index 00000000..a2d97afb --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/tanev/checkStatus.php @@ -0,0 +1,33 @@ + 'checkStatus/1', 'modul' => 'naplo', 'result' => 'value'), $lr); + + $q = "SELECT COUNT(*) AS db FROM orarendiOra WHERE tolDt <= curdate() AND igDt >= curdate()"; + $R['orakSzama'] = db_query($q, array('fv' => 'checkStatus/2', 'modul' => 'naplo', 'result' => 'value'), $lr); + + $q = "SELECT DISTINCT orarendiOra.tanarId, orarendiOra.targyJel, orarendiOra.osztalyJel + FROM orarendiOra LEFT JOIN orarendiOraTankor USING(tanarId, targyJel, osztalyJel) + WHERE tankorId IS NULL"; + + $R['hianyzoTankor'] = db_query($q, array('fv' => 'checkStatus/3', 'modul' => 'naplo', 'result' => 'indexed'),$lr); + + $q = "SELECT DISTINCT orarendiOra.tanarId, orarendiOra.targyJel, orarendiOra.osztalyJel + FROM orarendiOraTankor LEFT JOIN orarendiOra USING(tanarId, targyJel, osztalyJel) + WHERE tanarId IS NULL"; + + $R['hianyzoOra'] = db_query($q, array('fv' => 'checkStatus/3', 'modul' => 'naplo', 'result' => 'indexed'),$lr); + + $R['vizsgaltDt'] = date('Y-m-d'); + + if ($olr == '') db_close($lr); + + return $R; + + } +?> diff --git a/mayor-orig/www/include/modules/naplo/tanev/fogadoOra.php b/mayor-orig/www/include/modules/naplo/tanev/fogadoOra.php new file mode 100644 index 00000000..4aaf4016 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/tanev/fogadoOra.php @@ -0,0 +1,142 @@ +NOW() ORDER BY tol"; + $dts = db_query($q, array('fv' => 'getKovetkezoFogadoDt', 'modul' => 'naplo', 'result' => 'indexed')); + $ret = array('dates' => array(), 'tol' => array(), 'ig' => array()); + if (is_array($dts)) for ($i = 0; $i < count($dts); $i++) { + $dt = substr($dts[$i]['tol'],0,10); + if (!in_array($dt, $ret['dates'])) $ret['dates'][] = $dt; + $ret['tol'][] = $dts[$i]['tol']; + $ret['ig'][] = $dts[$i]['ig']; + } + return $ret; + } + + function getTanarFogadoOra($tanarId) { + $v = array($tanarId); + $q = "SELECT * FROM ".__TANEVDBNEV.".fogadoOra WHERE tanarId=%u AND ig>=NOW()"; + $ret['adatok'] = db_query($q, array('fv' => 'getTanarFogadoOra', 'modul' => 'naplo', 'result' => 'record', 'values' => $v)); + if (!is_array($ret['adatok']) || count($ret['adatok']) == 0) $ret['adatok'] = array('tanarId' => $tanarId); + + $q = "SELECT * FROM ".__TANEVDBNEV.".fogadoOraJelentkezes WHERE tanarId=%u AND tol>=CURDATE()"; + $ret['jelentkezesek'] = db_query($q, array('fv' => 'getTanarFogadoOra', 'modul' => 'naplo', 'result' => 'assoc', 'keyfield' => 'tol', 'values' => $v)); + + return $ret; + } + + function getFogadoOsszes() { + // Hogy ABC szerint legyen inkább... + $q = "SELECT fogadoOra.* FROM ".__TANEVDBNEV.".fogadoOra LEFT JOIN ".__INTEZMENYDBNEV.".tanar USING (tanarId) WHERE ig>=NOW() + ORDER BY CONCAT_WS(' ',viseltCsaladinev,viseltUtonev),tol,ig,teremId"; + $ret = db_query($q, array('fv' => 'getFogadoOsszes', 'modul' => 'naplo', 'result' => 'indexed')); + return $ret; + } + + function kovetkezoFogadoOraInit($tol, $ig) { + // Egyszerre mindig csak egy következő fogadó óra lehet - törlés + $q = "DELETE FROM fogadoOra WHERE tol>=NOW() OR tol>='$tol'"; + $r = db_query($q, array('fv' => 'kovetkezoFogadoFelvetele', 'modul' => 'naplo')); + // A szülői jelentkezések is törlődnek ekkor + $q = "DELETE FROM fogadoOraJelentkezes WHERE tol>=NOW() OR tol>='$tol'"; + $r = db_query($q, array('fv' => 'kovetkezoFogadoFelvetele', 'modul' => 'naplo')); + // minden tanárra beállítjuk a megadott tol-ig értéket + $q = "INSERT INTO fogadoOra (tanarId,tol,ig) + SELECT tanarId, '%s','%s' FROM ".__INTEZMENYDBNEV.".tanar + WHERE beDt<='%s' and (kiDt is null or kiDt >= '%s');"; + $r = db_query($q, array('fv' => 'kovetkezoFogadoFelvetele', 'modul' => 'naplo', 'values' => array($tol, $ig, $ig, $tol))); + } + + function tanarFogadoOra($tanarId, $tol, $ig, $teremId) { + if ($teremId == '') $teremId = 'NULL'; + // Ha van bejegyzett fogadóóra, akkor töröljük + $q = "DELETE FROM fogadoOra WHERE ig>NOW() AND tanarId=%u"; + db_query($q, array('fv' => 'tanarFogadoOra', 'modul' => 'naplo', 'values' => array($tanarId))); + // Új fogadóóra felvétele + if (isset($teremId) && $teremId > 0) { + $q = "INSERT INTO fogadoOra VALUES (%u, '%s', '%s', %u)"; + } else { + $q = "INSERT INTO fogadoOra VALUES (%u, '%s', '%s', NULL)"; + } + $v = array($tanarId, $tol, $ig, $teremId); + db_query($q, array('fv' => 'tanarFogadoOra', 'modul' => 'naplo', 'values' => $v)); + + // A szülői jelentkezések is törlődnek ekkor + $q = "DELETE FROM fogadoOraJelentkezes WHERE tanarId=%u AND (tol<'%s' OR tol>='%s')"; + $v = array($tanarId, $tol, $ig); + return db_query($q, array('fv' => 'tanarFogadoOra', 'modul' => 'naplo', 'values' => $v)); + + } + + function getSzuloJelentkezes($szuloId) { + $q = "SELECT * FROM ".__TANEVDBNEV.".fogadoOraJelentkezes WHERE szuloId=%u AND tol>=NOW() ORDER BY tol"; + return db_query($q, array('fv' => 'getSzuloJelentkezes', 'modul' => 'naplo', 'result' => 'assoc', 'keyfield' => 'tanarId', 'values' => array($szuloId))); + } + + function fogadoOraJelentkezes($szuloId, $M) { + + $lr = db_connect('naplo'); + + for ($i = 0; $i < count($M); $i++) { + $tanarId = $M[$i]['tanarId']; + $datetime = $M[$i]['datetime']; + if (isset($datetime)) { + // Egy már felvett jelentkezésről van-e szó + $q = "SELECT COUNT(*) FROM ".__TANEVDBNEV.".fogadoOraJelentkezes WHERE tol='%s' AND tanarId=%u AND szuloId=%u"; + $v = array($datetime, $tanarId, $szuloId); + $db = db_query($q, array('fv' => 'fogadoOraJelentkezes', 'modul' => 'naplo', 'result' => 'value', 'values' => $v), $lr); + if ($db > 0) continue; + + // Van-e már a szülőnek, vagy a tanárnak bejegyzése az adott időpontra + $q = "SELECT * FROM ".__TANEVDBNEV.".fogadoOraJelentkezes WHERE tol='%s' AND (tanarId=%u OR szuloId=%u) LIMIT 1"; + $v = array($datetime, $tanarId, $szuloId); + $r = db_query($q, array('fv' => 'fogadoOraJelentkezes', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $v), $lr); + if (!is_array($r) || count($r) == 1) { + //$_SESSION['alert'][] = 'message:wrong_data:fogadoOraJelentkezes:foglalt:'."$szuloId/$tanarId/$datetime"; + $_SESSION['alert'][] = 'message:fogadoora_foglalt:'.str_replace(':','.',$datetime).':foglalt:'."$szuloId/$tanarId/$datetime"; + continue; + } + // Van-e a tanárnak az adtott időpontban fogadóórája + $q = "SELECT * FROM fogadoOra WHERE tanarId=%u AND tol<='%s' AND '%s' 'fogadoOraJelentkezes', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $v), $lr); + if (!is_array($r) || count($r) == 0) { + //$_SESSION['alert'][] = 'message:wrong_data:fogadoOraJelentkezes:nincs fogadóórája:'."szuloId/$tanarId/$datetime"; + $_SESSION['alert'][] = 'message:fogadoora_nincs:'.$datetime.":szuloId/$tanarId/$datetime"; + continue; + } + } + + db_start_trans($lr); + // Töröljük a korrábbi jelentkezést és felvesszük az újat + $q = "DELETE FROM fogadoOraJelentkezes WHERE szuloId=%u AND tanarId=%u AND tol>=NOW()"; + $v = array($szuloId, $tanarId); + $r = db_query($q, array('rollback' => true, 'fv' => 'fogadoOraJelentkezes', 'modul' => 'naplo', 'values' => $v), $lr); + // Ha csak törlés volt, akkor tovább + if (!isset($datetime)) { db_commit($lr); continue; } + + // Felvesszük az új jelentkezést + $q = "INSERT INTO fogadoOraJelentkezes (szuloId, tanarId, tol) VALUES (%u, %u, '%s')"; + $v = array($szuloId, $tanarId, $datetime); + $r = db_query($q, array('rollback' => true, 'fv' => 'fogadoOraJelentkezes', 'modul' => 'naplo', 'values' => $v), $lr); + db_commit($lr); + } + + db_close($lr); + + } + + + function getFogadoOraLista() { + + $q = "SELECT * FROM ".__TANEVDBNEV.".fogadoOra LEFT JOIN ".__INTEZMENYDBNEV.".terem USING (teremId) WHERE ig>=NOW()"; + $ret['adatok'] = db_query($q, array('fv' => 'getFogadoOraLista', 'modul' => 'naplo', 'result' => 'assoc', 'keyfield' => 'tanarId')); + + $q = "SELECT * FROM ".__TANEVDBNEV.".fogadoOraJelentkezes WHERE tol>=CURDATE() ORDER BY tanarId,tol"; + $ret['jelentkezesek'] = db_query($q, array('fv' => 'getFogadoOraLista', 'modul' => 'naplo', 'result' => 'multiassoc', 'keyfield' => 'tanarId')); + + return $ret; + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/tanev/munkaterv.php b/mayor-orig/www/include/modules/naplo/tanev/munkaterv.php new file mode 100644 index 00000000..ab52242f --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/tanev/munkaterv.php @@ -0,0 +1,145 @@ +'initNapok','table'=>'nap')); + + $Hetek = $ADAT['Hetek']; + $lr = db_connect('naplo', array('fv' => 'initNapok')); + + db_start_trans($lr); + + $q = "DELETE FROM munkaterv"; + $r[] = db_query($q, array('fv' => 'initNapok', 'modul' => 'naplo'), $lr); + + /* Munkaterv */ + $q = "INSERT INTO munkaterv (munkatervId,munkatervNev,tanitasiNap,tanitasNelkuliMunkanap,vegzosZarasDt) VALUES (1,'alapértelmezett',%u,%u,'%s')"; + $v = array($ADAT['tanitasiNap'], $ADAT['tanitasNelkuliMunkanap'], $ADAT['vegzosZarasDt']); + $r[] = db_query($q, array('fv' => 'initNapok1', 'modul' => 'naplo', 'values' => $v), $lr); + + $q = "INSERT INTO munkatervOsztaly (munkatervId,osztalyId) SELECT 1 AS `munkatervId`,`osztalyId` FROM `".__INTEZMENYDBNEV."`.`osztaly` WHERE vegzoTanev>=%u AND kezdoTanev<=%u"; + $v = array(__TANEV,__TANEV); + $r[] = db_query($q, array('fv' => 'initNapok2', 'modul' => 'naplo', 'values' => $v), $lr); + /* --- */ + + $kovetkezoTanevAdat = getTanevAdat(__TANEV+1); $tanevVege = date('Y-m-d',strtotime('-1 days',strtotime($kovetkezoTanevAdat['kezdesDt']))); + $r[] = napokHozzaadasa(__TANEV, $_TANEV['kezdesDt'], $tanevVege, $_TANEV, $lr); + + orarendiHetekHozzarendelese($_TANEV['kezdesDt'], $_TANEV['zarasDt'], $Hetek, $lr); + + if (in_array(false,$r)) { + db_rollback($lr); + db_close($lr); + return false; + } else { + db_commit($lr); + db_close($lr); + $_SESSION['alert'][] = 'info:success'; + return true; + } + + } + + function ujMunkaterv($ADAT) { + + $q = "INSERT INTO munkaterv (munkatervNev,tanitasiNap,tanitasNelkuliMunkanap,vegzosZarasDt) VALUES + ('%s',%u,%u,'%s')"; + $v = array($ADAT['munkatervNev'], $ADAT['tanitasiNap'], $ADAT['tanitasNelkuliMunkanap'], $ADAT['vegzosZarasDt']); + $munkatervId = db_query($q, array('fv' => 'ujMunkaterv/munkaterv', 'modul' => 'naplo', 'values' => $v, 'result' => 'insert'), $lr); + + if (!$munkatervId) { return false; } + + $q = "INSERT INTO nap SELECT dt, tipus, megjegyzes, orarendiHet, %u AS munkatervId, csengetesiRendTipus FROM nap WHERE munkatervId=%u"; + $v = array($munkatervId, $ADAT['munkatervId']); + $r = db_query($q, array('fv' => 'ujMunkaterv/nap', 'modul' => 'naplo', 'values' => $v), $lr); + + if (!$r) { return false; } + + return $munkatervId; + + } + + function munkatervModositas($Dt, $Tipus, $Megjegyzes, $OrarendiHet, $Hetek, $munkatervId = 1, $csengetesiRendTipus) { + + global $_TANEV; + + logAction( + array( + 'szoveg'=>'munkaterv módosítás', + 'table'=>'nap' + ) + ); + $lr = db_connect('naplo', array('fv' => 'munkatervModositas')); + db_start_trans($lr); + for ($i = 0; $i < count($Dt); $i++) { + $dt = $Dt[$i]; + $time = strtotime($dt); + $tipus = $Tipus[$i]; + $megjegyzes = $Megjegyzes[$i]; + $_csengetesiRendTipus = $csengetesiRendTipus[$i]; + if ($tipus == 'tanítási nap') { + $orarendiHet = $OrarendiHet[$i]; + if ($orarendiHet == 0) { // most állítjuk be tanítási napnak, és nem rendelkeztek az órarendi hétről... + // kérdezzük le, hogy van-e másik munkatervben már megadott órarendi hét erre a napra + $q = "SELECT orarendiHet FROM nap WHERE dt='%s' AND orarendiHet<>0"; + $v = array($dt); + $orarendiHet = db_query($q, array('fv' => 'munkatervModositas/hianyzoOrarendiHet','modul'=>'naplo', 'values'=>$v, 'result'=>'value'), $lr); + if ($orarendiHet === false) { db_rollback($lr); db_close($lr); return false; } + if (is_null($orarendiHet)) { // nincs beállítva órarendi hét --> legyen a $Hetek első eleme... + $orarendiHet = $Hetek[0]; + } + } + } else { + // Ha nem tanítási nap, akkor nincs értelme órarendi hetet beállítani --> 0 + $orarendiHet = 0; + } + if ( + ($time >= strtotime($_TANEV['kezdesDt']) && $time <= strtotime($_TANEV['zarasDt'])) + && ($tipus != 'tanítási nap' || count($Hetek) == 0 || in_array($orarendiHet, $Hetek)) + ) { + $q = "UPDATE nap SET csengetesiRendTipus='%s',tipus='%s', megjegyzes='%s' WHERE dt='%s' AND munkatervId=%u"; + $v = array($_csengetesiRendTipus, $tipus, $megjegyzes, $dt, $munkatervId); + $r = db_query($q, array('fv' => 'munkatervModositas/típus, megjegyzés', 'modul' => 'naplo', 'values' => $v), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return(false); } + // Az órarendi hét módosítás mindig az összes munkatervet érinti!! + if ($orarendiHet != 0) { + $q = "UPDATE nap SET orarendiHet=%u WHERE dt='%s' AND tipus='tanítási nap'"; + $v = array($orarendiHet, $dt); + } else { + $q = "UPDATE nap SET orarendiHet=%u WHERE dt='%s' AND munkatervId=%u"; + $v = array($orarendiHet, $dt, $munkatervId); + } + $r = db_query($q, array('fv' => 'munkatervModositas/órarendiHét', 'modul' => 'naplo', 'values' => $v), $lr); + if (!$r) { db_rollback($lr); db_close($lr); return(false); } + } else { + $_SESSION['alert'][] = 'message:wrong_data:munkatervModositas:'.$dt.':'.$tipus.'/'.$orarendiHet; + } + } + db_commit($lr); + db_close($lr); + return true; + + } + + function munkatervOsztaly($ADAT) { + + $r = array(); + for ($i = 0; $i < count($ADAT['osztalyIds']); $i++) { + + $osztalyId = $ADAT['osztalyIds'][$i]; + $munkatervId = $ADAT['ujMunkatervIds'][$i]; + $q = "UPDATE munkatervOsztaly SET munkatervId='%u' WHERE osztalyId=%u"; + $v = array($munkatervId, $osztalyId); + $r[] = db_query($q, array('fv' => 'munkatervOsztaly', 'modul' => 'naplo', 'values' => $v)); + + } + return !in_array(false, $r); + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/tanev/tankorBlokk.php b/mayor-orig/www/include/modules/naplo/tanev/tankorBlokk.php new file mode 100644 index 00000000..6b15bdeb --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/tanev/tankorBlokk.php @@ -0,0 +1,277 @@ + 0) { + $WHERE[] = 'tankorId IN ('.implode(',', array_fill(0, count($tankorIds), '%u')).')'; + $v = $tankorIds; + } + if (isset($blokkId) && intval($blokkId) > 0) { + $WHERE[] = "blokkId != %u"; + $v[] = intval($blokkId); + } + if (count($WHERE) > 0) $whereStr = "WHERE ".implode(' AND ', $WHERE); + + $return = array(); + // tankörök export óraszáma (az aktuális blokk kivételével) + $q = "SELECT tankorId, SUM(exportOraszam) AS exportOraszam FROM `%s`.tankorBlokk + LEFT JOIN `%s`.blokk USING (blokkId) + $whereStr GROUP BY tankorId"; + array_unshift($v, $tanevDbNev, $tanevDbNev); + return db_query($q, array('fv' => 'getTankorExportOraszamByTanev', 'modul' => 'naplo', 'result' => 'keyvaluepair', 'keyfield' => 'tankorId', 'values' => $v), $lr); + + } + + function ujTankorBlokk($blokkNev, $exportOraszam, $tankorIds, $tanev='') { + + global $_TANEV; + + if (!is_array($tankorIds) || count($tankorIds)==0 || $blokkNev=='') { + $_SESSION['alert'][] = '::egy kötelező paraméter hiányzik!'; + return false; + } + + if ($tanev=='') { + $tanev = __TANEV; + $tanevAdat = $_TANEV; + } else { + $tanevAdat = getTanevAdat($tanev); + } + + $tanevDbNev = tanevDbNev(__INTEZMENY, $tanev); + + if (strtotime($tanevAdat['zarasDt']) < time()) { + $_SESSION['alert'][] = 'message:Elmúlt tanévre ne hozzunk létre tankörblokkot!'; + return false; + } + if (time() < strtotime($tanevAdat['kezdesDt'])) { + $kezdesDt = $tanevAdat['kezdesDt']; + $kezdesDtPattern = "'%s'"; + } else { + $kezdesDt = 'CURDATE()'; + $kezdesDtPattern = '%s'; + } + $zarasDt = $tanevAdat['zarasDt']; + + /* Vizsgáljuk meg, hogy létrehozható-e a tankorBlokk + kizáró feltétel, ha egy diák beletartozik több csoportba HAVING count>2 + */ + + $lr = db_connect('naplo', array('fv' => 'ujTankorBlokk')); + + // Ellenőrzés - tankör - diákok + $q = "SELECT diakId,COUNT(DISTINCT tankorId) AS c FROM ".__INTEZMENYDBNEV.".tankorDiak + WHERE tankorId IN (".implode(',', array_fill(0, count($tankorIds), '%u')).") + AND beDt <= '%s' AND (kiDt IS NULL OR kiDt >= $kezdesDtPattern) + GROUP BY diakId HAVING c>1 + ORDER BY tankorId,diakId"; +// AND jelenlet='kötelező' + /* Ez a függvény nem veszi figyelembe a felmentéseket! */ + + $_SESSION['alert'][] = 'info:!!!:ujTankorBlokk() felmentések'; + + $v = mayor_array_join($tankorIds, array($zarasDt, $kezdesDt)); + $ret=db_query($q, array('fv' => 'ujTankorBlokk', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v)); + if (count( $ret ) > 0) { + $_SESSION['alert'][] = 'message:wrong_data:ujTankorBlokk:Sikertelen. '.count($ret).' db ütköző diákot találtam!: diakId='.$ret[0]['diakId'].'...'; + db_close($lr); + return false; + } + + // Ellenőrzés - tankör - tanárok + $q = "SELECT tanarId,COUNT(DISTINCT tankorId) AS c FROM ".__INTEZMENYDBNEV.".tankorTanar + WHERE tankorId IN (".implode(',', array_fill(0, count($tankorIds), '%u')).") + AND beDt <= '%s' AND (kiDt IS NULL OR kiDt >= $kezdesDtPattern) + GROUP BY tanarId HAVING c>1 + ORDER BY tankorId,tanarId"; + $v = mayor_array_join($tankorIds, array($zarasDt, $kezdesDt)); + $ret = db_query($q, array('fv' => 'ujTankorBlokk', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v)); + if (count( $ret ) > 0) { + $_SESSION['alert'][] = 'message:wrong_data:ujTankorBlokk:Sikertelen. '.count($ret).' db ütköző tanárt találtam!:tanarId='.$ret[0]['tanarId'].'...'; + db_close($lr); + return false; + } + + // Ellenőrzés - óraszám + // tankörök export óraszáma (az aktuális blokk kivételével) + $tankorExportOraszam = getTankorExportOraszamByTanev($tanev, $tankorIds); + // tankörök óraszáma + $tankorOraszam = getTankorOraszamByTanev($tanev, $tankorIds); + foreach ($tankorIds as $index => $tankorId) { + if ($tankorOraszam[$tankorId] - $tankorExportOraszam[$tankorId] < $exportOraszam) + $exportOraszam = $tankorOraszam[$tankorId] - $tankorExportOraszam[$tankorId]; + } + if ($exportOraszam < 0) $exportOraszam = 0; + db_start_trans($lr); + + // Új felvétele + $q = "INSERT INTO `%s`.`blokk` (`blokkNev`, `exportOraszam`) VALUES ('%s', %f)"; + $v = array($tanevDbNev, $blokkNev, $exportOraszam); + + $blokkId = db_query($q, array('fv' => 'ujTankorBlokk', 'modul' => 'naplo_intezmeny', 'result' => 'insert', 'values' => $v, 'rollback' => true), $lr); + if ($blokkId === false) { db_close($lr); return false; } + + // Tankörök hozzárendelése + $Val = array(); $v = array($tanevDbNev); + for ($i = 0; $i < count($tankorIds); $i++) { + $Val[] = "(%u, %u)"; + array_push($v, $blokkId, $tankorIds[$i]); + } + $q = "INSERT INTO `%s`.tankorBlokk (blokkId,tankorId) VALUES ".implode(',', $Val); + $r = db_query($q, array('fv' => 'ujTankorBlokk', 'modul' => 'naplo_intezmeny', 'values' => $v, 'rollback' => true), $lr); + if (!$r) { db_close($lr); return false; } + + db_commit($lr); + db_close($lr); + return true; + + } + + function tankorBlokkModositas($ADAT) { + + + if (!is_array($ADAT['tankorIds']) || count($ADAT['tankorIds'])==0 || $ADAT['blokkNev']=='') { + $_SESSION['alert'][] = '::egy kötelező paraméter hiányzik!(tbmod)'; + return false; + } + + if ($ADAT['tanev']=='') { + $tanev = __TANEV; + $tanevAdat = $_TANEV; + } else { + $tanev = $ADAT['tanev']; + $tanevAdat = getTanevAdat($tanev); + } + + $tanevDbNev = tanevDbNev(__INTEZMENY, $tanev); + + if (strtotime($tanevAdat['zarasDt']) < time()) { + $_SESSION['alert'][] = 'message:Elmúlt tanévre ne hozzunk létre tankörblokkot!'; + return false; + } + $blokkId = $ADAT['blokkId']; + $tankorIds = $ADAT['tankorIds']; + + $zarasDt = $tanevAdat['zarasDt']; + if (time() < strtotime($tanevAdat['kezdesDt'])) { + $kezdesDt = $tanevAdat['kezdesDt']; + $kezdesDtPattern = "'%s'"; + } else { + $kezdesDt = 'CURDATE()'; + $kezdesDtPattern = "%s"; + } + + $lr = db_connect('naplo'); + + // Ellenőrizzük a tankör tagokat - azonosak-e tankörönként + $q = "SELECT diakId,COUNT(DISTINCT tankorId) AS c FROM ".__INTEZMENYDBNEV.".tankorDiak + WHERE tankorId IN (".implode(',', array_fill(0, count($ADAT['tankorIds']), '%u')).") + AND beDt <= '%s' AND (kiDt IS NULL OR kiDt >= $kezdesDtPattern) + GROUP BY diakId HAVING c>1 + ORDER BY tankorId,diakId"; + + $v = mayor_array_join($ADAT['tankorIds'], array($zarasDt, $kezdesDt)); + $ret = db_query($q, array('fv' => 'tankorBlokkModositas', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v), $lr); + if (count( $ret ) > 0) { + $_SESSION['alert'][] = 'message:wrong_data:tankorBlokkModositas:Sikertelen. '.count($ret).' db ütköző diákot találtam!:diakId='.$ret[0]['diakId'].'...'; + db_close($lr); + return false; + } + + // Ellenőrizzük a tankör tanárokat - azonosak-e tankörönként + $q = "SELECT tanarId,COUNT(DISTINCT tankorId) AS c FROM ".__INTEZMENYDBNEV.".tankorTanar + WHERE tankorId IN (".implode(',', array_fill(0, count($ADAT['tankorIds']), '%u')).") + AND beDt <= '%s' AND (kiDt IS NULL OR kiDt >= $kezdesDtPattern) + GROUP BY tanarId HAVING c>1 + ORDER BY tankorId,tanarId"; + $v = mayor_array_join($ADAT['tankorIds'], array($zarasDt, $kezdesDt)); + $ret = db_query($q, array('fv' => 'tankorBlokkModositas', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v), $lr); + if (count( $ret )>0) { + $_SESSION['alert'][] = 'message:wrong_data:tankorBlokkModositas:Sikertelen. '.count($ret).' db ütköző tanárt találtam!:blokkId='.$blokkId.':tanarId='.$ret[0]['tanarId'].'...'; + db_close($lr); + return false; + } + + // tankörök export óraszáma (az aktuális blokk kivételével) + $tankorExportOraszam = getTankorExportOraszamByTanev($tanev, $ADAT['tankorIds'], $blokkId); + // tankörök óraszáma + $tankorOraszam = getTankorOraszamByTanev($tanev, $ADAT['tankorIds']); + foreach ($ADAT['tankorIds'] as $index => $tankorId) { + if ($tankorOraszam[$tankorId] - $tankorExportOraszam[$tankorId] < $ADAT['exportOraszam']) { + $_SESSION['alert'][] = 'message:wrong_data:tankorId='.$tankorId.', óraszám='.$tankorOraszam[$tankorId].', export óraszám='. + intval($tankorExportOraszam[$tankorId]).', blokk óraszám='.$ADAT['exportOraszam']; + return false; + } + } + + // Csoportnév és export óraszám módosítása + $q = "UPDATE `%s`.blokk SET blokkNev='%s',exportOraszam=%f WHERE blokkId=%u"; + $v = array($tanevDbNev, $ADAT['blokkNev'], $ADAT['exportOraszam'], $ADAT['blokkId']); + db_query($q, array('fv' => 'tankorBlokkModositas', 'modul' => 'naplo', 'values' => $v), $lr); + + // SAFE: + db_start_trans($lr); + + // Törlés + $q = "DELETE FROM `%s`.tankorBlokk WHERE blokkId=%u"; + $v = array($tanevDbNev, $blokkId); + $r = db_query($q, array('fv' => 'tankorBlokkModositas/Delete', 'modul' => 'naplo_intezmeny', 'values' => $v, 'rollback' => true), $lr); + if ($r === false) { db_close($lr); return false; } + // Itt nem jó a commit, hisz még félben van a dolog - nem? // else db_commit($lr); + + // Tankörök hozzárendelése + $v = array($tanevDbNev); $Val = array(); + for ($i = 0; $i < count($tankorIds); $i++) { + $Val[] = "(%u, %u)"; + array_push($v, $blokkId, $tankorIds[$i]); + } + if (count($Val) > 0) { + $q = "INSERT INTO `%s`.tankorBlokk (blokkId,tankorId) VALUES ".implode(',', $Val); + $r = db_query($q, array('fv' => 'tankorBlokkModositas/Insert', 'modul' => 'naplo_intezmeny', 'values' => $v, 'rollback' => true), $lr); + } + + if ($r===false) { db_close($lr); return false; } + + db_commit($lr); + + db_close($lr); + return true; + + } + + function tankorBlokkTorles($ADAT) { + + if ($ADAT['blokkId']=='') { + $_SESSION['alert'][] = '::egy kötelező paraméter hiányzik!'; + return false; + } + + if ($ADAT['tanev']=='') { + $tanev = __TANEV; + $tanevAdat = $_TANEV; + } else { + $tanev = $ADAT['tanev']; + $tanevAdat = getTanevAdat($tanev); + } + + $tanevDbNev = tanevDbNev(__INTEZMENY, $tanev); + + $blokkId=intval($ADAT['blokkId']); + + $q = "DELETE FROM `%s`.blokk WHERE blokkId=%u"; + $v = array($tanevDbNev, $blokkId); + $r = db_query($q, array('fv' => 'TankorBlokk|Delete', 'modul' => 'naplo_intezmeny', 'values' => $v, 'rollback'=>true), $lr); + + return true; + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/tanev/tankorCsoport.php b/mayor-orig/www/include/modules/naplo/tanev/tankorCsoport.php new file mode 100644 index 00000000..984726db --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/tanev/tankorCsoport.php @@ -0,0 +1,164 @@ + 'tankorCsoport', 'modul' => 'naplo', 'result' => 'multiassoc', 'keyfield' => 'csoportId', 'values' => $tankorIds + )); + + } + + function ujTankorCsoport($csoportNev, $tankorIds) { + + global $_TANEV; + $dt = (time() <= strtotime($_TANEV['kezdesDt'])) ? "'".$_TANEV['kezdesDt']."'" : 'CURDATE()'; + + $lr = db_connect('naplo', array('fv' => 'ujTankorCsoport')); + + // Ellenőrizzük, hogy a megadott tankörök még nem foglaltak + $q = "SELECT tankorId FROM ".__TANEVDBNEV.".tankorCsoport + WHERE tankorId IN (".implode(',', array_fill(0, count($tankorIds), '%u')).") LIMIT 1"; + $ret = db_query($q, array('fv' => 'ujTankorCsoport', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $tankorIds), $lr); + if (count($ret) > 0) { + $_SESSION['alert'][] = 'message:utkozes:ujTankorCsoport:tankör ütközés'; + db_close($lr); + return false; + } + + // Ellenőrizzük a tankör tagokat - azonosak-e tankörönként + $q = "SELECT DISTINCT tankorId,diakId FROM ".__INTEZMENYDBNEV.".tankorDiak + WHERE tankorId IN (".implode(',', array_fill(0, count($tankorIds), '%u')).") + AND beDt <= '%s' AND (kiDt IS NULL OR kiDt >= '%s') + ORDER BY tankorId,diakId"; + $v = mayor_array_join($tankorIds, array($dt, $dt)); + $ret = db_query($q, array('fv' => 'ujTankorCsoport', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $v), $lr); + $tDiakok = array(); + foreach ($tankorIds as $tankorId) $tDiakok[$tankorId] = array(); // különben az üres tankör nem jelennemeg az ellenőrzéskor! + for ($i = 0; $i < count($ret); $i++) { + $tDiakok[$ret[$i]['tankorId']][] = $ret[$i]['diakId']; + } + foreach ($tDiakok as $tankorId => $diakIds) { + if (is_array($elsoDiakIds)) { + if ($elsoDiakIds != $diakIds) { + $_SESSION['alert'][] = 'message:wrong_data:ujTankorCsoport:tankör tagok nem azonosak:(tankorId='.$tankorId.')'; + db_close($lr); + return false; + } + } else { + $elsoDiakIds = $diakIds; + } + } + + // Új csoport felvétele + $q = "INSERT INTO ".__TANEVDBNEV.".csoport (csoportNev) VALUES ('%s')"; + $csoportId = db_query($q, array('fv' => 'ujTankorCsoport', 'modul' => 'naplo', 'result' => 'insert', 'values' => array($csoportNev)), $lr); + if ($csoportId === false) { db_close($lr); return false; } + + // Tankörök hozzárendelése + $v = $Val = array(); + for ($i = 0; $i < count($tankorIds); $i++) { + $Val[] = "(%u, %u)"; + array_push($v, $csoportId, $tankorIds[$i]); + } + $q = "INSERT INTO ".__TANEVDBNEV.".tankorCsoport (csoportId,tankorId) VALUES ".implode(',', $Val); + db_query($q, array('fv' => 'ujTankorCsoport', 'modul' => 'naplo', 'values' => $v), $lr); + + _setMinMax($csoportId,$lr); + + db_close($lr); + return true; + + } + + function tankorCsoportModositas($csoportId, $csoportNev, $tankorIds) { + + global $_TANEV; + $dt = (time() <= strtotime($_TANEV['kezdesDt'])) ? "'".$_TANEV['kezdesDt']."'" : 'CURDATE()'; + + if (count($tankorIds) == 0) { + $_SESSION['alert'][] = 'message:wrong_data:tankorCsoportModositas/#0:nincs tankör'; + return false; + } + + $lr = db_connect('naplo'); + + // Ellenőrizzük, hogy a megadott tankörök még nem foglaltak + $q = "SELECT tankorId FROM ".__TANEVDBNEV.".tankorCsoport + WHERE tankorId IN (".implode(',', array_fill(0, count($tankorIds), '%u')).") AND csoportId != %u LIMIT 1"; + $v = mayor_array_join($tankorIds, array($csoportId)); + $ret = db_query($q, array('fv' => 'tankorCsoportModositas/#1', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $v), $lr); + if (count($ret) > 0) { + $_SESSION['alert'][] = 'message:utkozes:tankorCsoportModositas/#2:tankör ütközés'; + db_close($lr); + return false; + } + + // Ellenőrizzük a tankör tagokat - azonosak-e tankörönként + $q = "SELECT tankorId,diakId FROM ".__INTEZMENYDBNEV.".tankorDiak + WHERE tankorId IN (".implode(',', array_fill(0, count($tankorIds), '%u')).") + AND beDt <= '%s' AND (kiDt IS NULL OR kiDt >= '%s' ) + ORDER BY tankorId,diakId"; + $v = mayor_array_join($tankorIds, array($dt, $dt)); + $ret = db_query($q, array('fv' => 'tankorCsoportModositas/#3', 'modul' => 'naplo_intezmeny', 'result' => 'indexed', 'values' => $v), $lr); + $tDiakok = array(); + for ($i = 0; $i < count($ret); $i++) $tDiakok[$ret[$i]['tankorId']][] = $ret[$i]['diakId']; + foreach ($tankorIds as $index => $tankorId) { + $diakIds = $tDiakok[$tankorId]; + if (is_array($elsoDiakIds)) { + if ($elsoDiakIds != $diakIds) { + $_SESSION['alert'][] = 'message:wrong_data:tankorCsoportModositas/#4:tankör tagok nem azonosak:(tankorId='.$tankorId.')'; + db_close($lr); + return false; + } + } else { + $elsoDiakIds = $diakIds; + } + } + + // Csoportnév módosítása + $q = "UPDATE ".__TANEVDBNEV.".csoport SET csoportNev = '%s' WHERE csoportId = %u"; + $v = array($csoportNev, $csoportId); + db_query($q, array('fv' => 'tankorCsoportModositas', 'modul' => 'naplo', 'values' => $v)); + // Régi csoporthozzárendelések törlése + $q = "DELETE FROM ".__TANEVDBNEV.".tankorCsoport WHERE csoportId = %u"; + $v = array($csoportId); + db_query($q, array('fv' => 'tankorCsoportModositas', 'modul' => 'naplo', 'values' => $v)); + // Tankörök hozzárendelése + $v = $Val = array(); + for ($i = 0; $i < count($tankorIds); $i++) { + $Val[] = "(%u, %u)"; + array_push($v, $csoportId, $tankorIds[$i]); + } + $q = "INSERT INTO ".__TANEVDBNEV.".tankorCsoport (csoportId,tankorId) VALUES ".implode(',', $Val); + db_query($q, array('fv' => 'tankorCsoportModositas/#5', 'modul' => 'naplo', 'values' => $v)); + + _setMinMax($csoportId,$lr); + + db_close($lr); + return true; + + } + + function tankorCsoportTorles($csoportId, $tanev = __TANEV) { + $tanevDb = tanevDbNev(__INTEZMENY, $tanev); + $q = "DELETE FROM `%s`.csoport WHERE csoportId=%u"; + $v = array($tanevDb, $csoportId); + db_query($q, array('fv' => 'tankorCsoportTorles', 'modul' => 'naplo', 'values' => $v)); + } + + function _setMinMax($csoportId,$lr) { + + // Tankörcsoport minimum, maximum beállítás - legbővebb halmaz + $v = array($csoportId); + $q = ("SET @min= (SELECT MIN(min) FROM ".__INTEZMENYDBNEV.".tankor WHERE tankorId IN (SELECT DISTINCT tankorId FROM tankorCsoport WHERE csoportId=%u))"); + db_query($q, array('fv' => 'ujTankorCsoport', 'modul' => 'naplo', 'values' => $v), $lr); + $q = ("SET @max= (SELECT MAX(max) FROM ".__INTEZMENYDBNEV.".tankor WHERE tankorId IN (SELECT DISTINCT tankorId FROM tankorCsoport WHERE csoportId=%u))"); + db_query($q, array('fv' => 'ujTankorCsoport', 'modul' => 'naplo', 'values' => $v), $lr); + $q = "UPDATE ".__INTEZMENYDBNEV.".tankor SET min=@min, max=@max WHERE tankorId IN (SELECT DISTINCT tankorId FROM tankorCsoport WHERE csoportId=%u)"; + db_query($q, array('fv' => 'ujTankorCsoport', 'modul' => 'naplo', 'values' => $v), $lr); + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/tanev/targyBontas.php b/mayor-orig/www/include/modules/naplo/tanev/targyBontas.php new file mode 100644 index 00000000..5b31bdec --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/tanev/targyBontas.php @@ -0,0 +1,240 @@ +'checkTargyBontas','modul'=>'naplo','result'=>'value')); + return ($darab>0?TRUE:FALSE); + } + + function getKepzesTargyBontasByOsztalyIds($osztalyIds) { + + if (!is_array($osztalyIds) || count($osztalyIds)==0) return false; + + // tankör- és óraszám adatok + $q = "SELECT bontasId, tankorId, hetiOraszam + FROM kepzesTargyBontas LEFT JOIN bontasTankor USING (bontasId) + WHERE osztalyId IN (".implode(',', array_fill(0, count($osztalyIds), '%u')).") AND tankorId IS NOT NULL + ORDER BY bontasId"; + $r = db_query($q, array('fv'=>'getKepzesTargyBontasByOsztalyIds/2','modul'=>'naplo','result'=>'indexed','values'=>$osztalyIds)); + foreach ($r as $a) $TO[$a['bontasId']][] = array('tankorId'=>$a['tankorId'], 'hetiOraszam'=>$a['hetiOraszam']); + + // kepzesTargyBontas adatok + $q = "SELECT kepzesTargyBontas.*,sum(hetiOraszam) as hetiOraszam + FROM kepzesTargyBontas LEFT JOIN bontasTankor USING (bontasId) + WHERE osztalyId IN (".implode(',', array_fill(0, count($osztalyIds), '%u')).") + GROUP BY bontasId ORDER BY bontasId"; + $r = db_query($q, array('fv'=>'getKepzesTargyBontasByOsztalyIds','modul'=>'naplo','result'=>'indexed','values'=>$osztalyIds)); + if (!is_array($r)) return $r; + $return = array(); + foreach ($r as $a) $return[$a['osztalyId']][$a['kepzesOratervId']][] = array( + 'bontasId' => $a['bontasId'], + 'targyId' => $a['targyId'], + 'hetiOraszam' => $a['hetiOraszam'], + 'tankor-oraszam'=>$TO[ $a['bontasId'] ] + ); + + return $return; + + } + + function kepzesOratervSorrend($evfolyamJel, $osztalyIds, $kepzesIds) { + // ez volt // group_concat(kepzesTargyBontas.targyId order by kepzesTargyBontas.targyId separator '-') as btStr + + $q = "select + kepzesOratervId, tipus, targyNev, kepzesOraterv.targyId as targyId, kepzesOraterv.hetiOraszam as hetiOraszam, osztalyId, kepzesId, szemeszter, + group_concat(concat_ws('-',kepzesTargyBontas.targyId,tankorId,bontasTankor.hetiOraszam) order by kepzesTargyBontas.targyId,tankorId separator '_') as btStr + from kepzesOraterv + left join targy using (targyId) + left join kepzesOsztaly using (kepzesId) + left join ".__TANEVDBNEV.".kepzesTargyBontas using (kepzesOratervId, osztalyId) + left join ".__TANEVDBNEV.".bontasTankor using (bontasId) + where evfolyamJel='%s' and osztalyId in (".implode(',', array_fill(0, count($osztalyIds), '%u')).") + and kepzesId in (".implode(',', array_fill(0, count($kepzesIds), '%u')).") + group by kepzesOratervId, tipus, kepzesOraterv.targyId, kepzesOraterv.hetiOraszam, osztalyId, kepzesId, szemeszter + order by tipus, targyNev, kepzesOraterv.targyId, kepzesOraterv.hetiOraszam, btStr, osztalyId, szemeszter"; + $v = mayor_array_join(array($evfolyamJel), $osztalyIds, $kepzesIds); + $ret = db_query($q, array('fv'=>'kepzesOratervSorrend','modul'=>'naplo_intezmeny','result'=>'indexed','values'=>$v)); + return reindex($ret, array('tipus','targyId','hetiOraszam','btStr')); + } + + function addBontas($osztalyId, $kepzesOratervId, $targyId=null, $olr=null) { + + // is_resource mysqli esetén nem jó (object) + if (!$olr) $lr = db_connect('naplo_intezmeny', array('fv'=>'addBontas')); + else $lr = $olr; + + if ($targyId == '') { + $q = "SELECT targyId FROM kepzesOraterv WHERE kepzesOratervId=%u"; + $targyId = db_query($q, array('fv'=>'addBontas','modul'=>'naplo_intezmeny','result'=>'value','values'=>array($kepzesOratervId)), $lr); + } + if ($targyId == '') return false; + + $q = "INSERT INTO ".__TANEVDBNEV.".kepzesTargyBontas (osztalyId, kepzesOratervId, targyId) VALUES (%u, %u, %u)"; + $bontasId = db_query($q, array('fv'=>'addBontas/insert','modul'=>'naplo','result'=>'insert','values'=>array($osztalyId,$kepzesOratervId,$targyId)), $lr); + + // is_resource mysqli esetán nem jó (object) + if (!$olr) db_close(); + + return array( + 'targyId' => $targyId, + 'osztalyId' => $osztalyId, + 'kepzesOratervId' => $kepzesOratervId, + 'bontasId' => $bontasId + ); + + } + + function delBontas($bontasIds) { + if (!is_array($bontasIds) || count($bontasIds) == 0) return false; + $q = "DELETE FROM kepzesTargyBontas WHERE bontasId IN (".implode(',', array_fill(0, count($bontasIds), '%u')).")"; + $r = db_query($q, array('fv'=>'delBontas','modul'=>'naplo','values'=>$bontasIds)); + if ($r) return $bontasIds; + else return $r; + } + + function initFromLastYear() { + // Csak akkor lehet init, ha még nincs bent egyetlen bontás sem az adott kepzes-osztály párokhoz + $q = "select count(*) from kepzesTargyBontas"; + $db = db_query($q, array('fv'=>'kepzesTargyBontasInit/0','modul'=>'naplo','result'=>'value','values'=>$v)); + if ($db > 0) return true; + + $lr = db_connect('naplo_intezmeny', array('fv'=>'initFromLastYear')); + // is_resource mysqli esetén nem jó (object) + if (!$lr) return false; + + $elozoTanevDb = tanevDbNev(__INTEZMENY,__TANEV-1); + // ha nincs előző tanév, akkor kész az init + $q = "SELECT COUNT(SCHEMA_NAME) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '%s'"; + $v = array($elozoTanevDb); + $db = db_query($q, array('fv'=>'kepzesTargyBontasInit/0.5','modul'=>'naplo','result'=>'value','values'=>$v)); + if ($db == 0) return true; + + set_time_limit(300); + + // Az előző év bontásai alapján + /* + Lekérdezzük az előző év bontásainak adatait, melyek az adott kepzes-osztály párhoz tartoztak. + bontasId szerint rendezünk, hogy egy bontást csak egyszer vegyünk fel. + */ + $q = "select kepzesOratervId,osztalyId,kepzesOraterv.targyId as koTargyId,kepzesTargyBontas.targyId as bontasTargyId, + tankorId,bontasTankor.hetiOraszam as bontasOraszam, bontasId, + kepzesId,evfolyamJel,szemeszter,kepzesOraterv.hetiOraszam as koOraszam,tipus + from ".$elozoTanevDb.".kepzesTargyBontas + left join ".$elozoTanevDb.".bontasTankor using (bontasId) + left join kepzesOraterv using (kepzesOratervId) + order by bontasId"; + $r1 = db_query($q, array('fv'=>'kepzesTargyBontasInit/1','modul'=>'naplo_intezmeny','result'=>'indexed'), $lr); + + $elozoTavalyiBontasId = ''; + foreach ($r1 as $r1Adat) { + // Ha van a tavalyinak megfelelő képzés-óraterv bejegyzés, akkor hozzunk létre neki bontást + if ($r1Adat['tipus'] == 'mintatantervi') { + $q = "select kepzesOraterv.*,oraszam from kepzesOraterv + left join tankorSzemeszter on tankorSzemeszter.szemeszter=kepzesOraterv.szemeszter and tanev=".__TANEV." and tankorId=%u + where kepzesId=%u and kepzesOraterv.szemeszter=%u + and tipus='%s' and kepzesOraterv.targyId=%u + and kepzesOraterv.evfolyamJel='".getKovetkezoEvfolyamJel($r1Adat['evfolyamJel'])."' + "; + $v = array($r1Adat['tankorId'], $r1Adat['kepzesId'], $r1Adat['szemeszter'], $r1Adat['tipus'], $r1Adat['koTargyId']); + } else { + $q = "select * from kepzesOraterv + left join tankorSzemeszter on tankorSzemeszter.szemeszter=kepzesOraterv.szemeszter and tanev=".__TANEV." and tankorId=%u + where kepzesId=%u and kepzesOraterv.szemeszter=%u + and tipus='%s' and kepzesOraterv.targyId is null + and kepzesOraterv.evfolyamJel='".getKovetkezoEvfolyamJel($r1Adat['evfolyamJel'])."' + "; + $v = array($r1Adat['tankorId'], $r1Adat['kepzesId'], $r1Adat['szemeszter'], $r1Adat['tipus'], ); + } + $r2 = db_query($q, array('fv'=>'kepzesTargyBontasInit/2','modul'=>'naplo_intezmeny','result'=>'record','values'=>$v), $lr); + /* + - Lehet az eredmény üres, ha nincs a képzés óratervben idén folytatása a tárgynak/típusnak + */ + if (!is_array($r2)) continue; + /* + - Amúgy csak egy rekord lehet... - ekkor a bontást létrehozhatjuk, ha az előző rekord nem ugyanehhez a bontáshoz tartozott... + (a hozzárendelt tankört csak akkor vesszük figyelembe, ha egy van belőle...) + */ + if ($elozoTavalyiBontasId != $r1Adat['bontasId']) { + $r3 = addBontas($r1Adat['osztalyId'], $r2['kepzesOratervId'], $r1Adat['bontasTargyId'], $lr); + $bontasId = $r3['bontasId']; + $elozoTavalyiBontasId = $r1Adat['bontasId']; + } + + if (($r1Adat['tankorId'] != '') && ($r1Adat['bontasOraszam'] == $r1Adat['koOraszam']) && ($r2['hetiOraszam'] == $r2['oraszam'])) { + /* + Ha a tavalyi tankör idei évhez is hozzá van rendelve... + és tavaly megegyezett a tankör óraszáma a bontás óraszámával... + a tankör idei óraszáma is megegyezik a bontás/képzés-oraterv óraszámával, + akkor a tankör is hozzárendelhető + */ + $r4 = bontasTankor(array($bontasId), $r1Adat['tankorId'], $r2['hetiOraszam'], $lr); + if (!$r4) {} // hibakezelés?? + } + } + db_close($lr); + return true; + } + + function kepzesTargyBontasInit($osztalyIds, $kepzesIds) { + + // A megadott osztaly megadott képzéseinek aktuális évfolyamának tantárgyhoz tartozó kepzesOraterv bejegyzéseihez felveszünk egy-egy bontást - ha még nincs + $q = "insert into ".__TANEVDBNEV.".kepzesTargyBontas (osztalyId, kepzesOratervId, targyId) + select osztalyId, kepzesOratervId, kepzesOraterv.targyId as targyId + from kepzesOraterv left join kepzesOsztaly using(kepzesId) + left join ".__TANEVDBNEV.".osztalyNaplo using (osztalyId) + left join ".__TANEVDBNEV.".kepzesTargyBontas using (osztalyId, kepzesOratervId) + where osztalyId in (".implode(',', array_fill(0, count($osztalyIds), '%u')).") + and kepzesId in (".implode(',', array_fill(0, count($kepzesIds), '%u')).") + and kepzesOraterv.evfolyamJel=osztalyNaplo.evfolyamJel + and bontasId is null and kepzesOraterv.targyId is not null"; + $v = mayor_array_join($osztalyIds, $kepzesIds); + return db_query($q, array('fv'=>'kepzesTargyBontasInit','modul'=>'naplo_intezmeny','result'=>'affected rows','values'=>$v)); + + } + + function bontasTankor($bontasIds, $tankorId, $hetiOraszam, $olr = null) { + + if (!is_array($bontasIds) || count($bontasIds) == 0 || $tankorId == '' || $hetiOraszam <= 0) { + $_SESSION['alert'][] = 'message:empty_field:bontasTankor'; + return false; + } + // is_resource mysqli esetén nem jó (object) + if (!$olr) $lr = db_connect('naplo_intezmeny', array('fv'=>'bontasTankor')); + else $lr = $olr; + + db_start_trans($lr); + $ok=true; + /* + Óraszám ellenőrzés - kellene itt is? + - tankör óraszáma: tankorBontás óraszám <= tankorSzemeszer óraszám + - bontás óraszáma: bontás-óraszám <= kepzesOraterv óraszám + - tipus szerint a tankörnek csak egyféle óraszáma lehet + */ + + // Tankor-osztály hozzárendelés + $q = "insert into ".__INTEZMENYDBNEV.".tankorOsztaly (tankorId, osztalyId) + select distinct %u as tankorId, kepzesTargyBontas.osztalyId as osztalyId from ".__TANEVDBNEV.".kepzesTargyBontas + left join ".__INTEZMENYDBNEV.".tankorOsztaly on kepzesTargyBontas.osztalyId=tankorOsztaly.osztalyId and tankorId=%u + where bontasId in (".implode(',', array_fill(0, count($bontasIds), '%u')).") and tankorId is null"; + $v = $bontasIds; array_unshift($v, $tankorId, $tankorId); + $r = db_query($q, array('fv'=>'bontasTankor/1','modul'=>'naplo','result'=>'affected rows','values'=>$v), $lr); + if ($r === false) { db_rollback($lr, 'tankör-osztály hozzárendelés'); if ($olr) db_close($lr); return false; } // is_resource mysqli esetén nem jó (object) + // bontasTankor rögzítése + foreach ($bontasIds as $bontasId) { + $q = "insert into ".__TANEVDBNEV.".bontasTankor (bontasId, tankorId, hetiOraszam) values (%u, %u, %f)"; + $v = array($bontasId, $tankorId, $hetiOraszam); + $r = db_query($q, array('fv'=>'bontasTankor/bt','modul'=>'naplo','values'=>$v), $lr); + if ($r === false) { db_rollback($lr, 'tankörnév hozzárendelés'); if (!$olr) db_close($lr); return false; } // is_resource mysqli esetén nem jó (object) + } + db_commit($lr); + + $r1 = setTankorNev($tankorId, $tankorNevExtra=null, $lr); + // is_resource mysqli esetén nem jó (object) + if (!$olr) db_close($lr); + + return $r1; + } + + +?> \ No newline at end of file diff --git a/mayor-orig/www/include/modules/naplo/tanev/targyOraszam.php b/mayor-orig/www/include/modules/naplo/tanev/targyOraszam.php new file mode 100644 index 00000000..d17958d0 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/tanev/targyOraszam.php @@ -0,0 +1,28 @@ + 'getTargyOraszam', 'modul' => 'naplo_intezmeny', 'result' => 'assoc', 'keyfield' => 'targyNev', 'values' => $v)); + + foreach($R as $_tankorId => $D) { + $R[$_tankorId]['tankorTanar'] = getTankorTanarai($tankorId); + } + + return $R; + + } + + function getTargyOraszamEvfolyamonkent($tanev=__TANEV) { + + $q = "SELECT SUM(oraszam)/(SELECT MAX(szemeszter) FROM szemeszter WHERE tanev=%u) AS db, targyNev FROM tankorSzemeszter + LEFT JOIN tankor USING (tankorId) LEFT JOIN targy USING (targyId) WHERE tanev=%u GROUP BY targyid ORDER BY targyNev"; + $v = array($tanev, $tanev); + return db_query($q, array('fv' => 'getTargyOraszamEvfolyamonkent', 'modul' => 'naplo_intezmeny', 'result' => 'assoc', 'keyfield' => 'targyNev', 'values' => $v)); + + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/tanev/vegzosOrarendLezaras.php b/mayor-orig/www/include/modules/naplo/tanev/vegzosOrarendLezaras.php new file mode 100644 index 00000000..b7f9acd0 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/tanev/vegzosOrarendLezaras.php @@ -0,0 +1,33 @@ += '%s' AND (tanarId,osztalyJel,targyJel) IN ( + SELECT tanarId,osztalyJel,targyJel FROM orarendiOraTankor WHERE tankorId IN (".implode(',', array_fill(0, count($ADAT['vegzosTankor']), '%u')).") + )"; + $v = mayor_array_join(array($ADAT['dt']), $ADAT['vegzosTankor']); + db_query($q, array('fv' => 'vegzosOrarendLezarads', 'modul' => 'naplo', 'values' => $v)); + + // A lezárás dátuma után végződő bejegyzáések igDt-inek beállítása + $q = "UPDATE orarendiOra LEFT JOIN orarendiOraTankor USING (tanarId,osztalyJel,targyJel) SET igDt=('%s' - INTERVAL 1 DAY) + WHERE tankorId IN (".implode(',', array_fill(0, count($ADAT['vegzosTankor']),'%u')).") AND igDt > '%s'"; + $v = mayor_array_join(array($ADAT['dt']), $ADAT['vegzosTankor'], array($ADAT['dt'])); + db_query($q, array('fv' => 'vegzosOrarendLezarads', 'modul' => 'naplo', 'values' => $v)); + + } + + function vegzosHaladasiNaploLezaras($ADAT) { + + $q = "DELETE FROM ora WHERE dt >= '%s' AND tankorId IN (".implode(',', array_fill(0, count($ADAT['vegzosTankor']), '%u')).")"; + $v = mayor_array_join(array($ADAT['dt']), $ADAT['vegzosTankor']); + db_query($q, array('fv' => 'vegzosHaladasiNaploLezarads', 'modul' => 'naplo', 'values' => $v)); + + } + +?> -- cgit v1.2.3