<?php
require_once __DIR__.'/../../config/auth.php';require_once __DIR__.'/_tareas.php';
$admin=tareas_es_admin($conn);$colaborador=tareas_colaborador_id($conn);$accion=$_GET['accion']??'lista';$id=(int)($_GET['id']??0);$error='';
$datos=['cliente_id'=>'','responsable_id'=>'','remision_id'=>'','solicitante'=>'','titulo'=>'','detalle'=>'','fecha_vencimiento'=>'','estado'=>'Pendiente','avance'=>0];
if($id){$s=$conn->prepare('SELECT * FROM tareas WHERE id=?');$s->bind_param('i',$id);$s->execute();$encontrada=$s->get_result()->fetch_assoc();if(!$encontrada||!tareas_puede_ver($conn,$encontrada,$admin,$colaborador)){http_response_code(403);exit('No tiene permiso para acceder a esta tarea.');}$datos=$encontrada;}
if($accion==='editar'&&!$admin){http_response_code(403);exit('Sólo el administrador puede editar tareas.');}
if(($_SERVER['REQUEST_METHOD']??'GET')==='POST'){
 $tipo=$_POST['tipo']??'tarea';$tareaId=(int)($_POST['tarea_id']??$_POST['id']??0);$tarea=$tareaId?$conn->query("SELECT * FROM tareas WHERE id=$tareaId")->fetch_assoc():null;
 if($tipo==='eliminar'){
  if(!$admin||!$tarea){http_response_code(403);exit('Sólo el administrador puede eliminar tareas.');}
  $archivos=$conn->query("SELECT nombre_archivo FROM tarea_adjuntos WHERE tarea_id=$tareaId");while($a=$archivos->fetch_assoc()){$ruta=dirname(__DIR__,2).'/uploads/tareas/'.$a['nombre_archivo'];if(is_file($ruta))unlink($ruta);}
  $s=$conn->prepare('DELETE FROM tareas WHERE id=?');$s->bind_param('i',$tareaId);$s->execute();registrar_auditoria($conn,'DELETE','tareas',$tareaId,'Eliminación de tarea');header('Location: tareas.php?eliminada=1');exit;
 }
 if($tarea&&!tareas_puede_ver($conn,$tarea,$admin,$colaborador)){http_response_code(403);exit('No tiene permiso.');}
 if($tarea&&!$admin&&in_array($tarea['estado'],['Finalizado','Cancelado'],true)){header("Location: tareas.php?accion=ver&id=$tareaId&bloqueada=1");exit;}
 if($tipo==='desvincular_remision'&&$tarea){if(!$admin){http_response_code(403);exit('Sólo el Administrador puede desvincular una remisión.');}$rem=(int)($tarea['remision_id']??0);$conn->begin_transaction();try{$conn->query("UPDATE tareas SET remision_id=NULL WHERE id=$tareaId");if($rem)$conn->query("UPDATE remisiones SET tarea_id=NULL WHERE id=$rem AND tarea_id=$tareaId");registrar_auditoria($conn,'UPDATE','tareas',$tareaId,'Desvinculación de remisión');$conn->commit();header("Location: tareas.php?accion=ver&id=$tareaId&desvinculada=1");exit;}catch(Throwable $e){$conn->rollback();$error=$e->getMessage();}}
 if($tipo==='seguimiento'&&$tarea){$detalle=limpiar($_POST['detalle_seguimiento']??'');$estadosPermitidos=$admin?['Pendiente','En Proceso','Finalizado','Cancelado']:['Pendiente','En Proceso','Finalizado'];$estado=in_array($_POST['estado']??'',$estadosPermitidos,true)?$_POST['estado']:$tarea['estado'];$avance=max(0,min(100,(int)($_POST['avance']??$tarea['avance'])));if($estado==='Finalizado')$avance=100;if($detalle==='')$error='Debe escribir el detalle del seguimiento.';else{$conn->begin_transaction();try{$s=$conn->prepare('INSERT INTO tarea_seguimientos(tarea_id,detalle) VALUES(?,?)');$s->bind_param('is',$tareaId,$detalle);$s->execute();$segId=$s->insert_id;$s=$conn->prepare('UPDATE tareas SET estado=?,avance=? WHERE id=?');$s->bind_param('sii',$estado,$avance,$tareaId);$s->execute();guardar_adjunto_tarea($conn,$tareaId,$segId);registrar_auditoria($conn,'INSERT','tarea_seguimientos',$segId,'Seguimiento de tarea');$conn->commit();header("Location: tareas.php?accion=ver&id=$tareaId&seguimiento=1");exit;}catch(Throwable $e){$conn->rollback();$error=$e->getMessage();}}}
 elseif($tipo==='tarea'){$id=(int)($_POST['id']??0);if($id&&!$admin){http_response_code(403);exit('Sólo el administrador puede editar tareas.');}foreach(['cliente_id','responsable_id','remision_id'] as $k)$datos[$k]=(int)($_POST[$k]??0);foreach(['solicitante','titulo','detalle','fecha_vencimiento'] as $k)$datos[$k]=limpiar($_POST[$k]??'');$datos['estado']=in_array($_POST['estado']??'', ['Pendiente','En Proceso','Finalizado'],true)?$_POST['estado']:'Pendiente';$datos['avance']=max(0,min(100,(int)($_POST['avance']??0)));if(!$admin&&!$id){$datos['estado']='Pendiente';$datos['avance']=0;}if($datos['estado']==='Finalizado')$datos['avance']=100;if(!$datos['cliente_id']||!$datos['responsable_id']||!$datos['titulo']||!$datos['detalle']||!$datos['fecha_vencimiento'])$error='Cliente, responsable, título, detalle y vencimiento son obligatorios.';if(!$id&&$datos['remision_id']){$rem=$conn->query('SELECT tarea_id,estado FROM remisiones WHERE id='.(int)$datos['remision_id'])->fetch_assoc();if(!$rem||$rem['tarea_id']||in_array($rem['estado'],['Finalizada','Cancelada'],true))$error='La remisión seleccionada ya no está disponible.';}if(!$error){$conn->begin_transaction();try{if($id){$s=$conn->prepare('UPDATE tareas SET cliente_id=?,responsable_id=?,solicitante=?,titulo=?,detalle=?,fecha_vencimiento=?,estado=?,avance=? WHERE id=?');$s->bind_param('iisssssii',$datos['cliente_id'],$datos['responsable_id'],$datos['solicitante'],$datos['titulo'],$datos['detalle'],$datos['fecha_vencimiento'],$datos['estado'],$datos['avance'],$id);}else{$uid=tareas_usuario_id();$s=$conn->prepare('INSERT INTO tareas(cliente_id,responsable_id,remision_id,creado_por_usuario_id,solicitante,titulo,detalle,fecha_vencimiento,estado,avance) VALUES(?,?,?,?,?,?,?,?,?,?)');$s->bind_param('iiiisssssi',$datos['cliente_id'],$datos['responsable_id'],$datos['remision_id'],$uid,$datos['solicitante'],$datos['titulo'],$datos['detalle'],$datos['fecha_vencimiento'],$datos['estado'],$datos['avance']);}$s->execute();$tareaId=$id?:$s->insert_id;if(!$id&&$datos['remision_id']){$tecnico=(int)($conn->query('SELECT usuario_id FROM usuario_colaboradores WHERE colaborador_id='.(int)$datos['responsable_id'].' ORDER BY usuario_id LIMIT 1')->fetch_assoc()['usuario_id']??0);$conn->query('UPDATE remisiones SET tarea_id='.$tareaId.',tecnico_colaborador_id='.(int)$datos['responsable_id'].',tecnico_usuario_id='.($tecnico?:'NULL').' WHERE id='.(int)$datos['remision_id'].' AND tarea_id IS NULL');}guardar_adjunto_tarea($conn,$tareaId,null);registrar_auditoria($conn,$id?'UPDATE':'INSERT','tareas',$tareaId,'Gestión de tarea');$conn->commit();header("Location: tareas.php?accion=ver&id=$tareaId&guardada=1");exit;}catch(Throwable $e){$conn->rollback();$error=$e->getMessage();}}}
 else{http_response_code(403);exit('Operación no permitida.');}
}
$clientes=$conn->query("SELECT id,nombre FROM clientes WHERE estado='Activo' ORDER BY nombre");$responsables=$conn->query("SELECT id,CONCAT(nombres,' ',apellidos) nombre FROM colaboradores WHERE estado='Activo' ORDER BY nombres,apellidos");$remisionesDisponibles=$conn->query("SELECT r.id,r.numero_servicio,r.fecha,r.cliente_id,r.motivo,c.nombre cliente FROM remisiones r JOIN clientes c ON c.id=r.cliente_id WHERE r.tarea_id IS NULL AND r.estado IN ('Cargada','En Proceso') ORDER BY r.fecha DESC,r.id DESC");
include __DIR__.'/../../includes/header.php';include __DIR__.'/../../includes/sidebar.php';?>
<main class="main"><?php include __DIR__.'/../../includes/topbar.php';?><div class="content">
<?php if($accion==='nuevo'):$autoRem=[];$qa=$conn->query("SELECT r.id,r.numero_servicio,r.cliente_id,r.motivo FROM remisiones r WHERE r.tarea_id IS NULL AND r.estado IN ('Cargada','En Proceso')");while($ar=$qa->fetch_assoc())$autoRem[]=$ar;?><script>document.addEventListener('DOMContentLoaded',()=>setTimeout(()=>{const boton=document.getElementById('buscar_remision');if(!boton)return;const anterior=boton.onclick,datos=<?=json_encode($autoRem,JSON_UNESCAPED_UNICODE)?>,form=boton.closest('form');boton.onclick=()=>{anterior();setTimeout(()=>{const elegido=datos.find(x=>String(x.id)===String(document.getElementById('remision_id').value));if(!elegido)return;form.elements['cliente_id'].value=elegido.cliente_id;form.elements['titulo'].value=elegido.numero_servicio;form.elements['detalle'].value=elegido.motivo},0)}},0));</script><?php endif;?>
<?php if(in_array($accion,['nuevo','editar'],true)):$remOpts=[];while($rr=$remisionesDisponibles->fetch_assoc())$remOpts[]=$rr;?><script>document.addEventListener('DOMContentLoaded',()=>{const form=document.querySelector('form[enctype="multipart/form-data"]');if(!form)return;const row=form.querySelector('.row.g-3');if(!row)return;const wrap=document.createElement('div');wrap.className='col-12 border rounded p-3 bg-light';wrap.innerHTML='<label class="form-label"><b>Remisión vinculada (opcional)</b></label><div class="input-group"><input type="hidden" name="remision_id" id="remision_id"><input class="form-control" id="remision_texto" readonly placeholder="Sin remisión seleccionada"><button class="btn btn-outline-primary" type="button" id="buscar_remision"><i class="fa fa-search"></i> Buscar remisión</button><button class="btn btn-outline-secondary" type="button" id="quitar_remision">Quitar</button></div>';row.prepend(wrap);const opciones=<?=json_encode($remOpts,JSON_UNESCAPED_UNICODE)?>;buscar_remision.onclick=()=>{const texto=prompt('Escriba parte del número, cliente o fecha de la remisión:','');if(texto===null)return;const halladas=opciones.filter(x=>(x.numero_servicio+' '+x.cliente+' '+x.fecha).toLowerCase().includes(texto.toLowerCase()));if(!halladas.length){alert('No se encontraron remisiones disponibles.');return}const listado=halladas.slice(0,10).map((x,i)=>(i+1)+'. '+x.numero_servicio+' - '+x.cliente+' - '+x.fecha).join('\n');const elegido=Number(prompt('Seleccione el número de la remisión:\n'+listado,'1'));if(elegido>=1&&elegido<=Math.min(10,halladas.length)){remision_id.value=halladas[elegido-1].id;remision_texto.value=halladas[elegido-1].numero_servicio+' - '+halladas[elegido-1].cliente}};quitar_remision.onclick=()=>{remision_id.value='';remision_texto.value=''}});</script><?php endif;?>
<?php if($accion==='ver'&&!empty($datos['remision_id'])&&$admin):$remV=$conn->query('SELECT numero_servicio FROM remisiones WHERE id='.(int)$datos['remision_id'])->fetch_assoc();?><script>document.addEventListener('DOMContentLoaded',()=>{const cards=[...document.querySelectorAll('.card.card-hm')];const seg=cards.find(x=>x.innerText.includes('Seguimientos'));if(!seg)return;const box=document.createElement('div');box.className='card card-hm mb-3';box.innerHTML='<div class="card-body d-flex justify-content-between align-items-center"><div><b>Remisión vinculada:</b> <a href="/HM/modules/movimientos/remisiones.php?accion=ver&id=<?=(int)$datos['remision_id']?>"><?=e($remV['numero_servicio']??('#'.$datos['remision_id']))?></a></div><form method="post" onsubmit="return confirm(\'¿Desvincular esta remisión de la tarea?\')"><input type="hidden" name="tipo" value="desvincular_remision"><input type="hidden" name="tarea_id" value="<?=$id?>"><button class="btn btn-sm btn-outline-danger">Desvincular remisión</button></form></div>';seg.before(box)});</script><?php endif;?>
<?php if($admin):?><script>document.addEventListener('DOMContentLoaded',function(){const actual=<?=json_encode($datos['estado']??'')?>;document.querySelectorAll('select[name="estado"]').forEach(function(s){if(!Array.from(s.options).some(function(o){return o.value==='Cancelado';}))s.add(new Option('Cancelado','Cancelado'));if(actual==='Cancelado')s.value='Cancelado';});});</script><?php endif;?>
<?php if($accion==='lista'):
$fEstado=$_GET['estado']??'';$buscar=limpiar($_GET['buscar']??'');$hoy=date('Y-m-d');
$finAnio=date('Y-12-31');$desde=$_GET['desde']??'2026-08-01';$hasta=$_GET['hasta']??$finAnio;$vencDesde=$_GET['venc_desde']??'2026-08-01';$vencHasta=$_GET['venc_hasta']??$finAnio;
$clienteFiltro=(int)($_GET['cliente_id']??0);$responsableFiltro=(int)($_GET['responsable_id']??0);
$cond=[tareas_alcance_sql($admin,$colaborador),'DATE(t.creado_en) BETWEEN \''.$conn->real_escape_string($desde).'\' AND \''.$conn->real_escape_string($hasta).'\'','t.fecha_vencimiento BETWEEN \''.$conn->real_escape_string($vencDesde).'\' AND \''.$conn->real_escape_string($vencHasta).'\''];
if(in_array($fEstado,['Pendiente','En Proceso','Finalizado','Cancelado'],true))$cond[]="t.estado='".$conn->real_escape_string($fEstado)."'";
if($clienteFiltro)$cond[]='t.cliente_id='.$clienteFiltro;if($responsableFiltro)$cond[]='t.responsable_id='.$responsableFiltro;
if($buscar!==''){$q=$conn->real_escape_string($buscar);$cond[]="CONCAT_WS(' ',c.nombre,t.solicitante,t.titulo,t.detalle) LIKE '%$q%'";}
$lista=$conn->query("SELECT t.*,c.nombre cliente,CONCAT(co.nombres,' ',co.apellidos) responsable,COALESCE(u.nombre,u.usuario,'—') creador,(SELECT COUNT(*) FROM tarea_seguimientos s WHERE s.tarea_id=t.id) seguimientos FROM tareas t JOIN clientes c ON c.id=t.cliente_id JOIN colaboradores co ON co.id=t.responsable_id LEFT JOIN usuarios u ON u.id=t.creado_por_usuario_id WHERE ".implode(' AND ',$cond)." ORDER BY t.fecha_vencimiento,t.id");?>
<div class="d-flex justify-content-between mb-3"><div><a href="index.php">← Tablero</a><h3 class="page-title mt-2">Tareas</h3></div><a class="btn btn-hm align-self-start" href="?accion=nuevo">Nueva tarea</a></div><?php if(isset($_GET['eliminada'])):?><div class="alert alert-success">La tarea fue eliminada.</div><?php endif;?>
<form class="card card-body mb-3"><div class="row g-2">
<div class="col-md-2"><label>Creación desde</label><input class="form-control" type="date" name="desde" value="<?=e($desde)?>"></div><div class="col-md-2"><label>Creación hasta</label><input class="form-control" type="date" name="hasta" value="<?=e($hasta)?>"></div>
<div class="col-md-2"><label>Vencimiento desde</label><input class="form-control" type="date" name="venc_desde" value="<?=e($vencDesde)?>"></div><div class="col-md-2"><label>Vencimiento hasta</label><input class="form-control" type="date" name="venc_hasta" value="<?=e($vencHasta)?>"></div>
<div class="col-md-2"><label>Estado</label><select class="form-select" name="estado"><option value="">Todos</option><?php foreach(['Pendiente','En Proceso','Finalizado','Cancelado'] as $o):?><option <?=$fEstado===$o?'selected':''?>><?=$o?></option><?php endforeach;?></select></div>
<div class="col-md-3"><label>Cliente</label><select class="form-select" name="cliente_id"><option value="0">Todos</option><?php $clientesFiltro=$conn->query("SELECT id,nombre FROM clientes WHERE estado='Activo' ORDER BY nombre");while($cf=$clientesFiltro->fetch_assoc()):?><option value="<?=$cf['id']?>" <?=$clienteFiltro===(int)$cf['id']?'selected':''?>><?=e($cf['nombre'])?></option><?php endwhile;?></select></div>
<div class="col-md-3"><label>Responsable</label><select class="form-select" name="responsable_id"><option value="0">Todos</option><?php $responsablesFiltro=$conn->query("SELECT id,CONCAT(nombres,' ',apellidos) nombre FROM colaboradores WHERE estado='Activo' ORDER BY nombres,apellidos");while($rf=$responsablesFiltro->fetch_assoc()):?><option value="<?=$rf['id']?>" <?=$responsableFiltro===(int)$rf['id']?'selected':''?>><?=e($rf['nombre'])?></option><?php endwhile;?></select></div>
<div class="col-md-4"><label>Cliente/Descripción</label><input class="form-control" name="buscar" value="<?=e($buscar)?>" placeholder="Cliente, solicitante, título o descripción"></div><div class="col-md-2 d-flex align-items-end"><button class="btn btn-hm w-100">Filtrar</button></div>
</div></form><div class="card card-hm"><div class="card-body table-responsive"><table class="table table-hover"><thead><tr><th>Vencimiento</th><th>Cliente</th><th>Responsable</th><th>Cargado por</th><th>Título de la tarea</th><th>Estado</th><th>Avance</th><th>Seguimientos</th><th></th></tr></thead><tbody><?php while($t=$lista->fetch_assoc()):?><tr><td><?=e(date('d/m/Y',strtotime($t['fecha_vencimiento'])))?></td><td><?=e($t['cliente'])?></td><td><?=e($t['responsable'])?></td><td><?=e($t['creador'])?></td><td><?=e($t['titulo'])?></td><td><?=e($t['estado'])?></td><td style="min-width:130px"><div class="progress"><div class="progress-bar" style="width:<?=(int)$t['avance']?>%"><?=(int)$t['avance']?>%</div></div></td><td><?=numero_py($t['seguimientos'])?></td><td><a class="btn btn-sm btn-outline-primary" href="?accion=ver&id=<?=$t['id']?>">Abrir</a></td></tr><?php endwhile;?></tbody></table></div></div>
<?php elseif($accion==='ver'):$vista=$conn->query("SELECT t.*,c.nombre cliente,CONCAT(co.nombres,' ',co.apellidos) responsable FROM tareas t JOIN clientes c ON c.id=t.cliente_id JOIN colaboradores co ON co.id=t.responsable_id WHERE t.id=$id")->fetch_assoc();$seguimientos=$conn->query("SELECT s.* FROM tarea_seguimientos s WHERE s.tarea_id=$id ORDER BY s.creado_en DESC,s.id DESC");$adjuntos=$conn->query("SELECT * FROM tarea_adjuntos WHERE tarea_id=$id AND seguimiento_id IS NULL ORDER BY id");$bloqueada=!$admin&&in_array($vista['estado'],['Finalizado','Cancelado'],true);?>
<div class="d-flex justify-content-between mb-3"><div><a href="tareas.php">← Volver</a><h3 class="page-title mt-2"><?=e($vista['titulo'])?></h3></div><?php if($admin):?><div class="d-flex gap-2"><?php if(!$bloqueada):?><a class="btn btn-outline-primary" href="?accion=editar&id=<?=$id?>">Editar tarea</a><?php endif;?><form method="post" onsubmit="return confirm('¿Eliminar definitivamente esta tarea y sus seguimientos?');"><input type="hidden" name="tipo" value="eliminar"><input type="hidden" name="tarea_id" value="<?=$id?>"><button class="btn btn-outline-danger">Eliminar tarea</button></form></div><?php endif;?></div><?php if(isset($_GET['bloqueada'])):?><div class="alert alert-warning">La tarea está finalizada y ya no admite modificaciones ni anulación.</div><?php endif;?><div class="card card-hm mb-3"><div class="card-body"><div class="row g-3"><div class="col-md-4"><b>Cliente:</b> <?=e($vista['cliente'])?></div><div class="col-md-4"><b>Responsable:</b> <?=e($vista['responsable'])?></div><div class="col-md-4"><b>Vencimiento:</b> <?=e(date('d/m/Y',strtotime($vista['fecha_vencimiento'])))?></div><div class="col-md-4"><b>Estado:</b> <?=e($vista['estado'])?></div><div class="col-md-8"><b>Avance:</b><div class="progress"><div class="progress-bar" style="width:<?=(int)$vista['avance']?>%"><?=(int)$vista['avance']?>%</div></div></div><div class="col-12"><b>Detalle:</b><p><?=nl2br(e($vista['detalle']))?></p></div><div class="col-12"><b>Archivos de la tarea:</b> <?php if(!$adjuntos->num_rows):?><span class="text-muted">Sin archivos.</span><?php endif;while($a=$adjuntos->fetch_assoc()):?><a class="btn btn-sm btn-outline-secondary ms-1" href="descargar.php?id=<?=$a['id']?>"><i class="fa fa-paperclip"></i> <?=e($a['nombre_original'])?></a><?php endwhile;?></div></div></div></div>
<div class="card card-hm"><div class="card-body"><h5>Seguimientos</h5><?php if(!$bloqueada):?><form method="post" enctype="multipart/form-data" class="row g-2 mb-4"><input type="hidden" name="tipo" value="seguimiento"><input type="hidden" name="tarea_id" value="<?=$id?>"><div class="col-12"><textarea class="form-control" name="detalle_seguimiento" required placeholder="Detalle del seguimiento"></textarea></div><div class="col-md-3"><label>Estado</label><select class="form-select" name="estado"><?php foreach(['Pendiente','En Proceso','Finalizado'] as $o):?><option <?=$vista['estado']===$o?'selected':''?>><?=$o?></option><?php endforeach;?></select></div><div class="col-md-3"><label>Avance (%)</label><input class="form-control" type="number" min="0" max="100" name="avance" value="<?=(int)$vista['avance']?>"></div><div class="col-md-4"><label>Archivos adjuntos</label><input class="form-control" type="file" name="adjuntos[]" multiple></div><div class="col-md-2 d-flex align-items-end"><button class="btn btn-hm w-100">Guardar</button></div></form><?php endif;?><?php while($s=$seguimientos->fetch_assoc()):$sa=$conn->query('SELECT * FROM tarea_adjuntos WHERE seguimiento_id='.(int)$s['id']);?><div class="border-start border-3 ps-3 mb-3"><small class="text-muted"><?=e(date('d/m/Y H:i',strtotime($s['creado_en'])))?></small><div><?=nl2br(e($s['detalle']))?></div><?php while($a=$sa->fetch_assoc()):?><a class="btn btn-sm btn-link px-0 me-2" href="descargar.php?id=<?=$a['id']?>"><i class="fa fa-paperclip"></i> <?=e($a['nombre_original'])?></a><?php endwhile;?></div><?php endwhile;?></div></div>
<?php else:?><a href="tareas.php">← Volver</a><h3 class="page-title my-3"><?=$id?'Editar':'Nueva'?> tarea</h3><?php if($error):?><div class="alert alert-danger"><?=e($error)?></div><?php endif;?><div class="card card-hm"><div class="card-body"><form method="post" enctype="multipart/form-data"><input type="hidden" name="tipo" value="tarea"><input type="hidden" name="id" value="<?=$id?>"><div class="row g-3"><div class="col-md-6"><label>Cliente *</label><select class="form-select" name="cliente_id" required><option value="">Seleccione</option><?php while($c=$clientes->fetch_assoc()):?><option value="<?=$c['id']?>" <?=$datos['cliente_id']==$c['id']?'selected':''?>><?=e($c['nombre'])?></option><?php endwhile;?></select></div><div class="col-md-6"><label>Responsable *</label><select class="form-select" name="responsable_id" required><option value="">Seleccione</option><?php while($r=$responsables->fetch_assoc()):?><option value="<?=$r['id']?>" <?=$datos['responsable_id']==$r['id']?'selected':''?>><?=e($r['nombre'])?></option><?php endwhile;?></select></div><div class="col-md-6"><label>Solicitante</label><input class="form-control" name="solicitante" value="<?=e($datos['solicitante'])?>"></div><div class="col-md-6"><label>Título de la tarea *</label><input class="form-control" name="titulo" value="<?=e($datos['titulo'])?>" required></div><div class="col-md-3"><label>Vencimiento *</label><input class="form-control" type="date" name="fecha_vencimiento" value="<?=e($datos['fecha_vencimiento'])?>" required></div><div class="col-md-3"><label>Estado</label><select class="form-select" name="estado"><?php foreach(['Pendiente','En Proceso','Finalizado'] as $o):?><option <?=$datos['estado']===$o?'selected':''?>><?=$o?></option><?php endforeach;?></select></div><div class="col-md-3"><label>Avance (%)</label><input class="form-control" type="number" min="0" max="100" name="avance" value="<?=(int)$datos['avance']?>"></div><div class="col-md-6"><label>Archivos adjuntos</label><input class="form-control" type="file" name="adjuntos[]" multiple><small class="text-muted">Máximo 10 MB por archivo.</small></div><div class="col-12"><label>Detalle *</label><textarea class="form-control" name="detalle" rows="5" required><?=e($datos['detalle'])?></textarea></div></div><button class="btn btn-hm mt-3">Guardar tarea</button></form></div></div><?php endif;?></div></main><?php include __DIR__.'/../../includes/footer.php';?>
