<?php
/*
* Generated by CRUDigniter v3.2
* www.crudigniter.com
*/
class Autorisation_model extends CI_Model
{
function __construct()
{
parent::__construct();
}
/*
* Get autorisation by id
*/
function get_autorisation($id)
{
return $this->db->get_where('autorisation',array('id'=>$id))->row_array();
}
/*
* Recuperer le solde consommer dans le mois courant
*/
function get_solde_autorisation($id)
{
return $this->db->query("SELECT sum( FORMAT(TIMESTAMPDIFF(minute, heursdebut, heursfin)/60,2) ) as solde from autorisation where users_id=".$id." and EXTRACT(YEAR_MONTH FROM now())=EXTRACT(YEAR_MONTH FROM datedemande ) and etat=1 ")->row_array();
}
function get_autorisation_to_pdf($id)
{
$this->db->select("*,(select concat(nom,' ',prenom) from users where users.id= autorisation.updatedby) as validator ,objetautorisation.libelle as objetautorisation, autorisation.description as desc,autorisation.id as idautorisation ,transport.libelle as transport, fonction.libelle as poste, societe.nom as depart");
$this->db->from('autorisation');
$this->db->join('objetautorisation', 'objetautorisation.id = autorisation.objetautorisation_id');
$this->db->join('transport', 'transport.id = autorisation.transport_id');
$this->db->join('societe', 'societe.id = autorisation.depart_id');
$this->db->join('users', 'users.id = autorisation.users_id');
$this->db->join('affectation', 'users.id = affectation.users_id');
$this->db->join('fonction', 'fonction.id = affectation.fonction_id');
$this->db->where("autorisation.id",$id);
$query = $this->db->get()->row_array();
return $query;
}
/*
* Get all autorisation count
*/
function get_all_autorisation_count()
{
$this->db->from('autorisation');
return $this->db->count_all_results();
}
/*
* Get all autorisation
*/
function get_all_autorisation($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==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->select("*,users.nom as name,objetautorisation.libelle as objetautorisation ,autorisation.description as desc,transport.libelle as transport , autorisation.id as idautorisation,societe.nom as depart");
$this->db->from('autorisation');
$this->db->join('objetautorisation', 'objetautorisation.id = autorisation.objetautorisation_id');
$this->db->join('transport', 'transport.id = autorisation.transport_id');
$this->db->join('societe', 'societe.id = autorisation.depart_id');
$this->db->join('users', 'users.id = autorisation.users_id');
$query = $this->db->get()->result_array();
return $query;
}
/*
* function to add new autorisation
*/
function add_autorisation($params)
{
$this->db->insert('autorisation',$params);
return $this->db->insert_id();
}
/*
* function to update autorisation
*/
function update_autorisation($id,$params)
{
$this->db->where('id',$id);
return $this->db->update('autorisation',$params);
}
function update_etat($id,$etat){
$autorisation = $this->get_autorisation($id);
$user= $this->session->userdata("auth");
$this->load->model("User_model");
$responsable = $this->User_model->get_user_responsable($autorisation["users_id"]);
$interim=$this->User_model->get_user_interim($autorisation["users_id"]);
if( ( ($user["iduser"] != $autorisation["users_id"]||($user["iduser"] == $autorisation["users_id"] && $user["type"]==1 )) && ($user["iduser"] == $responsable["id"] || $user["iduser"] == $interim["id"]) ) && (isset($autorisation["id"]) && ($autorisation["isupdated"]==0) || $etat==3 ) ){
$params=array(
"etat"=>$etat,
"isupdated"=>1,
"updatedby"=>$user["iduser"]
);
$this->db->where('id',$id);
return $this->db->update('autorisation',$params);
}else{
return false;
}
}
/*
* function to delete autorisation
*/
function delete_autorisation($id)
{
return $this->db->delete('autorisation',array('id'=>$id));
}
function get_all_autorisation_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("autorisation.id", "desc");
$this->db->select("*,users.nom as name,objetautorisation.libelle as objetautorisation ,autorisation.description as desc,transport.libelle as transport , autorisation.id as idautorisation,societe.nom as depart");
$this->db->from('autorisation');
$this->db->join('objetautorisation', 'objetautorisation.id = autorisation.objetautorisation_id');
$this->db->join('transport', 'transport.id = autorisation.transport_id');
$this->db->join('societe', 'societe.id = autorisation.depart_id');
$this->db->join('users', 'users.id = autorisation.users_id');
$query = $this->db->get()->result_array();
return $query;
}
/*
* 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 autorisation 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 autorisation 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 autorisation 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 autorisation where etat=3".$condition)->row_array()["number"],
"color"=>"#f39c12",
"highlight"=>"#f39c12",
"label"=>"Annulé"
),
);
return $etats;
}
}