diff --git a/gestion/appinfo/routes.php b/gestion/appinfo/routes.php index c964995..7bb056a 100644 --- a/gestion/appinfo/routes.php +++ b/gestion/appinfo/routes.php @@ -161,5 +161,7 @@ return [ //producttype ['name' => 'page#getProductTypes', 'url' => '/product/getProductTypes', 'verb' => 'PROPFIND'], + //producttype + ['name' => 'page#uploadFileToBijoux', 'url' => '/defunt/uploadFileToBijoux', 'verb' => 'POST'], ] ]; diff --git a/gestion/lib/Controller/PageController.php b/gestion/lib/Controller/PageController.php index 30ab8e6..f58f016 100644 --- a/gestion/lib/Controller/PageController.php +++ b/gestion/lib/Controller/PageController.php @@ -2229,25 +2229,23 @@ class PageController extends Controller { * @NoCSRFRequired * @param string $numdefunt */ - public function saveRapportBijoux($numdefunt){ - $current_config = json_decode($this->myDb->getConfiguration($this->idNextcloud)); + public function saveRapportBijoux($numdefunt,$withPhotos = false){ + if($withPhotos != null && $withPhotos == 1){ + $withPhotos = true; + } + else{ + $withPhotos = false; + } + $defaultConfig = json_decode($this->myDb->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN)); $defunt = json_decode($this->myDb->getOneDefunt($numdefunt, $this->idNextcloud))[0]; $bijoux = json_decode($this->myDb->getListBijoux($numdefunt, $this->idNextcloud)); try { $nomDefunt = $defunt->nom_defunt; - - $date_naissance_temp = date("t-m-Y", strtotime(date($defunt->date_naissance))); - $date_deces_temp = date("t-m-Y", strtotime(date($defunt->date_defunt))); $date_temp = date("t-m-Y", strtotime(date('Y-m-d'))); - $date_habilitation_temp = date("t-m-Y", strtotime(date($defunt->date_habilitation))); - $formatter = new IntlDateFormatter('fr_FR', IntlDateFormatter::LONG, IntlDateFormatter::NONE); $today = $formatter->format(DateTime::createFromFormat('d-m-Y', $date_temp)); - $date_habilitation = $formatter->format(DateTime::createFromFormat('d-m-Y', $date_habilitation_temp)); - $date_naissance = $formatter->format(DateTime::createFromFormat('d-m-Y', $date_naissance_temp)); - $date_deces = $formatter->format(DateTime::createFromFormat('d-m-Y', $date_deces_temp)); - $folderDestination = html_entity_decode($current_config[0]->path).'/CLIENTS/'.strtoupper($defunt->entreprise).'/DEFUNTS/'.strtoupper($nomDefunt).'/RAPPORTS/'; + $folderDestination = html_entity_decode($defaultConfig[0]->path).'/CLIENTS/'.strtoupper($defunt->entreprise).'/DEFUNTS/'.strtoupper($nomDefunt).'/RAPPORTS/'; try { $this->storage->newFolder($folderDestination); @@ -2265,13 +2263,13 @@ class PageController extends Controller { // logo : 80 de largeur et 55 de hauteur $logo = $this->getLogo(); if($logo != 'nothing'){ - $pdf->Image($this->defaultImagePath."logo.png", 10, 10, 55, 30); + $pdf->Image($this->defaultImagePath."logo.png", 10, 10, 75, 25); } - $pdf->SetY(55); $pdf->SetFont('ComicSans', 'B', 15); $pdf->Cell(0, 10, utf8_decode(html_entity_decode("ATTESTATION BIJOU(X)")), 0, 0, 'C'); + $pdf->SetY(45); $pdf->SetFont('ComicSans', 'B', 15); $pdf->Cell(0, 10, utf8_decode(html_entity_decode("ATTESTATION BIJOU(X)")), 0, 0, 'C'); $pdf->SetMargins(15,15,15); - $pdf->SetY(80); $pdf->SetFont('ComicSans', '', 10); + $pdf->SetY(65); $pdf->SetFont('ComicSans', '', 10); $pdf->MultiCell(0, 5, utf8_decode(html_entity_decode("Je soussignée ".$defunt->prenom_thanato." ".strtoupper($defunt->nom_thanato).", Thanatopracteur, agissant pour le compte de la société ".strtoupper($current_config[0]->entreprise)." titulaire de l'habilitation n° ".$defunt->reference_habilitation." atteste par la présente que : ".(strcmp($defunt->sexe, 'm')==0 ? 'Monsieur' : 'Madame').". ".$defunt->nom_defunt." a été pris(e) en charge par nos services pour des soins mortuaires.")), '','J',0); @@ -2287,6 +2285,38 @@ class PageController extends Controller { $pdf->SetFont('ComicSans', '', 10); $pdf->MultiCell($col_width, 8, utf8_decode(html_entity_decode($bijou->designation)), 'LTRB', 'L'); $pdf->SetXY($col_width+15, $pdf->GetY()-8); $pdf->SetFont('ComicSans', '', 10); $pdf->MultiCell($col_width, 8, utf8_decode(html_entity_decode($bijou->commentaire)), 'LTRB', 'L'); } + $photosCount = 0; + if($withPhotos){ + $photosCountLimitToGoToNewLine = 3; + $currentUserFolder = "/var/www/html/data/$this->idNextcloud/files/"; + $clientName = $defunt->nom; + if($clientName != null){ + $bijouxPhotosFolder = FileExportHelpers::GetBijouxOfDefuntFolder($clientName,$defunt->nom_defunt,$defaultConfig[0]->path); + $pdf->setXY($pdf->GetX(),$pdf->GetY()+5); + $pdf->Cell(0,5,"Photos :",0,1); + $pdf->setXY($pdf->GetX(),$pdf->GetY()+5); + foreach ($bijoux as $key => $bijou) { + if($bijou->photo == null){ + continue; + } + try{ + $fullPhotoPath = $currentUserFolder.$bijouxPhotosFolder.$bijou->photo; + $pdf->Image($fullPhotoPath,$pdf->GetX(),$pdf->GetY(),50,30); + $pdf->SetXY($pdf->GetX() + 60,$pdf->GetY()); + $photosCount++; + if($photosCount == $photosCountLimitToGoToNewLine){ + $pdf->SetY($pdf->GetY() + 35); + } + } + catch(Exception){ + + } + } + } + if($photosCount > 0){ + $pdf->SetY($pdf->GetY()+30); + } + } $pdf->setY($pdf->GetY()+10); @@ -2297,21 +2327,20 @@ class PageController extends Controller { // signature $pdf->SetFont('ComicSans','',11); - $pdf->setY($pdf->GetY()+10); - $pdf->Cell( $pdf->GetPageWidth()-30, 0, utf8_decode(html_entity_decode($current_config[0]->nom).' '.html_entity_decode($current_config[0]->prenom)), 0, 0, 'L'); + $pdf->Cell( $pdf->GetPageWidth()-30, 0, utf8_decode(html_entity_decode($defaultConfig[0]->nom).' '.html_entity_decode($defaultConfig[0]->prenom)), 0, 0, 'L'); $pdf->setY($pdf->GetY()+5); $signatureExist = $this->signatureImageExists('sign.png'); if ($signatureExist) { - $pdf->Image($this->defaultImagePath."sign.png", 15, $pdf->GetY(), 55, 30); + $pdf->Image($this->defaultImagePath."sign.png", 5, $pdf->GetY(), 60, 40); } $pdf->setY($pdf->GetY()-5); $pdf->SetFont('ComicSans','',11); $pdf->Cell( $pdf->GetPageWidth()-80, 0, "Pour :", 0, 0, 'R'); - $pdf->SetY(-30); $pdf->SetFont('ComicSans', '', 8); $pdf->MultiCell($pdf->GetPageWidth()-30, 5, utf8_decode(html_entity_decode(iconv("UTF-8", "ISO-8859-1//TRANSLIT", $current_config[0]->legal_one))), '', 'C'); - $pdf->SetFont('ComicSans', '', 8); $pdf->MultiCell($pdf->GetPageWidth()-30, 5, utf8_decode(html_entity_decode(iconv("UTF-8", "ISO-8859-1//TRANSLIT", $current_config[0]->legal_two))), '', 'C'); - $pdf->SetFont('ComicSans', '', 8); $pdf->MultiCell($pdf->GetPageWidth()-30, 5, utf8_decode(html_entity_decode(iconv("UTF-8", "ISO-8859-1//TRANSLIT", $current_config[0]->telephone))), '', 'C'); + $pdf->SetY(-15); $pdf->SetFont('ComicSans', '', 8); + $pdf->MultiCell(0, 5, utf8_decode(html_entity_decode($defaultConfig[0]->legal_one)), 0, 'C'); + $pdf->MultiCell(0, 5, utf8_decode(html_entity_decode($defaultConfig[0]->adresse)), 0,'C'); $ff_pdf = $folderDestination.'RAPPORT_BIJOUX_'.strtoupper($nomDefunt).'.pdf'; $this->storage->newFile($ff_pdf); @@ -2719,4 +2748,44 @@ class PageController extends Controller { } catch(\OCP\Files\NotFoundException $e) { } } + + /** + * @NoAdminRequired + * @NoCSRFRequired + * + */ + + public function uploadFileToBijoux($bijouxId){ + try{ + $configs = json_decode($this->myDb->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN)); + $currentConfig = $configs[0]; + $bijoux = $this->myDb->getBijouxWithDefuntByBijouxId($bijouxId); + if($bijoux == null){ + return false; + } + if($bijoux["defunt_id"] == null){ + return false; + } + $defuntId = $bijoux["defunt_id"]; + $devisOfDefunt = $this->myDb->getDevisOfDefunt($defuntId); + if($devisOfDefunt == null){ + return false; + } + $folder = FileExportHelpers::GetBijouxOfDefuntFolder($devisOfDefunt["client_nom"],$bijoux["defunt_nom"],$currentConfig->path); + try { + $this->storage->newFolder($folder); + } + catch(\OCP\Files\NotPermittedException $e) { + } + $photoName = basename($_FILES["photo"]["name"]); + $filename = uniqid() . "_" .$photoName; + $fullPath = $folder.$filename; + $fileContent = file_get_contents($_FILES["photo"]["tmp_name"]); + $this->storage->newFile($fullPath,$fileContent); + $this->myDb->saveBijouxPhoto($bijouxId,$filename,$photoName); + return true; + } + catch(\OCP\Files\NotFoundException $e) { } + + } } diff --git a/gestion/lib/Db/Bdd.php b/gestion/lib/Db/Bdd.php index 70529f9..76835bd 100644 --- a/gestion/lib/Db/Bdd.php +++ b/gestion/lib/Db/Bdd.php @@ -783,7 +783,7 @@ class Bdd { } public function getListBijoux($numdefunt, $idNextcloud) { - $sql = "SELECT ".$this->tableprefix."bijou_defunt.id as bdid, designation, commentaire FROM " + $sql = "SELECT ".$this->tableprefix."bijou_defunt.id as bdid, designation, commentaire,photo,photo_name 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)); @@ -3707,4 +3707,34 @@ class Bdd { WHERE devis.id = ?;"; $this->execSQLNoData($sql,[$mention,$devisId]); } + + public function getBijouxWithDefuntByBijouxId($bijouxId){ + $sql = "SELECT + bijou.id, + bijou.defunt_id, + bijou.designation, + bijou.commentaire, + bijou.photo, + defunt.nom as defunt_nom + FROM ".$this->tableprefix."bijou_defunt as bijou + LEFT JOIN ".$this->tableprefix."defunt as defunt on bijou.defunt_id = defunt.id + WHERE bijou.id = ? ;"; + + $bijoux = $this->execSQLNoJsonReturn($sql,[$bijouxId,]); + if(!empty($bijoux)){ + return $bijoux[0]; + } + return null; + } + + public function saveBijouxPhoto($bijouxId,$photo,$photoRealName){ + $sql = "UPDATE ".$this->tableprefix."bijou_defunt as bijou_defunt + SET bijou_defunt.photo = ?,bijou_defunt.photo_name = ? + WHERE bijou_defunt.id = ? ;"; + $this->execSQLNoData( + $sql, + [$photo,$photoRealName,$bijouxId]); + + return true; + } } diff --git a/gestion/lib/Helpers/FileExportHelpers.php b/gestion/lib/Helpers/FileExportHelpers.php index c614af1..aa1f2a6 100644 --- a/gestion/lib/Helpers/FileExportHelpers.php +++ b/gestion/lib/Helpers/FileExportHelpers.php @@ -48,4 +48,18 @@ class FileExportHelpers return strtr( $str, $unwanted_array ); } + public static function GetClientsFolder($clientName,$racinePath){ + return $racinePath.'CLIENTS/'.mb_strtoupper($clientName,'UTF-8').'/'; + } + + public static function GetDefuntsFolder($clientName,$defuntName,$racinePath){ + $clientsFolder = self::GetClientsFolder($clientName,$racinePath); + return $clientsFolder.'DEFUNTS/'.mb_strtoupper($defuntName,'UTF-8').'/'; + } + + public static function GetBijouxOfDefuntFolder($clientName,$defuntName,$racinePath){ + $defuntFolder = self::GetDefuntsFolder($clientName,$defuntName,$racinePath); + return $defuntFolder.'BIJOUX/'; + } + } diff --git a/gestion/lib/Sql/20250129-ADD_PHOTO_ON_BIJOU_DEFUNT.SQL b/gestion/lib/Sql/20250129-ADD_PHOTO_ON_BIJOU_DEFUNT.SQL new file mode 100644 index 0000000..f10eca9 --- /dev/null +++ b/gestion/lib/Sql/20250129-ADD_PHOTO_ON_BIJOU_DEFUNT.SQL @@ -0,0 +1,2 @@ +alter table oc_gestion_bijou_defunt add photo VARCHAR(255) DEFAULT NULL; +alter table oc_gestion_bijou_defunt add photo_name VARCHAR(255) DEFAULT NULL; \ No newline at end of file