import { PanelShell } from "@/components/panel-shell";
import { createMarketingPackage } from "@/lib/admin-actions";
import { requirePlatformAccess } from "@/lib/auth";
import { db } from "@/lib/db";

const statusLabel:Record<string,string>={NEW:"Novo contato",AWAITING_PAYMENT:"Aguardando pagamento",BILLING_ERROR:"Revisar cobrança",CONVERTED:"Cliente ativo"};

export default async function Marketing({searchParams}:{searchParams:Promise<{pacote?:string}>}){
  const {user,role}=await requirePlatformAccess(["SUPER_ADMIN","ADMIN","SELLER"]);
  const seller=role==="SELLER";
  const [packages,clients,query]=await Promise.all([
    db.marketingPackage.findMany({where:seller?{active:true}:undefined,include:{materials:{orderBy:{sortOrder:"asc"}}},orderBy:{createdAt:"desc"}}),
    db.campaignLead.findMany({where:seller?{sellerId:user.id}:undefined,include:{seller:{select:{name:true}}},orderBy:{updatedAt:"desc"},take:100}),
    searchParams,
  ]);
  return <PanelShell eyebrow="COMERCIAL" title="Marketing e vendas" admin activePath="/admin/marketing">
    {query.pacote==="criado"&&<div className="form-card"><strong>Pacote de materiais publicado com sucesso.</strong></div>}
    {!seller&&<article className="form-card"><p className="eyebrow">BIBLIOTECA COMERCIAL</p><h2>Criar pacote de campanha ou projeto</h2><p>Agrupe até cinco artes, apresentações ou documentos e inclua o roteiro que orienta a venda.</p><form action={createMarketingPackage} className="form-stack"><div className="form-grid two"><label>Nome do pacote<input name="title" required placeholder="Ex.: Sites para empresas"/></label><label>Projeto ou categoria<input name="category" required placeholder="Sites, Delivery, Loja online..."/></label></div><label>Descrição<textarea name="description" required rows={3} placeholder="Explique quando e como usar este pacote."/></label><label>Roteiro de venda<textarea name="salesScript" required rows={9} placeholder="Apresentação, benefícios, objeções, respostas e chamada para ação."/></label><label>Materiais para download (até 5 arquivos, 5 MB cada)<input name="materials" type="file" multiple accept=".png,.jpg,.jpeg,.webp,.pdf,.zip,.docx,.pptx"/></label><label className="check-line"><input name="active" type="checkbox" defaultChecked/> Disponível para os vendedores</label><button className="button">Publicar pacote <span>→</span></button></form></article>}
    <section><div className="module-toolbar"><div><p className="eyebrow">MEUS CLIENTES</p><h2>{seller?"Contatos atribuídos a você":"Carteira comercial"}</h2></div><span>{clients.length} contato(s)</span></div>{clients.length?<div className="plan-admin-grid">{clients.map(client=><article className="form-card" key={client.id}><div className="card-head"><div><h3>{client.companyName}</h3><small>{client.responsibleName} · {client.phone}</small></div><span className={`pill ${client.status==="CONVERTED"?"active":""}`}>{statusLabel[client.status]??client.status}</span></div><p>{client.email}</p><div className="plan-limit-summary"><span>{client.planName}</span><span>{client.segment}</span>{!seller&&<span>{client.seller?.name??"Sem vendedor"}</span>}</div></article>)}</div>:<div className="module-empty"><h2>Nenhum contato atribuído</h2><p>Quando o vendedor for indicado no cadastro, o cliente aparecerá aqui.</p></div>}</section>
    <section><div className="module-toolbar"><div><p className="eyebrow">MATERIAIS E ROTEIROS</p><h2>Pacotes disponíveis</h2></div><span>{packages.length} pacote(s)</span></div>{packages.length?<div className="catalog-table">{packages.map(item=><article className="form-card" key={item.id}><div className="card-head"><div><p className="eyebrow">{item.category}</p><h2>{item.title}</h2></div><span className={`pill ${item.active?"active":""}`}>{item.active?"Disponível":"Oculto"}</span></div><p>{item.description}</p><details className="plan-editor"><summary>Ver roteiro comercial</summary><div style={{whiteSpace:"pre-wrap",lineHeight:1.7}}>{item.salesScript}</div></details><div className="row-actions">{item.materials.map(material=><a className="link-button" href={material.fileUrl} download key={material.id}>{material.title} ↓</a>)}</div></article>)}</div>:<div className="module-empty"><h2>Nenhum pacote publicado</h2></div>}</section>
  </PanelShell>;
}
