<?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();$tipo=atiTexto($_POST['tipo_documento']??'',60);$desc=atiNulo($_POST['descricao']??'',500);$arq=$_FILES['arquivo']??null;if($tipo===''||!is_array($arq)||($arq['error']??UPLOAD_ERR_NO_FILE)!==UPLOAD_ERR_OK)throw new RuntimeException('Informe o tipo e selecione um arquivo.');$tam=(int)$arq['size'];if($tam<=0||$tam>12*1024*1024)throw new RuntimeException('O arquivo deve possuir no máximo 12 MB.');$finfo=new finfo(FILEINFO_MIME_TYPE);$mime=$finfo->file($arq['tmp_name'])?:'';$perm=['application/pdf'=>'pdf','image/jpeg'=>'jpg','image/png'=>'png'];if(!isset($perm[$mime]))throw new RuntimeException('Envie somente PDF, JPG ou PNG.');$pasta=__DIR__.'/uploads/'.date('Y/m');if(!is_dir($pasta)&&!mkdir($pasta,0775,true)&&!is_dir($pasta))throw new RuntimeException('Não foi possível criar a pasta de documentos.');$nome=bin2hex(random_bytes(18)).'.'.$perm[$mime];$dest=$pasta.'/'.$nome;if(!move_uploaded_file($arq['tmp_name'],$dest))throw new RuntimeException('Não foi possível salvar o arquivo.');$rel=str_replace(__DIR__.'/', '',$dest);$hash=hash_file('sha256',$dest);$orig=atiTexto($arq['name'],255);$u=atiUsuario();$stmt=$mysqli->prepare("INSERT INTO ti_ativo_documentos(ativo_id,tipo_documento,descricao,arquivo,nome_original,mime_type,tamanho_bytes,hash_sha256,enviado_por) VALUES(?,?,?,?,?,?,?,?,?)");$stmt->bind_param('isssssiss',$id,$tipo,$desc,$rel,$orig,$mime,$tam,$hash,$u);if(!$stmt->execute()){@unlink($dest);throw new RuntimeException('Não foi possível registrar o documento.');}$stmt->close();atiRegistrarEvento($mysqli,$id,'DOCUMENTO','Documento anexado',$tipo.' • '.$orig);atiFlash('sucesso','Documento anexado com sucesso.');atiRedirecionar('ativo.php?id='.$id);}catch(Throwable $e){$erro=$e->getMessage();}}
?>
<!doctype html><html lang="pt-BR"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Anexar documento</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-paperclip"></i><?=atiE($a['codigo_ativo'])?></span><h1>Documento 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;?><form method="post" enctype="multipart/form-data" class="form-card"><input type="hidden" name="id" value="<?=$id?>"><input type="hidden" name="csrf_token" value="<?=atiE(atiCsrf())?>"><section class="form-section"><h3><i class="bi bi-file-earmark-arrow-up-fill"></i>Novo documento</h3><div class="form-grid"><div class="group"><label>Tipo *</label><select class="control" name="tipo_documento" required><option value="">Selecione</option><?php foreach(['FOTO'=>'Foto','NOTA_FISCAL'=>'Nota fiscal','GARANTIA'=>'Garantia','LAUDO'=>'Laudo','ORCAMENTO'=>'Orçamento','TERMO'=>'Termo','MANUAL'=>'Manual','OUTRO'=>'Outro'] as $k=>$v):?><option value="<?=$k?>"><?=$v?></option><?php endforeach;?></select></div><div class="group two"><label>Arquivo *</label><input class="control" type="file" name="arquivo" accept=".pdf,.jpg,.jpeg,.png" required></div><div class="group full"><label>Descrição</label><input class="control" name="descricao" maxlength="500"></div></div></section><div class="actions"><a class="button" href="ativo.php?id=<?=$id?>">Cancelar</a><button class="button green">Anexar documento</button></div></form></main></div></body></html>
