<?php
use App\Core\Csrf;
$h=static fn($v)=>htmlspecialchars((string)$v,ENT_QUOTES,'UTF-8');
$labels=['accorde'=>'Compte rendu à compléter','envoye'=>'Envoyé à la Direction','valide'=>'Validé par la Direction','refuse'=>'Refusé · à corriger'];
$monthDate=new DateTimeImmutable($month.'-01');
$previous=$monthDate->modify('-1 month')->format('Y-m');
$next=$monthDate->modify('+1 month')->format('Y-m');
$monthNames=['01'=>'janvier','02'=>'février','03'=>'mars','04'=>'avril','05'=>'mai','06'=>'juin','07'=>'juillet','08'=>'août','09'=>'septembre','10'=>'octobre','11'=>'novembre','12'=>'décembre'];
$monthLabel=($monthNames[$monthDate->format('m')]??$monthDate->format('m')).' '.$monthDate->format('Y');
$directionQuery=$canManage?'&mode=direction':'';
?>
<style>
.rw{max-width:1180px;margin:auto}.rw-hero,.rw-card{background:#fff;border:1px solid #dbe3f0;border-radius:16px;padding:1.2rem;margin-bottom:1rem}.rw-hero{background:linear-gradient(120deg,#172d69,#2454d7);color:#fff;display:flex;justify-content:space-between;gap:1rem;align-items:center}.rw-hero a,.rw-nav a{background:#fff;color:#173273;padding:.7rem 1rem;border-radius:9px;font-weight:700;text-decoration:none}.rw-nav{display:flex;justify-content:space-between;align-items:center;gap:.7rem}.rw-nav strong{font-size:1.2rem;text-transform:capitalize}.rw-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.rw-card header{display:flex;justify-content:space-between;gap:1rem}.rw-status{font-weight:800;color:#244fc5}.rw-badge{display:inline-block;padding:.25rem .55rem;border-radius:999px;background:#eee9ff;color:#5b38aa;font-weight:800}.rw-alert{border-left:5px solid #e59a14;background:#fff8e8}.rw label{display:grid;gap:.35rem;font-weight:700;margin:.7rem 0}.rw input,.rw textarea{padding:.7rem;border:1px solid #bdc9dc;border-radius:8px;max-width:100%}.rw textarea{min-height:100px}.rw button{padding:.7rem 1rem;border:0;border-radius:8px;background:#2454d7;color:#fff;font-weight:800}.rw button[value=refuser],.rw button[value=refuser_modification],.rw .rw-remove{background:#b42318}.rw-actions{display:flex;gap:.6rem;flex-wrap:wrap}.rw-change{margin-top:1rem;padding:1rem;background:#f5f7fb;border-radius:12px}.rw-slot{display:grid;grid-template-columns:1.2fr 1fr 1fr auto;gap:.6rem;align-items:end;margin:.6rem 0}.rw-empty{text-align:center;color:#62708a;padding:2rem}@media(max-width:760px){.rw-grid{grid-template-columns:1fr}.rw-slot{grid-template-columns:1fr 1fr}.rw-slot label:first-child{grid-column:1/-1}.rw-hero{align-items:flex-start;flex-direction:column}.rw-nav{flex-wrap:wrap}}
</style>
<main class="rw">
<header class="rw-hero"><div><small>PLANNING MENSUEL DE TÉLÉTRAVAIL</small><h1><?=$h($professor['prenom'].' '.$professor['nom'])?></h1><p>Télétravail annualisé hors vacances, comptes rendus et validations.</p></div><a href="/public/professeurs-pro/voir?professeur=<?=rawurlencode((string)$professor['public_token'])?>">← Retour au profil</a></header>
<?php if(!empty($_SESSION['success'])):?><div class="rw-card"><?=$h($_SESSION['success']);unset($_SESSION['success'])?></div><?php endif?>
<?php if(!empty($_SESSION['error'])):?><div class="rw-card rw-alert"><?=$h($_SESSION['error']);unset($_SESSION['error'])?></div><?php endif?>
<nav class="rw-card rw-nav">
 <a href="?professeur=<?=rawurlencode((string)$professor['public_token'])?>&mois=<?=$previous?><?=$directionQuery?>">← Mois précédent</a>
 <strong><?=$h($monthLabel)?></strong>
 <a href="?professeur=<?=rawurlencode((string)$professor['public_token'])?>&mois=<?=$next?><?=$directionQuery?>">Mois suivant →</a>
</nav>
<?php if($canManage):?><section class="rw-card"><h2>Planning prévisionnel</h2><p>Les plages annualisées sont générées comme les cours, sans aucune occurrence pendant les vacances scolaires. Pour déplacer ou modifier une occurrence, utilisez la demande présente sur sa carte : le professeur devra l’accepter.</p><a href="/public/professeurs-pro/planning?professeur=<?=rawurlencode((string)$professor['public_token'])?>&mode=direction">Ouvrir le planning prévisionnel</a></section><?php endif?>
<?php foreach($items as$item):?>
<article class="rw-card<?=$item['changement_statut']==='demande'?' rw-alert':''?>">
 <header><div><h2><?=date('d/m/Y',strtotime($item['date_teletravail']))?> · <?=substr($item['heure_debut'],0,5)?>–<?=substr($item['heure_fin'],0,5)?></h2><span class="rw-status"><?=$h($labels[$item['statut']]??$item['statut'])?></span> <span class="rw-badge"><?=$item['mode_teletravail']==='annualise'?'Annualisé':'Ponctuel'?></span></div></header>
 <?php if($item['consignes_direction']):?><p><b>Consignes de la Direction :</b><br><?=$h($item['consignes_direction'])?></p><?php endif?>
 <?php if($item['changement_statut']==='demande'):?>
 <section class="rw-change"><h3>Répartition à valider par le professeur</h3><p><b>Nouveaux créneaux proposés :</b></p><ul><?php foreach($item['proposed_slots'] as $slot):?><li><?=date('d/m/Y',strtotime($slot['date_teletravail']))?> · <?=substr($slot['heure_debut'],0,5)?>–<?=substr($slot['heure_fin'],0,5)?></li><?php endforeach?></ul><p><b>Motif :</b> <?=$h($item['changement_motif'])?></p>
 <?php if(!$canManage):?><form method="post" action="/public/professeurs-pro/teletravail/modification/decider"><?=Csrf::field()?><input type="hidden" name="professeur_id" value="<?=(int)$professor['id']?>"><input type="hidden" name="remote_work_id" value="<?=(int)$item['id']?>"><input type="hidden" name="mois" value="<?=$h($month)?>"><label>Commentaire éventuel<textarea name="commentaire"></textarea></label><div class="rw-actions"><button name="decision" value="accepter">Accepter le nouveau créneau</button><button name="decision" value="refuser_modification">Refuser</button></div></form><?php else:?><p><b>En attente de la réponse du professeur.</b></p><?php endif?>
 </section>
 <?php elseif(in_array($item['changement_statut'],['accepte','refuse'],true)&&$item['changement_reponse_at']):?><p><b>Dernière modification :</b> <?=$item['changement_statut']==='accepte'?'acceptée':'refusée'?> par le professeur<?=$item['changement_reponse_comment']?' — '.$h($item['changement_reponse_comment']):''?>.</p><?php endif?>
 <?php if($canManage&&$item['mode_teletravail']==='annualise'&&$item['changement_statut']!=='demande'&&in_array($item['statut'],['accorde','refuse'],true)):?>
 <details class="rw-change"><summary><b>Déplacer ou éclater ce créneau</b></summary><form method="post" action="/public/professeurs-pro/teletravail/modification/demander" class="rw-split-form"><?=Csrf::field()?><input type="hidden" name="professeur_id" value="<?=(int)$professor['id']?>"><input type="hidden" name="remote_work_id" value="<?=(int)$item['id']?>"><input type="hidden" name="mois" value="<?=$h($month)?>"><p>Répartissez librement la durée dans la semaine. La somme doit rester identique à la durée initiale.</p><div class="rw-slots"><div class="rw-slot"><label>Date<input type="date" name="slot_date[]" value="<?=$h($item['date_teletravail'])?>" required></label><label>Début<input type="time" name="slot_debut[]" value="<?=substr($item['heure_debut'],0,5)?>" step="300" required></label><label>Fin<input type="time" name="slot_fin[]" value="<?=substr($item['heure_fin'],0,5)?>" step="300" required></label></div></div><div class="rw-actions"><button type="button" class="rw-add-slot">+ Ajouter un créneau</button></div><label>Motif<textarea name="motif_modification" required></textarea></label><button>Envoyer au professeur pour validation</button></form></details>
 <?php endif?>
<?php $canWriteReport=in_array($item['statut'],['accorde','refuse'],true)&&($canManage||$item['date_teletravail']<=date('Y-m-d'));?>
 <?php if($canWriteReport):?><form method="post" action="/public/professeurs-pro/teletravail/envoyer"><?=Csrf::field()?><input type="hidden" name="professeur_id" value="<?=(int)$professor['id']?>"><input type="hidden" name="remote_work_id" value="<?=(int)$item['id']?>"><input type="hidden" name="mois" value="<?=$h($month)?>"><?php if($canManage):?><input type="hidden" name="mode" value="direction"><?php endif?><label>Compte rendu — tâches effectuées<textarea name="taches_effectuees" required placeholder="Décrivez précisément les tâches réalisées pendant cette plage."><?=$h($item['taches_effectuees'])?></textarea></label><?php if($item['statut']==='refuse'):?><p><b>Motif du refus :</b> <?=$h($item['decision_comment'])?></p><?php endif?><button><?=$canManage?'Enregistrer le test et envoyer':'Envoyer le compte rendu à la Direction'?></button></form>
 <?php elseif(!$canManage&&in_array($item['statut'],['accorde','refuse'],true)):?><p><b>Saisie disponible à partir du <?=date('d/m/Y',strtotime($item['date_teletravail']))?>.</b></p>
 <?php else:?><p><b>Compte rendu :</b><br><?=$item['taches_effectuees']?$h($item['taches_effectuees']):'Non encore renseigné.'?></p><?php endif?>
 <?php if($canManage&&$item['statut']==='envoye'):?><form method="post" action="/public/professeurs-pro/teletravail/decider"><?=Csrf::field()?><input type="hidden" name="professeur_id" value="<?=(int)$professor['id']?>"><input type="hidden" name="remote_work_id" value="<?=(int)$item['id']?>"><input type="hidden" name="mois" value="<?=$h($month)?>"><label>Commentaire de décision<textarea name="commentaire"></textarea></label><div class="rw-actions"><button name="decision" value="valider">Valider le compte rendu</button><button name="decision" value="refuser">Refuser avec motif</button></div></form><?php elseif($item['decision_comment']):?><p><b>Commentaire de la Direction :</b> <?=$h($item['decision_comment'])?></p><?php endif?>
</article>
<?php endforeach?>
<?php if(!$items):?><section class="rw-card rw-empty">Aucune plage de télétravail pour ce mois.</section><?php endif?>
</main>
<template id="rw-slot-template"><div class="rw-slot"><label>Date<input type="date" name="slot_date[]" required></label><label>Début<input type="time" name="slot_debut[]" step="300" required></label><label>Fin<input type="time" name="slot_fin[]" step="300" required></label><button type="button" class="rw-remove">Retirer</button></div></template>
<script>
document.querySelectorAll('.rw-add-slot').forEach(function(button){button.addEventListener('click',function(){var form=button.closest('form'),node=document.getElementById('rw-slot-template').content.cloneNode(true);form.querySelector('.rw-slots').appendChild(node);});});
document.addEventListener('click',function(event){if(event.target.classList.contains('rw-remove'))event.target.closest('.rw-slot').remove();});
</script>
