ModeleExtraitRegistresController.php 5.31 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
<?php

/**
 * ModeleExtraitRegistreController
 *
 * web-DPO : Outil de gestion de vos traitements dans le cadre de la 
 * réglementation relative à la protection des données personnelles (RGPD)
 * 
 * Copyright (c) Libriciel SCOP (https://www.libriciel.fr/)
 *
 * Licensed under The CeCiLL V2 License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 * 
 * @copyright   Copyright (c) Libriciel SCOP (https://www.libriciel.fr/)
 * @link        https://www.libriciel.fr/web-cil/
 * @since       web-DPO v1.0.0
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html CeCiLL V2 License
 * @version     v1.0.0
 * @package     App.Controller
 */

App::uses('Folder', 'Utility');
App::uses('File', 'Utility');
App::uses('ListeDroit', 'Model');

class ModeleExtraitRegistresController extends AppController {

    public $uses = [
        'ModeleExtraitRegistre',
    ];

    /**
     * @access public
     * @created 26/12/2016
     * @version V1.0.0
     */
    public function add() {
39
        if (true !== $this->Droits->authorized([ListeDroit::GESTION_MODELE])) {
40 41 42 43 44 45 46
            throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
        }
        
        // Superadmin non autorisé
        if (true == ($this->Droits->authorized($this->Droits->isSu()))) {
            throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
        }
47 48

        $this->Modele->begin();
49 50 51
        $saveFile = $this->ModeleExtraitRegistre->saveFile($this->request->data, $this->Session->read('Organisation.id'));

        if ($saveFile == 0) {
52
            $this->Modele->commit();
53 54
            $this->Session->setFlash(__d('modele', 'modele.flashsuccessModeleEnregistrer'), 'flashsuccess');
        } elseif ($saveFile == 1) {
55
            $this->Modele->rollback();
56 57
            $this->Session->setFlash(__d('modele', 'modele.flasherrorFicherTropLourd'), 'flasherror');
        } elseif ($saveFile == 2) {
58
            $this->Modele->rollback();
59 60
            $this->Session->setFlash(__d('modele', 'modele.flasherrorExtensionNonValide'), 'flasherror');
        } elseif ($saveFile == 3) {
61
            $this->Modele->rollback();
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
            $this->Session->setFlash(__d('modele', 'modele.flashwarningAucunFichier'), 'flashwarning');
        }

        $this->redirect($this->Referers->get());
    }
    
    /**
     * Fonction pour téléchargé le modele de l'extrait de registre
     * 
     * @param type $file
     * @return type
     * 
     * @access public
     * @created 28/12/2016
     * @version V1.0.0
     */
    public function download($file, $nameFile) {
79 80 81 82
        if (true !== $this->Droits->authorized([ListeDroit::GESTION_MODELE])) {
            throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
        }

83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
        $this->response->file(CHEMIN_MODELES_EXTRAIT . $file, [
            'download' => true,
            'name' => $nameFile
        ]);
        
        return $this->response;
    }
    
    /**
     * Permet de supprimer en bdd de le model associer par qu'ontre on ne 
     * supprime dans aucun cas le fichier enregistré
     * 
     * @param type $file --> c'est le nom du model (en générale 15614325.odt)
     * qui est enregistré dans app/webroot/files/models
     */
    public function delete($file) {
99 100 101 102
        if (true !== $this->Droits->authorized([ListeDroit::GESTION_MODELE])) {
            throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
        }

103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
        $modeles = $this->ModeleExtraitRegistre->find('all', [
            'conditions' => [
                'fichier' => $file
            ]
        ]);
        
        if ($modeles) {
            $isDeleted = $this->ModeleExtraitRegistre->deleteAll([
                'fichier' => $file
            ]);

            if ($isDeleted) {
                $this->Session->setFlash(__d('modele', 'modele.flashsuccessModeleSupprimer'), 'flashsuccess');
            } else {
                $this->Session->setFlash(__d('modele', 'modele.flasherrorErreurSupprimerModele'), 'flasherror');
            }
        } else {
            $this->Session->setFlash(__d('modele', 'modele.flasherrorModeleInexistant'), 'flasherror');
        }

        $this->redirect($this->Referers->get());
    }
    
    public function index() {
127
        if (true !== $this->Droits->authorized([ListeDroit::GESTION_MODELE])) {
128 129
            throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
        }
130

131 132 133 134 135 136 137
        // Superadmin non autorisé
        if ($this->Droits->isSu() == true) {
            throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
        }
        
        $this->set('title', __d('modele', 'modele.titreModeleExtraitRegistre'));

138
        $modelesExtrait = $this->ModeleExtraitRegistre->find('first', [
139 140 141 142
            'conditions' => [
                'organisations_id' => $this->Session->read('Organisation.id')
            ]
        ]);
143 144 145 146 147 148 149 150 151
        
        foreach ($modelesExtrait as $modeleExtrait) {
            if (!file_exists(CHEMIN_MODELES_EXTRAIT.$modeleExtrait['fichier'])) {
                $this->ModeleExtraitRegistre->delete($modeleExtrait['id']);
                
                $modelesExtrait = [];
            }
        }
        
152 153 154 155
        $this->set(compact('modelesExtrait'));
    }

}