<?php
declare(strict_types=1);require_once __DIR__.'/../conexao.php';require_once __DIR__.'/ativos_helpers.php';atiExigirLogin();$mysqli->set_charset('utf8mb4');$id=(int)($_GET['id']??$_POST['id']??0);$a=atiCarregarCentral($mysqli,$id);if(!$a)exit('Ativo não encontrado.');atiExigirAcesso($a['tipo_ativo']);$f=atiCarregarFonte($mysqli,$a);$r=atiResumoFonte($a['tipo_ativo'],$f?:[]);$erro='';if($_SERVER['REQUEST_METHOD']==='POST'){try{atiValidarCsrf();$acao=atiTexto($_POST['acao']??'criar',20);if($acao==='encerrar'){$relId=(int)($_POST['rel_id']??0);$stmt=$mysqli->prepare("UPDATE ti_ativo_relacionamentos SET ativo=0,fim_em=NOW() WHERE id=? AND (ativo_origem_id=? OR ativo_destino_id=?)");$stmt->bind_param('iii',$relId,$id,$id);$stmt->execute();$stmt->close();atiRegistrarEvento($mysqli,$id,'RELACIONAMENTO','Relacionamento encerrado','Registro #'.$relId);atiFlash('sucesso','Relacionamento encerrado.');atiRedirecionar('relacionamentos.php?id='.$id);} $dest=(int)($_POST['ativo_destino_id']??0);$tipo=atiTexto($_POST['tipo_relacao']??'',50);$obs=atiNulo($_POST['observacoes']??'',500);if($dest<=0||$dest===$id||$tipo==='')throw new RuntimeException('Selecione outro ativo e o tipo da relação.');$outro=atiCarregarCentral($mysqli,$dest);if(!$outro)throw new RuntimeException('Ativo relacionado não encontrado.');atiExigirAcesso($outro['tipo_ativo']);$u=atiUsuario();$check=$mysqli->prepare("SELECT id FROM ti_ativo_relacionamentos WHERE ativo_origem_id=? AND ativo_destino_id=? AND tipo_relacao=? AND ativo=1 LIMIT 1");$check->bind_param('iis',$id,$dest,$tipo);$check->execute();$ja=$check->get_result()->fetch_assoc();$check->close();if($ja)throw new RuntimeException('Esse relacionamento já está ativo.');$stmt=$mysqli->prepare("INSERT INTO ti_ativo_relacionamentos(ativo_origem_id,ativo_destino_id,tipo_relacao,observacoes,registrado_por) VALUES(?,?,?,?,?)");$stmt->bind_param('iisss',$id,$dest,$tipo,$obs,$u);if(!$stmt->execute()){if($stmt->errno===1062)throw new RuntimeException('Esse relacionamento já está ativo.');throw new RuntimeException('Não foi possível criar o relacionamento.');}$stmt->close();atiRegistrarEvento($mysqli,$id,'RELACIONAMENTO','Ativo relacionado',$tipo.' • '.$outro['codigo_ativo']);atiRegistrarEvento($mysqli,$dest,'RELACIONAMENTO','Ativo relacionado',$tipo.' • '.$a['codigo_ativo']);atiFlash('sucesso','Relacionamento criado com sucesso.');atiRedirecionar('relacionamentos.php?id='.$id);}catch(Throwable $e){$erro=$e->getMessage();}}
$opcoes=atiListarResumos($mysqli,atiTiposPermitidos());$rels=atiRelacionamentos($mysqli,$id);
?>
<!doctype html><html lang="pt-BR"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Relacionar ativos</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet"><link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet"><link href="ativos_style.css" rel="stylesheet"></head><body><div class="top"></div><div class="grid-bg"></div><div class="app"><header class="header"><div class="header-inner"><div class="brand"><div class="logo"><img src="../assets/logo_pref.jpg"></div><div><span class="eyebrow"><i class="bi bi-diagram-3-fill"></i><?=atiE($a['codigo_ativo'])?></span><h1>Relacionamentos do ativo</h1><p><?=atiE($r['nome'])?></p></div></div><a class="head-btn primary" href="ativo.php?id=<?=$id?>">Voltar</a></div></header><main class="main"><?php if($erro):?><div class="flash error"><?=atiE($erro)?></div><?php endif;?><?php $fl=atiConsumirFlash();if($fl):?><div class="flash success"><?=atiE($fl['mensagem'])?></div><?php endif;?><form method="post" class="form-card"><input type="hidden" name="id" value="<?=$id?>"><input type="hidden" name="acao" value="criar"><input type="hidden" name="csrf_token" value="<?=atiE(atiCsrf())?>"><section class="form-section"><h3><i class="bi bi-link-45deg"></i>Novo relacionamento</h3><div class="form-grid"><div class="group two"><label>Outro ativo *</label><select class="control" name="ativo_destino_id" required><option value="">Selecione</option><?php foreach($opcoes as $o):if((int)$o['id']===$id)continue;?><option value="<?=(int)$o['id']?>"><?=atiE($o['codigo_ativo'].' • '.$o['nome'].' • '.($o['patrimonio']?:$o['identificador']?:'sem identificação'))?></option><?php endforeach;?></select></div><div class="group"><label>Relação *</label><select class="control" name="tipo_relacao" required><?php foreach(['PERTENCE_AO_KIT'=>'Pertence ao kit','UTILIZA'=>'Utiliza','SUBSTITUI'=>'Substitui temporariamente','VINCULADO_A'=>'Vinculado a','INSTALADO_EM'=>'Instalado em','EMPRESTADO_JUNTO'=>'Emprestado junto','COMPONENTE_DE'=>'Componente de'] as $k=>$v):?><option value="<?=$k?>"><?=$v?></option><?php endforeach;?></select></div><div class="group full"><label>Observações</label><input class="control" name="observacoes" maxlength="500"></div></div></section><div class="actions"><button class="button green">Criar relacionamento</button></div></form><section class="panel"><div class="panel-head"><div class="panel-title"><span class="panel-icon"><i class="bi bi-diagram-3"></i></span><div><h3>Relacionamentos ativos</h3><p><?=count($rels)?> registro(s).</p></div></div></div><div class="doc-grid" style="padding:14px"><?php foreach($rels as $x):?><article class="doc"><strong><?=atiE($x['codigo_ativo'].' • '.($x['resumo_outro']['nome']??$x['tipo_ativo']))?></strong><span><?=atiE(str_replace('_',' ',$x['tipo_relacao']))?></span><span><?=atiE($x['observacoes']?:'Sem observação')?></span><div style="display:flex;gap:8px"><a href="ativo.php?id=<?=(int)$x['outro_ativo_id']?>">Abrir</a><form method="post" onsubmit="return confirm('Encerrar este relacionamento?')"><input type="hidden" name="id" value="<?=$id?>"><input type="hidden" name="acao" value="encerrar"><input type="hidden" name="rel_id" value="<?=(int)$x['id']?>"><input type="hidden" name="csrf_token" value="<?=atiE(atiCsrf())?>"><button style="border:0;background:none;color:#bf263d;font-size:7px;font-weight:900;cursor:pointer">Encerrar</button></form></div></article><?php endforeach;?><?php if(!$rels):?><div class="empty" style="grid-column:1/-1"><i class="bi bi-diagram-3"></i><strong>Nenhum relacionamento ativo</strong></div><?php endif;?></div></section></main></div></body></html>
