<?php
require_once __DIR__.'/../../config/auth.php';require_once __DIR__.'/_comun.php';
$tipo=$_GET['tipo']??'';if(!in_array($tipo,informes_tipos(),true)){http_response_code(404);exit('Tipo de documento inválido.');}
$gestiona=informes_puede_gestionar($conn);$error='';
if(($_SERVER['REQUEST_METHOD']??'GET')==='POST'){
 if(!$gestiona){http_response_code(403);exit('No tiene permiso para modificar documentos.');}
 $accion=$_POST['accion']??'guardar';
 if($accion==='eliminar'){$id=(int)($_POST['id']??0);$s=$conn->prepare('SELECT nombre_archivo FROM informes_avisos_documentos WHERE id=? AND tipo=?');$s->bind_param('is',$id,$tipo);$s->execute();$d=$s->get_result()->fetch_assoc();if($d){$ruta=dirname(__DIR__,2).'/uploads/informes_avisos/'.$d['nombre_archivo'];$s=$conn->prepare('DELETE FROM informes_avisos_documentos WHERE id=?');$s->bind_param('i',$id);$s->execute();if(is_file($ruta))unlink($ruta);registrar_auditoria($conn,'DELETE','informes_avisos_documentos',$id,'Eliminación de '.$tipo);}header('Location: documentos.php?tipo='.urlencode($tipo).'&eliminado=1');exit;}
 $fecha=$_POST['fecha']??'';$titulo=limpiar($_POST['titulo']??'');$descripcion=limpiar($_POST['descripcion']??'');$vigencia=$_POST['vigencia']??null;$archivo=$_FILES['archivo']??null;
 if(!$fecha||!$titulo||!$archivo||($archivo['error']??UPLOAD_ERR_NO_FILE)!==UPLOAD_ERR_OK)$error='Fecha, título y documento son obligatorios.';
 else{$permitidos=['pdf','doc','docx','xls','xlsx','ppt','pptx','txt','jpg','jpeg','png'];$ext=strtolower(pathinfo($archivo['name'],PATHINFO_EXTENSION));if(!in_array($ext,$permitidos,true)||$archivo['size']>20971520)$error='Tipo de archivo no permitido o tamaño mayor a 20 MB.';else{$dir=dirname(__DIR__,2).'/uploads/informes_avisos';if(!is_dir($dir))mkdir($dir,0775,true);$nombre=bin2hex(random_bytes(16)).'.'.$ext;if(!move_uploaded_file($archivo['tmp_name'],$dir.'/'.$nombre))$error='No se pudo guardar el documento.';else{$mime=function_exists('mime_content_type')?mime_content_type($dir.'/'.$nombre):($archivo['type']??'');$uid=(int)$_SESSION['user_id'];$vigencia=$vigencia?:null;$s=$conn->prepare('INSERT INTO informes_avisos_documentos(tipo,fecha,titulo,descripcion,vigencia,nombre_original,nombre_archivo,mime,tamano,usuario_id) VALUES(?,?,?,?,?,?,?,?,?,?)');$s->bind_param('ssssssssii',$tipo,$fecha,$titulo,$descripcion,$vigencia,$archivo['name'],$nombre,$mime,$archivo['size'],$uid);$s->execute();registrar_auditoria($conn,'INSERT','informes_avisos_documentos',$s->insert_id,'Carga de '.$tipo);header('Location: documentos.php?tipo='.urlencode($tipo).'&guardado=1');exit;}}}
 }
$s=$conn->prepare('SELECT d.*,COALESCE(u.nombre,u.usuario) cargado_por FROM informes_avisos_documentos d LEFT JOIN usuarios u ON u.id=d.usuario_id WHERE d.tipo=? ORDER BY d.fecha DESC,d.id DESC');$s->bind_param('s',$tipo);$s->execute();$lista=$s->get_result();include __DIR__.'/../../includes/header.php';include __DIR__.'/../../includes/sidebar.php';?>
<main class="main"><?php include __DIR__.'/../../includes/topbar.php';?><div class="content"><div class="d-flex justify-content-between align-items-center mb-3"><div><a href="index.php">← Informes y Avisos</a><h3 class="page-title mt-2"><?=e($tipo)?></h3></div></div><?php if(isset($_GET['guardado'])):?><div class="alert alert-success">Documento cargado correctamente.</div><?php endif;?><?php if(isset($_GET['eliminado'])):?><div class="alert alert-success">Documento eliminado.</div><?php endif;?><?php if($error):?><div class="alert alert-danger"><?=e($error)?></div><?php endif;?>
<?php if($gestiona):?><div class="card card-hm mb-3"><div class="card-body"><h5>Cargar documento</h5><form method="post" enctype="multipart/form-data" class="row g-3"><input type="hidden" name="accion" value="guardar"><div class="col-md-3"><label>Fecha *</label><input class="form-control" type="date" name="fecha" value="<?=date('Y-m-d')?>" required></div><div class="col-md-5"><label>Título *</label><input class="form-control" name="titulo" required></div><div class="col-md-4"><label>Vigencia</label><input class="form-control" type="date" name="vigencia"></div><div class="col-12"><label>Descripción</label><textarea class="form-control" name="descripcion" rows="3"></textarea></div><div class="col-md-8"><label>Documento *</label><input class="form-control" type="file" name="archivo" required><small class="text-muted">PDF, Office, texto o imagen. Máximo 20 MB.</small></div><div class="col-md-4 d-flex align-items-end"><button class="btn btn-hm w-100">Cargar documento</button></div></form></div></div><?php endif;?>
<div class="card card-hm"><div class="card-body table-responsive"><table class="table table-hover"><thead><tr><th>Fecha</th><th>Título</th><th>Descripción</th><th>Vigencia</th><th>Documento</th><th>Cargado por</th><?php if($gestiona):?><th></th><?php endif;?></tr></thead><tbody><?php if(!$lista->num_rows):?><tr><td colspan="7" class="text-center text-muted py-4">No hay documentos cargados.</td></tr><?php else:while($d=$lista->fetch_assoc()):?><tr><td><?=e(date('d/m/Y',strtotime($d['fecha'])))?></td><td><?=e($d['titulo'])?></td><td><?=nl2br(e($d['descripcion']))?></td><td><?=e($d['vigencia']?date('d/m/Y',strtotime($d['vigencia'])):'Sin fecha')?></td><td><a class="btn btn-sm btn-outline-primary" href="descargar.php?id=<?=$d['id']?>"><i class="fa fa-download me-1"></i><?=e($d['nombre_original'])?></a></td><td><?=e($d['cargado_por']??'—')?></td><?php if($gestiona):?><td><form method="post" onsubmit="return confirm('¿Eliminar este documento?');"><input type="hidden" name="accion" value="eliminar"><input type="hidden" name="id" value="<?=$d['id']?>"><button class="btn btn-sm btn-outline-danger"><i class="fa fa-trash"></i></button></form></td><?php endif;?></tr><?php endwhile;endif;?></tbody></table></div></div></div></main><?php include __DIR__.'/../../includes/footer.php';?>
