374 lines
11 KiB
PHP
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();
|
|
}
|
|
}
|