Commit 54794d7b authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Les avis de soutenance deviennent des FichierThese afin de pouvoir être...

Les avis de soutenance deviennent des FichierThese afin de pouvoir être afficher sur la page des fichiers divers
parent f4a2141f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ Journal des modifications
- Affichage du nom complet d'un individu : choc de simplification en supprimant 2 options d'affichage dans le formatteur.
- Rapport activité : augmentation à 10 min du timeout CSRF dans le formulaire de création/modification.
- Possibilité de déclarer des missions d'enseignement
- Les avis de soutenance deviennent des FichierThese afin de pouvoir être afficher sur la page des fichiers divers

6.0.2
-----
+27 −1
Original line number Diff line number Diff line
@@ -116,4 +116,30 @@ where not exists (
         join PROFIL_PRIVILEGE pp on pp.PROFIL_ID = p2r.PROFIL_ID
  where rp.role_id = p2r.role_id and rp.privilege_id = pp.privilege_id
);

---------------------------------------------------------
-- Les avis deviennent des FichierThese                --
---------------------------------------------------------

-- ajout de la colonne qui recevra le FichierThese à la place du Fichier
alter table soutenance_avis add fichierthese_id integer;
alter table soutenance_avis add constraint soutenance_avis_fichier_these_id_fk foreign key (fichierthese_id) references fichier_these;

-- ajout de la sequence sur la colonne id de la table
--create sequence fichier_these_id_seq;
alter table fichier_these alter column id set default nextval('fichier_these_id_seq');
alter sequence fichier_these_id_seq owned by fichier_these.id;
alter sequence fichier_these_id_seq restart with 200000;

-- creation des FichierThese pour les Avis existant
insert into fichier_these (fichier_id, these_id, est_conforme, retraitement)
select sa.fichier_id, sp.these_id, false, false  from soutenance_avis sa
                                                        join soutenance_proposition sp on sa.proposition_id = sp.id;
-- ajout dans la table soutenance_avis
update soutenance_avis as sa set fichierthese_id = ft.id
from fichier_these ft
where ft.fichier_id = sa.fichier_id and sa.fichierthese_id is null;

