Skip to content
Snippets Groups Projects
Commit f2b8bd82 authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Meilleur intégration des validations de candidatures dans les règles de workflow

parent 05b83524
No related branches found
No related tags found
No related merge requests found
......@@ -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>&nbsp;
@click.prevent="validerCandidature">
<i class="fa-solid fa-check"></i>
</a>&nbsp;
<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>
......
......@@ -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>&nbsp;
<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})
},
......
......@@ -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,
],
],
],
],
......
......@@ -95,6 +95,36 @@ class IntervenantController extends AbstractController
/**
*
* @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();
......@@ -137,16 +167,78 @@ class IntervenantController extends AbstractController
/**
*
* @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;
}
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');
}
......@@ -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;
}
}
......@@ -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', [
......
......@@ -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
......@@ -109,7 +109,6 @@ class CandidatureService extends AbstractEntityService
$query = $this->getEntityManager()->createQuery($dql)->setParameters($parameters);
$result = $query->getResult();
/*$triggers = $this->getOffreEmploiPrivileges();*/
$triggers = [];
$properties = [
......
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);
......@@ -10,7 +10,7 @@
"css": [
"assets/main-4e3d9e0c.css"
],
"file": "assets/main-ea1c4ffa.js",
"file": "assets/main-8664fb7c.js",
"imports": [
"_vendor-aed55673.js"
],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment