<?php
require_once __DIR__.'/../../config/auth.php';require_once __DIR__.'/helpers.php';
$accion=$_GET['accion']??'lista';$id=filter_input(INPUT_GET,'id',FILTER_VALIDATE_INT)?:0;$error='';
if($_SERVER['REQUEST_METHOD']==='POST'){
 try{
  if(($_POST['tipo_accion']??'')==='novedad'){
   $cid=(int)$_POST['contrato_id'];$nov=limpiar($_POST['novedad']??'');if($nov==='')throw new RuntimeException('La novedad es obligatoria.');
   $archivo=guardar_archivo_movimiento('archivo_novedad','contratos');
   $s=$conn->prepare('INSERT INTO contrato_novedades(contrato_id,novedad,archivo) VALUES(?,?,?)');$s->bind_param('iss',$cid,$nov,$archivo);$s->execute();$s->close();header("Location: ?accion=ver&id=$cid");exit;
  }
  $id=(int)($_POST['id']??0);$cliente=(int)$_POST['cliente_id'];$titulo=limpiar($_POST['titulo']??'');$detalle=limpiar($_POST['detalle']??'');$monto=numero_entero($_POST['monto']??0);$inicio=$_POST['fecha_inicio']?:null;$fin=$_POST['fecha_fin']?:null;$estado=$_POST['estado']??'Borrador';$archivo=guardar_archivo_movimiento('archivo','contratos');
  if(!$cliente||$titulo==='')throw new RuntimeException('Cliente y título son obligatorios.');
  if($id){if($archivo){$s=$conn->prepare('UPDATE contratos SET cliente_id=?,titulo=?,detalle=?,monto=?,fecha_inicio=?,fecha_fin=?,estado=?,archivo=? WHERE id=?');$s->bind_param('issdssssi',$cliente,$titulo,$detalle,$monto,$inicio,$fin,$estado,$archivo,$id);}else{$s=$conn->prepare('UPDATE contratos SET cliente_id=?,titulo=?,detalle=?,monto=?,fecha_inicio=?,fecha_fin=?,estado=? WHERE id=?');$s->bind_param('issdsssi',$cliente,$titulo,$detalle,$monto,$inicio,$fin,$estado,$id);}}else{$s=$conn->prepare('INSERT INTO contratos(cliente_id,titulo,detalle,monto,fecha_inicio,fecha_fin,estado,archivo) VALUES(?,?,?,?,?,?,?,?)');$s->bind_param('issdssss',$cliente,$titulo,$detalle,$monto,$inicio,$fin,$estado,$archivo);}
  $s->execute();$nuevo=$id?:$s->insert_id;$s->close();header("Location: ?accion=ver&id=$nuevo");exit;
 }catch(Throwable $e){$error=$e->getMessage();}
}
$clientes=$conn->query("SELECT id,nombre FROM clientes WHERE estado='Activo' ORDER BY nombre");
$d=['cliente_id'=>'','titulo'=>'','detalle'=>'','monto'=>0,'fecha_inicio'=>'','fecha_fin'=>'','estado'=>'Borrador','archivo'=>''];
if($id){$s=$conn->prepare('SELECT * FROM contratos WHERE id=?');$s->bind_param('i',$id);$s->execute();$d=$s->get_result()->fetch_assoc()?:$d;$s->close();}
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==='lista'):$lista=$conn->query('SELECT co.*,c.nombre cliente FROM contratos co JOIN clientes c ON c.id=co.cliente_id ORDER BY co.id DESC');?>
<div class="d-flex justify-content-between mb-4"><div><h3 class="page-title">Contratos</h3></div><a class="btn btn-hm" href="?accion=nuevo">Nuevo contrato</a></div><div class="card card-hm"><div class="card-body"><input id="buscar" class="form-control mb-3" placeholder="Buscar"><div class="table-responsive"><table class="table" id="tabla"><thead><tr><th>Cliente</th><th>Título</th><th>Monto</th><th>Estado</th><th></th></tr></thead><tbody><?php while($f=$lista->fetch_assoc()):?><tr><td><?=e($f['cliente'])?></td><td><?=e($f['titulo'])?></td><td>Gs. <?=numero_py($f['monto'])?></td><td><?=e($f['estado'])?></td><td><a class="btn btn-sm btn-outline-primary" href="?accion=ver&id=<?=$f['id']?>">Abrir</a></td></tr><?php endwhile;?></tbody></table></div></div></div><script>buscar.oninput=()=>document.querySelectorAll('#tabla tbody tr').forEach(x=>x.style.display=x.innerText.toLowerCase().includes(buscar.value.toLowerCase())?'':'none');</script>
<?php elseif($accion==='ver'&&$id):$n=$conn->prepare('SELECT * FROM contrato_novedades WHERE contrato_id=? ORDER BY creado_en DESC');$n->bind_param('i',$id);$n->execute();$nov=$n->get_result();?>
<a href="?">← Volver</a><div class="d-flex justify-content-between my-3"><h3 class="page-title"><?=e($d['titulo'])?></h3><a class="btn btn-outline-primary" href="?accion=editar&id=<?=$id?>">Editar</a></div><div class="card card-hm mb-3"><div class="card-body"><p><?=nl2br(e($d['detalle']))?></p><strong>Monto: Gs. <?=numero_py($d['monto'])?></strong><?php if($d['archivo']):?> · <a href="<?=e($d['archivo'])?>" target="_blank">Ver archivo</a><?php endif;?></div></div>
<div class="card card-hm mb-3"><div class="card-body"><h5>Cargar novedad</h5><form method="post" enctype="multipart/form-data"><input type="hidden" name="tipo_accion" value="novedad"><input type="hidden" name="contrato_id" value="<?=$id?>"><textarea class="form-control mb-2" name="novedad" required placeholder="Detalle de la novedad"></textarea><input class="form-control mb-2" type="file" name="archivo_novedad"><button class="btn btn-hm">Guardar novedad</button></form></div></div>
<?php while($f=$nov->fetch_assoc()):?><div class="card mb-2"><div class="card-body"><small><?=e($f['creado_en'])?></small><p class="mb-1"><?=nl2br(e($f['novedad']))?></p><?php if($f['archivo']):?><a href="<?=e($f['archivo'])?>" target="_blank">Archivo adjunto</a><?php endif;?></div></div><?php endwhile;$n->close();?>
<?php else:?>
<a href="?">← Volver</a><h3 class="page-title my-3"><?=$id?'Editar':'Nuevo'?> contrato</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="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']?>" <?=$d['cliente_id']==$c['id']?'selected':''?>><?=e($c['nombre'])?></option><?php endwhile;?></select></div><div class="col-md-6"><label>Título *</label><input class="form-control" name="titulo" value="<?=e($d['titulo'])?>" required></div><div class="col-12"><label>Detalle</label><textarea class="form-control" name="detalle" rows="5"><?=e($d['detalle'])?></textarea></div><div class="col-md-6"><label>Monto</label><input class="form-control numero-miles" name="monto" value="<?=numero_py($d['monto'])?>"></div><div class="col-md-3"><label>Inicio</label><input class="form-control" type="date" name="fecha_inicio" value="<?=e($d['fecha_inicio'])?>"></div><div class="col-md-3"><label>Fin</label><input class="form-control" type="date" name="fecha_fin" value="<?=e($d['fecha_fin'])?>"></div><div class="col-md-6"><label>Estado</label><select class="form-select" name="estado"><?php foreach(['Borrador','Vigente','Finalizado','Cancelado'] as $o):?><option <?=$d['estado']===$o?'selected':''?>><?=$o?></option><?php endforeach;?></select></div><div class="col-md-6"><label>Archivo</label><input class="form-control" type="file" name="archivo"></div></div><button class="btn btn-hm mt-3">Guardar</button></form></div></div>
<?php endif;?></div></main><?php include __DIR__.'/../../includes/footer.php';?>
