<?php
/*
* Generated by CRUDigniter v3.2
* www.crudigniter.com
*/
class Conge_model extends CI_Model
{
function __construct()
{
parent::__construct();
}
/*
* Get conge by id
*/
function get_conge($id)
{
return $this->db->get_where('conge',array('id'=>$id))->row_array();
}
function calculate_sum($conge){
$sum = 0;
$datetime1 = new DateTime($conge['datedebut']);
$datetime2 = new DateTime($conge['datefin']);
$this->load->model("Ecritureplanning_model");
$countferie =$this->Ecritureplanning_model->get_count_ferie_in_periode($conge['datedebut'],$conge['datefin']);
if (isset($conge['demijourned'])&& isset($conge['demijournef'])){
if (($conge['demijourned']=="0")&&($conge['demijournef']=="0"))
{
$interval = $datetime1->diff($datetime2);
$sum+= ($interval->d+1)-$countferie ;
}
elseif(($conge['demijourned']!="0")&&($conge['demijournef']!="0"))
{
$interval = $datetime1->diff($datetime2);
$sum+= ($interval->d+1-0.5-0.5)-$countferie ;
}
elseif(($conge['demijourned']!="0")||($conge['demijournef']!="0"))
{
$interval = $datetime1->diff($datetime2);
$sum+= ($interval->d+1-0.5)-$countferie ;
}
}else{
$interval = $datetime1->diff($datetime2);
$sum+= $interval->d-$countferie ;
}
return $sum;
}
function get_sum_conge($id)
{
$this->db->where('year(datedebut)','year(now())');
$this->db->where('month(datedebut)','month(now())');
$tab = $this->db->get_where('conge',array('month(datedebut)'=>'month(now())','year(datedebut)'=>'year(now())', 'etat'=>1,'users_id'=>$id))->result_array();
$sum=0;
foreach ($tab as $d) {
$datetime1 = new DateTime($d['datedebut']);
$datetime2 = new DateTime($d['datefin']);
$this->load->model("Ecritureplanning_model");
$countferie =$this->Ecritureplanning_model->get_count_ferie_in_periode($d['datedebut'],$d['datefin']);
if (($d['demijourned']=="0")&&($d['demijournef']=="0"))
{
$interval = $datetime1->diff($datetime2);
$sum+= ($interval->d+1)-$countferie ;
}
elseif(($d['demijourned']!="0")&&($d['demijournef']!="0"))
{
$interval = $datetime1->diff($datetime2);
$sum+= ($interval->d+1-0.5-0.5)-$countferie ;
}
elseif(($d['demijourned']!="0")||($d['demijournef']!="0"))
{
$interval = $datetime1->diff($datetime2);
$sum+= ($interval->d+1-0.5)-$countferie ;
}
}
return $sum;
}
function get_conge_to_pdf($id)
{
$this->db->select("*,(select concat(nom,' ',prenom) from users where users.id= conge.updatedby) as validator ,typeconge.libelle as typeconge, conge.id as idconge , (select concat(users.nom,' ',users.prenom) from users where users.id=conge.interim_id) as interim, fonction.libelle as poste, conge.description as congedesc,societe.nom as depart");
$this->db->from('conge');
$this->db->join('typeconge', 'typeconge.id = conge.typeconge_id');
$this->db->join('societe', 'societe.id = conge.depart_id');
$this->db->join('users', 'users.id = conge.users_id');
$this->db->join('affectation', 'users.id = affectation.users_id');
$this->db->join('fonction', 'fonction.id = affectation.fonction_id');
$this->db->where("conge.id",$id);
$query = $this->db->get()->row_array();
return $query;
}
/*
* Get all conge count
*/
function get_all_conge_count()
{
$this->db->from('conge');
return $this->db->count_all_results();
}
/*
* Get all conge
*/
function get_all_conge($params = array(),$role=-1)
{
if(isset($params) && !empty($params))
{
$this->db->limit($params['limit'], $params['offset']);
}
if($role==0){
$user= $this->session->userdata("auth");
$this->db->where("users_id",$user["iduser"]);
}
if($role==0){
$user= $this->session->userdata("auth");
$this->db->where("users_id",$user["iduser"]);
}
if($role==1){
if($params['readException']==false){
$user= $this->session->userdata("auth");
$this->load->model('User_model');
$subusers = $this->User_model->get_all_users_for_responsable($user["iduser"]);
$criteria ="";
foreach ($subusers as $key => $value) {
$criteria.=" users_id=".$value["id"]." or ";
}
$criteria.= "users_id=".$user["iduser"];
$this->db->where($criteria);
}
}
$this->db->order_by("conge.id", "desc");
$this->db->select("*,users.nom as name,typeconge.libelle as typeconge,conge.id as idconge ,conge.description as desc, (select concat(users.nom,' ',users.prenom) from users where users.id=conge.interim_id) as interim");
$this->db->from('conge');
$this->db->join('typeconge', 'typeconge.id = conge.typeconge_id');
$this->db->join('users', 'users.id = conge.users_id');
$query = $this->db->get()->result_array();
return $query;
}
/*
* Get all conge by date
*/
function get_all_conge_by_date($datedebut, $datefin)
{
$this->db->where('creationdate >=',date("Y-m-d",strtotime($datedebut)));
$this->db->where('creationdate <=',date("Y-m-d",strtotime($datefin)));
$this->db->order_by("conge.id", "desc");
$this->db->select("*,users.nom as name,typeconge.libelle as typeconge,conge.id as idconge ,conge.description as desc, (select concat(users.nom,' ',users.prenom) from users where users.id=conge.interim_id) as interim");
$this->db->from('conge');
$this->db->join('typeconge', 'typeconge.id = conge.typeconge_id');
$this->db->join('users', 'users.id = conge.users_id');
$query = $this->db->get()->result_array();
return $query;
}
function get_conge_by_user($user_id)
{
$this->db->where('users_id',$user_id);
$this->db->where('year(datedebut)','year(now())');
$this->db->where('month(datedebut)','month(now())');
$this->db->where("etat","1");
$this->db->order_by("conge.id", "desc");
$this->db->select("*,users.nom as name,typeconge.libelle as typeconge,conge.id as idconge ,conge.description as desc, (select concat(users.nom,' ',users.prenom) from users where users.id=conge.interim_id) as interim");
$this->db->from('conge');
$this->db->join('typeconge', 'typeconge.id = conge.typeconge_id');
$this->db->join('users', 'users.id = conge.users_id');
$query = $this->db->get()->result_array();
return $query;
}
/*
* function to add new conge
*/
function add_conge($params)
{
$this->db->insert('conge',$params);
return $this->db->insert_id();
}
/*
* function to update conge
*/
function update_conge($id,$params)
{
$this->db->where('id',$id);
return $this->db->update('conge',$params);
}
function update_etat($id,$etat){
$user= $this->session->userdata("auth");
$conge = $this->get_conge($id);
$this->load->model("User_model");
$responsable = $this->User_model->get_user_responsable($conge["users_id"]);
$interim=$this->User_model->get_user_interim($conge["users_id"]);
if( ( ($user["iduser"] != $conge["users_id"] ||($user["iduser"] == $conge["users_id"] && $user["type"]==1 )) && ($user["iduser"] == $responsable["id"] || $user["iduser"] == $interim["id"]) ) && (isset($conge["id"]) && ($conge["isupdated"]==0) || $etat==3 ) ){
$params=array(
"etat"=>$etat,
"isupdated"=>1,
"updatedby"=>$user["iduser"]
);
$this->db->where('id',$id);
return $this->db->update('conge',$params);
}else{
return false;
}
}
/*
* function to delete conge
*/
function delete_conge($id)
{
return $this->db->delete('conge',array('id'=>$id));
}
/*
* Pie Chart Etat
*/
function ChartEtat($datedebut=null,$datefin=null)
{
$condition = ($datedebut!=null && $datefin!=null)? " and creationdate>=STR_TO_DATE('".date("Y-m-d",strtotime($datedebut))."', '%Y-%m-%d') and creationdate<=STR_TO_DATE('".date("Y-m-d",strtotime($datefin))."', '%Y-%m-%d ')":"";
$etats=array(
'0'=>array(
"value"=>$this->db->query("select count(etat) as number from conge where etat=0".$condition)->row_array()["number"],
"color"=>"#d2d6de",
"highlight"=>"#d2d6de",
"label"=>"En Attente"
),
'1'=>array(
"value"=>$this->db->query("select count(etat) as number from conge where etat=1".$condition)->row_array()["number"],
"color"=>"#00a65a",
"highlight"=>"#00a65a",
"label"=>"Confirmé"
),
'2'=>array(
"value"=>$this->db->query("select count(etat) as number from conge where etat=2".$condition)->row_array()["number"],
"color"=>"#f56954",
"highlight"=>"#f56954",
"label"=>"Rejeté"
),
'3'=>array(
"value"=>$this->db->query("select count(etat) as number from conge where etat=3".$condition)->row_array()["number"],
"color"=>"#f39c12",
"highlight"=>"#f39c12",
"label"=>"Annulé"
),
);
return $etats;
}
}