diff --git a/front/Mission/ListeCandidatures.vue b/front/Mission/ListeCandidatures.vue index 49f2575cc31df559e0308d3888f3cb2efc9d0875..29963d6e90ed8edc20b81edb3ad65f15bcca759c 100644 --- a/front/Mission/ListeCandidatures.vue +++ b/front/Mission/ListeCandidatures.vue @@ -29,14 +29,20 @@ class="btn btn-success" data-content="Êtes vous sûr de vouloir accepter cette candidature ?" data-title="Accepter la candidature" + style="color:white;" title="Accepter la candidature" - @click.prevent="validerCandidature">Accepter </a> + @click.prevent="validerCandidature"> + <i class="fa-solid fa-check"></i> + </a> <a :href="urlRefuserCandidature(candidature)" class="btn btn-danger" data-content="Êtes vous sûr de vouloir refuser cette candidature ?" data-title="Refuser la candidature" + style="color:white;" title="Refuser la candidature" - @click.prevent="refuserCandidature">Refuser </a> + @click.prevent="refuserCandidature"> + <i class="fa-sharp fa-solid fa-xmark"></i> + </a> </td> </tr> diff --git a/front/Mission/OffreEmploi.vue b/front/Mission/OffreEmploi.vue index 17a0b1205a5457ec3ffa5e660ebf378b6d87151e..e88d686ccd2bf558a2e4be68326d84089783de7b 100644 --- a/front/Mission/OffreEmploi.vue +++ b/front/Mission/OffreEmploi.vue @@ -117,19 +117,14 @@ <span v-if="!candidature.validation && candidature.motif === null" class="badge rounded-pill bg-warning">En attente d'acceptation</span> </td> <td v-if="this.canValiderCandidature"> - <a v-if="!candidature.validation" :href="urlAccepterCandidature(candidature)" - class="btn btn-success" - data-content="Êtes vous sûr de vouloir accepter cette candidature ?" - data-title="Accepter la candidature" - title="Accepter la candidature" - @click.prevent="validerCandidature">Accepter </a> - <a v-if="!candidature.motif && candidature.validation" - :href="urlRefuserCandidature(candidature)" - class="btn btn-danger" - data-content="Êtes vous sûr de vouloir refuser cette candidature ?" - data-title="Refuser la candidature" - title="Refuser la candidature" - @click.prevent="refuserCandidature">Refuser </a> + <a :href="urlVoirCandidature(candidature)" + class="btn btn-primary" + title="Consulter " + > + <u-icon name="eye"/> + Voir + </a> + </td> </tr> </tbody> @@ -249,6 +244,9 @@ export default { urlVoir: function (candidature) { return unicaenVue.url('intervenant/:code/voir', {code: 'code:'+candidature.intervenant.code}) }, + urlVoirCandidature: function (candidature) { + return unicaenVue.url('intervenant/:code/candidature', {code: 'code:'+candidature.intervenant.code}) + }, urlAccepterCandidature: function (candidature) { return unicaenVue.url('offre-emploi/accepter-candidature/:id', {id: candidature.id}) }, diff --git a/module/Application/config/intervenant.config.php b/module/Application/config/intervenant.config.php index 744fefba8c150a10665b680c2336f96b44fdb10a..ec3dbeca415f540d4a017832f2c0cb2799b0a461 100755 --- a/module/Application/config/intervenant.config.php +++ b/module/Application/config/intervenant.config.php @@ -9,6 +9,7 @@ use Application\Provider\Privilege\Privileges; use Contrat\Controller\ContratController; use Dossier\Assertion\IntervenantDossierAssertion; use Dossier\Controller\IntervenantDossierController; +use Mission\Assertion\OffreEmploiAssertion; use Paiement\Controller\PaiementController; use UnicaenPrivilege\Guard\PrivilegeController; use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProvider; @@ -351,7 +352,7 @@ return [ 'controller' => 'Application\Controller\Intervenant', 'action' => ['candidature', 'get-candidatures'], 'privileges' => [Privileges::MISSION_CANDIDATURE_VISUALISATION], - 'assertion' => IntervenantAssertion::class, + 'assertion' => OffreEmploiAssertion::class, ], [ 'controller' => 'Application\Controller\Intervenant', @@ -407,6 +408,13 @@ return [ 'resources' => ['Intervenant'], 'assertion' => Assertion\IntervenantAssertion::class, ], + [ + 'privileges' => [ + Privileges::MISSION_CANDIDATURE_VALIDER, + ], + 'resources' => ['Intervenant'], + 'assertion' => OffreEmploiAssertion::class, + ], ], ], ], diff --git a/module/Application/src/Controller/IntervenantController.php b/module/Application/src/Controller/IntervenantController.php index 7ad2091cd7825a174a43e8019893a6b1bed0ccf4..71116c28399ac62cdc5c793a911b9e2daada17f9 100755 --- a/module/Application/src/Controller/IntervenantController.php +++ b/module/Application/src/Controller/IntervenantController.php @@ -65,7 +65,7 @@ class IntervenantController extends AbstractController use CandidatureServiceAwareTrait; - public function indexAction() + public function indexAction () { $role = $this->getServiceContext()->getSelectedIdentityRole(); @@ -86,7 +86,7 @@ class IntervenantController extends AbstractController - public function rechercherAction() + public function rechercherAction () { $recents = $this->getIntervenantsRecents(); @@ -95,7 +95,37 @@ class IntervenantController extends AbstractController - public function rechercheJsonAction() + /** + * + * @return array + */ + protected function getIntervenantsRecents () + { + $container = $this->getSessionContainer(); + //$container->recents = []; + if (isset($container->recents)) { + $recents = $container->recents; + foreach ($recents as $i => $recent) { + if (isset($recent['code'])) { + $intervenant = $this->getServiceIntervenant()->getByCode($recent['code']); + } else { + $intervenant = null; + } + if (!$intervenant) { + unset($recents[$i]); + unset($container->recents[$i]); + } + } + + return $recents; + } else { + return []; + } + } + + + + public function rechercheJsonAction () { $recherche = $this->getProcessusIntervenant()->recherche(); $canShowHistorises = $this->isAllowed(Privileges::getResourceId(Privileges::INTERVENANT_VISUALISATION_HISTORISES)); @@ -112,7 +142,7 @@ class IntervenantController extends AbstractController - public function voirAction() + public function voirAction () { $intervenant = $this->getEvent()->getParam('intervenant'); $tab = $this->params()->fromQuery('tab'); @@ -137,21 +167,83 @@ class IntervenantController extends AbstractController - public function candidatureAction() + /** + * + * @param \Application\Entity\Db\Intervenant $intervenant + * + * @return \Application\Controller\IntervenantController + */ + protected function addIntervenantRecent (Intervenant $intervenant) { - $intervenant = $this->getEvent()->getParam('intervenant'); + $container = $this->getSessionContainer(); + if (!isset($container->recents)) { + $container->recents = []; + } + + if (count($container->recents) > 4 && !isset($container->recents[$intervenant->getCode()])) { + $prem = (int)date('U'); + foreach ($container->recents as $i) { + $horo = $i['__horo_ajout__']; + if ($horo) { + if ($prem >= $horo) $prem = $horo; + } + } + foreach ($container->recents as $index => $i) { + $horo = $i['__horo_ajout__']; + if ($horo == $prem) { + unset($container->recents[$index]); + } + } + } + + if (!isset($container->recents[$intervenant->getCode()])) { + $container->recents[$intervenant->getCode()] = [ + 'civilite' => $intervenant->getCivilite() ? $intervenant->getCivilite()->getLibelleLong() : null, + 'nom' => $intervenant->getNomUsuel(), + 'prenom' => $intervenant->getPrenom(), + 'date-naissance' => $intervenant->getDateNaissance(), + 'structure' => (string)$intervenant->getStructure(), + 'statut' => (string)$intervenant->getStatut(), + 'code' => $intervenant->getCode(), + 'numero-personnel' => $intervenant->getCodeRh(), + '__horo_ajout__' => (int)date('U'), + ]; + } else { + if (!isset($container->recents[$intervenant->getCode()]['statut'])) { + $container->recents[$intervenant->getCode()]['statut'] = [$container->recents[$intervenant->getCode()]['statut']]; + } + if (is_array($container->recents[$intervenant->getCode()]['statut'])) { + $container->recents[$intervenant->getCode()]['statut'][] = (string)$intervenant->getStatut(); + } else { + $container->recents[$intervenant->getCode()]['statut'] = (string)$intervenant->getStatut(); + } + } + + uasort($container->recents, function ($a, $b) { + return $a['nom'] . ' ' . $a['prenom'] > $b['nom'] . ' ' . $b['prenom'] ? 1 : 0; + }); + + return $this; + } + + + + public function candidatureAction () + { + $intervenant = $this->getEvent()->getParam('intervenant'); + $canValiderCandidature = $this->isAllowed($intervenant, Privileges::MISSION_CANDIDATURE_VALIDER); if (!$intervenant) { throw new \LogicException('Intervenant introuvable'); } - return compact('intervenant'); + return compact('intervenant', 'canValiderCandidature'); } - public function getCandidaturesAction() + public function getCandidaturesAction () { $intervenant = $this->getEvent()->getParam('intervenant'); if (!$intervenant) { @@ -168,7 +260,7 @@ class IntervenantController extends AbstractController - public function definirParDefautAction() + public function definirParDefautAction () { $intervenant = $this->getEvent()->getParam('intervenant'); @@ -181,17 +273,17 @@ class IntervenantController extends AbstractController - public function ficheAction() + public function ficheAction () { $role = $this->getServiceContext()->getSelectedIdentityRole(); - $intervenant = $role->getIntervenant() ?: $this->getEvent()->getParam('intervenant'); + $intervenant = $role->getIntervenant() ? : $this->getEvent()->getParam('intervenant'); return compact('intervenant', 'role'); } - public function saisirAction() + public function saisirAction () { $intervenant = $this->getEvent()->getParam('intervenant'); $title = "Saisie d'un intervenant"; @@ -241,7 +333,7 @@ class IntervenantController extends AbstractController $login = $form->get('intervenant-edition-login')->getValue(); $password = $form->get('intervenant-edition-password')->getValue(); $utilisateur = $this->getServiceUtilisateur()->creerUtilisateur($nom, $prenom, $dateNaissance, $login, $password); - $utilisateur->setCode($intervenant->getUtilisateurCode() ?: $intervenant->getCode()); + $utilisateur->setCode($intervenant->getUtilisateurCode() ? : $intervenant->getCode()); $this->getServiceUtilisateur()->save($utilisateur); if ($utilisateur->getCode() != $intervenant->getUtilisateurCode()) { $intervenant->setUtilisateurCode($utilisateur->getCode()); @@ -281,7 +373,7 @@ class IntervenantController extends AbstractController - public function synchronisationAction() + public function synchronisationAction () { $intervenant = $this->getEvent()->getParam('intervenant'); @@ -306,7 +398,7 @@ class IntervenantController extends AbstractController - public function synchroniserAction() + public function synchroniserAction () { $intervenant = $this->getEvent()->getParam('intervenant'); $this->getProcessusImport()->execMaj('INTERVENANT', 'CODE', $intervenant->getCode()); @@ -317,7 +409,7 @@ class IntervenantController extends AbstractController - public function voirHeuresCompAction() + public function voirHeuresCompAction () { $intervenant = $this->getEvent()->getParam('intervenant'); /* @var $intervenant \Application\Entity\Db\Intervenant */ @@ -362,7 +454,7 @@ class IntervenantController extends AbstractController - public function formuleTotauxHetdAction() + public function formuleTotauxHetdAction () { $intervenant = $this->getEvent()->getParam('intervenant'); /* @var $intervenant Intervenant */ @@ -375,7 +467,7 @@ class IntervenantController extends AbstractController - public function supprimerAction() + public function supprimerAction () { $intervenant = $this->getEvent()->getParam('intervenant'); /* @var $intervenant \Application\Entity\Db\Intervenant */ @@ -414,7 +506,7 @@ class IntervenantController extends AbstractController - public function historiserAction() + public function historiserAction () { /* @var $intervenant \Application\Entity\Db\Intervenant */ $intervenant = $this->getEvent()->getParam('intervenant'); @@ -429,7 +521,7 @@ class IntervenantController extends AbstractController - public function restaurerAction() + public function restaurerAction () { /* @var $intervenant \Application\Entity\Db\Intervenant */ $intervenant = $this->getEvent()->getParam('intervenant'); @@ -443,95 +535,4 @@ class IntervenantController extends AbstractController return $this->redirect()->toRoute('intervenant/voir', ['intervenant' => $intervenant->getId()]); } - - - - /** - * - * @return array - */ - protected function getIntervenantsRecents() - { - $container = $this->getSessionContainer(); - //$container->recents = []; - if (isset($container->recents)) { - $recents = $container->recents; - foreach ($recents as $i => $recent) { - if (isset($recent['code'])) { - $intervenant = $this->getServiceIntervenant()->getByCode($recent['code']); - } else { - $intervenant = null; - } - if (!$intervenant) { - unset($recents[$i]); - unset($container->recents[$i]); - } - } - - return $recents; - } else { - return []; - } - } - - - - /** - * - * @param \Application\Entity\Db\Intervenant $intervenant - * - * @return \Application\Controller\IntervenantController - */ - protected function addIntervenantRecent(Intervenant $intervenant) - { - $container = $this->getSessionContainer(); - if (!isset($container->recents)) { - $container->recents = []; - } - - if (count($container->recents) > 4 && !isset($container->recents[$intervenant->getCode()])) { - $prem = (int)date('U'); - foreach ($container->recents as $i) { - $horo = $i['__horo_ajout__']; - if ($horo) { - if ($prem >= $horo) $prem = $horo; - } - } - foreach ($container->recents as $index => $i) { - $horo = $i['__horo_ajout__']; - if ($horo == $prem) { - unset($container->recents[$index]); - } - } - } - - if (!isset($container->recents[$intervenant->getCode()])) { - $container->recents[$intervenant->getCode()] = [ - 'civilite' => $intervenant->getCivilite() ? $intervenant->getCivilite()->getLibelleLong() : null, - 'nom' => $intervenant->getNomUsuel(), - 'prenom' => $intervenant->getPrenom(), - 'date-naissance' => $intervenant->getDateNaissance(), - 'structure' => (string)$intervenant->getStructure(), - 'statut' => (string)$intervenant->getStatut(), - 'code' => $intervenant->getCode(), - 'numero-personnel' => $intervenant->getCodeRh(), - '__horo_ajout__' => (int)date('U'), - ]; - } else { - if (!isset($container->recents[$intervenant->getCode()]['statut'])) { - $container->recents[$intervenant->getCode()]['statut'] = [$container->recents[$intervenant->getCode()]['statut']]; - } - if (is_array($container->recents[$intervenant->getCode()]['statut'])) { - $container->recents[$intervenant->getCode()]['statut'][] = (string)$intervenant->getStatut(); - } else { - $container->recents[$intervenant->getCode()]['statut'] = (string)$intervenant->getStatut(); - } - } - - uasort($container->recents, function ($a, $b) { - return $a['nom'] . ' ' . $a['prenom'] > $b['nom'] . ' ' . $b['prenom'] ? 1 : 0; - }); - - return $this; - } } diff --git a/module/Application/view/application/intervenant/candidature.phtml b/module/Application/view/application/intervenant/candidature.phtml index 13efef5ff585fc209b2012758f141a0eb276f010..a6d331afaa98cd62ed19218f2750753f4d21bac1 100755 --- a/module/Application/view/application/intervenant/candidature.phtml +++ b/module/Application/view/application/intervenant/candidature.phtml @@ -3,7 +3,7 @@ use Application\Provider\Privilege\Privileges; $this->intervenant($intervenant)->renderTitle('Candidature'); -$canValiderCandidature = $this->isAllowed(Privileges::getResourceId(Privileges::MISSION_CANDIDATURE_VALIDER)); +$canValiderCandidature = $this->isAllowed($intervenant, Privileges::MISSION_CANDIDATURE_VALIDER); echo $this->vue('mission/liste-candidatures', [ diff --git a/module/Mission/src/Assertion/OffreEmploiAssertion.php b/module/Mission/src/Assertion/OffreEmploiAssertion.php index baee71306a6d5830fc435a5fcbd481044611926c..0d646fd2bea6d172d039742086c8b8b1282f02d5 100755 --- a/module/Mission/src/Assertion/OffreEmploiAssertion.php +++ b/module/Mission/src/Assertion/OffreEmploiAssertion.php @@ -5,9 +5,13 @@ namespace Mission\Assertion; use Application\Acl\Role; use Application\Entity\Db\Intervenant; use Application\Entity\Db\Structure; +use Application\Entity\Db\WfEtape; use Application\Provider\Privilege\Privileges; +use Application\Service\Traits\WorkflowServiceAwareTrait; use Mission\Entity\Db\Candidature; +use Mission\Entity\Db\Mission; use Mission\Entity\Db\OffreEmploi; +use Mission\Entity\Db\VolumeHoraireMission; use UnicaenApp\Service\EntityManagerAwareInterface; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenPrivilege\Assertion\AbstractAssertion; @@ -22,6 +26,7 @@ use Laminas\Permissions\Acl\Resource\ResourceInterface; class OffreEmploiAssertion extends AbstractAssertion implements EntityManagerAwareInterface { use EntityManagerAwareTrait; + use WorkflowServiceAwareTrait; /* ---- Routage général ---- */ public function __invoke (array $page) // gestion des visibilités de menus @@ -35,7 +40,7 @@ class OffreEmploiAssertion extends AbstractAssertion implements EntityManagerAwa { switch ($page['route']) { case 'offre-emploi': - $query = 'SELECT id FROM offre_emploi WHERE histo_destruction IS NULL'; + $query = 'SELECT id FROM offre_emploi WHERE histo_destruction IS NULL AND validation_id IS NOT NULL'; $conn = $this->getEntityManager()->getConnection(); if (false === $conn->executeQuery($query)->fetchOne()) { @@ -81,12 +86,16 @@ class OffreEmploiAssertion extends AbstractAssertion implements EntityManagerAwa return $this->assertOffreEmploiPostuler($role, $entity); case Privileges::MISSION_CANDIDATURE_VISUALISATION: return $this->assertCandidatureVisualisation($role, $entity); - case Privileges::MISSION_CANDIDATURE_VALIDER: - return $this->assertCandidatureValider($role, $entity); case Privileges::MISSION_OFFRE_EMPLOI_SUPPRESSION: return $this->assertOffreEmploiSupprimer($role, $entity); } break; + case $entity instanceof Intervenant: + switch ($privilege) { + case Privileges::MISSION_CANDIDATURE_VALIDER: + return $this->assertCandidatureValider($role, $entity); + } + break; } return true; @@ -126,7 +135,6 @@ class OffreEmploiAssertion extends AbstractAssertion implements EntityManagerAwa return $this->asserts([ $this->haveRole(), $offre->canSaisie(), - //$offre->haveCandidats(), $this->assertOffreEmploi($role, $offre), ]); } @@ -203,15 +211,6 @@ class OffreEmploiAssertion extends AbstractAssertion implements EntityManagerAwa - protected function assertCandidatureValider (Role $role, OffreEmploi $offre) - { - return $this->asserts([ - $this->haveRole(), - ]); - } - - - protected function assertOffreEmploiSupprimer (Role $role, OffreEmploi $offre) { return $this->asserts([ @@ -223,9 +222,15 @@ class OffreEmploiAssertion extends AbstractAssertion implements EntityManagerAwa - protected function haveCandidature () + protected function assertCandidatureValider (Role $role, Intervenant $intervenant) { + $codeEtape = WfEtape::CANDIDATURE_VALIDATION; + $wfEtape = $this->getServiceWorkflow()->getEtape($codeEtape, $intervenant); + return $this->asserts([ + $wfEtape->isAtteignable(), + $this->haveRole(), + ]); } } \ No newline at end of file diff --git a/module/Mission/src/Service/CandidatureService.php b/module/Mission/src/Service/CandidatureService.php index 0a71b8b13a7119ee79cd7e9f168e368dc1987f1c..a8fca2bb8135a4b7e463668f8a944708c20504e3 100755 --- a/module/Mission/src/Service/CandidatureService.php +++ b/module/Mission/src/Service/CandidatureService.php @@ -109,7 +109,6 @@ class CandidatureService extends AbstractEntityService $query = $this->getEntityManager()->createQuery($dql)->setParameters($parameters); $result = $query->getResult(); - /*$triggers = $this->getOffreEmploiPrivileges();*/ $triggers = []; $properties = [ diff --git a/public/dist/assets/main-ea1c4ffa.js b/public/dist/assets/main-ea1c4ffa.js deleted file mode 100644 index 994b7d5ff02b6a6379821ebf7bacb566be1c5a46..0000000000000000000000000000000000000000 --- a/public/dist/assets/main-ea1c4ffa.js +++ /dev/null @@ -1,3 +0,0 @@ -import{c as a,o as r,t as h,a as i,w as D,v as A,b as c,F as g,r as y,d as u,n as j,e as _,f as L,g as b,h as k,i as O,j as S,p as N,k as z,l as q,m as Y,q as J,s as Q,u as X,x as W}from"./vendor-aed55673.js";const x=(e,t)=>{const n=e.__vccOpts||e;for(const[m,l]of t)n[m]=l;return n},G={props:{valeur:{required:!0,type:Number}},computed:{affichage:function(){return Util.formattedHeures(this.valeur,!0)}}},Z=["innerHTML"];function K(e,t,n,m,l,s){return r(),a("span",{class:"heures",innerHTML:s.affichage},null,8,Z)}const ee=x(G,[["render",K]]),te=Object.freeze(Object.defineProperty({__proto__:null,default:ee},Symbol.toStringTag,{value:"Module"})),ie={name:"Utilisateur",props:{nom:String,mail:String}},ne=["href"];function se(e,t,n,m,l,s){return r(),a("a",{href:`mailto:${n.mail}`},h(n.nom),9,ne)}const re=x(ie,[["render",se]]),ae=Object.freeze(Object.defineProperty({__proto__:null,default:re},Symbol.toStringTag,{value:"Module"})),oe={name:"UDate",props:{value:{required:!1,type:[String,Date]},format:{required:!1,type:String}},mounted(){this.formatted=this.formatage(this.value)},data(){return{formatted:void 0}},watch:{value:function(e){this.formatted=this.formatage(e)}},methods:{formatage(e){if(e===void 0)return;let t=new Date(e);const n=t.getFullYear(),m=(t.getMonth()+1).toString().padStart(2,"0"),l=t.getDate().toString().padStart(2,"0"),s=t.getHours().toString().padStart(2,"0"),d=t.getMinutes().toString().padStart(2,"0"),o=t.getSeconds().toString().padStart(2,"0");switch(this.format){case"datetime":return`${l}/${m}/${n} à ${s}:${d}`;case"time":return`${s}:${d}:${o}`}return`${l}/${m}/${n}`}}};function le(e,t,n,m,l,s){return h(l.formatted)}const w=x(oe,[["render",le]]),ue={name:"Recherche",data(){return{searchTerm:"",noResult:0,intervenants:[],checkedTypes:["vacataire","permanent","etudiant"]}},mixins:[Util],methods:{rechercher:function(e){this.searchTerm=e.currentTarget.value,this.searchTerm==""&&(this.noResult=0),this.searchTerm!=""&&this.reload()},urlFiche(e){return unicaenVue.url("intervenant/code:"+e+"/voir")},reload(){this.timer&&(clearTimeout(this.timer),this.timer=null),this.timer=setTimeout(()=>{unicaenVue.axios.post(unicaenVue.url("intervenant/recherche-json"),{term:this.searchTerm}).then(e=>{let t=e.data,n=[];for(const m in t){if(t[m].typeIntervenantCode=="E"&&this.checkedTypes.includes("vacataire")){n.push(t[m]);continue}if(t[m].typeIntervenantCode=="P"&&this.checkedTypes.includes("permanent")){n.push(t[m]);continue}if(t[m].typeIntervenantCode=="S"&&this.checkedTypes.includes("etudiant")){n.push(t[m]);continue}}this.intervenants=n,this.intervenants.length==0?this.noResult=1:this.noResult=0}).catch(e=>{console.log(e.message)})},800)}}},de=i("h3",null,"Saisissez le nom suivi éventuellement du prénom (2 lettres minimum)",-1),ce={class:"intervenant-recherche"},me={class:"critere"},he=i("br",null,null,-1),fe=i("span",{class:"fw-bold"},"Types d'intervenant : ",-1),_e=i("br",null,null,-1),ve={key:0,class:"table table-bordered table-hover"},pe=i("thead",null,[i("tr",null,[i("th",{style:{width:"90px"}}),i("th",null,"Civilité"),i("th",null,"Nom"),i("th",null,"Prenom"),i("th",null,"Structure"),i("th",null,"Statut"),i("th",null,"Date de naissance"),i("th",null,"N° Personnel")])],-1),be=["title"],ge={style:{}},ye=["href"],xe=i("i",{class:"fas fa-eye"},null,-1),Ce={key:1,class:"table table-bordered table-hover"},Ve=i("thead",null,[i("tr",null,[i("th",{style:{width:"90px"}}),i("th",null,"Civilité"),i("th",null,"Nom"),i("th",null,"Prenom"),i("th",null,"Structure"),i("th",null,"Statut"),i("th",null,"Date de naissance"),i("th",null,"N° Personnel")])],-1),ke=i("tbody",null,[i("tr",null,[i("td",{colspan:"8",style:{"text-align":"center"}},"Aucun intervenant trouvé")])],-1),Se=[Ve,ke];function Me(e,t,n,m,l,s){const d=w;return r(),a(g,null,[de,i("div",ce,[i("div",me,[i("div",null,[i("input",{id:"term",class:"form-control input",placeholder:"votre recherche...",type:"text",onKeyup:t[0]||(t[0]=(...o)=>s.rechercher&&s.rechercher(...o))},null,32),he]),i("div",null,[fe,D(i("input",{"onUpdate:modelValue":t[1]||(t[1]=o=>l.checkedTypes=o),checked:"checked",name:"type[]",type:"checkbox",value:"permanent",onChange:t[2]||(t[2]=o=>s.reload())},null,544),[[A,l.checkedTypes]]),c(" Permanent "),D(i("input",{"onUpdate:modelValue":t[3]||(t[3]=o=>l.checkedTypes=o),checked:"checked",name:"type[]",type:"checkbox",value:"vacataire",onChange:t[4]||(t[4]=o=>s.reload())},null,544),[[A,l.checkedTypes]]),c(" Vacataire "),D(i("input",{"onUpdate:modelValue":t[5]||(t[5]=o=>l.checkedTypes=o),checked:"checked",name:"type[]",type:"checkbox",value:"etudiant",onChange:t[6]||(t[6]=o=>s.reload())},null,544),[[A,l.checkedTypes]]),c(" Etudiant ")]),_e])]),l.intervenants.length>0?(r(),a("table",ve,[pe,i("tbody",null,[(r(!0),a(g,null,y(l.intervenants,(o,f)=>(r(),a("tr",{class:j({"bg-danger":o.destruction!==null}),title:o.destruction!==null?"Fiche historisé":""},[i("td",ge,[i("a",{href:s.urlFiche(o.code)},[xe,c(" Fiche")],8,ye)]),i("td",null,h(o.civilite),1),i("td",null,h(o.nom),1),i("td",null,h(o.prenom),1),i("td",null,h(o.structure),1),i("td",null,h(o.statut),1),i("td",null,[_(d,{value:o["date-naissance"]},null,8,["value"])]),i("td",null,h(o["numero-personnel"]),1)],10,be))),256))])])):u("",!0),l.intervenants.length==0&&l.noResult==1?(r(),a("table",Ce,Se)):u("",!0)],64)}const Te=x(ue,[["render",Me]]),De=Object.freeze(Object.defineProperty({__proto__:null,default:Te},Symbol.toStringTag,{value:"Module"})),je={name:"UModal",props:{id:{required:!0,type:String},title:{required:!0,type:String}}},we=["id"],Ue={class:"modal-dialog"},Ae={class:"modal-content"},Re={class:"modal-header"},Ee={class:"modal-title"},Le=i("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close"},null,-1),Oe={class:"modal-body"},qe={class:"modal-footer"},He=i("button",{type:"button",class:"btn btn-secondary","data-bs-dismiss":"modal"},"Fermer",-1);function Pe(e,t,n,m,l,s){return r(),a("div",{class:"modal fade",id:n.id,tabindex:"-1","aria-hidden":"true"},[i("div",Ue,[i("div",Ae,[i("div",Re,[i("h5",Ee,h(n.title),1),Le]),i("div",Oe,[L(e.$slots,"body")]),i("div",qe,[L(e.$slots,"footer"),He])])])],8,we)}const Fe=x(je,[["render",Pe]]),Be={name:"UIcon",props:{name:{required:!0,type:String},variant:{required:!1,type:String}}};function $e(e,t,n,m,l,s){return r(),a("i",{class:j(`fas fa-${n.name} text-${n.variant}`)},null,2)}const M=x(Be,[["render",$e]]);const Ie={name:"Mission",props:{mission:{required:!0}},data(){return{validationText:this.calcValidation(this.mission.validation),saisieUrl:unicaenVue.url("mission/saisie/:mission",{mission:this.mission.id}),validerUrl:unicaenVue.url("mission/valider/:mission",{mission:this.mission.id}),devaliderUrl:unicaenVue.url("mission/devalider/:mission",{mission:this.mission.id}),supprimerUrl:unicaenVue.url("mission/supprimer/:mission",{mission:this.mission.id})}},watch:{"mission.validation"(e){this.validationText=this.calcValidation(e)}},computed:{heuresLib:function(){return this.mission.heures===null||this.mission.heures===0?"Aucune heure saisie":this.mission.heures==this.mission.heuresValidees?Util.formattedHeures(this.mission.heures)+" heures (validées)":this.mission.heuresValidees==0?Util.formattedHeures(this.mission.heures)+" heures (non validées)":'<span class="bg-info">'+Util.formattedHeures(this.mission.heures)+"</span> heures ("+Util.formattedHeures(this.mission.heuresValidees)+" validées)"}},methods:{calcValidation(e){return e===null?"A valider":e.id===null?"Autovalidée":"Validation du "+Util.dateToString(e.histoCreation)+" par "},saisie(e){modAjax(e.currentTarget,t=>{this.refresh()})},supprimer(e){popConfirm(e.currentTarget,t=>{this.$emit("supprimer",this.mission)})},valider(e){popConfirm(e.currentTarget,t=>{this.$emit("refresh",t.data)})},devalider(e){popConfirm(e.currentTarget,t=>{this.$emit("refresh",t.data)})},volumeHoraireSupprimer(e){e.currentTarget.href=unicaenVue.url("mission/volume-horaire/supprimer/:missionVolumeHoraire",{missionVolumeHoraire:e.currentTarget.dataset.id}),popConfirm(e.currentTarget,t=>{this.$emit("refresh",t.data)})},volumeHoraireValider(e){e.currentTarget.href=unicaenVue.url("mission/volume-horaire/valider/:missionVolumeHoraire",{missionVolumeHoraire:e.currentTarget.dataset.id}),popConfirm(e.currentTarget,t=>{this.$emit("refresh",t.data)})},volumeHoraireDevalider(e){e.currentTarget.href=unicaenVue.url("mission/volume-horaire/devalider/:missionVolumeHoraire",{missionVolumeHoraire:e.currentTarget.dataset.id}),popConfirm(e.currentTarget,t=>{this.$emit("refresh",t.data)})},refresh(){unicaenVue.axios.get(unicaenVue.url("mission/get/:mission",{mission:this.mission.id})).then(e=>{this.$emit("refresh",e.data)})}}},V=e=>(N("data-v-1735108d"),e=e(),z(),e),Ne=["id"],ze={class:"card-header card-header-h3"},Ye={key:0},Je={class:"float-end"},Qe={key:1},Xe={key:2},We={class:"float-end"},Ge={class:"card-body"},Ze={class:"row"},Ke={class:"col-md-8"},et={class:"row"},tt={class:"col-md-12"},it=V(()=>i("label",{class:"form-label"},"Composante en charge du suivi",-1)),nt={class:"form-control"},st={class:"row"},rt={class:"col-md-6"},at=V(()=>i("label",{class:"form-label"},"Taux de rémunération",-1)),ot={class:"form-control"},lt={class:"col-md-6"},ut=V(()=>i("label",{class:"form-label"},"Taux majoré (dimanches/jours fériés)",-1)),dt={class:"form-control"},ct={class:"col-md-7"},mt=V(()=>i("label",{class:"form-label"},"Nombre d'heures prévisionnelles",-1)),ht={class:"input-group mb-3"},ft=["innerHTML"],_t=["data-bs-target"],vt={key:0,class:"col-md-5"},pt=V(()=>i("label",{class:"form-label"},"Heures de formation prévues",-1)),bt={class:"form-control"},gt={class:"row"},yt={class:"col-md-12"},xt=V(()=>i("label",{class:"form-label"},"Descriptif de la mission",-1)),Ct={class:"form-control"},Vt={key:0,class:"row"},kt={class:"col-md-12"},St=V(()=>i("label",{class:"form-label"},"Etudiants suivis",-1)),Mt={class:"form-control"},Tt=V(()=>i("div",{class:"row"},[i("div",{class:"col-md-12"}," ")],-1)),Dt={class:"row"},jt={class:"col-md-12"},wt=["href"],Ut=["href"],At=["href"],Rt=["href"],Et={class:"col-md-4"},Lt=V(()=>i("div",null,[i("label",{class:"form-label"},"Suivi")],-1)),Ot={class:"table table-bordered table-condensed"},qt=V(()=>i("thead",null,[i("tr",null,[i("th",null,"Heures"),i("th",null,"Statut"),i("th",null,"Actions")])],-1)),Ht={style:{"text-align":"right"}},Pt=V(()=>i("br",null,null,-1)),Ft={key:0},Bt=["data-id"],$t=["data-id"],It=["data-id"];function Nt(e,t,n,m,l,s){const d=w,o=M,f=S("utilisateur"),C=S("u-heures"),p=Fe;return r(),a(g,null,[i("div",{id:n.mission.id,class:j([{"bg-success":n.mission.valide,"bg-default":!n.mission.valide},"card"])},[i("form",{onSubmit:t[4]||(t[4]=b((...v)=>e.submitForm&&e.submitForm(...v),["prevent"]))},[i("div",ze,[n.mission.libelleMission?(r(),a("h5",Ye,[c(h(n.mission.libelleMission)+" ",1),i("span",Je,[c("Du "),_(d,{value:n.mission.dateDebut},null,8,["value"]),c(" au "),_(d,{value:n.mission.dateFin},null,8,["value"])])])):u("",!0),n.mission.libelleMission?(r(),a("h6",Qe,h(n.mission.typeMission.libelle),1)):u("",!0),n.mission.libelleMission?u("",!0):(r(),a("h5",Xe,[c(h(n.mission.typeMission.libelle)+" ",1),i("span",We,[c("Du "),_(d,{value:n.mission.dateDebut},null,8,["value"]),c(" au "),_(d,{value:n.mission.dateFin},null,8,["value"])])]))]),i("div",Ge,[i("div",Ze,[i("div",Ke,[i("div",et,[i("div",tt,[it,i("div",nt,h(n.mission.structure.libelle),1)])]),i("div",st,[i("div",rt,[at,i("div",ot,h(n.mission.tauxRemu?n.mission.tauxRemu.libelle:null),1)]),i("div",lt,[ut,i("div",dt,h(n.mission.tauxRemuMajore?n.mission.tauxRemuMajore.libelle:n.mission.tauxRemu?"Idem ("+n.mission.tauxRemu.libelle+")":null),1)]),i("div",ct,[mt,i("div",ht,[i("div",{class:"form-control",innerHTML:s.heuresLib},null,8,ft),i("button",{"data-bs-target":`#details-${n.mission.id}`,class:"input-group-btn btn btn-secondary","data-bs-toggle":"modal"}," Détails ",8,_t)])]),n.mission.typeMission.besoinFormation?(r(),a("div",vt,[pt,i("div",bt,h(n.mission.heuresFormation),1)])):u("",!0)]),i("div",gt,[i("div",yt,[xt,i("div",Ct,h(n.mission.description),1)])]),n.mission.typeMission.accompagnementEtudiants?(r(),a("div",Vt,[i("div",kt,[St,i("div",Mt,[i("pre",null,h(n.mission.etudiantsSuivis),1)])])])):u("",!0),Tt,i("div",Dt,[i("div",jt,[n.mission.canSaisie?(r(),a("a",{key:0,href:l.saisieUrl,class:"btn btn-primary",onClick:t[0]||(t[0]=b((...v)=>s.saisie&&s.saisie(...v),["prevent"]))},"Modifier",8,wt)):u("",!0),n.mission.canValider?(r(),a("a",{key:1,href:l.validerUrl,class:"btn btn-secondary","data-content":"Êtes-vous sur de vouloir valider la mission ?","data-title":"Validation de la mission",onClick:t[1]||(t[1]=b((...v)=>s.valider&&s.valider(...v),["prevent"]))},"Valider",8,Ut)):u("",!0),n.mission.canDevalider?(r(),a("a",{key:2,href:l.devaliderUrl,class:"btn btn-danger","data-content":"Êtes-vous sur de vouloir dévalider la mission ?","data-title":"Dévalidation de la mission",onClick:t[2]||(t[2]=b((...v)=>s.devalider&&s.devalider(...v),["prevent"]))},"Dévalider",8,At)):u("",!0),n.mission.canSupprimer?(r(),a("a",{key:3,href:l.supprimerUrl,class:"btn btn-danger","data-content":"Êtes-vous sur de vouloir supprimer la mission ?","data-title":"Suppression de la mission",onClick:t[3]||(t[3]=b((...v)=>s.supprimer&&s.supprimer(...v),["prevent"]))},"Supprimer",8,Rt)):u("",!0)])])]),i("div",Et,[Lt,i("div",null,[_(o,{name:"thumbs-up",variant:"success"}),c(" Créé le "),_(d,{value:n.mission.histoCreation},null,8,["value"]),c(" par "),_(f,{mail:n.mission.histoCreateur.email,nom:n.mission.histoCreateur.displayName},null,8,["mail","nom"])]),i("div",null,[_(o,{name:n.mission.valide?"thumbs-up":"thumbs-down",variant:n.mission.valide?"success":"info"},null,8,["name","variant"]),c(" "+h(l.validationText)+" ",1),n.mission.validation&&n.mission.validation.histoCreateur?(r(),k(f,{key:0,mail:n.mission.validation.histoCreateur.email,nom:n.mission.validation.histoCreateur.displayName},null,8,["mail","nom"])):u("",!0)]),i("div",null,[_(o,{name:n.mission.contrat?"thumbs-up":"thumbs-down",variant:n.mission.contrat?"success":"info"},null,8,["name","variant"]),c(" "+h(n.mission.contrat?"Contrat établi":"Pas de contrat"),1)]),i("div",null,h(n.mission.heuresRealisees)+" heure"+h(n.mission.heuresRealisees<2?"":"s")+" réalisée"+h(n.mission.heuresRealisees<2?"":"s"),1)])])])],32)],10,Ne),_(p,{id:`details-${n.mission.id}`,title:"Détail des heures prévisionnelles"},{body:O(()=>[i("table",Ot,[qt,i("tbody",null,[(r(!0),a(g,null,y(n.mission.volumesHorairesPrevus,v=>(r(),a("tr",{key:v.id},[i("td",Ht,[_(C,{valeur:v.heures},null,8,["valeur"])]),i("td",null,[_(o,{name:"thumbs-up",variant:"success"}),c(" Saisi par "),_(f,{mail:v.histoCreateur.email,nom:v.histoCreateur.displayName},null,8,["mail","nom"]),c(" le "),_(d,{value:v.histoCreation},null,8,["value"]),Pt,_(o,{name:v.valide?"thumbs-up":"thumbs-down",variant:v.valide?"success":"info"},null,8,["name","variant"]),c(" "+h(v.validation&&v.validation.id==null?"Autovalidé":v.validation?"":"à valider")+" ",1),v.validation&&v.validation.histoCreateur?(r(),a("span",Ft,[c(" Validé par "),_(f,{mail:v.validation.histoCreateur.email,nom:v.validation.histoCreateur.displayName},null,8,["mail","nom"]),c(" le "),_(d,{value:v.validation.histoCreation},null,8,["value"])])):u("",!0)]),i("td",null,[v.canValider?(r(),a("a",{key:0,"data-id":v.id,class:"btn btn-secondary","data-content":"Êtes-vous sur de vouloir valider ce volume horaire ?","data-title":"Validation du volume horaire",onClick:t[5]||(t[5]=b((...T)=>s.volumeHoraireValider&&s.volumeHoraireValider(...T),["prevent"]))},"Valider",8,Bt)):u("",!0),v.canDevalider?(r(),a("a",{key:1,"data-id":v.id,class:"btn btn-danger","data-content":"Êtes-vous sur de vouloir dévalider ce volume horaire ?","data-title":"Dévalidation du volume horaire",onClick:t[6]||(t[6]=b((...T)=>s.volumeHoraireDevalider&&s.volumeHoraireDevalider(...T),["prevent"]))},"Dévalider",8,$t)):u("",!0),v.canSupprimer?(r(),a("a",{key:2,"data-id":v.id,class:"btn btn-danger","data-content":"Êtes-vous sur de vouloir supprimer le volume horaire ?","data-title":"Suppression du volume horaire",onClick:t[7]||(t[7]=b((...T)=>s.volumeHoraireSupprimer&&s.volumeHoraireSupprimer(...T),["prevent"]))},"Supprimer",8,It)):u("",!0)])]))),128))])])]),footer:O(()=>[]),_:1},8,["id"])],64)}const H=x(Ie,[["render",Nt],["__scopeId","data-v-1735108d"]]),zt=Object.freeze(Object.defineProperty({__proto__:null,default:H},Symbol.toStringTag,{value:"Module"})),Yt={components:{mission:H},props:{intervenant:{type:Number,required:!0},canAddMission:{type:Boolean,required:!0}},data(){return{missions:[],isMounted:!1,ajoutUrl:unicaenVue.url("mission/ajout/:intervenant",{intervenant:this.intervenant})}},mounted(){this.reload()},methods:{ajout(e){modAjax(e.currentTarget,t=>{this.reload()})},supprimer(e){this.reload()},refresh(e){let t=Util.json.indexById(this.missions,e.id);this.missions[t]=e,this.refreshPlafonds()},reload(){unicaenVue.axios.get(unicaenVue.url("mission/liste/:intervenant",{intervenant:this.intervenant})).then(e=>{this.missions=e.data,this.refreshPlafonds()})},refreshPlafonds(){this.isMounted?($(".plafonds").refresh(),$("#sidebar").refresh()):this.isMounted=!0}}},Jt=["href"];function Qt(e,t,n,m,l,s){const d=S("mission");return r(),a(g,null,[(r(!0),a(g,null,y(l.missions,o=>(r(),k(d,{onSupprimer:s.supprimer,onRefresh:s.refresh,key:o.id,mission:o},null,8,["onSupprimer","onRefresh","mission"]))),128)),n.canAddMission?(r(),a("a",{key:0,class:"btn btn-primary",href:l.ajoutUrl,onClick:t[0]||(t[0]=b((...o)=>s.ajout&&s.ajout(...o),["prevent"]))},"Ajout d'une nouvelle mission",8,Jt)):u("",!0)],64)}const Xt=x(Yt,[["render",Qt]]),Wt=Object.freeze(Object.defineProperty({__proto__:null,default:Xt},Symbol.toStringTag,{value:"Module"})),Gt={name:"ListeCandidatures.vue",props:{intervenant:{required:!0},canValiderCandidature:{type:Boolean,required:!1}},data(){return{candidatures:[],urlListeOffre:unicaenVue.url("offre-emploi")}},mounted(){this.reload()},methods:{reload(){unicaenVue.axios.get(unicaenVue.url("intervenant/:intervenant/get-candidatures",{intervenant:this.intervenant})).then(e=>{this.candidatures=e.data})},validerCandidature(e){popConfirm(e.target,t=>{this.reload()})},refuserCandidature(e){popConfirm(e.target,t=>{this.reload()})},urlOffre(e){return unicaenVue.url("offre-emploi/detail/:offre",{offre:e.offre.id})},urlAccepterCandidature:function(e){return unicaenVue.url("offre-emploi/accepter-candidature/:id",{id:e.id})},urlRefuserCandidature:function(e){return unicaenVue.url("offre-emploi/refuser-candidature/:id",{id:e.id})}}},Zt={class:"table table-bordered"},Kt=i("th",null,"Offre d'emploi",-1),ei=i("th",null,"Composante",-1),ti=i("th",null,"Etat",-1),ii={key:0},ni={key:0},si={key:0,colspan:"4",style:{"text-align":"center"}},ri={key:1,colspan:"3",style:{"text-align":"center"}},ai={style:{"text-align":"center"}},oi=["href"],li={style:{"text-align":"center"}},ui={style:{"text-align":"center"}},di={key:0,class:"badge rounded-pill bg-success"},ci={key:1,class:"badge rounded-pill bg-danger"},mi={key:2,class:"badge rounded-pill bg-warning"},hi={key:0,style:{"text-align":"center"}},fi=["href"],_i=["href"],vi=["href"];function pi(e,t,n,m,l,s){const d=M;return r(),a("div",null,[i("table",Zt,[i("thead",null,[i("tr",null,[Kt,ei,ti,n.canValiderCandidature?(r(),a("th",ii,"Action")):u("",!0)])]),i("tbody",null,[l.candidatures.length==0?(r(),a("tr",ni,[n.canValiderCandidature?(r(),a("td",si,"Aucune candidature")):u("",!0),n.canValiderCandidature?u("",!0):(r(),a("td",ri,"Aucune candidature"))])):u("",!0),(r(!0),a(g,null,y(l.candidatures,o=>(r(),a("tr",{key:o.id},[i("td",ai,[i("a",{href:s.urlOffre(o)},h(o.offre.titre),9,oi)]),i("td",li,h(o.offre.structure.libelleLong),1),i("td",ui,[o.validation?(r(),a("span",di,"Acceptée par "+h(o.validation.histoCreateur.displayName),1)):u("",!0),!o.validation&&o.motif!==null?(r(),a("span",ci,h(o.motif),1)):u("",!0),!o.validation&&o.motif===null?(r(),a("span",mi,"En attente d'acceptation")):u("",!0)]),this.canValiderCandidature?(r(),a("td",hi,[o.validation?u("",!0):(r(),a("a",{key:0,href:s.urlAccepterCandidature(o),class:"btn btn-success","data-content":"Êtes vous sûr de vouloir accepter cette candidature ?","data-title":"Accepter la candidature",title:"Accepter la candidature",onClick:t[0]||(t[0]=b((...f)=>s.validerCandidature&&s.validerCandidature(...f),["prevent"]))},"Accepter ",8,fi)),c(" "),i("a",{href:s.urlRefuserCandidature(o),class:"btn btn-danger","data-content":"Êtes vous sûr de vouloir refuser cette candidature ?","data-title":"Refuser la candidature",title:"Refuser la candidature",onClick:t[1]||(t[1]=b((...f)=>s.refuserCandidature&&s.refuserCandidature(...f),["prevent"]))},"Refuser ",8,_i)])):u("",!0)]))),128))])]),i("a",{href:l.urlListeOffre,class:"btn btn-primary",title:"Voir les offres d'emploi"},[_(d,{name:"eye"}),c(" Voir toutes les offres d'emploi ")],8,vi),c(" ")])}const bi=x(Gt,[["render",pi]]),gi=Object.freeze(Object.defineProperty({__proto__:null,default:bi},Symbol.toStringTag,{value:"Module"})),yi={name:"OffreEmploi.vue",props:{offre:{required:!0},utilisateur:{required:!1},extended:{type:Boolean,required:!1},canModifier:{type:Boolean,required:!1},canPostuler:{type:Boolean,required:!1},canValider:{type:Boolean,required:!1},canSupprimer:{type:Boolean,required:!1},canVoirCandidature:{type:Boolean,required:!1},canValiderCandidature:{type:Boolean,required:!1}},data(){return{saisirUrl:unicaenVue.url("offre-emploi/saisir/:offre",{offre:this.offre.id}),supprimerUrl:unicaenVue.url("offre-emploi/supprimer/:offre",{offre:this.offre.id}),validerUrl:unicaenVue.url("offre-emploi/valider/:offre",{offre:this.offre.id}),devaliderUrl:unicaenVue.url("offre-emploi/devalider/:offre",{offre:this.offre.id}),consulterUrl:unicaenVue.url("offre-emploi/detail/:offre",{offre:this.offre.id}),offreEmploiUrl:unicaenVue.url("offre-emploi"),postulerUrl:unicaenVue.url("offre-emploi/postuler/:id",{id:this.offre.id})}},computed:{isCandidat:function(){return!1},shortDesc:function(){let e=this.offre.description.substr(0,200);return this.offre.description.length>200&&(e+="..."),e},descriptionHtml:function(){return this.offre.description.replace(/(?:\r\n|\r|\n)/g,"<br />")},connectionLink:function(){let e="auth/connexion?redirect="+window.location.href;return unicaenVue.url(e)}},methods:{saisir(e){modAjax(e.target,t=>{this.refresh()})},urlVoir:function(e){return unicaenVue.url("intervenant/:code/voir",{code:"code:"+e.intervenant.code})},urlAccepterCandidature:function(e){return unicaenVue.url("offre-emploi/accepter-candidature/:id",{id:e.id})},urlRefuserCandidature:function(e){return unicaenVue.url("offre-emploi/refuser-candidature/:id",{id:e.id})},refresh(){unicaenVue.axios.get(unicaenVue.url("offre-emploi/get/:offreEmploi",{offreEmploi:this.offre.id})).then(e=>{this.$emit("refresh",e.data)})},supprimer(e){popConfirm(e.target,t=>{this.$emit("supprimer",this.offre)})},postuler(e){popConfirm(e.target,t=>{this.$emit("postuler",this.offre)})},valider(e){popConfirm(e.currentTarget,t=>{this.$emit("refresh",t.data)})},devalider(e){popConfirm(e.currentTarget,t=>{this.$emit("refresh",t.data)})},validerCandidature(e){popConfirm(e.currentTarget,t=>{this.$emit("refresh",t.data)})},refuserCandidature(e){popConfirm(e.currentTarget,t=>{this.$emit("refresh",t.data)})}}},xi={key:0,class:"col"},Ci={class:"card h-100"},Vi={class:"card-header"},ki={class:"badge rounded-pill bg-info"},Si={key:0,class:"badge rounded-pill bg-success"},Mi={key:1,class:"badge rounded-pill bg-warning"},Ti={class:"card-body"},Di={class:"bg-light",style:{padding:"5px"}},ji=i("b",null,"Créée le : ",-1),wi=i("br",null,null,-1),Ui=i("b",null,"Période à pourvoir : ",-1),Ai=i("br",null,null,-1),Ri=i("b",null,"Demandée par la composante :",-1),Ei=i("br",null,null,-1),Li=i("b",null,"Type de mission :",-1),Oi={class:"card-footer"},qi={class:"d-grid gap-2 d-md-flex justify-content-md-end"},Hi=["href"],Pi={key:1},Fi={class:"page-header"},Bi={key:0,class:"alert alert-primary d-flex align-items-center",role:"alert"},$i=i("i",{class:"fa-solid fa-user"},null,-1),Ii={class:"ms-2"},Ni=["href"],zi={key:1,class:"alert alert-primary d-flex align-items-center",role:"alert"},Yi=i("i",{class:"fa-solid fa-circle-xmark"},null,-1),Ji=i("div",{class:"ms-2"}," Vous n'avez pas les droits pour postuler à cette offre, merci de contacter votre administration de rattachement. ",-1),Qi=[Yi,Ji],Xi={key:2,class:"alert alert-primary d-flex align-items-center",role:"alert"},Wi=i("i",{class:"fa-solid fa-circle-xmark"},null,-1),Gi=i("div",{class:"ms-2"}," Vous avez déjà postulé à cette offre. ",-1),Zi=[Wi,Gi],Ki={class:"bg-light",style:{padding:"10px"}},en=i("b",null,"Créée le : ",-1),tn=i("br",null,null,-1),nn=i("b",null,"Période à pourvoir : ",-1),sn=i("br",null,null,-1),rn=i("b",null,"Date limite de candidature :",-1),an=i("br",null,null,-1),on=i("b",null,"Demandé par la composante :",-1),ln=i("br",null,null,-1),un=i("b",null,"Type de mission :",-1),dn=i("br",null,null,-1),cn=i("b",null,"Nombre d'heures pour la mission :",-1),mn=i("br",null,null,-1),hn=i("b",null,"Nombre de postes à pourvoir :",-1),fn=i("br",null,null,-1),_n=["innerHTML"],vn=i("br",null,null,-1),pn={key:3},bn=i("h5",null,[i("strong",null,"Liste des candidats :")],-1),gn={class:"table table-bordered"},yn=i("th",null,"Intervenant",-1),xn=i("th",null,"Etat",-1),Cn={key:0},Vn={key:0},kn={key:0,colspan:"4",style:{"text-align":"center"}},Sn={key:1,colspan:"3",style:{"text-align":"center"}},Mn=["href"],Tn={key:0,class:"badge rounded-pill bg-success"},Dn={key:1,class:"badge rounded-pill bg-danger"},jn={key:2,class:"badge rounded-pill bg-warning"},wn={key:0},Un=["href"],An=["href"],Rn={class:"mt-5"},En=["href"],Ln=["href"],On=["href"],qn=["href"],Hn=["href"],Pn=["href"];function Fn(e,t,n,m,l,s){const d=w,o=M;return r(),a(g,null,[this.extended?u("",!0):(r(),a("div",xi,[i("div",Ci,[i("div",Vi,[i("h4",null,h(n.offre.titre),1),i("span",ki,h(n.offre.nombreHeures)+" heure(s)",1),c(" "),n.offre.validation?(r(),a("span",Si,[c("Validée le "),_(d,{value:n.offre.validation.histoCreation},null,8,["value"]),c(" par "+h(n.offre.validation.histoCreateur.displayName),1)])):u("",!0),n.offre.validation?u("",!0):(r(),a("span",Mi," En attente de validation par la DRH")),c(" ")]),i("div",Ti,[i("p",Di,[ji,_(d,{value:n.offre.histoCreation},null,8,["value"]),c(" par "+h(n.offre.histoCreateur.displayName),1),wi,Ui,c("du "),_(d,{value:n.offre.dateDebut},null,8,["value"]),c(" au "),_(d,{value:n.offre.dateFin},null,8,["value"]),Ai,Ri,c(" "+h(n.offre.structure.libelleCourt)+" ",1),Ei,Li,c(" "+h(n.offre.typeMission.libelle),1)]),c(" "+h(s.shortDesc),1)]),i("div",Oi,[i("div",qi,[i("a",{href:l.consulterUrl,class:"btn btn-primary",title:"Consulter "},[_(o,{name:"eye"}),c(" Voir ")],8,Hi)])])])])),this.extended?(r(),a("div",Pi,[i("h1",Fi,h(n.offre.titre),1),this.utilisateur?u("",!0):(r(),a("div",Bi,[$i,i("div",Ii,[c(" Vous devez "),i("a",{href:s.connectionLink,class:"text-decoration-underline alert-link"},"être identifé",8,Ni),c(" pour pouvoir postuler. ")])])),!n.offre.canPostuler&&this.utilisateur?(r(),a("div",zi,Qi)):u("",!0),s.isCandidat&&this.utilisateur?(r(),a("div",Xi,Zi)):u("",!0),i("p",Ki,[en,_(d,{value:n.offre.histoCreation},null,8,["value"]),c(" par "+h(n.offre.histoCreateur.displayName),1),tn,nn,c("du "),_(d,{value:n.offre.dateDebut},null,8,["value"]),c(" au "),_(d,{value:n.offre.dateFin},null,8,["value"]),sn,rn,_(d,{value:n.offre.dateLimite},null,8,["value"]),an,on,c(" "+h(n.offre.structure.libelleCourt)+" ",1),ln,un,c(" "+h(n.offre.typeMission.libelle)+" ",1),dn,cn,c(" "+h(n.offre.nombreHeures)+" heure(s) ",1),mn,hn,c(" "+h(n.offre.nombrePostes)+" poste(s) ",1),fn]),i("p",{innerHTML:s.descriptionHtml},null,8,_n),vn,this.canValiderCandidature?(r(),a("div",pn,[bn,i("table",gn,[i("thead",null,[i("tr",null,[yn,xn,n.canValiderCandidature?(r(),a("th",Cn,"Action")):u("",!0)])]),i("tbody",null,[n.offre.candidatures.length==0?(r(),a("tr",Vn,[n.canValiderCandidature?(r(),a("td",kn,"Aucune candidature")):u("",!0),n.canValiderCandidature?u("",!0):(r(),a("td",Sn,"Aucune candidature"))])):u("",!0),(r(!0),a(g,null,y(n.offre.candidatures,f=>(r(),a("tr",null,[i("td",null,[i("a",{href:s.urlVoir(f)},h(f.intervenant.prenom+" "+f.intervenant.nomUsuel),9,Mn)]),i("td",null,[f.validation?(r(),a("span",Tn,[c("Acceptée le "),_(d,{value:f.validation.histoCreation},null,8,["value"]),c(" par "+h(f.validation.histoCreateur.displayName),1)])):u("",!0),!f.validation&&f.motif!==null?(r(),a("span",Dn,h(f.motif),1)):u("",!0),!f.validation&&f.motif===null?(r(),a("span",jn,"En attente d'acceptation")):u("",!0)]),this.canValiderCandidature?(r(),a("td",wn,[f.validation?u("",!0):(r(),a("a",{key:0,href:s.urlAccepterCandidature(f),class:"btn btn-success","data-content":"Êtes vous sûr de vouloir accepter cette candidature ?","data-title":"Accepter la candidature",title:"Accepter la candidature",onClick:t[0]||(t[0]=b((...C)=>s.validerCandidature&&s.validerCandidature(...C),["prevent"]))},"Accepter ",8,Un)),c(" "),!f.motif&&f.validation?(r(),a("a",{key:1,href:s.urlRefuserCandidature(f),class:"btn btn-danger","data-content":"Êtes vous sûr de vouloir refuser cette candidature ?","data-title":"Refuser la candidature",title:"Refuser la candidature",onClick:t[1]||(t[1]=b((...C)=>s.refuserCandidature&&s.refuserCandidature(...C),["prevent"]))},"Refuser ",8,An)):u("",!0)])):u("",!0)]))),256))])])])):u("",!0),i("div",Rn,[i("a",{href:l.offreEmploiUrl,class:"btn btn-secondary"},"Retour aux offres",8,En),c(" "),this.canPostuler?(r(),a("a",{key:0,href:l.postulerUrl,class:"btn btn-primary","data-bs-original-title":"Vous devez être connecté pour postuler","data-bs-placement":"top","data-bs-toggle":"tooltip"},"Postuler",8,Ln)):u("",!0),c(" "),n.offre.canModifier?(r(),a("a",{key:1,href:l.saisirUrl,class:"btn btn-primary",title:"Modifier",onClick:t[2]||(t[2]=b((...f)=>s.saisir&&s.saisir(...f),["prevent"]))},[_(o,{name:"pen-to-square"}),c(" Modifier ")],8,On)):u("",!0),c(" "),n.offre.validation&&n.offre.canValider?(r(),a("a",{key:2,href:l.devaliderUrl,class:"btn btn-danger",title:"Devalider",onClick:t[3]||(t[3]=b((...f)=>s.devalider&&s.devalider(...f),["prevent"]))},[_(o,{name:"thumbs-down"}),c(" Devalider ")],8,qn)):u("",!0),c(" "),!n.offre.validation&&n.offre.canValider?(r(),a("a",{key:3,href:l.validerUrl,class:"btn btn-success",title:"Valider",onClick:t[4]||(t[4]=b((...f)=>s.valider&&s.valider(...f),["prevent"]))},[_(o,{name:"thumbs-up"}),c(" Valider ")],8,Hn)):u("",!0),c(" "),n.offre.canSupprimer?(r(),a("a",{key:4,href:l.supprimerUrl,class:"btn btn-danger","data-content":"Êtes-vous sur de vouloir supprimer l'offre ?","data-title":"Suppression de l'offre",title:"Supprimer",onClick:t[5]||(t[5]=b((...f)=>s.supprimer&&s.supprimer(...f),["prevent"]))},[_(o,{name:"trash"}),c(" Supprimer ")],8,Pn)):u("",!0)])])):u("",!0)],64)}const P=x(yi,[["render",Fn]]),Bn=Object.freeze(Object.defineProperty({__proto__:null,default:P},Symbol.toStringTag,{value:"Module"})),$n={components:{offreEmploi:P},props:{id:{type:Number,required:!1},utilisateur:{required:!1},canModifier:{type:Boolean,required:!1},canPostuler:{type:Boolean,required:!1},canValider:{type:Boolean,required:!1},canVoirCandidature:{type:Boolean,required:!1},canValiderCandidature:{type:Boolean,required:!1},canSupprimer:{type:Boolean,required:!1}},data(){return{offres:[],ajoutUrl:unicaenVue.url("offre-emploi/saisir")}},mounted(){this.reload()},computed:{extended:function(){return!!this.id}},methods:{ajout(e){modAjax(e.target,t=>{this.reload()})},supprimer(){window.location.href=unicaenVue.url("offre-emploi")},refresh(e){let t=Util.json.indexById(this.offres,e.id);this.offres[t]=e},reload(){this.id?unicaenVue.axios.get(unicaenVue.url("offre-emploi/get/:offreEmploi",{offreEmploi:this.id})).then(e=>{this.offres=[e.data]}):unicaenVue.axios.get(unicaenVue.url("offre-emploi/liste")).then(e=>{this.offres=e.data})}}},In={key:0,class:"row row-cols-1 row-cols-md-2 g-4 mb-3"},Nn={key:1},zn=["href"],Yn={key:2};function Jn(e,t,n,m,l,s){const d=S("offreEmploi");return r(),a(g,null,[s.extended?u("",!0):(r(),a("div",In,[(r(!0),a(g,null,y(l.offres,o=>(r(),k(d,{key:o.id,canModifier:this.canModifier,canSupprimer:this.canSupprimer,canValider:this.canValider,canVoirCandidature:this.canVoirCandidature,offre:o,onRefresh:s.refresh,onSupprimer:s.supprimer},null,8,["canModifier","canSupprimer","canValider","canVoirCandidature","offre","onRefresh","onSupprimer"]))),128))])),s.extended?u("",!0):(r(),a("div",Nn,[this.canModifier?(r(),a("a",{key:0,href:l.ajoutUrl,class:"btn btn-primary",onClick:t[0]||(t[0]=b((...o)=>s.ajout&&s.ajout(...o),["prevent"]))},"Ajouter une nouvelle offre",8,zn)):u("",!0)])),s.extended?(r(),a("div",Yn,[(r(!0),a(g,null,y(l.offres,o=>(r(),k(d,{key:o.id,canModifier:this.canModifier,canPostuler:this.canPostuler,canSupprimer:this.canSupprimer,canValider:this.canValider,canValiderCandidature:this.canValiderCandidature,canVoirCandidature:this.canVoirCandidature,extended:s.extended,offre:o,utilisateur:this.utilisateur,onRefresh:s.refresh,onSupprimer:s.supprimer},null,8,["canModifier","canPostuler","canSupprimer","canValider","canValiderCandidature","canVoirCandidature","extended","offre","utilisateur","onRefresh","onSupprimer"]))),128))])):u("",!0)],64)}const Qn=x($n,[["render",Jn]]),Xn=Object.freeze(Object.defineProperty({__proto__:null,default:Qn},Symbol.toStringTag,{value:"Module"}));const Wn={name:"UCalendar",props:{date:{type:Date,required:!0},events:{type:Array,required:!0},canAddEvent:{type:Boolean,required:!0,default:!0},addDateDebut:{type:String,required:!1},addDateFin:{type:String,required:!1}},data(){const e=new Date(this.date);return{mois:e.getMonth()+1,annee:e.getFullYear()}},computed:{listeJours(){const e=new Date(this.date);e.setDate(1),e.setMonth(e.getMonth()+1),e.setDate(e.getDate()-1);let t=e.getDate();return Array.from({length:t},(n,m)=>m+1)}},watch:{date:function(e,t){const n=new Date(this.date);this.mois=n.getMonth()+1,this.annee=n.getFullYear()},mois:function(e,t){const n=new Date(this.date);n.setMonth(e-1),this.$emit("changeDate",n)},annee:function(e,t){const n=new Date(this.date);n.setFullYear(e),this.$emit("changeDate",n)}},methods:{nomJour(e){const t=new Date(this.date);return t.setDate(e),t.toLocaleString("fr-FR",{weekday:"short"})},listeMois(){let e=[];const t=new Date;for(let n=1;n<=12;n++){t.setMonth(n-1);let m=t.toLocaleString("fr-FR",{month:"long"});e.push({id:n,libelle:m})}return e},listeAnnees(){const t=new Date().getFullYear(),n=1;let m=[];for(let l=t-n;l<=t+n;l++)m.push(l);return m},canAdd(e){if(!this.canAddEvent)return!1;let t=this.addDateDebut;t===void 0?t=new Date("2000-01-01"):t==="now"?t=new Date:t=new Date(t);let n=this.addDateFin;n===void 0?n=new Date("2500-01-01"):n==="now"?n=new Date:n=new Date(n);let m=new Date(this.date);return m.setDate(e),t=this.isoDateOnly(t),n=this.isoDateOnly(n),m=this.isoDateOnly(m),!(m<t||m>n)},addEvent(e){const t=new Date(this.date);t.setDate(e.currentTarget.dataset.jour),this.$emit("addEvent",t,e)},prevMois(){const e=new Date(this.date);e.setMonth(e.getMonth()-1),this.$emit("changeDate",e)},nextMois(){const e=new Date(this.date);e.setMonth(e.getMonth()+1),this.$emit("changeDate",e)},eventsByJour(e){const t=new Date(this.date);let n={};for(let m in this.events){let l=this.events[m];l.date.getFullYear()===t.getFullYear()&&l.date.getMonth()+1===t.getMonth()+1&&l.date.getDate()===e&&(n[m]=l)}return n},isoDateOnly(e){const t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),m=String(e.getDate()).padStart(2,"0");return`${t}-${n}-${m}`}}},Gn={class:"calendar"},Zn={class:"recherche"},Kn={class:"recherche btn-group"},es=["value"],ts=["value"],is={class:"table table-bordered table-hover table-sm"},ss=["data-jour"],rs={class:"nom-jour"},as={class:"numero-jour"},os={class:"num-jour badge bg-secondary rounded-circle"},ls={key:0},us=["data-jour"];function ds(e,t,n,m,l,s){const d=M;return r(),a("div",Gn,[i("div",Zn,[i("div",Kn,[i("button",{class:"btn btn-light",id:"prevMois",onClick:t[0]||(t[0]=(...o)=>s.prevMois&&s.prevMois(...o)),title:"Mois précédant"},[_(d,{name:"chevron-left"})]),D(i("select",{class:"form-select btn btn-light",id:"otherMois","onUpdate:modelValue":t[1]||(t[1]=o=>l.mois=o)},[(r(!0),a(g,null,y(s.listeMois(),o=>(r(),a("option",{value:o.id},h(o.libelle),9,es))),256))],512),[[q,l.mois]]),D(i("select",{class:"form-select btn btn-light",id:"otherAnnee","onUpdate:modelValue":t[2]||(t[2]=o=>l.annee=o)},[(r(!0),a(g,null,y(s.listeAnnees(),o=>(r(),a("option",{value:o},h(o),9,ts))),256))],512),[[q,l.annee]]),i("button",{class:"btn btn-light",id:"nextMois",onClick:t[3]||(t[3]=(...o)=>s.nextMois&&s.nextMois(...o)),title:"Mois suivant"},[_(d,{name:"chevron-right"})])])]),i("table",is,[(r(!0),a(g,null,y(s.listeJours,o=>(r(),a("tr",{"data-jour":o},[i("th",rs,h(s.nomJour(o)),1),i("th",as,[i("div",os,h(o<10?"0"+o.toString():o),1)]),i("td",null,[(r(!0),a(g,null,y(s.eventsByJour(o),(f,C)=>(r(),a("div",{class:"event",style:Y("border-color:"+f.color+";background-color:"+f.bgcolor),key:C},[(r(),k(J(f.component),{event:f},null,8,["event"]))],4))),128)),s.canAdd(o)?(r(),a("div",ls,[i("button",{onClick:t[4]||(t[4]=(...f)=>s.addEvent&&s.addEvent(...f)),"data-jour":o,class:"btn btn-light btn-sm"},[_(d,{name:"plus"}),c(" Nouvel événement ")],8,us)])):u("",!0)])],8,ss))),256))])])}const cs=x(Wn,[["render",ds],["__scopeId","data-v-51bbc42d"]]);const ms={name:"SuiviEvent",props:{event:{type:Object,required:!0}},data(){return{suivi:this.$parent.$parent,modifierUrl:unicaenVue.url("mission/suivi/modifier/:id",{id:this.event.id}),supprimerUrl:unicaenVue.url("mission/suivi/supprimer/:id",{id:this.event.id}),validerUrl:unicaenVue.url("mission/suivi/valider/:id",{id:this.event.id}),devaliderUrl:unicaenVue.url("mission/suivi/devalider/:id",{id:this.event.id})}},computed:{heureDebut(){return this.event.heureDebut.toString().replace(":","h")},heureFin(){return this.event.heureFin.toString().replace(":","h")},heures(){return Util.floatToString(this.event.heures)}},methods:{modifier(e){modAjax(e.currentTarget,t=>{this.suivi.refresh()})},supprimer(e){popConfirm(e.currentTarget,t=>{this.suivi.refresh()})},valider(e){unicaenVue.axios.get(this.validerUrl).then(t=>{this.suivi.refresh()})},devalider(e){popConfirm(e.currentTarget,t=>{this.suivi.refresh()})}}},hs={class:"event-content"},fs={class:"mission"},_s={key:0,class:"badge bg-success"},vs={class:"horaires"},ps={key:0,class:"badge bg-secondary"},bs={key:0,class:"description"},gs={class:"event-actions"},ys={class:"btn-group btn-group-sm"},xs=["data-url"],Cs=["data-url"],Vs=["data-url"],ks=["data-url"];function Ss(e,t,n,m,l,s){const d=M;return r(),a(g,null,[i("div",hs,[i("p",fs,[c(h(n.event.mission.libelleCourt)+" ",1),n.event.valide?(r(),a("span",_s,"Validé")):u("",!0)]),i("p",vs,[c(" de "+h(s.heureDebut)+" à "+h(s.heureFin)+", soit "+h(s.heures)+" heure"+h(s.heures<2?"":"s")+" ",1),n.event.formation?(r(),a("span",ps,"En formation")):u("",!0)]),n.event.description?(r(),a("p",bs,h(n.event.description),1)):u("",!0)]),i("div",gs,[i("div",ys,[n.event.canEdit?(r(),a("button",{key:0,class:"btn btn-light",onClick:t[0]||(t[0]=(...o)=>s.modifier&&s.modifier(...o)),title:"Modifier le suivi","data-url":l.modifierUrl},[_(d,{name:"pen-to-square"})],8,xs)):u("",!0),n.event.canValider?(r(),a("button",{key:1,class:"btn btn-light",onClick:t[1]||(t[1]=(...o)=>s.valider&&s.valider(...o)),title:"Valider le suivi","data-url":l.validerUrl},[_(d,{name:"check",class:"text-success"})],8,Cs)):u("",!0),n.event.canDevalider?(r(),a("button",{key:2,class:"btn btn-light",onClick:t[2]||(t[2]=(...o)=>s.devalider&&s.devalider(...o)),title:"Dévalider le suivi","data-url":l.devaliderUrl,"data-content":"Voulez-vous vraiment dévalider ce suivi ?"},[_(d,{name:"xmark",class:"text-danger"})],8,Vs)):u("",!0),n.event.canSupprimer?(r(),a("button",{key:3,class:"btn btn-light",onClick:t[3]||(t[3]=(...o)=>s.supprimer&&s.supprimer(...o)),title:"Supprimer le suivi","data-url":l.supprimerUrl,"data-content":"Voulez-vous vraiment supprimer ce suivi ?"},[_(d,{name:"trash-can",class:"text-danger"})],8,ks)):u("",!0)])])],64)}const F=x(ms,[["render",Ss],["__scopeId","data-v-17cb1f29"]]),Ms=Object.freeze(Object.defineProperty({__proto__:null,default:F},Symbol.toStringTag,{value:"Module"})),Ts={name:"Suivi",props:{intervenant:{type:Number,required:!0},canAddMission:{type:Boolean,required:!0}},mounted(){this.refresh()},data(){return{date:new Date,isMounted:!1,suivi:[]}},methods:{changeDate(e){this.date=e},ajouter(e,t){const n={intervenant:this.intervenant,date:e.toISOString().slice(0,10)};t.currentTarget.dataset.url=unicaenVue.url("mission/suivi/ajout/:intervenant/:date",n),modAjax(t.currentTarget,m=>{this.refresh()})},refresh(){const e=["#e74c3c","#8e44ad","#3498db","#1abc9c","#2ecc71","#f1c40f","#e67e22","#d35400"];let t=0,n=[];unicaenVue.axios.get(unicaenVue.url("mission/suivi/liste/:intervenant",{intervenant:this.intervenant})).then(m=>{let l=[];for(let s in m.data){let d=m.data[s];n[d.mission.id]===void 0&&(n[d.mission.id]=e[t],t++),d.valide&&(d.bgcolor="#d0eddb"),d.color=n[d.mission.id],d.component=Q(F),d.date=new Date(d.date),d.intervenant=this.intervenant,l.push(d)}this.suivi=l,this.refreshPlafonds()})},refreshPlafonds(){this.isMounted?$(".plafonds").refresh():this.isMounted=!0}}};function Ds(e,t,n,m,l,s){const d=cs;return r(),k(d,{date:l.date,onChangeDate:s.changeDate,onAddEvent:s.ajouter,"can-add-event":n.canAddMission,addDateFin:"now",events:l.suivi},null,8,["date","onChangeDate","onAddEvent","can-add-event","events"])}const js=x(Ts,[["render",Ds]]),ws=Object.freeze(Object.defineProperty({__proto__:null,default:js},Symbol.toStringTag,{value:"Module"})),Us={name:"Taux",props:{taux:{required:!0},listeTaux:{required:!0}},data(){return{saisieUrl:unicaenVue.url("taux/saisir/:tauxRemu",{tauxRemu:this.taux.id}),supprimerUrl:unicaenVue.url("taux/supprimer/:tauxRemu",{tauxRemu:this.taux.id}),ajoutValeurUrl:unicaenVue.url("taux/saisir-valeur/:tauxRemu",{tauxRemu:this.taux.id})}},methods:{saisie(e){modAjax(e.target,t=>{this.$emit("refreshListe")})},ajoutValeur(e){modAjax(e.target,t=>{this.$emit("refreshListe")})},saisieValeur(e){e.currentTarget.href=unicaenVue.url("taux/saisir-valeur/:tauxRemu/:tauxRemuValeur",{tauxRemu:this.taux.id,tauxRemuValeur:e.currentTarget.dataset.id}),modAjax(e.currentTarget,t=>{this.$emit("refreshListe")})},refreshListe(e){this.$emit("refreshListe")},supprimer(e){popConfirm(e.target,t=>{this.$emit("refreshListe")})},supprimerValeur(e){e.currentTarget.href=unicaenVue.url("taux/supprimer-valeur/:tauxRemuValeur",{tauxRemuValeur:e.currentTarget.dataset.id}),popConfirm(e.currentTarget,t=>{this.$emit("refreshListe")})},refresh(e){unicaenVue.axios.get(unicaenVue.url("taux/get/:tauxRemu",{tauxRemu:e.id})).then(t=>{this.$emit("refresh",t.data)})}}},As={class:"card-header"},Rs={style:{display:"inline"}},Es={class:"float-end"},Ls=["href"],Os=["href"],qs={class:"card-body"},Hs={key:0},Ps=i("br",null,null,-1),Fs={class:""},Bs={class:"row align-items-start"},$s={class:"col-md-6"},Is={class:"col"},Ns=["data-id"],zs=["data-id"],Ys=["href"],Js={key:1,class:"row"},Qs={class:"col-md-7"},Xs=i("br",null,null,-1),Ws={class:"row align-items-start"},Gs={class:"col-md-8"},Zs={class:"col-md-auto"},Ks=["data-id"],er=["data-id"],tr=["href"],ir={class:"col"},nr=i("br",null,null,-1),sr={key:0},rr={key:0};function ar(e,t,n,m,l,s){const d=M,o=S("u-heures"),f=w,C=S("taux",!0);return r(),a(g,null,[i("div",{class:j(["card",{"ms-5":n.taux.tauxRemu}])},[i("div",As,[i("h3",Rs,h(n.taux.libelle)+" ("+h(n.taux.code)+")",1),i("div",Es,[n.taux.canEdit?(r(),a("a",{key:0,href:l.saisieUrl,class:"btn btn-primary",onClick:t[0]||(t[0]=b((...p)=>s.saisie&&s.saisie(...p),["prevent"]))},[_(d,{name:"pen-to-square"}),c(" Modifier")],8,Ls)):u("",!0),c(" "),n.taux.canDelete?(r(),a("a",{key:1,href:l.supprimerUrl,class:"btn btn-danger",onClick:t[1]||(t[1]=b((...p)=>s.supprimer&&s.supprimer(...p),["prevent"]))},[_(d,{name:"trash-can"}),c(" Supprimer")],8,Os)):u("",!0)])]),i("div",qs,[n.taux.tauxRemu?u("",!0):(r(),a("div",Hs,[c(" Modification :"),Ps,i("ul",null,[(r(!0),a(g,null,y(n.taux.tauxRemuValeurs,p=>(r(),a("div",{key:p.id},[i("li",Fs,[i("div",Bs,[i("div",$s,[_(o,{valeur:p.valeur},null,8,["valeur"]),c("€/h à partir du "),_(f,{value:p.dateEffet},null,8,["value"])]),i("div",Is,[n.taux.canEdit?(r(),a("a",{key:0,class:"text-primary",onClick:t[2]||(t[2]=b((...v)=>s.saisieValeur&&s.saisieValeur(...v),["prevent"])),"data-id":p.id},[_(d,{name:"pen-to-square"})],8,Ns)):u("",!0),c(" "),n.taux.canEdit?(r(),a("a",{key:1,class:"text-primary",onClick:t[3]||(t[3]=b((...v)=>s.supprimerValeur&&s.supprimerValeur(...v),["prevent"])),"data-id":p.id},[_(d,{name:"trash-can"})],8,zs)):u("",!0)])])])]))),128))]),n.taux.canEdit?(r(),a("a",{key:0,href:l.ajoutValeurUrl,class:"btn btn-primary btn-sm",onClick:t[4]||(t[4]=b((...p)=>s.ajoutValeur&&s.ajoutValeur(...p),["prevent"]))},[_(d,{name:"plus"}),c(" Ajouter une valeur ")],8,Ys)):u("",!0)])),n.taux.tauxRemu?(r(),a("div",Js,[i("div",Qs,[c(" Modification :"),Xs,i("ul",null,[(r(!0),a(g,null,y(n.taux.tauxRemuValeurs,p=>(r(),a("div",null,[i("li",null,[i("div",Ws,[i("div",Gs,[c(" Coéfficient de "),_(o,{valeur:p.valeur},null,8,["valeur"]),c(" à partir du "),_(f,{value:p.dateEffet},null,8,["value"])]),i("div",Zs,[n.taux.canEdit?(r(),a("a",{key:0,class:"text-primary",onClick:t[5]||(t[5]=b((...v)=>s.saisieValeur&&s.saisieValeur(...v),["prevent"])),"data-id":p.id},[_(d,{name:"pen-to-square"})],8,Ks)):u("",!0),c(" "),n.taux.canEdit?(r(),a("a",{key:1,class:"text-primary",onClick:t[6]||(t[6]=b((...v)=>s.supprimerValeur&&s.supprimerValeur(...v),["prevent"])),"data-id":p.id},[_(d,{name:"trash-can"})],8,er)):u("",!0)])])])]))),256))]),n.taux.canEdit?(r(),a("a",{key:0,href:l.ajoutValeurUrl,class:"btn btn-primary btn-sm",onClick:t[7]||(t[7]=b((...p)=>s.ajoutValeur&&s.ajoutValeur(...p),["prevent"]))},[_(d,{name:"plus"})],8,tr)):u("",!0)]),i("div",ir,[c(" Valeurs calculées (indexées sur le taux "+h(n.taux.tauxRemu.libelle)+") : ",1),i("ul",null,[(r(!0),a(g,null,y(n.taux.tauxRemuValeursIndex,p=>(r(),a("div",null,[i("li",null,[_(o,{valeur:p.valeur},null,8,["valeur"]),c("€/h à partir du "),_(f,{value:p.date},null,8,["value"])])]))),256))]),nr])])):u("",!0)])],2),n.taux.tauxRemu?u("",!0):(r(),a("div",sr,[(r(!0),a(g,null,y(n.listeTaux,p=>(r(),a("div",{key:p},[p.tauxRemu&&p.tauxRemu.id===n.taux.id?(r(),a("div",rr,[(r(),k(C,{onSupprimer:s.supprimer,onRefreshListe:s.refreshListe,key:n.taux.id,taux:p,listeTaux:n.listeTaux},null,8,["onSupprimer","onRefreshListe","taux","listeTaux"]))])):u("",!0)]))),128))]))],64)}const B=x(Us,[["render",ar]]),or=Object.freeze(Object.defineProperty({__proto__:null,default:B},Symbol.toStringTag,{value:"Module"})),lr={components:{taux:B},props:{canEditTaux:{type:Boolean,required:!0}},data(){return{listeTaux:[],ajoutUrl:unicaenVue.url("taux/saisir")}},mounted(){this.reload()},methods:{ajout(e){modAjax(e.currentTarget,t=>{this.reload()})},supprimer(){this.reload()},refreshListe(){this.reload()},refresh(e){let t=Util.json.indexById(this.listeTaux,e.id);this.listeTaux[t]=e},reload(){unicaenVue.axios.get(unicaenVue.url("taux/liste-taux")).then(e=>{this.listeTaux=e.data})}}},ur=["href"];function dr(e,t,n,m,l,s){const d=S("taux");return r(),a(g,null,[(r(!0),a(g,null,y(l.listeTaux,o=>(r(),a("div",null,[o.tauxRemu?u("",!0):(r(),k(d,{onSupprimer:s.supprimer,onRefreshListe:s.refreshListe,key:o.id,taux:o,listeTaux:l.listeTaux},null,8,["onSupprimer","onRefreshListe","taux","listeTaux"]))]))),256)),n.canEditTaux?(r(),a("a",{key:0,class:"btn btn-primary",href:l.ajoutUrl,onClick:t[0]||(t[0]=b((...o)=>s.ajout&&s.ajout(...o),["prevent"]))},"Ajout d'un nouveau taux",8,ur)):u("",!0)],64)}const cr=x(lr,[["render",dr]]),mr=Object.freeze(Object.defineProperty({__proto__:null,default:cr},Symbol.toStringTag,{value:"Module"})),hr={UHeures:"Application/UI/UHeures",Utilisateur:"Application/Utilisateur"};function fr(e){for(let t in e)for(let n in e[t])I(e[t][n],t)}function _r(){let e=document.getElementById("unicaen-vue-toast-container");return e||(e=document.createElement("div"),e.id="unicaen-vue-toast-container",e.classList.add("toast-container","position-fixed","top-0","end-0","p-3"),document.body.appendChild(e)),e}function vr(e){return e=pr(e),e=br(e),e}function pr(e){const t=document.createElement("div");t.innerHTML=e;const n=t.querySelector(".alert");return n?n.innerHTML:t.innerHTML}function br(e){const t=document.createElement("div");return t.innerHTML=e,t.querySelectorAll("i.fas").forEach(m=>m.style.display="none"),t.innerHTML}function I(e,t){const n={info:"bg-info",success:"bg-success",warning:"bg-warning",error:"bg-danger"},m={info:"info-circle",success:"check-circle",warning:"exclamation-circle",error:"exclamation-triangle"},l=document.createElement("button");l.classList.add("btn-close","btn-close-white","h5"),l.style.float="right",l.setAttribute("data-bs-dismiss","toast"),l.setAttribute("aria-label","Close");const s=document.createElement("i");s.classList.add("icon","fas",`fa-${m[t]}`),s.style.float="left",s.style.fontSize="26pt",s.style.paddingLeft=".4rem",s.style.marginTop=".4rem",s.style.paddingRight="1rem";const d=document.createElement("div");d.classList.add("toast-body"),d.innerHTML=vr(e);const o=document.createElement("div");o.appendChild(l),o.appendChild(s),o.appendChild(d);const f=document.createElement("div");f.classList.add("toast","text-white",n[t]?n[t]:"bg-secondary"),f.setAttribute("role","alert"),f.setAttribute("aria-live","assertive"),f.setAttribute("aria-atomic","true"),t==="error"&&e.length>500&&f.setAttribute("style","width:700px"),f.appendChild(o),_r().appendChild(f);const C={animation:!0,delay:t==="warning"?15e3:5e3,autohide:t!=="error"};new bootstrap.Toast(f,C).show()}const R={toast:I,toasts:fr};let U={...X};U.interceptors.request.use(e=>{if(e.submitter){let t=e.msg?e.msg:"Action en cours";e.popover!=null&&e.popover.dispose(),e.popover=new bootstrap.Popover(e.submitter,{content:`<div class="spinner-border text-primary" role="status"> - <span class="visually-hidden">Loading...</span> -</div> `+t,html:!0,trigger:"focus"}),e.popover.show()}return e});U.interceptors.response.use(e=>{if(e.messages=e.data.messages,e.data=e.data.data,e.hasErrors=!!(e.messages&&e.messages.error&&e.messages.error.length>0),e.config.popover){var t=e.config.popover;let n="";for(ns in e.messages)for(mid in e.messages[ns])n+='<div class="alert fade show alert-'+(ns=="error"?"danger":ns)+'" role="alert">'+e.messages[ns][mid]+"</div>";n?(t._config.content=n,t.setContent(),setTimeout(()=>{t.dispose()},5e3)):t.dispose()}return e.messages&&R.toasts(e.messages),e},e=>{let t=e.response.data;e.response.status==403?t="<h4>403 - Accès interdit</h4><br />Vous n'êtes pas autorisé(e) à faire cette action.":t=e.response.data,R.toast(t,"error")});U.defaults.headers.common["X-Requested-With"]="XMLHttpRequest";const gr={uvAxios:U},E={axios:gr.uvAxios,flashMessenger:R,url:(e,t,n)=>{let m=window.__unicaenVueBaseUrl;if(t)for(let s in t)e=e.replace(`:${s}`,t[s]);let l=n?E.encodeUrlQueryParam(n):null;return m+e+(l?`?${l}`:"")},encodeUrlQueryParam:(e,t)=>{var n=[];for(var m in e)if(e.hasOwnProperty(m)){var l=e[m],s=t?t+"["+encodeURIComponent(m)+"]":encodeURIComponent(m);if(typeof l=="object"&&l!==null)n.push(E.encodeUrlQueryParam(l,s));else{var d=encodeURIComponent(l);n.push(s+"="+d)}}return n.join("&")}};window.unicaenVue=E;function yr(e,t){const n={};t===void 0&&(t={});for(const m in e){let s=m.slice(2,-4).replace("/","");n[s]=e[m].default}for(const m of document.getElementsByClassName("vue-app")){let l=W({template:m.innerHTML,components:n});if(t.beforeMount!==void 0&&t.beforeMount(l),t.autoloads!==void 0)for(const s in t.autoloads){let d=t.autoloads[s].replace("/","");l.component(s,n[d])}l.mount(m),t.afterMount!==void 0&&t.afterMount(l)}}const xr={init:yr},Cr=Object.assign({"./Application/UI/UHeures.vue":te,"./Application/Utilisateur.vue":ae,"./Intervenant/Recherche.vue":De,"./Mission/Liste.vue":Wt,"./Mission/ListeCandidatures.vue":gi,"./Mission/ListeOffreEmploi.vue":Xn,"./Mission/Mission.vue":zt,"./Mission/OffreEmploi.vue":Bn,"./Mission/Suivi.vue":ws,"./Mission/SuiviEvent.vue":Ms,"./Paiement/ListeTaux.vue":mr,"./Paiement/Taux.vue":or}),Vr={autoloads:hr};xr.init(Cr,Vr); diff --git a/public/dist/manifest.json b/public/dist/manifest.json index 7f72ad183f2babce7acbd5932343a676a003d240..621016f37f4f82cd57ef891e5446b9c36828cd06 100644 --- a/public/dist/manifest.json +++ b/public/dist/manifest.json @@ -10,7 +10,7 @@ "css": [ "assets/main-4e3d9e0c.css" ], - "file": "assets/main-ea1c4ffa.js", + "file": "assets/main-8664fb7c.js", "imports": [ "_vendor-aed55673.js" ],