/* ==========================================================================
 * ADMIN NEXT — page-checkin.jsx  (ตั้งค่าเช็คอินรับรางวัล)
 * ========================================================================== */
const CHK_TURN=[["turnover","โอเวอร์"],["credit","เครดิต"],["fixed","ระบุจำนวน"]];
function CheckinPage({ toast }) {
  const [loading,setLoading]=useState(true),[err,setErr]=useState(null),[saving,setSaving]=useState(false);
  const [enabled,setEnabled]=useState(false);
  const [maxDay,setMaxDay]=useState(7);
  const [reqDep,setReqDep]=useState(false);
  const [depMin,setDepMin]=useState("0");
  const [days,setDays]=useState({}); // {day: {reward_amount, turnover_multiplier, max_withdraw, turnover_type, can_withdraw, is_active}}
  const load=useCallback(async()=>{ setLoading(true); setErr(null);
    try{ const d=await api("/checkin/config");
      setEnabled(!!d.enabled); setMaxDay(Number(d.maxDay||7)); setReqDep(!!d.requireTodayDeposit); setDepMin(String(Number(d.todayDepositMin||0)/100));
      const m={}; (d.config||[]).forEach(r=>{ m[r.day]={ reward_amount:String(Number(r.reward_amount||0)/100), turnover_multiplier:String(Number(r.turnover_multiplier||0)), max_withdraw:String(Number(r.max_withdraw||0)/100), turnover_type:['credit','fixed'].includes(r.turnover_type)?r.turnover_type:'turnover', can_withdraw:r.can_withdraw!==false, is_active:r.is_active!==false }; });
      setDays(m);
    }catch(e){ if(e.status===401||e.status===403){window.__nxAuthFail&&window.__nxAuthFail();} setErr(e.status===403?"ไม่มีสิทธิ์ตั้งค่าเช็คอิน":(e.message||"โหลดไม่สำเร็จ")); }
    finally{ setLoading(false); } },[]);
  useEffect(()=>{ load(); },[load]);
  const dayVal=(day)=> days[day]||{reward_amount:"0",turnover_multiplier:"0",max_withdraw:"0",turnover_type:"turnover",can_withdraw:true,is_active:true};
  const setDay=(day,k,v)=>setDays(o=>({...o,[day]:{...dayVal(day),[k]:v}}));
  const save=async()=>{ setSaving(true);
    try{
      const list=[]; for(let day=1; day<=maxDay; day++){ const d=dayVal(day); list.push({ day, reward_type:"credit", reward_amount:parseFloat(d.reward_amount)||0, is_active:!!d.is_active, turnover_type:d.turnover_type, turnover_multiplier:parseInt(d.turnover_multiplier,10)||0, max_withdraw:parseFloat(d.max_withdraw)||0, can_withdraw:!!d.can_withdraw }); }
      await api("/checkin/config",{method:"POST",body:{ days:list, enabled, maxDay, requireTodayDeposit:reqDep, todayDepositMin:parseFloat(depMin)||0 }});
      toast("บันทึกการตั้งค่าเช็คอินแล้ว"); load();
    }catch(e){ toast(e.message||"บันทึกไม่สำเร็จ"); }finally{ setSaving(false); } };
  const inp="h-9 w-full rounded-lg border border-line bg-sunken px-2 text-sm text-fg focus:border-accent focus:bg-surface focus:outline-none";
  const H=({children,extra=""})=>(<th className={"whitespace-nowrap px-2 py-2.5 text-left text-[13px] font-bold text-fg-2 "+extra}>{children}</th>);
  if(err) return <HistErr msg={err} onRetry={load}/>;
  if(loading) return (<div className="space-y-3"><div className="skel h-20 w-full"/><div className="skel h-64 w-full"/></div>);
  return (<div className="space-y-4">
    {/* ตั้งค่ารวม */}
    <div className="rounded-xl border border-line bg-surface p-4 shadow-sm">
      <div className="flex flex-wrap items-center gap-4">
        <label className="flex items-center gap-2 text-sm"><input type="checkbox" checked={enabled} onChange={(e)=>setEnabled(e.target.checked)} className="h-4 w-4 accent-[var(--accent)]"/><span className="font-medium text-fg-2">เปิดใช้งานเช็คอิน</span></label>
        <label className="flex items-center gap-2 text-sm"><span className="text-fg-2">จำนวนวันสูงสุด</span><input type="number" min="1" max="31" value={maxDay} onChange={(e)=>setMaxDay(Math.max(1,Math.min(31,parseInt(e.target.value,10)||1)))} className={inp+" w-20"}/></label>
        <label className="flex items-center gap-2 text-sm"><input type="checkbox" checked={reqDep} onChange={(e)=>setReqDep(e.target.checked)} className="h-4 w-4 accent-[var(--accent)]"/><span className="text-fg-2">ต้องฝากวันนี้ก่อนเช็คอิน</span></label>
        {reqDep && <label className="flex items-center gap-2 text-sm"><span className="text-fg-2">ยอดฝากขั้นต่ำ (บาท)</span><input type="number" min="0" value={depMin} onChange={(e)=>setDepMin(e.target.value)} className={inp+" w-28 tnum"}/></label>}
        <button disabled={saving} onClick={save} className="ml-auto flex h-9 items-center gap-1.5 rounded-lg bg-accent px-4 text-sm font-semibold text-accent-fg shadow-sm hover:bg-accent-h disabled:opacity-50"><Ic d={I.check} size={16} sw={2.5}/> {saving?"กำลังบันทึก…":"บันทึก"}</button>
      </div>
    </div>
    {/* รางวัลต่อวัน */}
    <div className="overflow-hidden rounded-xl border border-line bg-surface shadow-sm"><div className="overflow-x-auto"><table className="w-full min-w-[900px] border-collapse text-sm">
      <thead className="border-b-2 border-accent/25 bg-accent-soft"><tr>{H({children:"วัน"})}{H({children:"รางวัล (บาท)"})}{H({children:"ชนิดเทิร์น"})}{H({children:"ตัวคูณเทิร์น"})}{H({children:"ถอนสูงสุด (บาท)"})}{H({children:"ถอนได้"})}{H({children:"เปิด"})}</tr></thead>
      <tbody>
        {Array.from({length:maxDay}).map((_,i)=>{ const day=i+1; const d=dayVal(day); return (<tr key={day} className="border-b border-line-soft last:border-0">
          <td className="px-2 py-2 font-semibold text-fg">วันที่ {day}</td>
          <td className="px-2"><input type="number" min="0" value={d.reward_amount} onChange={(e)=>setDay(day,"reward_amount",e.target.value)} className={inp+" tnum w-24"}/></td>
          <td className="px-2"><select value={d.turnover_type} onChange={(e)=>setDay(day,"turnover_type",e.target.value)} className={inp+" w-28"}>{CHK_TURN.map(([k,l])=><option key={k} value={k}>{l}</option>)}</select></td>
          <td className="px-2"><input type="number" min="0" value={d.turnover_multiplier} onChange={(e)=>setDay(day,"turnover_multiplier",e.target.value)} className={inp+" tnum w-20"}/></td>
          <td className="px-2"><input type="number" min="0" value={d.max_withdraw} onChange={(e)=>setDay(day,"max_withdraw",e.target.value)} className={inp+" tnum w-24"} placeholder="0 = ไม่จำกัด"/></td>
          <td className="px-2"><input type="checkbox" checked={d.can_withdraw} onChange={(e)=>setDay(day,"can_withdraw",e.target.checked)} className="h-4 w-4 accent-[var(--accent)]"/></td>
          <td className="px-2"><input type="checkbox" checked={d.is_active} onChange={(e)=>setDay(day,"is_active",e.target.checked)} className="h-4 w-4 accent-[var(--accent)]"/></td>
        </tr>); })}
      </tbody>
    </table></div></div>
    <div className="flex justify-end"><button disabled={saving} onClick={save} className="flex h-10 items-center gap-1.5 rounded-lg bg-accent px-5 text-sm font-semibold text-accent-fg shadow-sm hover:bg-accent-h disabled:opacity-50"><Ic d={I.check} size={16} sw={2.5}/> {saving?"กำลังบันทึก…":"บันทึกการตั้งค่า"}</button></div>
  </div>);
}
