Files
monpas/application/models/ijkpartituur/Modpartactiviteiten.php
T
2021-07-10 16:25:16 +02:00

374 lines
11 KiB
PHP

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Description of Activiteiten model
*
* @author Liesbeth
* @date april 25 2013
*/
class Modpartactiviteiten extends MY_Model{
protected $tablename = 'tbPartActiviteiten';
protected $matrix;
protected $matrixusers;
function __construct(){
parent::__construct();
$models = array('ijkpartituur/Modfases',
'ijkpartituur/Modpartactxorgusers',
'shared/Users_model');
$this->load->model($models);
}
function get_details($where=FALSE, $matrix=FALSE){
$this->matrixusers = $this->set_matrixusers();
$records = $this->get_records_where($where);
$details = $this->get_records_details($records);
return $details;
}
function get_records_details($records=FALSE){
if($records){
foreach($records as $record){
$details[] = $this->get_record_details($record);
}
}
if(!isset($details)) $details = FALSE;
return $details;
}
function get_record_details($record){
$details = new stdClass;
$details->id = $record->id;
$details->naam = $record->naam;
$details->omschrijving = $record->omschrijving;
$details->start = mysql2date($record->start);
$details->eind = mysql2date($record->eind);
$details->fase = $this->Modfases->get_record_by_id($record->fase, 'naam');
$details->matrix = $this->set_matrix($details->id);
return $details;
}
/**
* [set_matrix description maakt een object per activiteit van gebruikers die een activiteit hebben]
*
* @param $activiteitid integer
*/
function set_matrix($activiteitid){
if($this->matrixusers){
$i=0;
foreach($this->matrixusers as $matrixuser){
$data = array('activiteitID'=>$activiteitid, 'orguserID'=>$matrixuser->id);
$details[$i]['id'] = $matrixuser->id;
$details[$i]['actief'] = $this->Modpartactxorgusers->check_for_record($data);
$data = array('id'=>$activiteitid, 'verantwoordelijke'=>$matrixuser->id);
$details[$i]['verant'] = $this->Modpartactiviteiten->check_for_record($data);
$i++;
}
}else{
$details = FALSE;
}
return $details;
}
/**
* [set_matrixusers description haalt alle gebruikers (orgusers) op
* die een activiteit hebben binnen de partituur (actief)]
*
* @return : array met de actieve gebruikers
*/
function set_matrixusers(){
$this->sql = " SELECT DISTINCT B.id, B.user_id
FROM tb_orgusers B
JOIN tb_users U
ON U.id = B.user_id
WHERE B.organisatie_id = {$this->globorgid}
ORDER BY U.achternaam, U.voornaam";
$actusers = $this->get_query_result();
if($actusers){
foreach($actusers as $actuser){
$actuser->fullname = $this->Users_model->get_fullname($actuser->user_id);
}
}
return $actusers;
}
function get_kortelijst($pijlerID){
$this->sql = " SELECT pa.id,
pa.naam,
pa.verantwoordelijke
FROM tbPartActiviteiten pa
WHERE pa.pijlerID={$pijlerID}
ORDER BY pa.sequence";
return $this->get_query_result();
}
function get_taaklijst($pijlerID,$dag=FALSE,$maand=FALSE,$jaar=FALSE){
// dit vervangt get_activiteiten_per_partituur
if ($dag) {$datestring = $jaar.'-'.$maand.'-'.$dag ;} ;
$this->sql = " SELECT pa.id,
pa.pijlerID,
pa.sequence as sequence,
pa.gereed as perc,
pa.naam as naam,
pa.omschrijving as omschrijving,
pa.start,
pa.eind ,
pa.duur as duur,
pa.niveau,
o.naamkort as bron
FROM tbPartActiviteiten pa
LEFT JOIN tb_orgusers ou
ON pa.verantwoordelijke = ou.id
LEFT JOIN tb_users u
ON u.id = ou.user_id
LEFT JOIN tb_organisaties o
ON o.id = pa.bronID
WHERE pa.pijlerID={$pijlerID} ";
if ($dag) {
$this->sql.=" AND pa.start <= '{$datestring}'
AND pa.eind >= '{$datestring}' ";
};
$this->sql .= " ORDER BY pa.sequence";
return $this->get_query_result();
}
function get_id_lijst ($partID,$pijlerID){
$this->sql = " SELECT id
FROM tbPartActiviteiten
WHERE partituurID = {$partID}
AND pijlerID = {$pijlerID}
ORDER BY sequence";
return $this->get_query_result();
}
function get_activiteiten_per_pijler($pijlerID){
$this->sql = "SELECT pa.id,
pa.naam,
pa.omschrijving,
CONCAT_WS(' ', u.voornaam, u.tussenvoegsel, u.achternaam) as verantwoordelijke,
pa.start,
pa.eind,
greatest(pa.duur,0) as duur,
pa.email_dagen,
pa.email_naar_pl,
pa.email_naar_vw,
pa.email_adres,
pa.gereed,
pa.opmerkingen,
f.naam as fase,
f.kleur,
o.naamkort as bron
FROM tbPartActiviteiten pa
LEFT JOIN tb_organisaties o
ON o.id = pa.bronID
LEFT JOIN tb_orgusers ou
ON ou.id = pa.verantwoordelijke
LEFT JOIN tb_users u
ON u.id = ou.user_id
LEFT JOIN tbFases f
ON f.id = pa.fase
WHERE pa.pijlerID= {$pijlerID}
ORDER BY f.volgorde, pa.naam";
return $this->get_query_result();
}
function get_activiteiten_per_partituur($partID, $pijlerID){
$this->sql = " SELECT pa.id,
pa.pijlerID,
pa.sequence as nr,
pa.gereed as perc,
pa.naam as name,
pa.omschrijving as omschrijving,
'fw' as code,
'1' as level,
pa.start,
pa.eind as end,
pa.duur as duration,
pa.niveau,
o.organistie_naamkort as bron,
p.naam as pijlernaam,
p.omschrijving
FROM tbPartPijlers pp, tbPartActiviteiten pa
LEFT JOIN tbPijlers p
ON p.id = pp.pijlerID
LEFT JOIN tb_orgusers o
ON pa.verantwoordelijke = o.id
LEFT JOIN tb_users u
ON u.id = o.user_id
LEFT JOIN tb_organisaties o
ON pa.bronID =o.id
WHERE pa.partituurID = {$partID}
AND pa.pijlerID={$pijlerID}
ORDER BY pa.sequence";
return $this->get_query_result();
}
function get_kosten_per_partituur_activiteit($actID){
$this->sql = "SELECT id, omschrijving, kosten
FROM tbPartActKosten
WHERE activiteitID = $actID" ;
return $this->get_query_result();
}
function get_doelgroepen_per_partituur_activiteit ($actID){
$this->sql = "SELECT d.id, d.omschrijving
FROM tbPartActxDoelgroep a, tbDoelgroepen d
WHERE a.activiteitID ={$actID}
AND d.id = a.doelgroepID";
return $this->get_query_result();
}
function get_hulpmiddelen_per_partituur_activiteit($actID){
$this->sql = "SELECT h.id, h.omschrijving
FROM tbPartActXHulpmiddel a, tbHulpmiddelen h
WHERE a.activiteitID = {$actID}
AND h.id = a.hulpmiddelID";
return $this->get_query_result();
}
function get_taak_info($taakID){
$this->sql = "SELECT pa.id as ID,
pa.partituurID,
pa.activiteitID,
pa.pijlerID as pijlerID,
p.naam as pijlernaam,
pa.naam as taaknaam,
pa.omschrijving as omschrijving,
pa.opmerkingen,
pa.bronID as soortTaak,
o.naam as bronOmschrijving,
pa.start, pa.eind,
greatest(pa.duur,0) as duur,
pa.afhankelijkvanID,
pa.verantwoordelijke ,
pa.gereed,
r.omschrijving as resOmschrijving,
r.resultaat ,
pa.fase,
pa.email_dagen as eSpanne,
pa.email_naar_pl as mailPleider,
pa.email_naar_vw as mailVerantwoordelijke,
pa.email_adres as mailNaarMail
FROM tbPijlers p,
tbPartPijlers pap,
tbPartActiviteiten pa
LEFT JOIN tbPartActResultaten r
ON pa.id = r.activiteitID
LEFT JOIN tb_organisaties o
ON o.id = pa.bronID
WHERE pa.id = {$taakID}
AND pap.id = pa.pijlerID
AND p.id = pap.pijlerID
";
$outcome = $this->get_query_row();
if ($outcome){
$outcome->start = mysql2date($outcome->start);
$outcome->eind = mysql2date($outcome->eind);
}
return $outcome;
}
function get_overige_taken_in_partituur ($partID, $taakID){
$this->sql = " SELECT id, naam
FROM tbPartActiviteiten pa
WHERE pa.partituurID={$partID}
AND pa.id <> $taakID";
return $this->get_query_result();
}
function get_uitvoerenden_per_activiteit($taakid){
$this->sql ="SELECT ou.id,
CONCAT_WS(' ' ,u.voornaam, u.tussenvoegsel, u.achternaam) as fullname
FROM tbPartActxOrgusers po, tb_orgusers ou, tb_users u
WHERE po.activiteitID = {$taakid}
AND ou.id = po.orguserID
AND u.id = ou.user_id";
return $this->get_query_result();
}
function get_overige_users_per_activiteit($taakid, $orgid){
$this->sql ="SELECT ou.id,
CONCAT_WS(' ' ,u.voornaam, u.tussenvoegsel, u.achternaam) as fullname
FROM tb_orgusers ou, tb_users u
WHERE ou.organisatie_id={$orgid}
AND NOT EXISTS (
SELECT orguserID
FROM tbPartActxOrgusers
WHERE activiteitID = {$taakid}
AND orguserID = ou.id)
AND u.id = ou.user_id";
// AND orguser_level != 0 ";
return $this->get_query_result();
}
function get_sum_kosten($partID){
$this->sql = " SELECT sum(k.kosten) as kosten
FROM tbPartActiviteiten pa
JOIN tbPartActKosten k
ON k.activiteitid = pa.id
WHERE pa.partituurID={$partID}";
$result= $this->db->query($this->sql);
return $result->row()->kosten;
}
function get_gem_gereed($partituurid){
$this->sql ="SELECT sum(gereed) as som, count(*) as aantal
FROM tbPartActiviteiten pa
WHERE pa.partituurID={$partituurid} ";
$result=$this->db->query($this->sql);
$tot = $result->row()->som;
$aantal = $result->row()->aantal;
if ($aantal == 0) {return 0;}
else {return $tot / $aantal;};
}
function get_partituur_gereed($partID){
// $this->db->join('tbPartActiviteiten', 'tbPartActiviteiten.id = '.$this->tablename.'.ActiviteitID');
$this->sql=" SELECT AVG(gereed) as gemgereed
FROM tbPartActiviteiten
WHERE partituurID = {$partID}
GROUP BY partituurID";
$gemgereed = $this->get_query_row();
if ($gemgereed) {
return round($gemgereed->gemgereed,0);
}
else { return 0 ; } ;
}
function get_activiteiten_per_user($orguserid, $partID = FALSE){
$this->sql = "SELECT pa.id, pa.naam, pa.start,pa.eind, pa.duur,pa.gereed,
f.naam as fase,
p.naam as pijler,
pa.pijlerid
FROM tbPartActiviteiten pa
LEFT JOIN tbFases f
ON f.id = pa.fase
LEFT JOIN tbPartPijlers pp
ON pp.id = pa.pijlerid
LEFT JOIN tbPijlers p
ON p.id = pp.pijlerID
WHERE pa.verantwoordelijke = $orguserid";
if ($partID) {$this->sql .= " AND pa.partituurID = {$partID}"; }
else {$this->sql .= " AND pa.partituurID = {$this->partituurid}"; };
return $this->get_query_result();
}
function get_minmax_activiteiten ($pijlerID){
$this->sql="SELECT MIN(start) as minStart,
MAX(start) as maxStart,
MIN(eind) as minEind,
MAX(eind) as maxEind
FROM tbPartActiviteiten
WHERE pijlerID = {$pijlerID} ";
return $this->get_query_row();
}
}