'use client';
import {useEffect,useState} from 'react';
import {Checkbox} from './ui/checkbox';
import type {BillingProfile} from '@/lib/invoice-profile';
export function BillingProfileForm(){const [profile,setProfile]=useState<Omit<BillingProfile,'electronicInvoice'>&{electronicInvoice:boolean}>({kind:'individual',name:'',postalCode:'',city:'',address:'',taxNumber:'',email:'',electronicInvoice:false}),[ready,setReady]=useState(false),[busy,setBusy]=useState(false),[message,setMessage]=useState(''),[error,setError]=useState(''),[invoices,setInvoices]=useState<{id:string;mode:string;status:string;number:string|null;created_at:number}[]>([]);
 async function load(){setError('');try{const r=await fetch('/api/billing-profile',{cache:'no-store'}),d=await r.json() as {error?:string;profile:BillingProfile|null;invoices:typeof invoices};if(!r.ok)throw Error(d.error);if(d.profile)setProfile(d.profile);setInvoices(d.invoices);setReady(true)}catch(e){setError(e instanceof Error?e.message:'Nem tölthető be.')}}useEffect(()=>{void load()},[]);
 async function save(e:React.FormEvent){e.preventDefault();setBusy(true);setError('');setMessage('');try{const r=await fetch('/api/billing-profile',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(profile)}),d=await r.json() as {error?:string;profile:BillingProfile|null;invoices:typeof invoices};if(!r.ok)throw Error(d.error);setMessage('Számlázási adatok mentve. A következő új vásárláshoz ezeket használjuk.')}catch(e){setError(e instanceof Error?e.message:'A mentés nem sikerült.')}finally{setBusy(false)}}
 return <section className="invoice-profile"><h3>Számlázási adatok</h3><p>Magánszemélyek és jogi személyek is vásárolhatnak. Az automatikus számlázás jelenleg magyar számlázási címmel használható.</p>{!ready?<button onClick={()=>void load()}>Adatok betöltése</button>:<form onSubmit={save}><label className="field"><span>Vásárló típusa</span><select value={profile.kind} onChange={e=>setProfile({...profile,kind:e.target.value as BillingProfile['kind'],taxNumber:''})}><option value="individual">Magánszemély</option><option value="company">Vállalkozás / jogi személy</option></select></label><div className="invoice-fields">{([['name',profile.kind==='company'?'Cégnév / szervezet neve':'Számlázási név'],['postalCode','Irányítószám'],['city','Település'],['address','Utca, házszám'],['email','Számla e-mail-címe'],...(profile.kind==='company'?[['taxNumber','Adószám (12345678-1-12)']]:[])] as [keyof typeof profile,string][]).map(([key,label])=><label className="field" key={key}><span>{label}</span><input required type={key==='email'?'email':'text'} maxLength={key==='postalCode'?4:key==='taxNumber'?13:200} value={String(profile[key])} onChange={e=>setProfile({...profile,[key]:e.target.value})}/></label>)}</div><label className="invoice-consent"><Checkbox checked={profile.electronicInvoice} onCheckedChange={v=>setProfile({...profile,electronicInvoice:v===true})}/><span>Elektronikus számlát kérek a megadott e-mail-címre.</span></label><p className="auth-note">A Számlázz.hu állítja ki és küldi el az AAM számlát. A megkezdett vásárlás és a meglévő előfizetés számlázási adatai nem változnak visszamenőleg; ezek javítását az ügyfélszolgálaton kérheted. <a href="/adatvedelem" target="_blank" rel="noopener noreferrer">Adatkezelés</a></p><button disabled={busy||!profile.electronicInvoice} type="submit">{busy?'Mentés…':'Számlázási adatok mentése'}</button></form>}{message&&<p role="status">{message}</p>}{error&&<p role="alert" className="auth-error">{error}</p>}{invoices.length>0&&<details><summary>Legutóbbi számláim</summary>{invoices.map(i=><p key={i.id}>{i.mode==='test'?'Teszt · ':''}{i.number||'Számla feldolgozás alatt'} · {new Date(i.created_at).toLocaleDateString('hu-HU')}<br/>{i.status==='issued'?'Kiállítva; az e-mail küldését kértük a számlázótól.':'A fizetésed megmaradt. A számla feldolgozása még folyamatban van.'}</p>)}</details>}</section>
}
