2024-12-16 17:24:37 +03:00

1493 lines
90 KiB
PHP

<?php
namespace OCA\Gestion\Db;
use OCP\IDBConnection;
use OCP\IL10N;
use \Datetime;
class Bdd {
private String $charset = 'utf8mb4';
private IDbConnection $pdo;
private array $whiteColumn;
private array $whiteTable;
private String $tableprefix;
private $l;
public function __construct(IDbConnection $db, IL10N $l) {
$this->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;
}
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 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 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;
}
/**
* 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;
}
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);
}
}
}
/**
* 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&eacute;';";
// $sql = "SELECT count(*) as c from ".$this->tableprefix."devis WHERE `mentions` NOT LIKE 'factur&eacute;';";
$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;
}
}