whiteColumn = array("date", "num", "id_client", "id_thanato", "entreprise", "nom", "prenom", "legal_one", "telephone", "mail", "adresse", "produit_id", "quantite", "date_paiement", "type_paiement", "id_devis", "reference", "description", "prix_unitaire", "legal_two", "path", "tva_default", "coefficient_ik", "mentions_default", "version", "mentions", "comment", "status_paiement", "devise", "auto_invoice_number", "changelog", "format", "comment", "user_id", "facture_prefixe", "arrivee", "depart", "latitude", "longitude", "id_lieu", "rang", "mois", "annee", "id_trajet", "commentaire","source", "date_habilitation", "sexe", "observations_generales", "ref_pacemaker", "id_defunt", "article_id", "corpulence", "date_naissance", "heure_debut", "heure_fin", "rigidite", "lividite", "observations_corps", "acces", "acces_recherche", "acces_etat", "injection", "injection_diffusion", "injection_qte", "preinjection", "preinjection_qte", "coinjection", "coinjection_qte", "drainage", "drainage_qte", "drainage_etat", "ponction", "ponction_qte", "cavite", "cavite_qte", "desinfection", "lavage", "rasage", "presentation_cosmetique", "presentation_sur", "hypodermiques", "hypodermiques_sur", "local", "local_sur", "contenu", "commentaire", "designation", "hypodermiques_text1", "hypodermiques_text2", "qte", "endroit"); $this->whiteTable = array("client", "lieu", "trajet", "devis", "produit_devis", "facture", "produit", "configuration", "ligne_trajet", "thanato", "article", "defunt", "article_devis", "bibliotheque", "bijou_defunt", "obs_defunt", "hypo_defunt"); $this->tableprefix = '*PREFIX*' ."gestion_"; $this->pdo = $db; $this->l = $l; $this->logger = $logger; } public function getConfiguration($idNextcloud){ $sql = "SELECT * FROM `".$this->tableprefix."configuration` WHERE id_nextcloud = ?"; return $this->execSQL($sql, array($idNextcloud)); } public function getTotalDevis($iddevis, $idNextcloud) { $articles = json_decode($this->getListArticle($iddevis, $idNextcloud)); $produits = json_decode($this->getListProduit($iddevis, $idNextcloud)); $total=0; foreach($articles as $key => $article) { $total += $article->prix_unitaire*$article->quantite; } foreach($produits as $key => $produit) { $total += $produit->prix_unitaire*$produit->quantite; } return $total; } public function getClients($idNextcloud){ $sql = "SELECT * FROM ".$this->tableprefix."client;"; return $this->execSQL($sql, array()); } public function getClientsName(){ $sql = "SELECT client.nom, client.prenom, client.id FROM ".$this->tableprefix."client as client ORDER BY client.id DESC"; return $this->execSQL($sql, array()); } public function getClient($id,$idNextcloud){ $sql = "SELECT * FROM ".$this->tableprefix."client WHERE id = ?"; return $this->execSQL($sql, array($id)); } public function getClientbyiddevis($id, $idNextcloud){ $sql = "SELECT * FROM ".$this->tableprefix."devis as d, ".$this->tableprefix."client as c WHERE d.id_client = c.id AND d.id = ?"; return $this->execSQL($sql, array($id)); } public function getThanatopracteurs($idNextcloud){ $sql = "SELECT * FROM ".$this->tableprefix."thanato;"; return $this->execSQL($sql, array()); } public function getBibliotheques($idNextcloud) { $sql = "SELECT * FROM ".$this->tableprefix."bibliotheque;"; return $this->execSQL($sql, array()); } public function getTrajets($idNextcloud) { // $sql_delete = "DELETE FROM ".$this->tableprefix."ligne_trajet"; // $this->execSQL($sql_delete, array()); // $sql_delete = "DELETE FROM ".$this->tableprefix."trajet"; // $this->execSQL($sql_delete, array()); $sql = "SELECT trajet.id, trajet.mois, trajet.annee, trajet.distance, trajet.id_nextcloud, trajet.user_id, thanato.id as id_thanato, thanato.nom as nom_thanato, thanato.prenom as prenom_thanato FROM ".$this->tableprefix."trajet as trajet LEFT JOIN ".$this->tableprefix."thanato as thanato on trajet.id_thanato = thanato.id ORDER BY trajet.annee DESC, trajet.mois DESC;"; return $this->execSQL($sql, array()); } public function getTrajetById($numtrajet, $idNextcloud) { $sql = "SELECT trajet.id, trajet.mois, trajet.annee, trajet.distance, trajet.id_nextcloud, trajet.user_id, thanato.id as id_thanato, thanato.nom as nom_thanato, thanato.prenom as prenom_thanato FROM ".$this->tableprefix."trajet as trajet LEFT JOIN ".$this->tableprefix."thanato as thanato on trajet.id_thanato = thanato.id WHERE trajet.id = ?"; return $this->execSQL($sql, array($numtrajet)); } public function getTrajetsdetails($numtrajet, $idNextcloud) { $sql = "SELECT ligne_trajet.id, ligne_trajet.rang, ligne_trajet.id_nextcloud, ligne_trajet.date, ligne_trajet.user_id, ligne_trajet.commentaire, ligne_trajet.source, lieu.id as lid, lieu.nom as lieu, lieu.latitude as latitude, lieu.longitude as longitude, devis.id as did, devis.num as dnum, client_devis.nom as dnom, client_devis.prenom as dprenoms, devis.id_nextcloud as didnextcloud, defunt.nom as nom_defunt, client.nom as cnom, client.id as cid, client.prenom as cprenoms FROM (".$this->tableprefix."ligne_trajet as ligne_trajet LEFT JOIN ".$this->tableprefix."lieu as lieu on ligne_trajet.id_lieu = lieu.id LEFT JOIN ".$this->tableprefix."devis as devis on ligne_trajet.id_devis = devis.id LEFT JOIN ".$this->tableprefix."client as client_devis on devis.id_client = client_devis.id LEFT JOIN ".$this->tableprefix."client as client on ligne_trajet.id_client = client.id LEFT JOIN ".$this->tableprefix."defunt as defunt on devis.id_defunt = defunt.id ) WHERE ligne_trajet.id_trajet = ? ORDER BY ligne_trajet.rang ASC;"; return $this->execSQL($sql, array($numtrajet)); } public function getTrajetsdetails_orderByDate($numtrajet, $idNextcloud) { $sql = "SELECT ligne_trajet.id, ligne_trajet.rang, ligne_trajet.id_nextcloud, ligne_trajet.date, ligne_trajet.user_id, ligne_trajet.commentaire, ligne_trajet.source, lieu.id as lid, lieu.nom as lieu, lieu.latitude as latitude, lieu.longitude as longitude, client.nom as cnom, client.id as cid, client.prenom as cprenoms FROM (".$this->tableprefix."ligne_trajet as ligne_trajet LEFT JOIN ".$this->tableprefix."lieu as lieu on ligne_trajet.id_lieu = lieu.id LEFT JOIN ".$this->tableprefix."client as client on ligne_trajet.id_client = client.id) WHERE ligne_trajet.id_trajet = ? ORDER BY ligne_trajet.date ASC, ligne_trajet.rang ASC;"; return $this->execSQL($sql, array($numtrajet)); } public function getOneTrajetdetails($id, $idNextcloud) { $sql = "SELECT * FROM ".$this->tableprefix."ligne_trajet WHERE ".$this->tableprefix."ligne_trajet.id = ?;"; return $this->execSQL($sql, array($id)); } public function getOneTrajetdetails_byIdDevis($id_devis, $idNextcloud) { $sql = "SELECT * FROM ".$this->tableprefix."ligne_trajet WHERE ".$this->tableprefix."ligne_trajet.id_devis = ? AND ".$this->tableprefix."ligne_trajet.source LIKE 'devis';"; return $this->execSQL($sql, array($id_devis)); } public function getOneTrajetdetails_byRang($id_trajet, $rang, $idNextcloud) { $sql = "SELECT * FROM ".$this->tableprefix."ligne_trajet WHERE ".$this->tableprefix."ligne_trajet.id_trajet = ? AND ".$this->tableprefix."ligne_trajet.rang = ?;"; return $this->execSQL($sql, array($id_trajet, $rang)); } public function getOneTrajet($id, $idNextcloud) { $sql = "SELECT trajet.id, trajet.mois, trajet.annee, trajet.distance, trajet.id_nextcloud, trajet.user_id, thanato.id as id_thanato, thanato.nom as nom_thanato, thanato.prenom as prenom_thanato FROM ".$this->tableprefix."trajet as trajet LEFT JOIN ".$this->tableprefix."thanato as thanato on trajet.id_thanato = thanato.id WHERE trajet.id = ".$id." ORDER BY trajet.id DESC;"; return $this->execSQL($sql, array()); } public function getLieux($idNextcloud){ $sql = "SELECT lieu.nom, lieu.adresse, lieu.latitude,lieu.longitude, lieu.user_id, lieu.id FROM ".$this->tableprefix."lieu as lieu ORDER BY lieu.id DESC"; return $this->execSQL($sql, array()); } public function getLieu($id,$idNextcloud){ $sql = "SELECT * FROM ".$this->tableprefix."lieu WHERE id = ?"; return $this->execSQL($sql, array($id)); } public function getDevis($idNextcloud){ $sql = "SELECT ".$this->tableprefix."devis.id, ".$this->tableprefix."devis.id as devisid, ".$this->tableprefix."devis.user_id,".$this->tableprefix."devis.id_nextcloud ,".$this->tableprefix."devis.comment ," .$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, ".$this->tableprefix."client.id as cid, ".$this->tableprefix."client.id as id_client, " .$this->tableprefix."client.adresse as adresse_cli,".$this->tableprefix."client.mail as mail_cli,".$this->tableprefix."client.telephone as telephone_cli,".$this->tableprefix."client.legal_one as legalone_cli," .$this->tableprefix."thanato.nom as nom_thanato, ".$this->tableprefix."thanato.prenom as prenom_thanato, ".$this->tableprefix."thanato.id as tid, " .$this->tableprefix."devis.num, ".$this->tableprefix."devis.date, ".$this->tableprefix."devis.version, ".$this->tableprefix."devis.mentions, " .$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin,".$this->tableprefix."devis.id_lieu, " .$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt FROM (".$this->tableprefix."devis LEFT JOIN ".$this->tableprefix."defunt on id_defunt = ".$this->tableprefix."defunt.id LEFT JOIN ".$this->tableprefix."client on id_client = ".$this->tableprefix."client.id LEFT JOIN ".$this->tableprefix."thanato on id_thanato = ".$this->tableprefix."thanato.id LEFT JOIN ".$this->tableprefix."lieu on id_lieu = ".$this->tableprefix."lieu.id ) ORDER BY ".$this->tableprefix."devis.id DESC, ".$this->tableprefix."devis.date DESC;"; return $this->execSQL($sql, array()); } public function getDevisEmmanuelle($idNextcloud){ $sql = "SELECT ".$this->tableprefix."devis.id, ".$this->tableprefix."devis.id as devisid, ".$this->tableprefix."devis.user_id,".$this->tableprefix."devis.id_nextcloud ,".$this->tableprefix."devis.comment ," .$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, ".$this->tableprefix."client.id as cid, ".$this->tableprefix."client.id as id_client, " .$this->tableprefix."client.adresse as adresse_cli,".$this->tableprefix."client.mail as mail_cli,".$this->tableprefix."client.telephone as telephone_cli,".$this->tableprefix."client.legal_one as legalone_cli," .$this->tableprefix."thanato.nom as nom_thanato, ".$this->tableprefix."thanato.prenom as prenom_thanato, ".$this->tableprefix."thanato.id as tid, " .$this->tableprefix."devis.num, ".$this->tableprefix."devis.date, ".$this->tableprefix."devis.version, ".$this->tableprefix."devis.mentions, " .$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin,".$this->tableprefix."devis.id_lieu, " .$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt FROM (".$this->tableprefix."devis LEFT JOIN ".$this->tableprefix."client on id_client = ".$this->tableprefix."client.id LEFT JOIN ".$this->tableprefix."thanato on id_thanato = ".$this->tableprefix."thanato.id LEFT JOIN ".$this->tableprefix."lieu on id_lieu = ".$this->tableprefix."lieu.id LEFT JOIN ".$this->tableprefix."defunt on id_defunt = ".$this->tableprefix."defunt.id ) WHERE LOWER(".$this->tableprefix."devis.id_nextcloud) LIKE 'emmanuelle' ORDER BY ".$this->tableprefix."devis.id DESC, ".$this->tableprefix."devis.date DESC;"; return $this->execSQL($sql, array()); } public function getDevisDelphine($idtrajetdetails, $idNextcloud) { $ligne_trajet = json_decode($this->getOneTrajetdetails($idtrajetdetails, $idNextcloud))[0]; $sql = "SELECT ".$this->tableprefix."devis.id, ".$this->tableprefix."devis.user_id,".$this->tableprefix."devis.id_nextcloud ," .$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, ".$this->tableprefix."client.id as cid, " .$this->tableprefix."thanato.nom as nom_thanato, ".$this->tableprefix."thanato.prenom as prenom_thanato, ".$this->tableprefix."thanato.id as tid, " .$this->tableprefix."devis.num, ".$this->tableprefix."devis.date, ".$this->tableprefix."devis.version, ".$this->tableprefix."devis.mentions, " .$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."devis.id_lieu FROM (".$this->tableprefix."devis LEFT JOIN ".$this->tableprefix."client on id_client = ".$this->tableprefix."client.id LEFT JOIN ".$this->tableprefix."thanato on id_thanato = ".$this->tableprefix."thanato.id LEFT JOIN ".$this->tableprefix."lieu on id_lieu = ".$this->tableprefix."lieu.id ) WHERE LOWER(".$this->tableprefix."devis.id_nextcloud) LIKE 'delphine' AND ".$this->tableprefix."devis.date LIKE '".$ligne_trajet->date."'"; if($ligne_trajet->id_client != NULL) $sql = $sql." AND ".$this->tableprefix."devis.id_client = ".$ligne_trajet->id_client; if($ligne_trajet->id_lieu != NULL) $sql = $sql." AND ".$this->tableprefix."devis.id_lieu = ".$ligne_trajet->id_lieu; $sql = $sql." ORDER BY ".$this->tableprefix."devis.id DESC, ".$this->tableprefix."devis.date DESC;"; return $this->execSQL($sql, array()); } public function getFactures($idNextcloud){ $sql = "SELECT ".$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, " .$this->tableprefix."devis.num as dnum, ".$this->tableprefix."devis.comment as dcomment, date_paiement, type_paiement, id_devis, entreprise, " .$this->tableprefix."facture.version, status_paiement," .$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, ".$this->tableprefix."client.id as id_cli, " .$this->tableprefix."client.adresse as adresse_cli,".$this->tableprefix."client.mail as mail_cli,".$this->tableprefix."client.telephone as telephone_cli,".$this->tableprefix."client.legal_one as legalone_cli," .$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt," .$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin,".$this->tableprefix."devis.id_lieu FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id LEFT JOIN ".$this->tableprefix."defunt on id_defunt = ".$this->tableprefix."defunt.id ORDER BY ".$this->tableprefix."facture.id DESC, ".$this->tableprefix."facture.date_paiement DESC"; $result = $this->execSQL($sql, array()); return $result; } public function getCurrentMonthFactures_byClient($idNextcloud, $date, $idclient) { $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month," .$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, " .$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."devis.comment as numero_commande, " .$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, " .$this->tableprefix."client.mail as mail_client, " .$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom as nom, prenom, entreprise, " .$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin," .$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt," .$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id LEFT JOIN ".$this->tableprefix."defunt on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id WHERE YEAR(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[2]." AND MONTH(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[1]." AND ".$this->tableprefix."client.id = ".$idclient." ORDER BY year DESC, month DESC;"; // $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,".$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, ".$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, nom, prenom, entreprise, ".$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id // WHERE YEAR(".$this->tableprefix."facture.date_paiement) = YEAR(CURRENT_DATE) AND MONTH(".$this->tableprefix."facture.date_paiement) = MONTH(CURRENT_DATE) // ORDER BY year DESC, month DESC;"; // $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,".$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, ".$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, nom, prenom, entreprise, ".$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id // ORDER BY year DESC, month DESC;"; $result = $this->execSQL($sql, array()); return $result; } public function getCurrentMonthFactures($idNextcloud, $date) { $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month," .$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, " .$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."devis.comment as numero_commande, " .$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, " .$this->tableprefix."client.mail as mail_client, " .$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom as nom, prenom, entreprise, " .$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin," .$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt," .$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id LEFT JOIN ".$this->tableprefix."defunt on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id WHERE YEAR(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[2]." AND MONTH(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[1]." ORDER BY year DESC, month DESC;"; // $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,".$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, ".$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, nom, prenom, entreprise, ".$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id // WHERE YEAR(".$this->tableprefix."facture.date_paiement) = YEAR(CURRENT_DATE) AND MONTH(".$this->tableprefix."facture.date_paiement) = MONTH(CURRENT_DATE) // ORDER BY year DESC, month DESC;"; // $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,".$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, ".$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, nom, prenom, entreprise, ".$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id // ORDER BY year DESC, month DESC;"; $result = $this->execSQL($sql, array()); return $result; } public function getCurrentMonthFactures_COGF($idNextcloud, $date) { $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month," .$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, " .$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."devis.comment as numero_commande, " .$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, " .$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom as nom, prenom, entreprise, " .$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin," .$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt," .$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id LEFT JOIN ".$this->tableprefix."defunt on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id WHERE YEAR(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[2]." AND MONTH(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[1]." AND LOWER(".$this->tableprefix."client.entreprise) LIKE LOWER('COGF') ORDER BY year DESC, month DESC;"; // $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,".$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, ".$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, nom, prenom, entreprise, ".$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id // WHERE LOWER(".$this->tableprefix."client.entreprise) LIKE LOWER('COGF') // ORDER BY year DESC, month DESC;"; $result = $this->execSQL($sql, array()); return $result; } public function getCurrentMonthTrajet($idNextcloud, $date) { $sql = "SELECT t.id_nextcloud, t.date, t.distance, depart.nom as lieu_depart, arrivee.nom as lieu_arrivee, depart_c.nom as depart_cnom, depart_c.prenom as depart_cprenoms, arrivee_c.nom as arrivee_cnom, arrivee_c.prenom as arrivee_cprenoms, thanato.id as id_thanato, thanato.nom as nom_thanato, thanato.prenom as prenom_thanato FROM ".$this->tableprefix."trajet t INNER JOIN ".$this->tableprefix."lieu depart ON t.id_lieu_depart = depart.id INNER JOIN ".$this->tableprefix."lieu arrivee ON t.id_lieu_arrivee = arrivee.id INNER JOIN ".$this->tableprefix."client depart_c ON depart.id_client = depart_c.id INNER JOIN ".$this->tableprefix."client arrivee_c ON arrivee.id_client = arrivee_c.id WHERE MONTH(t.date) = ".explode('-', $date)[1].";"; $result = $this->execSQL($sql, array()); return $result; } public function getOneFacture($numfacture, $idNextcloud){ // $sql = "SELECT ".$this->tableprefix."facture.id," . $this->tableprefix . "facture.version," . $this->tableprefix . "facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum, comment, date_paiement, type_paiement, id_devis, nom, prenom, entreprise FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id AND ".$this->tableprefix."facture.id_nextcloud = ".$this->tableprefix."devis.id_nextcloud) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id AND ".$this->tableprefix."devis.id_nextcloud = ".$this->tableprefix."client.id_nextcloud WHERE ".$this->tableprefix."facture.id = ? AND ".$this->tableprefix."facture.id_nextcloud = ?"; $sql = "SELECT ".$this->tableprefix."facture.id," . $this->tableprefix . "facture.version," . $this->tableprefix . "facture.num, " .$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum, comment, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom, prenom, entreprise," .$this->tableprefix."devis.comment as dcomment,".$this->tableprefix."lieu.nom as lieu, ".$this->tableprefix."lieu.adresse as adresse_soin," .$this->tableprefix."defunt.nom as nom_defunt FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id LEFT JOIN ".$this->tableprefix."defunt on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id WHERE ".$this->tableprefix."facture.id = ?"; // return $this->execSQL($sql, array($numfacture, $idNextcloud)); return $this->execSQL($sql, array($numfacture)); } public function getProduits($idNextcloud){ // $sql = "SELECT * FROM ".$this->tableprefix."produit WHERE id_nextcloud = ?"; $sql = "SELECT * FROM ".$this->tableprefix."produit"; // return $this->execSQL($sql, array($idNextcloud)); return $this->execSQL($sql, array()); } public function getDefunts($idNextcloud) { $sql = "SELECT ".$this->tableprefix."defunt.id, ".$this->tableprefix."defunt.nom, ".$this->tableprefix."defunt.date_naissance, ".$this->tableprefix."defunt.ref_pacemaker, ".$this->tableprefix."defunt.sexe, " .$this->tableprefix."client.nom as nom_client, ".$this->tableprefix."client.id as id_client, " .$this->tableprefix."devis.num as numero_devis, ".$this->tableprefix."devis.id as id_devis, ".$this->tableprefix."devis.user_id as user_id, " .$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu FROM ".$this->tableprefix."defunt LEFT JOIN ".$this->tableprefix."devis ON ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id LEFT JOIN ".$this->tableprefix."client ON ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id LEFT JOIN ".$this->tableprefix."lieu ON ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id ORDER BY ".$this->tableprefix."defunt.id DESC;"; return $this->execSQL($sql, array()); } public function getUnusedDefunts($idNextcloud) { $sql = "SELECT ".$this->tableprefix."defunt.id, ".$this->tableprefix."defunt.nom, ".$this->tableprefix."defunt.date_naissance, ".$this->tableprefix."defunt.ref_pacemaker, ".$this->tableprefix."defunt.sexe," .$this->tableprefix."devis.user_id as user_id FROM ".$this->tableprefix."defunt LEFT JOIN ".$this->tableprefix."devis ON ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id WHERE ".$this->tableprefix."devis.id_defunt IS NULL ORDER BY ".$this->tableprefix."defunt.id DESC;"; return $this->execSQL($sql, array()); } public function getOneDevis($numdevis,$idNextcloud){ $sql = "SELECT ".$this->tableprefix."devis.id as devisid, ".$this->tableprefix."devis.version, ".$this->tableprefix."devis.comment, ".$this->tableprefix."devis.date, num," .$this->tableprefix."devis.id_nextcloud as didnextcloud,".$this->tableprefix."devis.id_client, id_lieu, id_thanato," .$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt," .$this->tableprefix."client.id as clientid, ".$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, legal_one, entreprise, telephone, mail, ".$this->tableprefix."client.adresse," .$this->tableprefix."lieu.nom as lieu, ".$this->tableprefix."lieu.adresse as adresse_soin ," .$this->tableprefix."thanato.nom as nom_thanato, ".$this->tableprefix."thanato.prenom as prenom_thanato FROM ".$this->tableprefix."devis LEFT JOIN ".$this->tableprefix."client on id_client = ".$this->tableprefix."client.id LEFT JOIN ".$this->tableprefix."defunt on id_defunt = ".$this->tableprefix."defunt.id LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id LEFT JOIN ".$this->tableprefix."thanato on ".$this->tableprefix."devis.id_thanato = ".$this->tableprefix."thanato.id WHERE ".$this->tableprefix."devis.id = ?"; return $this->execSQL($sql, array($numdevis)); } public function getOneDefunt($numdefunt,$idNextcloud){ $sql = "SELECT ".$this->tableprefix."defunt.id, ".$this->tableprefix."devis.version, ".$this->tableprefix."devis.comment, ".$this->tableprefix."devis.date, num," .$this->tableprefix."devis.id as id_devis,".$this->tableprefix."devis.id_client, id_lieu, id_thanato,".$this->tableprefix."devis.user_id as user_id, " .$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt,".$this->tableprefix."defunt.date_naissance,".$this->tableprefix."defunt.sexe,".$this->tableprefix."defunt.ref_pacemaker," .$this->tableprefix."defunt.date as date_defunt," .$this->tableprefix."defunt.heure_debut," .$this->tableprefix."defunt.heure_fin," .$this->tableprefix."defunt.corpulence," .$this->tableprefix."defunt.rigidite," .$this->tableprefix."defunt.lividite," .$this->tableprefix."defunt.observations_corps," .$this->tableprefix."defunt.acces," .$this->tableprefix."defunt.acces_recherche," .$this->tableprefix."defunt.acces_etat," .$this->tableprefix."defunt.injection," .$this->tableprefix."defunt.injection_diffusion," .$this->tableprefix."defunt.injection_qte," .$this->tableprefix."defunt.preinjection," .$this->tableprefix."defunt.preinjection_qte," .$this->tableprefix."defunt.coinjection," .$this->tableprefix."defunt.coinjection_qte," .$this->tableprefix."defunt.drainage," .$this->tableprefix."defunt.drainage_qte," .$this->tableprefix."defunt.drainage_etat," .$this->tableprefix."defunt.ponction," .$this->tableprefix."defunt.ponction_qte," .$this->tableprefix."defunt.cavite," .$this->tableprefix."defunt.cavite_qte," .$this->tableprefix."defunt.desinfection," .$this->tableprefix."defunt.lavage," .$this->tableprefix."defunt.rasage," .$this->tableprefix."defunt.presentation_cosmetique," .$this->tableprefix."defunt.presentation_sur," .$this->tableprefix."defunt.observations_generales," .$this->tableprefix."client.id as clientid, ".$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, legal_one, entreprise, telephone, mail, ".$this->tableprefix."client.adresse," .$this->tableprefix."lieu.nom as lieu, ".$this->tableprefix."lieu.adresse as adresse_soin ," .$this->tableprefix."thanato.nom as nom_thanato, ".$this->tableprefix."thanato.prenom as prenom_thanato, " .$this->tableprefix."thanato.date_habilitation, " .$this->tableprefix."thanato.reference as reference_habilitation, " .$this->tableprefix."lieu.adresse as adresse_lieu, " .$this->tableprefix."lieu.nom as nom_lieu FROM ".$this->tableprefix."defunt LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id LEFT JOIN ".$this->tableprefix."thanato on ".$this->tableprefix."devis.id_thanato = ".$this->tableprefix."thanato.id WHERE ".$this->tableprefix."defunt.id = ?"; return $this->execSQL($sql, array($numdefunt)); } public function getListProduit($numdevis, $idNextcloud){ $sql = "SELECT ".$this->tableprefix."produit.id as pid,".$this->tableprefix."produit_devis.id as pdid, reference, description,".$this->tableprefix."produit_devis.comment, quantite, prix_unitaire FROM ".$this->tableprefix."produit, ".$this->tableprefix."devis, ".$this->tableprefix."produit_devis WHERE ".$this->tableprefix."produit.id = produit_id AND ".$this->tableprefix."devis.id = devis_id AND ".$this->tableprefix."devis.id = ?"; return $this->execSQL($sql, array($numdevis)); } public function getListArticle($numdevis, $idNextcloud) { $sql = "SELECT ".$this->tableprefix."article.id as aid,".$this->tableprefix."article_devis.id as adid, reference, description,".$this->tableprefix."article_devis.comment, quantite, prix_unitaire FROM ".$this->tableprefix."article, ".$this->tableprefix."devis, ".$this->tableprefix."article_devis WHERE ".$this->tableprefix."article.id = article_id AND ".$this->tableprefix."devis.id = devis_id AND ".$this->tableprefix."devis.id = ?"; return $this->execSQL($sql, array($numdevis)); } public function getArticles($idNextcloud){ $sql = "SELECT * FROM ".$this->tableprefix."article"; return $this->execSQL($sql, array()); } private function getFunctionCall(){ $trace = debug_backtrace(); return $trace[2]['function']; } public function getListObservations($numdefunt, $idNextcloud) { $sql = "SELECT ".$this->tableprefix."obs_defunt.id as odid, designation, commentaire FROM " .$this->tableprefix."obs_defunt, ".$this->tableprefix."defunt WHERE ".$this->tableprefix."defunt.id = defunt_id AND ".$this->tableprefix."defunt.id = ?"; return $this->execSQL($sql, array($numdefunt)); } public function getListBijoux($numdefunt, $idNextcloud) { $sql = "SELECT ".$this->tableprefix."bijou_defunt.id as bdid, designation, commentaire FROM " .$this->tableprefix."bijou_defunt, ".$this->tableprefix."defunt WHERE ".$this->tableprefix."defunt.id = defunt_id AND ".$this->tableprefix."defunt.id = ?"; return $this->execSQL($sql, array($numdefunt)); } public function getListHypodermiques($numdefunt, $idNextcloud) { $sql = "SELECT ".$this->tableprefix."hypo_defunt.id as hdid, designation, qte, endroit FROM " .$this->tableprefix."hypo_defunt, ".$this->tableprefix."defunt WHERE ".$this->tableprefix."defunt.id = defunt_id AND ".$this->tableprefix."defunt.id = ?"; return $this->execSQL($sql, array($numdefunt)); } /** * INSERT client * @$idnextcloud */ public function insertClient($idNextcloud){ $sql = "INSERT INTO `".$this->tableprefix."client` (`id_nextcloud`,`nom`,`prenom`,`legal_one`,`entreprise`,`telephone`,`mail`,`adresse`) VALUES (?,?,?,?,?,?,?,?)"; $this->execSQLNoData($sql,array($idNextcloud, $this->l->t('Last name'), $this->l->t('First name'), $this->l->t('Limited company'), $this->l->t('Company'), $this->l->t('Phone number'), $this->l->t('Email'), $this->l->t('Address') ) ); return true; } /** * */ public function insertThanatopracteur($idNextcloud) { $sql = "INSERT INTO `".$this->tableprefix."thanato` (`id_nextcloud`,`nom`,`prenom`,`reference`,`date_habilitation`) VALUES (?,?,?,?,NOW())"; $this->execSQLNoData($sql,array($idNextcloud, $this->l->t('Last name'), $this->l->t('First name'), 'reference', ) ); return true; } /** * Insert lieu */ public function insertTrajet($id_thanato, $mois, $annee, $idNextcloud){ $last=0; $last = $this->lastinsertid("trajet", $idNextcloud) + 1; // $sql = "INSERT INTO `".$this->tableprefix."trajet` ( `id_nextcloud`, // `date`, // `annee`, // `mois`, // `id_client`, // `id_lieu_depart`, // `id_lieu_arrivee`, // `distance`, // `user_id` // ) // VALUES (?,NOW(),?,?,0,0,0,0,?);"; $sql = "INSERT INTO `".$this->tableprefix."trajet` ( `id_nextcloud`, `date`, `annee`, `mois`, `distance`, `id_thanato`, `user_id` ) VALUES (?,NOW(),?,?,0,?,?);"; $this->execSQLNoData($sql, array($idNextcloud,$annee, $mois, $id_thanato, $last)); return true; } /** * Insert lieu */ public function insertTrajetdetails($numtrajet, $idNextcloud){ $last=0; $last = $this->lastinsertid("ligne_trajet", $idNextcloud) + 1; $rang = $this->get_last_rang_trajetdetails($numtrajet, $idNextcloud); $current_trajet = json_decode($this->getOneTrajet($numtrajet, $idNextcloud))[0]; $trajetdetails = json_decode($this->getTrajetsdetails_orderByDate($numtrajet, $idNextcloud)); $sql = "INSERT INTO `".$this->tableprefix."ligne_trajet` ( `id_nextcloud`, `date`, `id_devis`, `id_lieu`, `id_trajet`, `rang`, `commentaire`, `source`, `user_id` ) VALUES (?,?,0,0,?,?,'','lieu',?);"; $this->execSQLNoData($sql, array($idNextcloud,$trajetdetails[sizeof($trajetdetails)-1]->date,$numtrajet,$rang+1,$last)); return true; } public function insertTrajetdetails_h2f($numtrajet, $date, $idNextcloud){ $last=0; $last = $this->lastinsertid("ligne_trajet", $idNextcloud) + 1; $rang = $this->get_last_rang_trajetdetails($numtrajet, $idNextcloud); $current_trajet = json_decode($this->getOneTrajet($numtrajet, $idNextcloud))[0]; $trajetdetails = json_decode($this->getTrajetsdetails_orderByDate($numtrajet, $idNextcloud)); $sql_h2f = "SELECT * FROM ".$this->tableprefix."lieu WHERE LOWER(".$this->tableprefix."lieu.nom) LIKE 'siege';"; $response_h2f = $this->execSQL($sql_h2f, array()); $h2f = json_decode($response_h2f)[0]; $id_h2f = ($h2f!=NULL)?$h2f->id:0; $sql = "INSERT INTO `".$this->tableprefix."ligne_trajet` ( `id_nextcloud`, `date`, `id_devis`, `id_lieu`, `id_trajet`, `rang`, `commentaire`, `source`, `user_id` ) VALUES (?,?,0,?,?,?,'','siege',?);"; $this->execSQLNoData($sql, array($idNextcloud,$date,$id_h2f,$numtrajet,$rang+1,$last)); return true; } /** * Insert lieu */ public function insertTrajetdetails_byDevis($numtrajet, $devis, $idNextcloud){ $last=0; $last = $this->lastinsertid("ligne_trajet", $idNextcloud) + 1; $rang = $this->get_last_rang_trajetdetails($numtrajet, $idNextcloud); $current_trajet = json_decode($this->getOneTrajet($numtrajet, $idNextcloud))[0]; $trajetdetails = json_decode($this->getTrajetsdetails_orderByDate($numtrajet, $idNextcloud)); $id_client = ($devis->id_client != NULL)?$devis->id_client:0; $id_lieu = ($devis->id_lieu != NULL)?$devis->id_lieu:0; $sql = "INSERT INTO `".$this->tableprefix."ligne_trajet` ( `id_nextcloud`, `date`, `id_devis`, `id_client`, `id_lieu`, `id_trajet`, `rang`, `commentaire`, `source`, `user_id` ) VALUES (?,?,?,?,?,?,?,'','devis',?);"; $this->execSQLNoData($sql, array($idNextcloud,$devis->date,$devis->devisid,$id_client,$id_lieu,$numtrajet,$rang+1,$last)); return true; } public function get_last_rang_trajetdetails($numtrajet, $idNextcloud) { $trajetdetails = json_decode($this->getTrajetsdetails($numtrajet, $idNextcloud)); $rang_max = 0; foreach ($trajetdetails as $key => $details) { if($rang_max<=$details->rang) $rang_max = $details->rang; } return $rang_max; } /** * Insert Defunt */ public function insertDefunt($idNextcloud) { $sql = "INSERT INTO `".$this->tableprefix."defunt` ( `id_nextcloud`, `nom`, `sexe`, `date_naissance`, `ref_pacemaker`, `date`, `corpulence`, `observations_corps`, `observations_generales` ) VALUES (?,?,?,?,?,NOW(),?,?,?);"; $this->execSQLNoData($sql, array($idNextcloud, 'Nom du défunt', 'm', '1973-11-11', 'Référence pacemaker', '', '', '')); return true; } /** * Insert Defunt */ public function insertDefuntByName($name) { $sql = "INSERT INTO `".$this->tableprefix."defunt` ( `id_nextcloud`, `nom`, `sexe`, `date_naissance`, `ref_pacemaker`, `date`, `corpulence`, `observations_corps`, `observations_generales` ) VALUES (?,?,?,?,?,NOW(),?,?,?);"; $this->execSQLNoData($sql, array('admin',$name, 'm', '1973-11-11', 'Référence pacemaker', '', '', '')); return true; } public function insertDefuntByNameAndReturnId($name) { $this->insertDefuntByName($name); return $this->getLastDefuntIdByName($name); } public function getLastDefuntIdByName( $name ) { $sql = "SELECT max(id) as LAST_INSERT_ID FROM ".$this->tableprefix."defunt WHERE nom = ?"; $res = $this->execSQLNoJsonReturn($sql,array($name)); if($res){ return $res[0]['LAST_INSERT_ID']; } return null; } public function getLastClientIdByName($name) { $sql = "SELECT max(id) as LAST_INSERT_ID FROM ".$this->tableprefix."client WHERE nom = ?"; $res = $this->execSQLNoJsonReturn($sql,array($name)); if($res){ return $res[0]['LAST_INSERT_ID']; } return null; } public function getLastLocationIdByName($name) { $sql = "SELECT max(id) as LAST_INSERT_ID FROM ".$this->tableprefix."lieu WHERE nom = ?"; $res = $this->execSQLNoJsonReturn($sql,array($name)); if($res){ return $res[0]['LAST_INSERT_ID']; } return null; } public function getOrCreateThanatoIdByLastName($name){ $thanatoId = $this->getLastThanatoIdByName($name); if($thanatoId == null){ $this->createThanatoByLastName($name); $thanatoId = $this->getLastThanatoIdByName($name); } return $thanatoId; } private function createThanatoByLastName($name){ $idNextcloud = "admin"; $sql = "INSERT INTO `".$this->tableprefix."thanato` (`id_nextcloud`,`nom`,`prenom`,`reference`,`date_habilitation`) VALUES (?,?,?,?,NOW())"; $this->execSQLNoData($sql,array($idNextcloud, $name, $this->l->t('First name'), 'reference', ) ); return true; } public function getLastThanatoIdByName($name) { $sql = "SELECT max(id) as LAST_INSERT_ID FROM ".$this->tableprefix."thanato WHERE nom = ?"; $res = $this->execSQLNoJsonReturn($sql,array($name)); if($res){ return $res[0]['LAST_INSERT_ID']; } return null; } /** * Insert lieu */ public function insertLieu($idNextcloud){ $last=0; $last = $this->lastinsertid("lieu", $idNextcloud) + 1; // $sql = "INSERT INTO `".$this->tableprefix."lieu` ( `id_nextcloud`, // `nom`, // `date`, // `id_client`, // `adresse`, // `latitude`, // `longitude`, // `distance`, // `depart`, // `arrivee`, // `user_id` // ) // VALUES (?,?,NOW(),0,'',?,?,0,'','',?);"; $sql = "INSERT INTO `".$this->tableprefix."lieu` ( `id_nextcloud`, `nom`, `adresse`, `latitude`, `longitude` ) VALUES (?,?,'',?,?);"; $this->execSQLNoData($sql, array($idNextcloud,"Ajouter un lieu",'46.73','1.56')); return true; } /** * Insert quote */ public function insertDevis($idNextcloud){ $last=0; $last = $this->lastinsertid("devis", $idNextcloud) + 1; $sql = "INSERT INTO `".$this->tableprefix."devis` ( `date`, `id_nextcloud`, `num`, `id_defunt`, `id_client`, `id_thanato`, `version`, `id_lieu`, `mentions`, `comment`, `user_id` ) VALUES (NOW(),?,?,0,0,0,?,0,?,?,?);"; $this->execSQLNoData($sql, array($idNextcloud,"Nom du defunt",'Ajouter un lieu',$this->l->t('New'),$this->l->t('Comment'),$last)); return true; } public function insertDevisFromVCalendarAndReturnId($thanatoId,$clientId,$locationId,$defuntId){ $idNextcloud = "admin"; $last=0; $last = $this->lastinsertid("devis", "admin") + 1; $sql = "INSERT INTO `".$this->tableprefix."devis` ( `date`, `id_nextcloud`, `num`, `id_defunt`, `id_client`, `id_thanato`, `version`, `id_lieu`, `mentions`, `comment`, `user_id` ) VALUES (NOW(),?,?,?,?,?,?,?,?,?,?);"; $this->execSQLNoData($sql, array( $idNextcloud, "Nom du defunt", $defuntId, $clientId, $thanatoId, $this->l->t('New'), $locationId, $this->l->t('Mention'), $this->l->t('Comment'), $last)); return $this->getLastDevisIdFromVCalendarProperty($thanatoId,$clientId,$locationId,$defuntId); } public function getLastDevisIdFromVCalendarProperty($thanatoId,$clientId,$locationId,$defuntId){ $sql = "SELECT max(id) as LAST_INSERT_ID FROM ".$this->tableprefix."devis WHERE id_defunt = ? AND id_lieu = ? AND id_client = ? AND id_thanato = ?"; $res = $this->execSQLNoJsonReturn($sql,array( $defuntId, $locationId, $clientId, $thanatoId )); if($res){ return $res[0]['LAST_INSERT_ID']; } return null; } public function getArticlesIdFromArticlesNameArray(array $articles): array { $articleIds = []; foreach ($articles as $article) { $sql = "SELECT id FROM ".$this->tableprefix."article WHERE description = ?"; $res = $this->execSQLNoJsonReturn($sql, array($article)); if ($res) { $articleIds[] = $res[0]['id']; } } return $articleIds; } public function insertDevisArticleFromDevisIdAndArticlesIdArray($devisId, $articleIds) { if (!empty($articleIds)) { $idNextcloud = "admin"; foreach ($articleIds as $articleId) { $this->insertDevisArticle(devisId: $devisId, articleId: $articleId,idNextcloud: $idNextcloud); } } return true; } private function insertDevisArticle($devisId,$articleId,$idNextcloud){ $sql = "INSERT INTO ".$this->tableprefix."article_devis (devis_id, article_id, quantite, discount, comment,id_nextcloud) VALUES (?, ?, 1, 0, '-',?)"; $this->execSQLNoData($sql, array($devisId, $articleId,$idNextcloud)); return true; } /** * Insert invoice */ public function insertFacture($idNextcloud){ $last = 0; $last = $this->lastNumFacture($idNextcloud); $pref = $this->execSQLNoJsonReturn("SELECT * FROM ".$this->tableprefix."configuration WHERE id_nextcloud LIKE ?",array($idNextcloud)); $sql = "INSERT INTO `".$this->tableprefix."facture` (`date`,`id_nextcloud`,`num`,`date_paiement`,`type_paiement`,`id_devis`,`user_id`, `version`) VALUES (?,?,?,NOW(),?,0,?,?);"; $date_temp = new DateTime(); $date = $date_temp->format('Y-m-d'); $datesplit = explode('-', $date); $this->execSQLNoData($sql, array($date , $idNextcloud, "ETS".$datesplit[0]."/".$datesplit[1]."/".$last+1,"Comptant",$last+1,"Ajouter un lieu")); return $last; } private function getDevisIdListFilteredByMentionAndDevisListId($mentionToNotInclude,$devisListId){ if (empty($devisListId)) { return []; } $placeholders = implode(',', array_fill(0, count($devisListId), '?')); $this->logger->debug('Placeholders : ' . $placeholders); $sql = "SELECT id as id FROM ".$this->tableprefix."devis WHERE id IN ($placeholders) AND mentions != ?"; $this->logger->debug('SQL : ' . $sql); $result = $this->execSQLNoJsonReturn($sql,array_merge($devisListId, [$mentionToNotInclude])); return $result; } public function insertFactureForeEachDevisId($idNextCloud,$devisIdArray){ $devisIdarrayToString = implode(',', $devisIdArray); $this->logger->debug($devisIdarrayToString); $mentionToNotInclude = 'facturé'; $devisIdListFiltered = $this->getDevisIdListFilteredByMentionAndDevisListId($mentionToNotInclude,$devisIdArray); foreach($devisIdListFiltered as $devis){ $this->insertFactureByDevisId($idNextCloud,devisId: $devis['id']); } return true; } /** * Insert invoice with a devis */ public function insertFactureByDevisId($idNextcloud,$devisId){ $last = 0; $last = $this->lastNumFacture($idNextcloud); $pref = $this->execSQLNoJsonReturn("SELECT * FROM ".$this->tableprefix."configuration WHERE id_nextcloud LIKE ?",array($idNextcloud)); $sql = "INSERT INTO `".$this->tableprefix."facture` (`date`,`id_nextcloud`,`num`,`date_paiement`,`type_paiement`,`id_devis`,`user_id`, `version`) VALUES (?,?,?,NOW(),?,?,?,?);"; $date_temp = new DateTime(); $date = $date_temp->format('Y-m-d'); $datesplit = explode('-', $date); $this->execSQLNoData($sql, array( $date , $idNextcloud, "ETS".$datesplit[0]."/".$datesplit[1]."/".$last+1, "Comptant", $devisId, $last+1, "Ajouter un lieu")); //update devis status $this->gestion_update('devis','mentions','facturé',$devisId,$idNextcloud); return $last; } public function insertProduit($idNextcloud){ $sql = "INSERT INTO `".$this->tableprefix."produit` (`id_nextcloud`,`reference`,`description`,`prix_unitaire`) VALUES (?,?,?,0);"; $this->execSQLNoData($sql, array($idNextcloud,$this->l->t('Reference'),$this->l->t('Designation'))); return true; } public function insertProduitDevis($id,$idNextcloud){ $res = $this->searchMaxIdProduit($idNextcloud); $sql = "INSERT INTO `".$this->tableprefix."produit_devis` (`devis_id`, `id_nextcloud`,`produit_id`,`quantite`,`discount`) VALUES (?,?,?,1,0);"; $this->execSQLNoData($sql, array($id,$idNextcloud,($res[0]['id']==NULL)?0:$res[0]['id'])); return true; } public function insertArticle($idNextcloud){ $sql = "INSERT INTO `".$this->tableprefix."article` (`id_nextcloud`,`reference`,`description`,`prix_unitaire`) VALUES (?,?,?,0);"; $this->execSQLNoData($sql, array($idNextcloud,$this->l->t('Reference'),$this->l->t('Designation'))); return true; } public function insertArticleDevis($id,$idNextcloud){ $res = $this->searchMaxIdArticle($idNextcloud); $sql = "INSERT INTO `".$this->tableprefix."article_devis` (`devis_id`, `id_nextcloud`,`article_id`,`quantite`,`discount`, `comment`) VALUES (?,?,?,1,0,'-');"; $this->execSQLNoData($sql, array($id,$idNextcloud,($res[0]['id']==NULL)?0:$res[0]['id'])); return true; } public function insertObservationDefunt($id,$idNextcloud){ $sql = "INSERT INTO `".$this->tableprefix."obs_defunt` (`defunt_id`, `id_nextcloud`,`designation`,`commentaire`) VALUES (?,?,?,?);"; $this->execSQLNoData($sql, array($id,$idNextcloud,'inserer une observation', 'inserer un commentaire')); return true; } public function insertBijouDefunt($id,$idNextcloud){ $sql = "INSERT INTO `".$this->tableprefix."bijou_defunt` (`defunt_id`, `id_nextcloud`,`designation`,`commentaire`) VALUES (?,?,?,?);"; $this->execSQLNoData($sql, array($id,$idNextcloud,'inserer un bijou', 'inserer un commentaire')); return true; } public function insertHypoDefunt($id,$idNextcloud){ $sql = "INSERT INTO `".$this->tableprefix."hypo_defunt` (`defunt_id`, `id_nextcloud`,`designation`,`qte`, `endroit`) VALUES (?,?,?,?,?);"; $this->execSQLNoData($sql, array($id,$idNextcloud,'', 0, '')); return true; } public function searchMaxIdProduit($idNextcloud){ // $sqlSearchMax = "SELECT MIN(id) as id FROM `".$this->tableprefix."produit` WHERE id_nextcloud = ?"; $sqlSearchMax = "SELECT MIN(id) as id FROM `".$this->tableprefix."produit`"; // return $this->execSQLNoJsonReturn($sqlSearchMax, array($idNextcloud)); return $this->execSQLNoJsonReturn($sqlSearchMax, array()); } public function searchMaxIdArticle($idNextcloud){ $sqlSearchMax = "SELECT MIN(id) as id FROM `".$this->tableprefix."article`"; return $this->execSQLNoJsonReturn($sqlSearchMax, array()); } public function insertBibliotheque($idNextcloud){ $sql = "INSERT INTO `".$this->tableprefix."bibliotheque` (`id_nextcloud`,`contenu`) VALUES (?,?);"; $this->execSQLNoData($sql, array($idNextcloud,'inserer un texte ici')); return true; } /** * UPDATE */ public function gestion_update($table, $column, $data, $id, $idNextcloud){ if(in_array($table, $this->whiteTable) && in_array($column, $this->whiteColumn)){ if(strcmp($table, "facture")==0 && strcmp($column, "date_paiement")==0) { $facture = json_decode($this->getOneFacture($id, $idNextcloud))[0]; $numfacture = explode('/', $facture->num)[2]; $datesplit = explode('-', $data); $sql = "UPDATE ".$this->tableprefix.$table." SET $column = ?, `num`= ? WHERE `id` = ?"; $this->execSQLNoData($sql, array(htmlentities(rtrim($data)), "ETS".$datesplit[0]."/".$datesplit[1]."/".$numfacture, $id)); } else if(strcmp($table, "facture")==0 && strcmp($column, "id_devis")==0) { $facture = json_decode($this->getOneFacture($id, $idNextcloud))[0]; $devis = json_decode($this->getOneDevis(htmlentities(rtrim($data)), $idNextcloud))[0]; $sql = "UPDATE ".$this->tableprefix.$table." SET $column = ?, `date`= ?, `version`= ? WHERE `id` = ?"; $this->execSQLNoData($sql, array(htmlentities(rtrim($data)), $devis->date, html_entity_decode($devis->version),$id)); } else if(strcmp($table, "lieu")==0 && (strcmp($column, "latitude")==0 || strcmp($column, "longitude")==0)) { $lieu = json_decode($this->getLieu($id, $idNextcloud))[0]; if(floatval($data)!=0) { $sql = "UPDATE ".$this->tableprefix.$table." SET $column = ? WHERE `id` = ?"; $this->execSQLNoData($sql, array(htmlentities(rtrim(floatval($data))), $id)); $lieu = json_decode($this->getLieu($id, $idNextcloud))[0]; if(floatval($lieu->latitude)!=0 && floatval($lieu->longitude)!=0) { $adresse = $this->recuperer_adresse(floatval($lieu->latitude), floatval($lieu->longitude)); $sql = "UPDATE ".$this->tableprefix.$table." SET adresse = ? WHERE `id` = ?"; $this->execSQLNoData($sql, array(htmlentities($adresse), $id)); } } } else if(strcmp($table, "devis")==0 && (strcmp($column, "id_lieu")==0 || strcmp($column, "date")==0 || strcmp($column, "id_client")==0 || strcmp($column, "id_thanato")==0)) { $devis = json_decode($this->getOneDevis($id, $idNextcloud))[0]; $this->update_lieu_date_devis($devis, $column, htmlentities(rtrim($data)), $idNextcloud); } else if(strcmp($table, "ligne_trajet")==0 && (strcmp($column, "id_devis")==0 || strcmp($column, "date")==0 || strcmp($column, "id_lieu")==0 || strcmp($column, "rang")==0)) { $ligne_trajet = json_decode($this->getOneTrajetdetails($id, $idNextcloud))[0]; $this->update_lieu_date_devis_rang_ligneTrajet($ligne_trajet, $column, htmlentities(rtrim($data)), $idNextcloud); } else { $sql = "UPDATE ".$this->tableprefix.$table." SET $column = ? WHERE `id` = ?"; $this->execSQLNoData($sql, array(htmlentities(rtrim($data)), $id)); } return true; } return false; } public function init_trajets_data($idNextcloud) { // supprimer d'abord les lignes de trajet ainsi que les trajets existants $sqldeletelignetrajet = "DELETE FROM ".$this->tableprefix."ligne_trajet;"; $this->execSQLNoData($sqldeletelignetrajet, array()); $sqldeletetrajet = "DELETE FROM ".$this->tableprefix."trajet;"; $this->execSQLNoData($sqldeletetrajet, array()); //recuperer tous les trajets // $all_devis = json_decode($this->getDevisEmmanuelle($idNextcloud)); $all_devis = json_decode($this->getDevis($idNextcloud)); foreach ($all_devis as $key => $devis) { if($devis->id_lieu != NULL) { $this->update_lieu_date_devis($devis, 'id_lieu', $devis->id_lieu, $idNextcloud); } } } public function createDevisTrajetFromVCalendar($devisId){ $idNextcloud = 'admin'; $devis = json_decode($this->getOneDevis($devisId, $idNextcloud))[0]; $this->generate_ligneTrajet($devis, $idNextcloud); $ligne_trajet = json_decode($this->getOneTrajetdetails_byIdDevis($devis->devisid, $idNextcloud))[0]; $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); } /** * update lieu et date devis */ public function update_lieu_date_devis($devis, $column, $data, $idNextcloud) { $ligne_trajet = json_decode($this->getOneTrajetdetails_byIdDevis($devis->devisid, $idNextcloud))[0]; switch ($column) { case 'id_client': $sql = "UPDATE ".$this->tableprefix."devis SET $column = ? WHERE `id` = ?"; $this->execSQLNoData($sql, array($data, $devis->devisid)); $updated_devis = json_decode($this->getOneDevis($devis->devisid, $idNextcloud))[0]; if($ligne_trajet != NULL) { // si il existe déja une ligne trajet $sql = "UPDATE ".$this->tableprefix."ligne_trajet SET $column = ? WHERE `id` = ?"; $this->execSQLNoData($sql, array($data, $ligne_trajet->id)); $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); } else { if($updated_devis->id_lieu!=0) { // ajouter le devis dans trajet s'il n'existe pas encore $this->generate_ligneTrajet($updated_devis, $idNextcloud); $ligne_trajet = json_decode($this->getOneTrajetdetails_byIdDevis($updated_devis->devisid, $idNextcloud))[0]; $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); } } break; case 'date': $sql = "UPDATE ".$this->tableprefix."devis SET $column = ? WHERE `id` = ?"; $this->execSQLNoData($sql, array($data, $devis->devisid)); $updated_devis = json_decode($this->getOneDevis($devis->devisid, $idNextcloud))[0]; if($devis->id_lieu!=NULL) { if(strcmp(explode('-', $devis->date)[1], explode('-', $updated_devis->date)[1]) != 0) { // si le mois a changé // deplacer la ligne de trajet if($ligne_trajet != NULL) $this->gestion_delete('ligne_trajet', $ligne_trajet->id, $idNextcloud); $this->generate_ligneTrajet($updated_devis, $idNextcloud); $ligne_trajet = json_decode($this->getOneTrajetdetails_byIdDevis($updated_devis->devisid, $idNextcloud))[0]; $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); } else { // mettre a jour ligne_trajet if($ligne_trajet != NULL) { $sql = "UPDATE ".$this->tableprefix."ligne_trajet SET $column = ? WHERE `id` = ?"; $this->execSQLNoData($sql, array($data, $ligne_trajet->id)); $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); } } } break; case 'id_lieu': // mettre a jour devis et ligne_trajet $sql = "UPDATE ".$this->tableprefix."devis SET $column = ? WHERE `id` = ?"; $this->execSQLNoData($sql, array($data, $devis->devisid)); $updated_devis = json_decode($this->getOneDevis($devis->devisid, $idNextcloud))[0]; if($ligne_trajet != NULL) { $sql = "UPDATE ".$this->tableprefix."ligne_trajet SET $column = ? WHERE `id` = ?"; $this->execSQLNoData($sql, array($data, $ligne_trajet->id)); $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); } else { if($updated_devis->id_lieu!=0 && $updated_devis->id_thanato!=0) { // ajouter le devis dans trajet s'il n'existe pas encore $this->generate_ligneTrajet($updated_devis, $idNextcloud); $ligne_trajet = json_decode($this->getOneTrajetdetails_byIdDevis($updated_devis->devisid, $idNextcloud))[0]; $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); } } break; case 'id_thanato': // mettre a jour devis et ligne_trajet $sql = "UPDATE ".$this->tableprefix."devis SET $column = ? WHERE `id` = ?"; $this->execSQLNoData($sql, array($data, $devis->devisid)); $updated_devis = json_decode($this->getOneDevis($devis->devisid, $idNextcloud))[0]; if($ligne_trajet != NULL) { $this->gestion_delete('ligne_trajet', $ligne_trajet->id, $idNextcloud); } $this->generate_ligneTrajet($updated_devis, $idNextcloud); $ligne_trajet = json_decode($this->getOneTrajetdetails_byIdDevis($updated_devis->devisid, $idNextcloud))[0]; $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); break; } } public function update_lieu_date_devis_rang_ligneTrajet($ligne_trajet, $column, $data, $idNextcloud) { switch ($column) { case 'id_devis': $current_devis = json_decode($this->getOneDevis($data, $idNextcloud))[0]; $this->update_ligneTrajet('ligne_trajet', 'id_devis', $current_devis->devisid, $ligne_trajet->id, $idNextcloud); $this->update_ligneTrajet('ligne_trajet', 'date', $current_devis->date, $ligne_trajet->id, $idNextcloud); $this->update_ligneTrajet('ligne_trajet', 'id_client', $current_devis->id_client, $ligne_trajet->id, $idNextcloud); $this->update_ligneTrajet('ligne_trajet', 'id_lieu', $current_devis->id_lieu, $ligne_trajet->id, $idNextcloud); $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); break; case 'id_lieu': $this->update_ligneTrajet('ligne_trajet', 'id_lieu', $data, $ligne_trajet->id, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); break; case 'date': $this->update_ligneTrajet('ligne_trajet', 'date', $data, $ligne_trajet->id, $idNextcloud); $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); break; case 'rang': $ligneTrajet_surLeRang = json_decode($this->getOneTrajetdetails_byRang($ligne_trajet->id_trajet, $data, $idNextcloud))[0]; if($ligneTrajet_surLeRang != NULL) { $this->update_ligneTrajet('ligne_trajet', 'rang', intval($data), $ligne_trajet->id, $idNextcloud); $this->update_ligneTrajet('ligne_trajet', 'rang', intval($data)+1, $ligneTrajet_surLeRang->id, $idNextcloud); $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); } else { $this->update_ligneTrajet('ligne_trajet', 'rang', $data, $ligne_trajet->id, $idNextcloud); $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); } break; } } /** * generer une ligne de trajet par un devis */ public function generate_ligneTrajet($devis, $idNextcloud) { $date_devis_split = explode('-', $devis->date); // creer le trajet s'il n'existe pas $trajet = json_decode($this->getOneTrajet_byThanatoMonthYear($devis->id_thanato, $date_devis_split[1], $date_devis_split[0]))[0]; if($trajet == NULL) { $this->insertTrajet($devis->id_thanato, $date_devis_split[1], $date_devis_split[0], $idNextcloud); $trajet = json_decode($this->getOneTrajet_byThanatoMonthYear($devis->id_thanato, $date_devis_split[1], $date_devis_split[0]))[0]; } $this->insertTrajetdetails_byDevis($trajet->id, $devis, $idNextcloud); } /** * ranger les lignes de trajet dans un trajet par date et par rang * inserer ligne siege au debut et fin de chaque journee s'il n'existe pas */ public function range_ligneTrajet($id_trajet, $idNextcloud) { $lignes = json_decode($this->getTrajetsdetails_orderByDate($id_trajet, $idNextcloud)); $nb_jour = 0; if(sizeof($lignes)>0) { $nb_jour = 1; $dates = array(0=>$lignes[0]->date); $date_temp = $lignes[0]->date; foreach ($lignes as $key => $ligne) { if(strcmp($date_temp, $ligne->date)!=0) { $date_temp = $ligne->date; array_push($dates, $date_temp); $nb_jour++; } } // on verifie si le nombre de ligne ets correspond à 2*nb_jour (debut et fin de journee) $reste = (2*$nb_jour) - (sizeof(array_filter($lignes, function($ligne) {return strcmp($ligne->source,'siege')==0;}))); while ($reste>0) { $this->insertTrajetdetails_h2f($id_trajet, $lignes[0]->date, $idNextcloud); $reste--; } $current_lines = json_decode($this->getTrajetsdetails_orderByDate($id_trajet, $idNextcloud)); // ici le nombre de ligne h2f est egale au nb_jour*2 $array_siege = array(); foreach ($current_lines as $key => $ligne) { if(strcmp($ligne->source,'siege')==0) array_push($array_siege, $ligne); } $j=0; for ($i=0; $i < sizeof($dates); $i++) { $this->update_ligneTrajet('ligne_trajet', 'rang', 0, $array_siege[$j]->id, $idNextcloud); $this->update_ligneTrajet('ligne_trajet', 'date', $dates[$i], $array_siege[$j]->id, $idNextcloud); $this->update_ligneTrajet('ligne_trajet', 'rang', sizeof($current_lines)+1, $array_siege[$j+1]->id, $idNextcloud); $this->update_ligneTrajet('ligne_trajet', 'date', $dates[$i], $array_siege[$j+1]->id, $idNextcloud); $j+=2; } $ordered_lines = json_decode($this->getTrajetsdetails_orderByDate($id_trajet, $idNextcloud)); foreach ($ordered_lines as $key => $line) { $this->update_ligneTrajet('ligne_trajet', 'rang', $key+1, $line->id, $idNextcloud); } } } public function update_ligneTrajet($table, $column, $data, $id, $idNextcloud){ if(in_array($table, $this->whiteTable) && in_array($column, $this->whiteColumn)){ $sql = "UPDATE ".$this->tableprefix.$table." SET $column = ? WHERE `id` = ?"; $this->execSQLNoData($sql, array($data, $id)); } } public function calculer_distance_trajet($numtrajet, $idNextcloud) { $trajetdetails = json_decode($this->getTrajetsdetails_orderByDate($numtrajet, $idNextcloud)); $distance_temp = 0; $distances = array(); $last_point = NULL; for ($i=0; $i < sizeof($trajetdetails); $i++) { if(strcmp(explode('-', $trajetdetails[$i]->date)[2], explode('-', $trajetdetails[$i+1]->date)[2])!=0) { array_push($distances, $distance_temp); $distance_temp = 0; $last_point = NULL; } else { if($trajetdetails[$i]->lid != NULL) $last_point = $trajetdetails[$i]; if($last_point->lid != NULL && $trajetdetails[$i+1]->lid != NULL) $distance_temp += $this->calcul_distance(floatval($last_point->latitude), floatval($last_point->longitude), floatval($trajetdetails[$i+1]->latitude), floatval($trajetdetails[$i+1]->longitude)); } } if(sizeof($trajetdetails)>1 && sizeof($distances)==0) array_push($distances, $distance_temp); $distance_final = 0; foreach ($distances as $key => $valdistance) { $distance_final += $valdistance; } $sql = "UPDATE ".$this->tableprefix."trajet SET `distance` = ? WHERE `id` = ?"; $this->execSQLNoData($sql, array($distance_final, $numtrajet)); } public function getOneTrajet_byThanatoMonthYear($id_thanato, $mois, $annee) { $sql = "SELECT " . $this->tableprefix . "trajet.id, " . $this->tableprefix . "trajet.distance, " . $this->tableprefix . "trajet.date, " . $this->tableprefix . "trajet.mois, " . $this->tableprefix . "trajet.annee FROM " . $this->tableprefix . "trajet WHERE " . $this->tableprefix . "trajet.annee = " . $annee . " AND " . $this->tableprefix . "trajet.mois = " . $mois . " AND " . $this->tableprefix . "trajet.id_thanato = " . $id_thanato . ";"; return $this->execSQL($sql, array()); } public function recuperer_adresse($latitude, $longitude) { $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://api.geoapify.com/v1/geocode/reverse?lat='.$latitude.'&lon='.$longitude.'&format=json&apiKey=8dadbe28a8894e9ebb7d0d1053b743f4', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', )); $response = curl_exec($curl); curl_close($curl); // Vérifiez s'il y a eu une erreur lors de la requête cURL if ($response === false) { return ''; } else { return (json_decode($response)->results)[0]->formatted; } } /** * Calcul la distance entre les deux points à vol d'oiseau */ public function calcul_distance($lat1, $lon1, $lat2, $lon2) { $R = 6371; // Rayon moyen de la Terre en kilomètres $dLat = deg2rad($lat2 - $lat1); $dLon = deg2rad($lon2 - $lon1); $a = sin($dLat/2) * sin($dLat/2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLon/2) * sin($dLon/2); $c = 2 * atan2(sqrt($a), sqrt(1-$a)); $d = $R * $c; return round($d, 2); } /** * Verification si la valeur d'un coordonnees est valide */ private function is_valid_gps($latitude, $longitude) { // Vérifie si les valeurs sont des nombres décimaux valides entre -90 et 90 pour la latitude et -180 et 180 pour la longitude if (is_numeric($latitude) && is_numeric($longitude) && $latitude >= -90 && $latitude <= 90 && $longitude >= -180 && $longitude <= 180) { return true; } else { return false; } } /** * DELETE */ public function gestion_delete($table, $id, $idNextcloud){ if(in_array($table, $this->whiteTable)){ if(strcmp($table, "ligne_trajet")==0) { $distance = 0; $ligne_trajet = json_decode($this->getOneTrajetdetails($id, $idNextcloud))[0]; $sql = "DELETE FROM ".$this->tableprefix.$table." WHERE `id` = ?"; $this->execSQLNoData($sql, array($id)); $this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud); $this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud); } else { $sql = "DELETE FROM ".$this->tableprefix.$table." WHERE `id` = ?"; $this->execSQLNoData($sql, array($id)); } return true; } return false; } /** * Check * TODO Translation */ public function checkConfig($idNextcloud){ $sql = "SELECT count(*) as res FROM `".$this->tableprefix."configuration` WHERE `id_nextcloud` = ?"; $res = json_decode($this->execSQL($sql, array($idNextcloud)))[0]->res; if ( $res < 1 ){ $sql = "INSERT INTO `".$this->tableprefix."configuration` (`entreprise`, `nom`, `prenom`, `legal_one`, `legal_two`, `mail`, `telephone`, `adresse`, `path`, `id_nextcloud`,`mentions_default`,`tva_default`,`devise`,`facture_prefixe`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, '', ?, ?, '0',?,?);"; $this->execSQLNoData($sql, array($this->l->t('Your company name'), $this->l->t('Your company contact last name'), $this->l->t('Your company contact first name'), $this->l->t('Company legal information line one'), $this->l->t('Company legal information line two'), $this->l->t('Your company email'), $this->l->t('Your company phone'), $this->l->t('Your company address'), $idNextcloud, $this->l->t('All Legal mentions, disclaimer or everything you want to place in the footer.'), $this->l->t('EUR'), $this->l->t('INVOICE') ) ); } return $res; } public function isConfig($idNextcloud){ $changelog = 9; //+1 if you want changelog appear for everybody one time ! $sql = "SELECT count(*) as res FROM `".$this->tableprefix."configuration` WHERE `id_nextcloud` = ?"; $res = json_decode($this->execSQL($sql, array($idNextcloud)))[0]->res; // Utilisateur jamais utilisé l'application if ( $res < 1 ){ return false; }else{ $sql = "SELECT id as id, changelog as res FROM `".$this->tableprefix."configuration` WHERE `id_nextcloud` = ?"; $res = json_decode($this->execSQL($sql, array($idNextcloud)))[0]->res; $id = json_decode($this->execSQL($sql, array($idNextcloud)))[0]->id; if($res < $changelog){ $this->gestion_update("configuration","changelog",$changelog,$id,$idNextcloud); return false; }else{ return true; } } } /** * Number client */ public function numberClient($idNextcloud){ // $sql = "SELECT count(*) as c from ".$this->tableprefix."client WHERE `id_nextcloud` = ?;"; $sql = "SELECT count(*) as c from ".$this->tableprefix."client;"; return $this->execSQL($sql, array()); // return $this->execSQL($sql, array($idNextcloud)); } /** * Number thanatopracteur */ public function numberThanato($idNextcloud){ // $sql = "SELECT count(*) as c from ".$this->tableprefix."thanato WHERE `id_nextcloud` = ?;"; $sql = "SELECT count(*) as c from ".$this->tableprefix."thanato;"; return $this->execSQL($sql, array()); // return $this->execSQL($sql, array($idNextcloud)); } /** * Number devis */ public function numberDevis($idNextcloud){ // $sql = "SELECT count(*) as c from ".$this->tableprefix."devis WHERE `id_nextcloud` = ? AND `mentions` NOT LIKE 'facturé';"; // $sql = "SELECT count(*) as c from ".$this->tableprefix."devis WHERE `mentions` NOT LIKE 'facturé';"; $sql = "SELECT count(*) as c from ".$this->tableprefix."devis;"; // $sql = "SELECT count(*) as c from ".$this->tableprefix."devis WHERE `id_nextcloud` = ?;"; // return $this->execSQL($sql, array($idNextcloud)); return $this->execSQL($sql, array()); } /** * Number facture */ public function numberFacture($idNextcloud){ // $sql = "SELECT count(*) as c from ".$this->tableprefix."facture WHERE `id_nextcloud` = ?;"; $sql = "SELECT count(*) as c from ".$this->tableprefix."facture;"; // return $this->execSQL($sql, array($idNextcloud)); return $this->execSQL($sql, array()); } /** * Number lieu */ public function numberLieu($idNextcloud){ $sql = "SELECT count(*) as c from ".$this->tableprefix."lieu;"; return $this->execSQL($sql, array()); } /** * Number trajet */ public function numberTrajet($idNextcloud){ $sql = "SELECT count(*) as c from ".$this->tableprefix."trajet;"; return $this->execSQL($sql, array()); } /** * Number produit */ public function numberProduit($idNextcloud){ // $sql = "SELECT count(*) as c from ".$this->tableprefix."produit WHERE `id_nextcloud` = ?;"; $sql = "SELECT count(*) as c from ".$this->tableprefix."produit;"; // return $this->execSQL($sql, array($idNextcloud)); return $this->execSQL($sql, array()); } /** * Number article */ public function numberArticle($idNextcloud){ $sql = "SELECT count(*) as c from ".$this->tableprefix."article;"; return $this->execSQL($sql, array()); } /** * Number défunt */ public function numberDefunt($idNextcloud){ $sql = "SELECT count(*) as c from ".$this->tableprefix."defunt;"; return $this->execSQL($sql, array()); } /** * Number bibliotheque */ public function numberBibliotheque($idNextcloud){ $sql = "SELECT count(*) as c from ".$this->tableprefix."bibliotheque;"; return $this->execSQL($sql, array()); } /** * Annual turnover per month without VAT */ public function getAnnualTurnoverPerMonthNoVat($idNextcloud){ $sql = "SELECT EXTRACT(YEAR FROM ".$this->tableprefix."facture.date_paiement) as y, EXTRACT(MONTH FROM ".$this->tableprefix."facture.date_paiement) as m, sum(".$this->tableprefix."produit.prix_unitaire * ".$this->tableprefix."produit_devis.quantite) as total FROM `".$this->tableprefix."facture`, `".$this->tableprefix."produit_devis`, `".$this->tableprefix."produit` WHERE ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."produit_devis.devis_id AND ".$this->tableprefix."produit_devis.produit_id = ".$this->tableprefix."produit.id GROUP BY EXTRACT(YEAR FROM ".$this->tableprefix."facture.date_paiement), EXTRACT(MONTH FROM ".$this->tableprefix."facture.date_paiement) ORDER BY EXTRACT(YEAR FROM ".$this->tableprefix."facture.date_paiement) DESC, EXTRACT(MONTH FROM ".$this->tableprefix."facture.date_paiement);"; return $this->execSQL($sql, array()); } public function getStatArticleAnnuel($idNextcloud, $annee) { $sql = "SELECT p.id, p.reference, COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 1 THEN pd.quantite ELSE 0 END), 0) AS janvier, COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 2 THEN pd.quantite ELSE 0 END), 0) AS fevrier, COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 3 THEN pd.quantite ELSE 0 END), 0) AS mars, COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 4 THEN pd.quantite ELSE 0 END), 0) AS avril, COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 5 THEN pd.quantite ELSE 0 END), 0) AS mai, COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 6 THEN pd.quantite ELSE 0 END), 0) AS juin, COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 7 THEN pd.quantite ELSE 0 END), 0) AS juillet, COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 8 THEN pd.quantite ELSE 0 END), 0) AS aout, COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 9 THEN pd.quantite ELSE 0 END), 0) AS septembre, COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 10 THEN pd.quantite ELSE 0 END), 0) AS octobre, COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 11 THEN pd.quantite ELSE 0 END), 0) AS novembre, COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 12 THEN pd.quantite ELSE 0 END), 0) AS decembre FROM ".$this->tableprefix."produit p LEFT JOIN ".$this->tableprefix."produit_devis pd ON p.id = pd.produit_id LEFT JOIN ".$this->tableprefix."devis d ON pd.devis_id = d.id LEFT JOIN ".$this->tableprefix."facture f ON f.id_devis = d.id WHERE YEAR(f.date_paiement) = ".$annee." AND pd.devis_id IS NOT NULL GROUP BY p.id, p.reference;"; return $this->execSQL($sql, array()); } public function getStatSoinsThanatoAnnuel($idNextcloud, $annee) { $sql = "SELECT thanato.nom AS nom_thanato, thanato.prenom AS prenom_thanato, COALESCE(SUM(CASE WHEN MONTH(d.date) = 1 THEN 1 ELSE 0 END), 0) AS janvier, COALESCE(SUM(CASE WHEN MONTH(d.date) = 2 THEN 1 ELSE 0 END), 0) AS fevrier, COALESCE(SUM(CASE WHEN MONTH(d.date) = 3 THEN 1 ELSE 0 END), 0) AS mars, COALESCE(SUM(CASE WHEN MONTH(d.date) = 4 THEN 1 ELSE 0 END), 0) AS avril, COALESCE(SUM(CASE WHEN MONTH(d.date) = 5 THEN 1 ELSE 0 END), 0) AS mai, COALESCE(SUM(CASE WHEN MONTH(d.date) = 6 THEN 1 ELSE 0 END), 0) AS juin, COALESCE(SUM(CASE WHEN MONTH(d.date) = 7 THEN 1 ELSE 0 END), 0) AS juillet, COALESCE(SUM(CASE WHEN MONTH(d.date) = 8 THEN 1 ELSE 0 END), 0) AS aout, COALESCE(SUM(CASE WHEN MONTH(d.date) = 9 THEN 1 ELSE 0 END), 0) AS septembre, COALESCE(SUM(CASE WHEN MONTH(d.date) = 10 THEN 1 ELSE 0 END), 0) AS octobre, COALESCE(SUM(CASE WHEN MONTH(d.date) = 11 THEN 1 ELSE 0 END), 0) AS novembre, COALESCE(SUM(CASE WHEN MONTH(d.date) = 12 THEN 1 ELSE 0 END), 0) AS decembre FROM ".$this->tableprefix."devis d LEFT JOIN ".$this->tableprefix."facture f ON f.id_devis = d.id LEFT JOIN ".$this->tableprefix."thanato thanato ON d.id_thanato = thanato.id WHERE YEAR(d.date) = ".$annee." AND d.id_thanato IS NOT NULL AND thanato.id IS NOT NULL GROUP BY nom_thanato, prenom_thanato ORDER BY nom_thanato;"; return $this->execSQL($sql, array()); } public function getStatSoinsThanatoWeekend($idNextcloud, $annee, $mois) { /** * stat nombre de soins samedis et dimanches * */ // $sql = "SELECT // thanato.nom AS nom_thanato, // thanato.prenom AS prenom_thanato, // SUM(CASE WHEN DAYOFWEEK(DISTINCT d.date) = 1 THEN 1 ELSE 0 END) AS sunday, // SUM(CASE WHEN DAYOFWEEK(DISTINCT d.date) = 7 THEN 1 ELSE 0 END) AS saturday, // SUM(CASE WHEN DAYOFWEEK(DISTINCT d.date) IN (1, 7) THEN 1 ELSE 0 END) AS total_devis // FROM ".$this->tableprefix."devis d // LEFT JOIN ".$this->tableprefix."facture f ON f.id_devis = d.id // LEFT JOIN ".$this->tableprefix."thanato thanato ON d.id_thanato = thanato.id // WHERE MONTH(d.date) = ".$mois." AND YEAR(d.date) = ".$annee." // GROUP BY nom_thanato, prenom_thanato;"; /** * stat nombre de jours travaillés les weekends d'un mois * */ $sql = "SELECT thanato.id, thanato.nom as nom_thanato, thanato.prenom AS prenom_thanato, COUNT(DISTINCT DATE_FORMAT(devis.date, '%Y-%m-%d')) AS weekends_travailles FROM ".$this->tableprefix."thanato as thanato JOIN ".$this->tableprefix."devis as devis ON thanato.id = devis.id_thanato WHERE MONTH(devis.date) = ".$mois." AND YEAR(devis.date) = ".$annee." AND DAYOFWEEK(devis.date) IN (1, 7) GROUP BY thanato.id, nom_thanato, prenom_thanato;"; return $this->execSQL($sql, array()); } /** * Get last insert id */ public function lastinsertid($table,$idNextcloud){ // $sql = "SELECT max(user_id) as LAST_INSERT_ID FROM `" . $this->tableprefix . $table . "` WHERE " . $this->tableprefix . $table .".id_nextcloud = ?;"; // $res = $this->execSQLNoJsonReturn($sql,array($idNextcloud)); $sql = "SELECT max(user_id) as LAST_INSERT_ID FROM `" . $this->tableprefix . $table. "`;"; $res = $this->execSQLNoJsonReturn($sql,array()); return $res[0]['LAST_INSERT_ID']; } public function lastNumFacture($idNextcloud) { $factures = json_decode($this->getFactures($idNextcloud)); $max = 5977; foreach ($factures as $key => $facture) { $numsplit = explode('/', $facture->num); $num = (int) $numsplit[2]; $max = ($max<=$num)?$num:$max; } return $max; } public function backup(){ $res = array(); $res[] = array("===client==="); $sql = "SELECT * FROM ".$this->tableprefix."client"; $res = array_merge($res, $this->execSQLNoJsonReturn($sql, array())); $res[] = array("===devis==="); $sql = "SELECT * FROM ".$this->tableprefix."devis"; $res = array_merge($res,$this->execSQLNoJsonReturn($sql, array())); $res[] = array("===facture==="); $sql = "SELECT * FROM ".$this->tableprefix."facture"; $res = array_merge($res,$this->execSQLNoJsonReturn($sql, array())); $res[] = array("===produit==="); $sql = "SELECT * FROM ".$this->tableprefix."produit"; $res = array_merge($res,$this->execSQLNoJsonReturn($sql, array())); $res[] = array("===produit_devis==="); $sql = "SELECT * FROM ".$this->tableprefix."produit_devis"; $res = array_merge($res,$this->execSQLNoJsonReturn($sql, array())); $res[] = array("===configuration==="); $sql = "SELECT * FROM ".$this->tableprefix."configuration"; $res = array_merge($res,$this->execSQLNoJsonReturn($sql, array())); return $res; } /** * @sql * @array() //prepare statement */ private function execSQL($sql, $conditions){ $stmt = $this->pdo->prepare($sql); $stmt->execute($conditions); $data = $stmt->fetchAll(\PDO::FETCH_ASSOC); $stmt->closeCursor(); return json_encode($data); } private function execSQLNoData($sql, $conditions){ $stmt = $this->pdo->prepare($sql); $stmt->execute($conditions); $stmt->closeCursor(); } private function execSQLNoJsonReturn($sql, $conditions){ $stmt = $this->pdo->prepare($sql); $stmt->execute($conditions); $data = $stmt->fetchAll(\PDO::FETCH_ASSOC); $stmt->closeCursor(); return $data; } public function getExportThanatoStatisticData(array $thanatoIds){ $devisList = $this->getDevisListByThanatoIds($thanatoIds); $devisListGroupedByDateAndThenByThanato = $this->getDevisListGroupedByDateAndThenByThanato($devisList); return $devisListGroupedByDateAndThenByThanato; } private function getDevisListGroupedByDateAndThenByThanato(array $devisList){ $devisListGroupedByDateAndThenByThanato = []; foreach($devisList as $devis){ $devisDate = $devis["date"]; $devisThanatoId = $devis["id_thanato"]; if (!isset($devisListGroupedByDateAndThenByThanato[$devisThanatoId])) { $devisListGroupedByDateAndThenByThanato[$devisThanatoId] = []; } if (!isset($devisListGroupedByDateAndThenByThanato[$devisThanatoId][$devisDate])) { $devisListGroupedByDateAndThenByThanato[$devisThanatoId][$devisDate] = [ 'total_distance' => 0, "devis" => [] ]; } $devisListGroupedByDateAndThenByThanato[$devisThanatoId][$devisDate]["devis"][] = $devis; } return $devisListGroupedByDateAndThenByThanato; } private function getLigneTrajetsListDistance(array $ligneTrajetList){ $distanceCumul = 0; $last_point = NULL; for ($i=0; $i < sizeof($ligneTrajetList); $i++) { $currentDistance = 0; if($ligneTrajetList[$i]['lieu_id'] != NULL){ $last_point = $ligneTrajetList[$i]; if($ligneTrajetList[$i]['lieu'] =="Antsahavola"){ var_dump($ligneTrajetList[$i]); } } if($last_point['lieu_id'] != NULL && $ligneTrajetList[$i+1]['lieu_id'] != NULL){ $currentDistance = $this->calcul_distance( floatval(value: $last_point['latitude']), floatval($last_point['longitude']), floatval($ligneTrajetList[$i+1]['latitude']), floatval($ligneTrajetList[$i+1]['longitude']) ); } $distanceCumul += $currentDistance; } return $distanceCumul; } private function getLigneTrajetsByDevisIdList(array $devisIdList){ if(empty($devisIdList)){ return []; } $sqlConditionsPlaceholder = implode(',', array_fill(0, count($devisIdList), '?')); $sql = "SELECT ligne_trajet.id, ligne_trajet.rang, ligne_trajet.id_nextcloud, ligne_trajet.date, ligne_trajet.user_id, ligne_trajet.commentaire, ligne_trajet.source, lieu.id as lieu_id, lieu.nom as lieu, lieu.latitude as latitude, lieu.longitude as longitude FROM (".$this->tableprefix."ligne_trajet as ligne_trajet LEFT JOIN ".$this->tableprefix."lieu as lieu on ligne_trajet.id_lieu = lieu.id) WHERE ligne_trajet.id_devis IN ($sqlConditionsPlaceholder) ORDER BY ligne_trajet.date ASC, ligne_trajet.rang ASC;"; return $this->execSQLNoJsonReturn($sql, $devisIdList); } private function getDevisListByThanatoIds(array $thanatoIds){ if(empty($thanatoIds)){ return []; } $currentYear = date('Y'); $currentMonth = date('m'); $sqlConditionsPlaceholder = implode(',', array_fill(0, count($thanatoIds), '?')); $sql = "SELECT devis.id, devis.date, devis.mentions, devis.id_defunt as id_defunt, devis.id_lieu as id_lieu, devis.id_client as id_client, devis.id_thanato as id_thanato, thanato.nom as nom_thanato, thanato.prenom as prenom_thanato, defunt.nom as nom_defunt, lieu.nom as nom_lieu, lieu.latitude as lieu_latitude, lieu.longitude as lieu_longitude, client.nom as nom_client, client.entreprise as client_entreprise FROM ".$this->tableprefix."devis as devis LEFT JOIN ".$this->tableprefix."thanato as thanato on devis.id_thanato = thanato.id LEFT JOIN ".$this->tableprefix."lieu as lieu on devis.id_lieu = lieu.id LEFT JOIN ".$this->tableprefix."defunt as defunt on devis.id_defunt = defunt.id LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id WHERE YEAR(devis.date) = ? AND MONTH(devis.date) = ? AND devis.id_thanato IN ($sqlConditionsPlaceholder) ORDER BY devis.date ASC;"; $devisList = $this->execSQLNoJsonReturn( $sql, array_merge([$currentYear, $currentMonth],$thanatoIds)); return $devisList; } }