on defunt list : show only the defunts related to the thanato if the user connected is thanato only

This commit is contained in:
Tiavina 2025-01-01 20:38:06 +03:00
parent 801efcdc79
commit 06c74a049b
2 changed files with 87 additions and 11 deletions

View File

@ -2004,9 +2004,13 @@ class PageController extends Controller {
* @NoCSRFRequired
*/
public function getStats(){
$isThanato = in_array('Thanatos',$this->groups);
$isAdmin = in_array('admin',$this->groups);
$isUserThanatoOnly = $isThanato && !$isAdmin;
$res = array();
$res['client'] = json_decode($this->myDb->numberClient($this->idNextcloud))[0]->c;
$res['defunt'] = json_decode($this->myDb->numberDefunt($this->idNextcloud))[0]->c;
$res['defunt'] = $this->myDb->numberDefunt($this->idNextcloud,$isUserThanatoOnly);
$res['thanato'] = json_decode($this->myDb->numberThanato($this->idNextcloud))[0]->c;
$res['devis'] = json_decode($this->myDb->numberDevis($this->idNextcloud))[0]->c;
$res['lieu'] = json_decode($this->myDb->numberLieu($this->idNextcloud))[0]->c;
@ -2060,9 +2064,12 @@ class PageController extends Controller {
* @NoAdminRequired
* @NoCSRFRequired
*/
public function getDefunts() {
return $this->myDb->getDefunts($this->idNextcloud);
}
public function getDefunts() {
$isThanato = in_array('Thanatos',$this->groups);
$isAdmin = in_array('admin',$this->groups);
$isUserThanatoOnly = $isThanato && !$isAdmin;
return $this->myDb->getDefunts($this->idNextcloud,$isUserThanatoOnly);
}
/**
* @NoAdminRequired

View File

@ -404,7 +404,47 @@ class Bdd {
return $this->execSQL($sql, array());
}
public function getDefunts($idNextcloud) {
private function getThanatoByIdNextcloud($idNextcloud){
$sql = "SELECT *
FROM ".$this->tableprefix."thanato as thanato
WHERE LOWER(thanato.nom) = LOWER(?)
ORDER BY thanato.id ASC;";
$thanato = $this->execSQLNoJsonReturn($sql, array($idNextcloud));
if(!empty($thanato)){
return $thanato[0];
}
return null;
}
private function getDefuntIdsRelatedToThanato($thanatoId){
$devis = $this->getDevisMadeByAThanato($thanatoId);
$defuntIds = $this->getDefuntIdsFromDevisList($devis);
return $defuntIds;
}
private function getDefuntIdsFromDevisList($devisList){
$defuntIds = [];
foreach($devisList as $devis){
$defuntIds[] = $devis["id_defunt"];
}
return $defuntIds;
}
private function getDevisMadeByAThanato($thanatoId){
$sql = "SELECT
devis.id,
devis.id_thanato,
devis.id_defunt
FROM ".$this->tableprefix."devis as devis
WHERE devis.id_thanato = ? ;";
$devisList = $this->execSQLNoJsonReturn($sql, array($thanatoId));
return $devisList;
}
public function getDefunts($idNextcloud, $isUserThanatoOnly = false)
{
$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, "
@ -412,9 +452,23 @@ class Bdd {
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());
LEFT JOIN ".$this->tableprefix."lieu ON ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id";
$conditions = [];
if($isUserThanatoOnly){
$thanato = $this->getThanatoByIdNextcloud($idNextcloud);
if($thanato != null){
$thanatoId = $thanato["id"];
$defuntsIdRelatedToThanato = $this->getDefuntIdsRelatedToThanato($thanatoId);
if(!empty($defuntsIdRelatedToThanato)){
$defuntListConditionPlaceholder = implode(',', array_fill(0, count($defuntsIdRelatedToThanato), '?'));
$conditions = $defuntsIdRelatedToThanato;
$sql .= " WHERE ".$this->tableprefix."defunt.id IN ($defuntListConditionPlaceholder)";
}
}
}
$sql .= " ORDER BY ".$this->tableprefix."defunt.id DESC;";
return $this->execSQL($sql, $conditions);
}
public function getUnusedDefunts($idNextcloud) {
@ -1658,9 +1712,24 @@ class Bdd {
/**
* Number défunt
*/
public function numberDefunt($idNextcloud){
$sql = "SELECT count(*) as c from ".$this->tableprefix."defunt;";
return $this->execSQL($sql, array());
public function numberDefunt($idNextcloud, $isUserThanatoOnly = false){
$defuntCount = 0;
if($isUserThanatoOnly == false){
$sql = "SELECT count(*) as c from ".$this->tableprefix."defunt;";
$defuntCountBythanato = $this->execSQLNoJsonReturn($sql, array());
if(!empty($defuntCountBythanato)){
$defuntCount = $defuntCountBythanato[0]['c'];
}
}
else{
$thanato = $this->getThanatoByIdNextcloud($idNextcloud);
if($thanato != null){
$thanatoId = $thanato["id"];
$defuntsIdRelatedToThanato = $this->getDefuntIdsRelatedToThanato($thanatoId);
$defuntCount = count($defuntsIdRelatedToThanato);
}
}
return $defuntCount;
}
/**