diff --git a/CHANGELOG.md b/CHANGELOG.md index 639e927f7575708438ba76c1254f465de69b440c..0ef9be0e8c9923cf7b90ec3961b62a7e77b333d3 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,7 +22,11 @@ Objectif : Connecteur Export OSE => Logiciel RH * Au niveau du connecteur Actul+, les formations fermées étaient ignorées, elles sont également synchronisées +## Nouveautés +* Nouvelle vue V_IMPORT_DEPUIS_DOSSIERS pouvant servir pour peupler les données des intervenants à partir des données personnelles +* Possibilité pour un gestionnire de saisir des heures d'enseignement ou de référentiel qui n'auront pas besoin d'être validées par la suite (nouveau privilège d'autovalidation associé) +* Ajout d'une colonne dans l'export CSV des charges précisant si un élément est mutualisé ou non # OSE 16 (14/09/2021) diff --git a/data/ddl/view/V_CHARGENS_EXPORT_CSV.sql b/data/ddl/view/V_CHARGENS_EXPORT_CSV.sql index 1d6d20a316d33b1b07d55ae09e1499e5fa516909..2e11941fda9c6f3d5a444d72e9bcafdc808eb302 100644 --- a/data/ddl/view/V_CHARGENS_EXPORT_CSV.sql +++ b/data/ddl/view/V_CHARGENS_EXPORT_CSV.sql @@ -19,6 +19,10 @@ SELECT ep.code element_code, ep.libelle element_libelle, + CASE + WHEN COALESCE(ch.nbch,0) > 1 THEN 'Oui' + ELSE 'Non' + END element_mutualise, p.libelle_court periode, d.source_code discipline_code, d.libelle_court discipline_libelle, @@ -56,6 +60,12 @@ SELECT LEFT JOIN scenario_noeud_effectif sne ON sne.scenario_noeud_id = sn.id AND sne.type_heures_id = cph.type_heures_id AND sne.etape_id = n.etape_id + LEFT JOIN ( + SELECT element_pedagogique_id, count(*) nbch + FROM chemin_pedagogique + WHERE histo_destruction IS NULL + GROUP BY element_pedagogique_id + ) ch ON ch.element_pedagogique_id = ep.id ORDER BY structure_porteuse_code, etape_porteuse_code, diff --git a/data/privileges.php b/data/privileges.php index bfc956cbcf9786d00a026335b5ded2432f1493bd..937ba6c79c9471e6940557515b35f97da09b2cc2 100644 --- a/data/privileges.php +++ b/data/privileges.php @@ -125,6 +125,7 @@ return [ 'edition-masse' => 'Édition en masse', 'exterieur' => 'Saisie de service dans une autre autre université', 'validation' => 'Validation', + 'autovalidation' => 'Validation automatique', 'devalidation' => 'Dévalidation', 'export-pdf' => 'Export PDF', 'export-csv' => 'Export CSV', @@ -147,6 +148,7 @@ return [ 'visualisation' => 'Visualisation', 'edition' => 'Édition', 'validation' => 'Validation', + 'autovalidation' => 'Validation automatique', 'admin-edition' => 'Administration - Édition', 'devalidation' => 'Dévalidation', 'admin-visualisation' => 'Administration - Visualisation', diff --git a/module/Application/config/service.config.php b/module/Application/config/service.config.php index 0d4099f868a710417749223e0a6d01c769c46ad7..9be8e355141bbf3b7397023d374ae48f0f183ca1 100755 --- a/module/Application/config/service.config.php +++ b/module/Application/config/service.config.php @@ -394,8 +394,10 @@ return [ ], 'resource_providers' => [ \BjyAuthorize\Provider\Resource\Config::class => [ - 'Service' => [], - 'ServiceReferentiel' => [], + 'Service' => [], + 'ServiceReferentiel' => [], + 'VolumeHoraire' => [], + 'VolumeHoraireReferentiel' => [], ], ], 'rule_providers' => [ @@ -411,8 +413,11 @@ return [ 'assertion' => Assertion\ServiceAssertion::class, ], [ - 'privileges' => Privileges::ENSEIGNEMENT_VALIDATION, - 'resources' => 'Validation', + 'privileges' => [ + Privileges::ENSEIGNEMENT_VALIDATION, + Privileges::ENSEIGNEMENT_AUTOVALIDATION, + ], + 'resources' => ['Service', 'VolumeHoraire', 'Validation'], 'assertion' => Assertion\ServiceAssertion::class, ], [ @@ -446,8 +451,11 @@ return [ 'assertion' => Assertion\ServiceAssertion::class, ], [ - 'privileges' => Privileges::REFERENTIEL_VALIDATION, - 'resources' => 'Validation', + 'privileges' => [ + Privileges::REFERENTIEL_VALIDATION, + Privileges::REFERENTIEL_AUTOVALIDATION, + ], + 'resources' => ['ServiceReferentiel', 'VolumeHoraireReferentiel', 'Validation'], 'assertion' => Assertion\ServiceAssertion::class, ], [ diff --git a/module/Application/src/Application/Assertion/ServiceAssertion.php b/module/Application/src/Application/Assertion/ServiceAssertion.php index 2ff2a692a430a243dd8a798ba557b7fb88a49b0b..ae021a42c0c361d2dbf3968fde8daee72b429576 100755 --- a/module/Application/src/Application/Assertion/ServiceAssertion.php +++ b/module/Application/src/Application/Assertion/ServiceAssertion.php @@ -9,6 +9,8 @@ use Application\Entity\Db\ServiceReferentiel; use Application\Entity\Db\Structure; use Application\Entity\Db\TypeVolumeHoraire; use Application\Entity\Db\Validation; +use Application\Entity\Db\VolumeHoraire; +use Application\Entity\Db\VolumeHoraireReferentiel; use Application\Entity\Db\WfEtape; use Application\Provider\Privilege\Privileges; use Application\Service\Traits\CampagneSaisieServiceAwareTrait; @@ -105,6 +107,14 @@ class ServiceAssertion extends AbstractAssertion return $this->assertServiceEdition($role, $entity); case Privileges::ENSEIGNEMENT_EXTERIEUR: return $this->assertServiceExterieur($role, $entity); + case Privileges::ENSEIGNEMENT_VALIDATION: + return $this->assertServiceValidation($role, $entity); + } + break; + case $entity instanceof VolumeHoraire: + switch ($privilege) { + case Privileges::ENSEIGNEMENT_VALIDATION: + return $this->assertVolumeHoraireValidation($role, $entity); } break; case $entity instanceof ServiceReferentiel: @@ -113,6 +123,14 @@ class ServiceAssertion extends AbstractAssertion return $this->assertServiceReferentielVisualisation($role, $entity); case Privileges::REFERENTIEL_EDITION: return $this->assertServiceReferentielEdition($role, $entity); + case Privileges::REFERENTIEL_VALIDATION: + return $this->assertServiceReferentielValidation($role, $entity); + } + break; + case $entity instanceof VolumeHoraireReferentiel: + switch ($privilege) { + case Privileges::REFERENTIEL_VALIDATION: + return $this->assertVolumeHoraireReferentielValidation($role, $entity); } break; case $entity instanceof Intervenant: @@ -135,10 +153,10 @@ class ServiceAssertion extends AbstractAssertion switch ($privilege) { case Privileges::ENSEIGNEMENT_VALIDATION: case Privileges::REFERENTIEL_VALIDATION: - return $this->assertServiceValidation($role, $entity); + return $this->assertValidationValidation($role, $entity); case Privileges::ENSEIGNEMENT_DEVALIDATION: case Privileges::REFERENTIEL_DEVALIDATION: - return $this->assertServiceDevalidation($role, $entity); + return $this->assertValidationDevalidation($role, $entity); } break; } @@ -373,18 +391,59 @@ class ServiceAssertion extends AbstractAssertion - protected function assertServiceValidation(Role $role, Validation $validation) + protected function assertVolumeHoraireValidation(Role $role, VolumeHoraire $volumeHoraire) + { + $service = $volumeHoraire->getService(); + + return $this->assertServiceValidation($role, $service); + } + + + + protected function assertServiceValidation(Role $role, Service $service) + { + return $this->assertValidation($role, $service->getIntervenant(), $service->getStructure()); + } + + + + protected function assertVolumeHoraireReferentielValidation(Role $role, VolumeHoraireReferentiel $volumeHoraireReferentiel) + { + $serviceReferentiel = $volumeHoraireReferentiel->getServiceReferentiel(); + + return $this->assertServiceReferentielValidation($role, $serviceReferentiel); + } + + + + protected function assertServiceReferentielValidation(Role $role, ServiceReferentiel $serviceReferentiel) + { + return $this->assert($role, $serviceReferentiel->getIntervenant(), $serviceReferentiel->getStructure()); + } + + + + protected function assertValidationValidation(Role $role, Validation $validation) { return $this->asserts([ !$validation->getId(), - $this->assertIntervenant($role, $validation->getIntervenant()), - $this->assertStructure($role, $validation->getStructure()), + $this->assertValidation($role, $validation->getIntervenant(), $validation->getStructure()), + ]); + } + + + + protected function assertValidation(Role $role, Intervenant $intervenant, ?Structure $structure) + { + return $this->asserts([ + $this->assertIntervenant($role, $intervenant), + $this->assertStructure($role, $structure), ]); } - protected function assertServiceDevalidation(Role $role, Validation $validation) + protected function assertValidationDevalidation(Role $role, Validation $validation) { return $this->asserts([ $validation->getId(), @@ -440,7 +499,7 @@ class ServiceAssertion extends AbstractAssertion - protected function assertStructure(Role $role, Structure $structure = null) + protected function assertStructure(Role $role, ?Structure $structure = null) { if ($structure) { if ($ri = $role->getStructure()) { diff --git a/module/Application/src/Application/Entity/Db/VolumeHoraireReferentiel.php b/module/Application/src/Application/Entity/Db/VolumeHoraireReferentiel.php index 552e33d710618042c4938d74b0fb26e20ad5f398..0d8bac664b0d8ec912e5788e6423856c1c8ed313 100755 --- a/module/Application/src/Application/Entity/Db/VolumeHoraireReferentiel.php +++ b/module/Application/src/Application/Entity/Db/VolumeHoraireReferentiel.php @@ -6,11 +6,12 @@ use UnicaenApp\Entity\HistoriqueAwareInterface; use UnicaenApp\Entity\HistoriqueAwareTrait; use UnicaenImport\Entity\Db\Interfaces\ImportAwareInterface; use UnicaenImport\Entity\Db\Traits\ImportAwareTrait; +use Zend\Permissions\Acl\Resource\ResourceInterface; /** * VolumeHoraireReferentiel */ -class VolumeHoraireReferentiel implements HistoriqueAwareInterface, ImportAwareInterface +class VolumeHoraireReferentiel implements HistoriqueAwareInterface, ImportAwareInterface, ResourceInterface { use HistoriqueAwareTrait; use ImportAwareTrait; @@ -354,7 +355,6 @@ class VolumeHoraireReferentiel implements HistoriqueAwareInterface, ImportAwareI - /** * @return \DateTime */ @@ -400,4 +400,11 @@ class VolumeHoraireReferentiel implements HistoriqueAwareInterface, ImportAwareI return $this; } + + + + public function getResourceId() + { + return 'VolumeHoraireReferentiel'; + } } diff --git a/module/Application/src/Application/Form/VolumeHoraire/SaisieMultipleFieldset.php b/module/Application/src/Application/Form/VolumeHoraire/SaisieMultipleFieldset.php index a87b9d15f8dad9bce3495370bad0339b26147041..6d2d0251632f15fc8dad44b9e4d57bb09b2b2236 100755 --- a/module/Application/src/Application/Form/VolumeHoraire/SaisieMultipleFieldset.php +++ b/module/Application/src/Application/Form/VolumeHoraire/SaisieMultipleFieldset.php @@ -34,31 +34,33 @@ class SaisieMultipleFieldset extends AbstractFieldset implements EntityManagerAw { $qb = $this->getServiceTypeIntervention()->finderByContext(); $this->getServiceTypeIntervention()->finderByHistorique($qb); - return $this->getServiceTypeIntervention()->getList( $qb ); + + return $this->getServiceTypeIntervention()->getList($qb); } + + /** * */ public function init() { $hydrator = new SaisieMultipleHydrator; - $hydrator->setServiceTypeIntervention( $this->getServiceTypeIntervention() ); - $hydrator->setEntityManager( $this->getEntityManager() ); + $hydrator->setServiceTypeIntervention($this->getServiceTypeIntervention()); + $hydrator->setEntityManager($this->getEntityManager()); - $this ->setAttribute('method', 'post') - ->setAttribute('class', 'volume-horaire-multiple') - ->setHydrator($hydrator) - ->setAllowedObjectBindingClass(VolumeHoraireListe::class) - ; + $this->setAttribute('method', 'post') + ->setAttribute('class', 'volume-horaire-multiple') + ->setHydrator($hydrator) + ->setAllowedObjectBindingClass(VolumeHoraireListe::class); $tis = $this->getTypesInterventions(); - foreach( $tis as $typeIntervention ){ + foreach ($tis as $typeIntervention) { $this->add([ 'name' => $typeIntervention->getCode(), 'options' => [ - 'label' => '<abbr title="'.$typeIntervention->getLibelle().'">'.$typeIntervention->getCode().'</abbr> :', - 'label_options' => ['disable_html_escape' => true] + 'label' => '<abbr title="' . $typeIntervention->getLibelle() . '">' . $typeIntervention->getCode() . '</abbr> :', + 'label_options' => ['disable_html_escape' => true], ], 'attributes' => [ 'title' => $typeIntervention->getLibelle(), @@ -68,13 +70,14 @@ class SaisieMultipleFieldset extends AbstractFieldset implements EntityManagerAw ], 'type' => 'Text', ]); - } - $this->add( new Hidden('type-volume-horaire') ); - $this->add( new Hidden('service') ); - $this->add( new Hidden('periode') ); + $this->add(new Hidden('type-volume-horaire')); + $this->add(new Hidden('service')); + $this->add(new Hidden('periode')); } + + /** * Should return an array specification compatible with * {@link Zend\InputFilter\Factory::createInputFilter()}. @@ -84,14 +87,15 @@ class SaisieMultipleFieldset extends AbstractFieldset implements EntityManagerAw public function getInputFilterSpecification() { $filters = []; - foreach( $this->getTypesInterventions() as $typeIntervention ){ + foreach ($this->getTypesInterventions() as $typeIntervention) { $filters[$typeIntervention->getCode()] = [ 'required' => false, - 'filters' => [ + 'filters' => [ ['name' => FloatFromString::class], ], ]; } + return $filters; } @@ -112,7 +116,6 @@ class SaisieMultipleHydrator implements HydratorInterface use TypeInterventionServiceAwareTrait; - /** * * @return \Application\Service\TypeInterventionService[] @@ -124,6 +127,7 @@ class SaisieMultipleHydrator implements HydratorInterface } else { $qb = $this->getServiceTypeIntervention()->finderByHistorique(); $this->getServiceTypeIntervention()->finderByContext($qb); + return $this->getServiceTypeIntervention()->getList($qb); } } @@ -133,8 +137,8 @@ class SaisieMultipleHydrator implements HydratorInterface /** * Hydrate $object with the provided $data. * - * @param array $data - * @param \Application\Entity\VolumeHoraireListe $object + * @param array $data + * @param \Application\Entity\VolumeHoraireListe $object * * @return object */ @@ -153,7 +157,7 @@ class SaisieMultipleHydrator implements HydratorInterface } else { $heures = 0; } - $object->setHeures($heures, false); + $object->setHeures($heures); } return $object; @@ -164,7 +168,7 @@ class SaisieMultipleHydrator implements HydratorInterface /** * Extract values from an object * - * @param \Application\Entity\VolumeHoraireListe $object + * @param \Application\Entity\VolumeHoraireListe $object * * @return array */ @@ -176,7 +180,7 @@ class SaisieMultipleHydrator implements HydratorInterface 'service' => $object->getService() ? $object->getService()->getId() : null, 'periode' => $object->getPeriode() ? $object->getPeriode()->getId() : null, ]; - $tis = $this->getTypesInterventions($object->getService()); + $tis = $this->getTypesInterventions($object->getService()); foreach ($tis as $typeIntervention) { $vhl->setTypeIntervention($typeIntervention); $data[$typeIntervention->getCode()] = StringFromFloat::run($vhl->getHeures(), false); diff --git a/module/Application/src/Application/Provider/Chargens/ExportProvider.php b/module/Application/src/Application/Provider/Chargens/ExportProvider.php index 3af977136d3e1727ce4d6558c3e1cd21b8cb2f5c..13334835843c5853501c7323bd57bb6ef6f32acd 100644 --- a/module/Application/src/Application/Provider/Chargens/ExportProvider.php +++ b/module/Application/src/Application/Provider/Chargens/ExportProvider.php @@ -63,6 +63,7 @@ class ExportProvider 'element-code' => $d['ELEMENT_CODE'], 'element-libelle' => $d['ELEMENT_LIBELLE'], + 'element-mutualise' => $d['ELEMENT_MUTUALISE'], 'periode' => $d['PERIODE'], 'discipline-code' => $d['DISCIPLINE_CODE'], 'discipline-libelle' => $d['DISCIPLINE_LIBELLE'], @@ -120,21 +121,22 @@ class ExportProvider 'element-code' => $d[9], 'element-libelle' => $d[10], - 'periode' => $d[11], - 'discipline-code' => $d[12], - 'discipline-libelle' => $d[13], - 'type-heures' => $d[14], - 'type-intervention' => $d[15], - - 'seuil-ouverture' => (int)$d[16], - 'seuil-dedoublement' => (int)$d[17], - 'assiduite' => stringToFloat($d[18]), - 'effectif-etape' => (int)$d[19], - 'effectif-element' => (int)$d[20], - 'heures-ens' => stringToFloat($d[21]), - 'groupes' => stringToFloat($d[22]), - 'heures' => stringToFloat($d[23]), - 'hetd' => stringToFloat($d[24]), + 'element-mutualise' => $d[11], + 'periode' => $d[12], + 'discipline-code' => $d[13], + 'discipline-libelle' => $d[14], + 'type-heures' => $d[15], + 'type-intervention' => $d[16], + + 'seuil-ouverture' => (int)$d[17], + 'seuil-dedoublement' => (int)$d[18], + 'assiduite' => stringToFloat($d[19]), + 'effectif-etape' => (int)$d[20], + 'effectif-element' => (int)$d[21], + 'heures-ens' => stringToFloat($d[22]), + 'groupes' => stringToFloat($d[23]), + 'heures' => stringToFloat($d[24]), + 'hetd' => stringToFloat($d[25]), ]; $data[] = $l; } @@ -173,6 +175,7 @@ class ExportProvider 'element-code' => 'Ens. (code)', 'element-libelle' => 'Enseignement (libellé)', + 'element-mutualise' => 'Mutualisation', 'periode' => 'Période', 'discipline-code' => 'Discipline (code)', 'discipline-libelle' => 'Discipline (libellé)', diff --git a/module/Application/src/Application/Provider/Privilege/Privileges.php b/module/Application/src/Application/Provider/Privilege/Privileges.php index ff345781f9588c24437a3f16e6af5e4950c01aad..d03ff5aa92301898cbb45265e76efccaf7f4228d 100755 --- a/module/Application/src/Application/Provider/Privilege/Privileges.php +++ b/module/Application/src/Application/Provider/Privilege/Privileges.php @@ -102,6 +102,7 @@ class Privileges extends \UnicaenAuth\Provider\Privilege\Privileges const DOSSIER_VISUALISATION = 'dossier-visualisation'; const DROIT_AFFECTATION_EDITION = 'droit-affectation-edition'; const DROIT_AFFECTATION_VISUALISATION = 'droit-affectation-visualisation'; + const ENSEIGNEMENT_AUTOVALIDATION = 'enseignement-autovalidation'; const ENSEIGNEMENT_DEVALIDATION = 'enseignement-devalidation'; const ENSEIGNEMENT_EDITION = 'enseignement-edition'; const ENSEIGNEMENT_EDITION_MASSE = 'enseignement-edition-masse'; @@ -202,6 +203,7 @@ class Privileges extends \UnicaenAuth\Provider\Privilege\Privileges const PLAFONDS_GESTION_VISUALISATION = 'plafonds-gestion-visualisation'; const REFERENTIEL_ADMIN_EDITION = 'referentiel-admin-edition'; const REFERENTIEL_ADMIN_VISUALISATION = 'referentiel-admin-visualisation'; + const REFERENTIEL_AUTOVALIDATION = 'referentiel-autovalidation'; const REFERENTIEL_COMMUN_EMPLOYEUR_EDITION = 'referentiel-commun-employeur-edition'; const REFERENTIEL_COMMUN_EMPLOYEUR_VISUALISATION = 'referentiel-commun-employeur-visualisation'; const REFERENTIEL_COMMUN_VOIRIE_EDITION = 'referentiel-commun-voirie-edition'; diff --git a/module/Application/src/Application/Service/VolumeHoraireReferentielService.php b/module/Application/src/Application/Service/VolumeHoraireReferentielService.php index 63f0a1683d538243c10e1a59a0a1cdaf321d4980..41de70dcf7bd97688cc1c533e2737e90714fc81b 100755 --- a/module/Application/src/Application/Service/VolumeHoraireReferentielService.php +++ b/module/Application/src/Application/Service/VolumeHoraireReferentielService.php @@ -2,6 +2,8 @@ namespace Application\Service; +use Application\Entity\Db\VolumeHoraireReferentiel; +use Application\Provider\Privilege\Privileges; use Application\Service\Traits\EtatVolumeHoraireServiceAwareTrait; use Application\Service\Traits\SourceServiceAwareTrait; use Application\Service\Traits\TypeVolumeHoraireServiceAwareTrait; @@ -20,7 +22,6 @@ class VolumeHoraireReferentielService extends AbstractEntityService use SourceServiceAwareTrait; - /** * retourne la classe des entités * @@ -64,10 +65,10 @@ class VolumeHoraireReferentielService extends AbstractEntityService /** * Sauvegarde une entité * - * @param mixed $entity + * @param VolumeHoraireReferentiel $entity * - * @throws \RuntimeException * @return mixed + * @throws \RuntimeException */ public function save($entity) { @@ -77,8 +78,12 @@ class VolumeHoraireReferentielService extends AbstractEntityService if (!$entity->getSourceCode()) { $entity->setSourceCode(uniqid('ose-')); } + if (!$entity->getId()) { + $canAutoValidate = $this->getAuthorize()->isAllowed($entity, Privileges::REFERENTIEL_AUTOVALIDATION); + if ($canAutoValidate) $entity->setAutoValidation(true); + } - return parent::save($entity); // TODO: Change the autogenerated stub + return parent::save($entity); } @@ -93,7 +98,7 @@ class VolumeHoraireReferentielService extends AbstractEntityService */ public function finderByEtatVolumeHoraire(EtatVolumeHoraire $etatVolumeHoraire = null, QueryBuilder $qb = null, $alias = null) { - list($qb, $alias) = $this->initQuery($qb, $alias); + [$qb, $alias] = $this->initQuery($qb, $alias); if ($etatVolumeHoraire) { $sEtatVolumeHoraire = $this->getServiceEtatVolumeHoraire(); @@ -117,7 +122,7 @@ class VolumeHoraireReferentielService extends AbstractEntityService */ public function finderByStrictEtatVolumeHoraire(EtatVolumeHoraire $etatVolumeHoraire = null, QueryBuilder $qb = null, $alias = null) { - list($qb, $alias) = $this->initQuery($qb, $alias); + [$qb, $alias] = $this->initQuery($qb, $alias); if ($etatVolumeHoraire) { $sEtatVolumeHoraire = $this->getServiceEtatVolumeHoraire(); diff --git a/module/Application/src/Application/Service/VolumeHoraireService.php b/module/Application/src/Application/Service/VolumeHoraireService.php index c0a134183014c4e110efa90ab8562cb18bb0d687..f96825b9fff6b56a205f73c793bb9a5026852e40 100755 --- a/module/Application/src/Application/Service/VolumeHoraireService.php +++ b/module/Application/src/Application/Service/VolumeHoraireService.php @@ -3,6 +3,7 @@ namespace Application\Service; use Application\Entity\Db\Contrat; +use Application\Provider\Privilege\Privileges; use Application\Service\Traits\ElementPedagogiqueServiceAwareTrait; use Application\Service\Traits\EtatVolumeHoraireServiceAwareTrait; use Application\Service\Traits\ServiceServiceAwareTrait; @@ -27,7 +28,6 @@ class VolumeHoraireService extends AbstractEntityService use SourceServiceAwareTrait; - /** * retourne la classe des entités * @@ -97,8 +97,8 @@ class VolumeHoraireService extends AbstractEntityService * * @param mixed $entity * - * @throws \RuntimeException * @return mixed + * @throws \RuntimeException */ public function save($entity) { @@ -109,6 +109,11 @@ class VolumeHoraireService extends AbstractEntityService $entity->setSourceCode(uniqid('ose-')); } + if (!$entity->getId()) { + $canAutoValidate = $this->getAuthorize()->isAllowed($entity, Privileges::ENSEIGNEMENT_AUTOVALIDATION); + if ($canAutoValidate) $entity->setAutoValidation(true); + } + return parent::save($entity); // TODO: Change the autogenerated stub } @@ -124,7 +129,7 @@ class VolumeHoraireService extends AbstractEntityService */ public function finderByIntervenant(Intervenant $intervenant, QueryBuilder $qb = null, $alias = null) { - list($qb, $alias) = $this->initQuery($qb, $alias); + [$qb, $alias] = $this->initQuery($qb, $alias); $qb ->join("$alias.service", 'vhs2') @@ -147,7 +152,7 @@ class VolumeHoraireService extends AbstractEntityService */ public function finderByEtatVolumeHoraire(EtatVolumeHoraire $etatVolumeHoraire = null, QueryBuilder $qb = null, $alias = null) { - list($qb, $alias) = $this->initQuery($qb, $alias); + [$qb, $alias] = $this->initQuery($qb, $alias); if ($etatVolumeHoraire) { $sEtatVolumeHoraire = $this->getServiceEtatVolumeHoraire(); @@ -171,7 +176,7 @@ class VolumeHoraireService extends AbstractEntityService */ public function finderByStrictEtatVolumeHoraire(EtatVolumeHoraire $etatVolumeHoraire = null, QueryBuilder $qb = null, $alias = null) { - list($qb, $alias) = $this->initQuery($qb, $alias); + [$qb, $alias] = $this->initQuery($qb, $alias); if ($etatVolumeHoraire) { $sEtatVolumeHoraire = $this->getServiceEtatVolumeHoraire(); @@ -196,7 +201,7 @@ class VolumeHoraireService extends AbstractEntityService */ public function finderByContrat($contrat, QueryBuilder $qb = null, $alias = null) { - list($qb, $alias) = $this->initQuery($qb, $alias); + [$qb, $alias] = $this->initQuery($qb, $alias); if ($contrat instanceof \Application\Entity\Db\Contrat) { $qb->addSelect("c") @@ -221,7 +226,7 @@ class VolumeHoraireService extends AbstractEntityService */ public function orderBy(QueryBuilder $qb = null, $alias = null) { - list($qb, $alias) = $this->initQuery($qb, $alias); + [$qb, $alias] = $this->initQuery($qb, $alias); $qb->addOrderBy("$alias.horaireDebut"); $qb->addOrderBy("$alias.horaireFin");