<?php
// ============================================================================
//  딸깍설치 (/setup/) — 거래처 프로필 목록·검색 (딸깍P드라이버 v1.5.0 부터 저장/불러오기)
//  - 로그인 없음. 저장은 딸깍P드라이버 앱에서, 여기서는 확인·검색·(휴지통) 삭제.
//  - 데이터: setup-data/<tenant>/*.json  (tenant = 카운터 페어링코드, 기본 default)  · API: /setup/api.php
// ============================================================================
require_once dirname(__DIR__) . '/lib.php';
$tenant = mb_strtolower(trim((string)($_GET['t'] ?? 'hanbyeol'))); if ($tenant === '' || $tenant === 'default' || !preg_match('/^[a-z0-9\-]{2,32}$/', $tenant)) $tenant = 'hanbyeol';
$DATA = dirname(__DIR__) . '/board/setup-data';   // board/ 만 웹서버 쓰기 가능(777) — 게시판 데이터와 같은 영역
$tenants = []; foreach (glob("$DATA/*", GLOB_ONLYDIR) ?: [] as $d) $tenants[] = basename($d);
if (!in_array($tenant, $tenants, true) && $tenants && !in_array('hanbyeol', $tenants, true)) $tenant = $tenants[0];
$d = hb_scan(); $f0 = null; foreach ($d['root'] as $m) if ($m['featured']) { $f0 = $m; break; }
hb_head('딸깍설치', <<<CSS
.top{display:grid;grid-template-columns:1.2fr .8fr;gap:18px;margin-top:22px}
.searchbox{display:flex;align-items:center;gap:10px;background:var(--paper);border:1.5px solid var(--blue);border-radius:10px;padding:10px 14px}.searchbox input{flex:1;border:0;outline:0;background:none;min-width:0;font-size:15px}
.tsel{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.tsel a{font-size:12px;border:1px solid var(--line);border-radius:999px;padding:3px 10px;color:var(--mute)}.tsel a.on{background:var(--blue);color:#fff;border-color:var(--blue)}
.steps{display:grid;grid-template-columns:1fr;gap:10px}.step{display:flex;gap:12px;align-items:flex-start;font-size:13px}.step .n{flex:0 0 26px;height:26px;border-radius:50%;background:var(--blue);color:#fff;font-weight:900;display:grid;place-items:center;font-size:12px}.step b{display:block}.step p{margin:0;color:var(--mute)}
.pf{display:grid;grid-template-columns:1fr;gap:10px;margin-top:16px}
.pfi{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:grid;grid-template-columns:1fr auto;gap:6px 14px;align-items:center}
.pfi b{font-size:15px}.pfi .s{color:var(--mute);font-size:12.5px}.pfi .chips{display:flex;gap:6px;flex-wrap:wrap}.chip{font-size:11px;background:var(--blue-soft);color:var(--blue);border-radius:999px;padding:2px 8px}
.pfi .r{text-align:right;font-size:12px;color:var(--mute);white-space:nowrap}
.pfi details{grid-column:1/-1;font-size:12.5px}.pfi summary{cursor:pointer;color:var(--blue);font-weight:700}
.pfi table{margin-top:8px;font-size:12.5px}.pfi thead th{padding:6px 10px}.pfi tbody td{padding:6px 10px}
.empty{color:var(--mute);padding:26px;text-align:center;background:var(--paper);border:1px dashed var(--line);border-radius:12px}
@media (max-width:860px){.top{grid-template-columns:1fr}}
CSS);
?>
<div class="bar"><?php hb_nav(''); ?><h1>⚡ 딸깍설치<small>거래처마다 저장된 프린터 구성 — 딸깍P드라이버에서 [거래처 불러오기] 하면 한 번에 설치됩니다</small></h1></div>
<div class="wrap">
  <div class="top">
    <div>
      <div class="searchbox">🔎 <input id="q" placeholder="거래처명 · 지점 · 모델 · IP 로 검색" autocomplete="off"></div>
      <?php if (count($tenants) > 1): ?><div class="tsel"><?php foreach ($tenants as $t): ?><a href="/setup/?t=<?= e($t) ?>" class="<?= $t === $tenant ? 'on' : '' ?>"><?= e($t) ?></a><?php endforeach; ?></div><?php endif; ?>
      <div class="pf" id="pf"><div class="empty">불러오는 중…</div></div>
    </div>
    <div class="card">
      <b style="display:block;margin-bottom:10px">이렇게 씁니다</b>
      <div class="steps">
        <div class="step"><span class="n">1</span><div><b>첫 방문 — 저장</b><p>딸깍P드라이버로 설치를 마치면 하단에 [거래처로 저장]이 뜹니다. 거래처명만 적고 저장.</p></div></div>
        <div class="step"><span class="n">2</span><div><b>다음 PC — 검색</b><p>설치 탭 맨 위 [🏢 거래처 불러오기]에서 이름을 검색 → [불러오기]. IP 가 바뀌었어도 같은 모델을 찾아 맞춥니다.</p></div></div>
        <div class="step"><span class="n">3</span><div><b>[선택 설치]</b><p>첫 방문과 같은 구성(프린터명·컬러/흑백/팩스·양면·기본프린터)으로 설치됩니다.</p></div></div>
      </div>
      <?php if ($f0): ?><a class="btn" style="margin-top:14px" href="/?code=<?= rawurlencode($f0['code']) ?>">🖨 딸깍P드라이버 다운로드 (<?= e($f0['size']) ?>)</a><?php endif; ?>
      <p class="tip">저장·수정·삭제는 딸깍P드라이버 v1.5.0 이상 앱에서 합니다. 이 화면은 확인용입니다.</p>
    </div>
  </div>
</div>
<script>
(function(){
  var T=<?= json_encode($tenant) ?>, box=document.getElementById('pf'), q=document.getElementById('q'), tm=null;
  function esc(s){return String(s==null?'':s).replace(/[&<>"]/g,function(c){return{'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;'}[c]})}
  function load(){
    fetch('/setup/api.php?op=list&t='+encodeURIComponent(T)+'&q='+encodeURIComponent(q.value.trim()),{headers:{'X-DdalkkakP':'web'}}).then(function(r){return r.json()}).then(function(d){
      if(!d.ok){ box.innerHTML='<div class="empty">'+esc(d.error||'오류')+'</div>'; return; }
      if(!d.items.length){ box.innerHTML='<div class="empty">'+(q.value?'검색 결과가 없습니다.':'아직 저장된 거래처 프로필이 없습니다.<br>딸깍P드라이버에서 설치 후 [거래처로 저장]을 누르면 여기에 나타납니다.')+'</div>'; return; }
      box.innerHTML=d.items.map(function(p){ return '<div class="pfi" data-id="'+esc(p.id)+'"><div><b>'+esc(p.customer)+'</b>'+(p.site?' <span class="s">· '+esc(p.site)+'</span>':'')+'<div class="s">🖨 '+p.count+'대 <span class="chips">'+(p.brands||[]).map(function(b){return '<span class="chip">'+esc(b)+'</span>'}).join('')+'</span>'+(p.memo?' · '+esc(p.memo):'')+'</div></div><div class="r">'+esc((p.updated||'').slice(0,10))+(p.created_by?'<br>'+esc(p.created_by):'')+'</div><details><summary>프린터 보기</summary><div class="tw" data-load="1"></div></details></div>'; }).join('');
      box.querySelectorAll('details').forEach(function(dt){ dt.addEventListener('toggle',function(){ if(!dt.open) return; var w=dt.querySelector('.tw'); if(!w.dataset.load) return; delete w.dataset.load; var id=dt.closest('.pfi').dataset.id;
        fetch('/setup/api.php?op=get&t='+encodeURIComponent(T)+'&id='+encodeURIComponent(id),{headers:{'X-DdalkkakP':'web'}}).then(function(r){return r.json()}).then(function(g){ if(!g.ok){ w.textContent=g.error; return; }
          w.innerHTML='<table><thead><tr><th>프린터명</th><th>모델</th><th>IP/포트</th><th>설치</th><th>드라이버</th></tr></thead><tbody>'+(g.profile.printers||[]).map(function(x){ return '<tr><td>'+esc(x.name)+'</td><td>'+esc(x.model)+'</td><td class="mono">'+esc(x.ip||x.port||'USB')+'</td><td>'+esc((x.types||[]).join('/'))+(x.duplex==='duplex'?' · 양면':'')+(x['default']&&x['default']!=='none'?' · 기본:'+esc(x['default']):'')+'</td><td>'+esc(x.driver_print)+(x.driver_fax?' / '+esc(x.driver_fax):'')+'</td></tr>'; }).join('')+'</tbody></table>'; }); }); });
    }).catch(function(){ box.innerHTML='<div class="empty">서버 연결 실패</div>'; });
  }
  q.addEventListener('input',function(){ clearTimeout(tm); tm=setTimeout(load,200); }); load();
})();
</script>
<?php hb_foot();