-- drop colonne devenu inutile ( /!\ après avoir vérifier /!\ )
alter table soutenance_avis drop column fichier_id;
```
 No newline at end of file
+26 −3
Original line number Diff line number Diff line
@@ -3,9 +3,14 @@
namespace Soutenance\Controller;

use Application\Controller\AbstractController;
use Depot\Service\FichierThese\FichierTheseServiceAwareTrait;
use Fichier\Entity\Db\Fichier;
use Fichier\Entity\Db\NatureFichier;
use Fichier\Entity\Db\VersionFichier;
use Fichier\Service\Fichier\FichierServiceAwareTrait;
use Fichier\Service\Fichier\FichierStorageServiceAwareTrait;
use Fichier\Service\Storage\Adapter\Exception\StorageAdapterException;
use Soutenance\Entity\Justificatif;
use Soutenance\Service\Notification\SoutenanceNotificationFactoryAwareTrait;
use These\Service\Acteur\ActeurServiceAwareTrait;
use These\Service\These\TheseServiceAwareTrait;
@@ -35,6 +40,7 @@ class AvisController extends AbstractController

    use FichierStorageServiceAwareTrait;
    use FichierServiceAwareTrait;
    use FichierTheseServiceAwareTrait;

    use AvisFormAwareTrait;

@@ -71,13 +77,30 @@ class AvisController extends AbstractController

            $form->setData($data);
            if ($form->isValid()) {
                $fichier = $this->getAvisService()->createAvisFromUpload($files, $membre);
                $validation = $this->getValidationService()->signerAvisSoutenance($these, $membre->getIndividu());

//                $fichier = $this->getAvisService()->createAvisFromUpload($files, $membre);


                $fichiers = [];
                if (!empty($files)) {

                    $file = new Fichier();
                    $nature = $this->fichierTheseService->fetchNatureFichier(NatureFichier::CODE_PRE_RAPPORT_SOUTENANCE);
                    $file->setNature($nature);
                    $nfiles['files'][0] =  $files['files']['rapport'] ;


                    $version = $this->fichierTheseService->fetchVersionFichier(VersionFichier::CODE_ORIG);
                    $fichiers = $this->fichierTheseService->createFichierThesesFromUpload($these, $nfiles , $nature, $version);
                }
//                var_dump($fichiers);
//                die();

                $validation = $this->getValidationService()->signerAvisSoutenance($these, $membre->getIndividu());
                $avis = new Avis();
                $avis->setProposition($proposition);
                $avis->setMembre($membre);
                $avis->setFichier($fichier);
                $avis->setFichierThese($fichiers[0]);
                $avis->setValidation($validation);
                $avis->setAvis($data['avis']);
                $avis->setMotif($data['motif']);
+7 −1
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace Soutenance\Controller;

use Depot\Service\FichierThese\FichierTheseService;
use Fichier\Service\Fichier\FichierService;
use Fichier\Service\Fichier\FichierStorageService;
use Psr\Container\ContainerExceptionInterface;
@@ -45,8 +46,12 @@ class AvisControllerFactory
        $theseService               = $container->get('TheseService');
        $validationService          = $container->get(ValidationService::class);

        /** @var FichierService $fichierService */
        /**
         * @var FichierService $fichierService
         * @var FichierTheseService $fichierTheseService
         */
        $fichierService = $container->get(FichierService::class);
        $fichierTheseService = $container->get(FichierTheseService::class);

        /** @var FichierStorageService $fileService */
        $fileService = $container->get(FichierStorageService::class);
@@ -66,6 +71,7 @@ class AvisControllerFactory
        $controller->setMembreService($membreService);

        $controller->setFichierService($fichierService);
        $controller->setFichierTheseService($fichierTheseService);
        $controller->setFichierStorageService($fileService);

        $controller->setAvisForm($avisForm);
+55 −95
Original line number Diff line number Diff line
@@ -2,163 +2,123 @@

namespace Soutenance\Entity;

use These\Entity\Db\Acteur;
use Application\Entity\Db\Validation;
use Depot\Entity\Db\FichierThese;
use Fichier\Entity\Db\Fichier;
use These\Entity\Db\Acteur;
use These\Entity\Db\These;
use Application\Entity\Db\Validation;
use UnicaenApp\Entity\HistoriqueAwareInterface;
use UnicaenApp\Entity\HistoriqueAwareTrait;

class Avis implements HistoriqueAwareInterface {
class Avis implements HistoriqueAwareInterface
{
    use HistoriqueAwareTrait;

    const FAVORABLE = 'Favorable';
    const DEFAVORABLE = 'Défavorable';

    /** @var int */
    private $id;
    /** @var Proposition */
    private  $proposition;
    /** @var Membre */
    private $membre;
    /** @var string */
    private $avis;
    /** @var string */
    private $motif;
    /** @var Validation */
    private $validation;
    private ?int $id = null;
    private ?Proposition $proposition = null;
    private ?Membre $membre = null;
    private ?string $avis = null;
    private ?string $motif = null;
    private ?Validation $validation = null;
    private ?FichierThese $fichierThese = null;

    /** @var Fichier */
    private $fichier;

    /**
     * @return int
     */
    public function getId()

    public function getId(): ?int
    {
        return $this->id;
    }

    /**
     * @return These
     */
    public function getThese()
    public function getProposition(): ?Proposition
    {
        return $this->proposition->getThese();
        return $this->proposition;
    }

    /**
     * @return Acteur
     */
    public function getRapporteur()
    public function setProposition(?Proposition $proposition): void
    {
        return $this->getMembre()->getActeur();
        $this->proposition = $proposition;
    }

    public function getMembre(): ?Membre
    {
        return $this->membre;
    }

    /**
     * @return string
     */
    public function getAvis()
    public function setMembre(?Membre $membre): void
    {
        $this->membre = $membre;
    }

    public function getAvis(): ?string
    {
        return $this->avis;
    }

    /**
     * @param string $avis
     * @return Avis
     */
    public function setAvis($avis)
    public function setAvis(?string $avis): void
    {
        $this->avis = $avis;
        return $this;
    }

    /**
     * @return string
     */
    public function getMotif()
    public function getMotif(): ?string
    {
        return $this->motif;
    }

    /**
     * @param string $motif
     * @return Avis
     */
    public function setMotif($motif)
    public function setMotif(?string $motif): void
    {
        $this->motif = $motif;
        return $this;
    }

    /**
     * @return Validation
     */
    public function getValidation()
    public function getValidation(): ?Validation
    {
        return $this->validation;
    }

    /**
     * @param Validation $validation
     * @return Avis
     */
    public function setValidation($validation)
    public function setValidation(?Validation $validation): void
    {
        $this->validation = $validation;
        return $this;
    }

    /**
     * @return Fichier
     */
    public function getFichier()
    public function getFichierThese(): ?FichierThese
    {
        return $this->fichier;
        return $this->fichierThese;
    }

    /**
     * @param Fichier $fichier
     * @return Avis
     */
    public function setFichier($fichier)
    public function setFichierThese(?FichierThese $fichierThese): void
    {
        $this->fichier = $fichier;
        return $this;
        $this->fichierThese = $fichierThese;
    }

    /**
     * @return Proposition
     */
    public function getProposition()
    public function setFichier($fichier) : void //todo check that
    {
        return $this->proposition;
        $this->fichier = $fichier;
    }

    /**
     * @param Proposition $proposition
     * @return Avis
     */
    public function setProposition($proposition)

    /** Fonctions de qualité de vie ***********************************************************************************/

    public function getThese(): ?These
    {
        $this->proposition = $proposition;
        return $this;
        if (!isset($this->proposition)) return null;
        return $this->proposition->getThese();
    }

    /**
     * @return Membre
     */
    public function getMembre()
    public function getRapporteur(): ?Acteur
    {
        return $this->membre;
        if (!isset($this->membre)) return null;
        return $this->getMembre()->getActeur();
    }

    /**
     * @param Membre $membre
     * @return Avis
     */
    public function setMembre($membre)
    public function getFichier(): ?Fichier
    {
        $this->membre = $membre;
        return $this;
        if (!isset($this->fichierThese)) return null;
        return $this->fichierThese->getFichier();
    }


}
 No newline at end of file
Loading