// Mock data — pedidos do Diskat Presentes

// Clientes — schema: { id, nome, telefone, email, instagram, endereco }
// Nome é obrigatório. Pelo menos 1 dos 3 (telefone/email/instagram) deve estar preenchido.
// Endereço é opcional.
const MOCK_CLIENTES = [
  { id:'CL-0001', nome:'Rafael Otoni',       telefone:'',              email:'',                  instagram:'@rafa.otoni',     endereco:'' },
  { id:'CL-0002', nome:'Larissa Campos',     telefone:'',              email:'',                  instagram:'@lari.campos',    endereco:'' },
  { id:'CL-0003', nome:'Pedro Henrique',     telefone:'',              email:'pedro.h@email.com', instagram:'',                endereco:'' },
  { id:'CL-0004', nome:'Marina Schuster',    telefone:'',              email:'',                  instagram:'@mari.schus',     endereco:'' },
  { id:'CL-0005', nome:'Camila Reis',        telefone:'',              email:'',                  instagram:'@camis.reis',     endereco:'' },
  { id:'CL-0006', nome:'Diogo Albuquerque',  telefone:'',              email:'',                  instagram:'@dieguinho.alb',  endereco:'' },
  { id:'CL-0007', nome:'Juliana Prado',      telefone:'',              email:'',                  instagram:'@juju.prado',     endereco:'' },
  { id:'CL-0008', nome:'Bruno Tavares',      telefone:'(11) 98842-0000', email:'',                instagram:'',                endereco:'' },
];

const MOCK_PEDIDOS = [
  { id:'DK-2026-0142', data:'2026-05-04', cliente:'Rafael Otoni', contato:'@rafa.otoni · WhatsApp', canal:'WhatsApp', produto:'Action Figure Goku SSJ Blue · 18cm', qtd:1, arquivo:'goku_ssj_v3.stl', cor:'Pintado à mão', filamento:'Resina ABS-Like', gramas:145, tempoImpressao:9.5, precoVenda:289, custoProducao:78.5, freteCusto:24.9, freteCobrado:32, taxaPlataforma:0, formaPagamento:'PIX', statusPagamento:'Pago', statusImpressao:'Pos-processamento', statusEntrega:'Pendente', prazoPrometido:'2026-05-08', rastreio:'', tags:['custom'] },
  { id:'DK-2026-0141', data:'2026-05-04', cliente:'Larissa Campos', contato:'@lari.campos', canal:'Instagram', produto:'Vaso Geométrico Hexagonal · M', qtd:2, arquivo:'vaso_hex_M.stl', cor:'Verde sálvia + Branco', filamento:'PLA', gramas:220, tempoImpressao:6, precoVenda:89.9, custoProducao:18.4, freteCusto:19.5, freteCobrado:22, taxaPlataforma:0, formaPagamento:'PIX', statusPagamento:'Pago', statusImpressao:'Imprimindo', statusEntrega:'Pendente', prazoPrometido:'2026-05-09', rastreio:'', tags:[] },
  { id:'DK-2026-0140', data:'2026-05-03', cliente:'Pedro Henrique', contato:'pedro.h@email.com', canal:'Site', produto:'Chaveiro Logo Personalizado · 5un', qtd:5, arquivo:'chaveiro_custom.stl', cor:'Preto fosco', filamento:'PETG', gramas:45, tempoImpressao:2.5, precoVenda:49.9, custoProducao:6.2, freteCusto:14.9, freteCobrado:18, taxaPlataforma:2.4, formaPagamento:'Transf. bancária', statusPagamento:'Pago', statusImpressao:'Pronto', statusEntrega:'Em trânsito', prazoPrometido:'2026-05-06', rastreio:'BR123456789BR', tags:['custom'] },
  { id:'DK-2026-0139', data:'2026-05-03', cliente:'Marina Schuster', contato:'@mari.schus', canal:'Instagram', produto:'Luminária Lua Cheia · 16cm', qtd:1, arquivo:'lua_cheia_16.stl', cor:'Branco translúcido', filamento:'PLA', gramas:310, tempoImpressao:12, precoVenda:179, custoProducao:42, freteCusto:28, freteCobrado:30, taxaPlataforma:0, formaPagamento:'PIX', statusPagamento:'Aguardando', statusImpressao:'Fila', statusEntrega:'Pendente', prazoPrometido:'2026-05-12', rastreio:'', tags:['aguard-pix'] },
  { id:'DK-2026-0138', data:'2026-05-02', cliente:'Bruno Tavares', contato:'Shopee · #SH8842', canal:'Shopee', produto:'Mini Baby Yoda · 8cm', qtd:1, arquivo:'baby_yoda_v2.stl', cor:'Pintado · 4 cores', filamento:'Resina', gramas:38, tempoImpressao:4, precoVenda:69.9, custoProducao:14.8, freteCusto:16.5, freteCobrado:0, taxaPlataforma:13.98, formaPagamento:'Shopee', statusPagamento:'Pago', statusImpressao:'Falhou', statusEntrega:'Pendente', prazoPrometido:'2026-05-07', rastreio:'', tags:['reimprimir'] },
  { id:'DK-2026-0137', data:'2026-05-02', cliente:'Camila Reis', contato:'@camis.reis', canal:'WhatsApp', produto:'Porta-Caneta Controle Nintendo', qtd:1, arquivo:'porta_caneta_nin.stl', cor:'Cinza + Roxo', filamento:'PLA', gramas:165, tempoImpressao:5.5, precoVenda:79.9, custoProducao:14, freteCusto:19.5, freteCobrado:22, taxaPlataforma:0, formaPagamento:'PIX', statusPagamento:'Pago', statusImpressao:'Pronto', statusEntrega:'Entregue', prazoPrometido:'2026-05-05', rastreio:'BR998877665BR', tags:[] },
  { id:'DK-2026-0136', data:'2026-05-01', cliente:'Diogo Albuquerque', contato:'@dieguinho.alb', canal:'Instagram', produto:'Suporte Headset Dragão', qtd:1, arquivo:'sup_drag_v4.stl', cor:'Vermelho + Preto', filamento:'PETG', gramas:280, tempoImpressao:11, precoVenda:159.9, custoProducao:36.5, freteCusto:26, freteCobrado:28, taxaPlataforma:0, formaPagamento:'PIX', statusPagamento:'Pago', statusImpressao:'Imprimindo', statusEntrega:'Pendente', prazoPrometido:'2026-05-09', rastreio:'', tags:[] },
  { id:'DK-2026-0135', data:'2026-04-30', cliente:'Juliana Prado', contato:'@juju.prado', canal:'WhatsApp', produto:'Cofre Pokébola', qtd:1, arquivo:'pokebola_cofre.stl', cor:'Vermelho + Branco', filamento:'PLA', gramas:195, tempoImpressao:7.5, precoVenda:119.9, custoProducao:22, freteCusto:22, freteCobrado:25, taxaPlataforma:0, formaPagamento:'PIX', statusPagamento:'Pago', statusImpressao:'Pronto', statusEntrega:'Entregue', prazoPrometido:'2026-05-04', rastreio:'BR556677889BR', tags:['urgente','presente'] },
];

function calcTotalPago(p) { return p.precoVenda * p.qtd + p.freteCobrado; }
function calcCustoTotal(p) { return p.custoProducao * p.qtd + p.freteCusto + p.taxaPlataforma; }
function calcLucro(p) { return calcTotalPago(p) - calcCustoTotal(p); }
function calcMargem(p) { const t = calcTotalPago(p); return t>0 ? calcLucro(p)/t*100 : 0; }
function fmtBRL(v) { return v.toLocaleString('pt-BR', { style:'currency', currency:'BRL' }); }
function fmtData(iso) { if (!iso) return '—'; const [y,m,d] = iso.split('-'); return `${d}/${m}/${y.slice(2)}`; }

// Paleta neon de status — fundo tem alpha p/ ficar bem em dark
const STATUS_IMP_COR = {
  'Orçamento':         { bg:'rgba(43,230,240,0.10)', fg:'#7af0fa', dot:'#2BE6F0' },
  'Em aprovação':      { bg:'rgba(255,179,0,0.10)',  fg:'#ffd166', dot:'#FFB300' },
  'Fila':              { bg:'rgba(255,179,0,0.15)',  fg:'#ffd166', dot:'#FFB300' },
  'Fatiando':          { bg:'rgba(43,230,240,0.12)', fg:'#7af0fa', dot:'#2BE6F0' },
  'Imprimindo':        { bg:'rgba(155,108,255,0.15)',fg:'#c4a8ff', dot:'#9b6cff' },
  'Pos-processamento': { bg:'rgba(255,46,154,0.15)', fg:'#ff8dc7', dot:'#FF2E9A' },
  'Pronto':            { bg:'rgba(43,230,240,0.18)', fg:'#7af0fa', dot:'#2BE6F0' },
  'Falhou':            { bg:'rgba(255,77,106,0.15)', fg:'#ff8da1', dot:'#FF4D6A' },
  'Cancelado':         { bg:'rgba(126,114,163,0.15)', fg:'#9b91bf', dot:'#7e72a3' },
};
const STATUS_ENT_COR = {
  'Pendente':    { bg:'rgba(255,255,255,0.06)', fg:'#b9aee0', dot:'#7e72a3' },
  'Em trânsito': { bg:'rgba(155,108,255,0.15)', fg:'#c4a8ff', dot:'#9b6cff' },
  'Entregue':    { bg:'rgba(43,230,240,0.18)',  fg:'#7af0fa', dot:'#2BE6F0' },
};
const STATUS_PAG_COR = {
  'Pago':       { bg:'rgba(43,230,240,0.18)',  fg:'#7af0fa', dot:'#2BE6F0' },
  'Aguardando': { bg:'rgba(255,179,0,0.15)',   fg:'#ffd166', dot:'#FFB300' },
};

// Tags pré-definidas para o campo de observações dos pedidos
// Substituem o texto livre — o usuário só seleciona o que se aplica
const OBS_TAGS = [
  { id:'aguard-pix',    label:'Aguardando confirmação do PIX',       cor:'#FFB300', cat:'pagamento' },
  { id:'aguard-pgto',   label:'Aguardando confirmação do pagamento', cor:'#FFB300', cat:'pagamento' },
  { id:'aguard-cor',    label:'Aguardando confirmação da cor',       cor:'#9b6cff', cat:'definicoes' },
  { id:'aguard-tam',    label:'Aguardando confirmação do tamanho',   cor:'#9b6cff', cat:'definicoes' },
  { id:'aguard-stl',    label:'Aguardando arquivo STL',              cor:'#2BE6F0', cat:'definicoes' },
  { id:'aguard-design', label:'Aguardando aprovação do design',      cor:'#2BE6F0', cat:'definicoes' },
  { id:'custom',        label:'Personalização extra',                cor:'#FF2E9A', cat:'producao' },
  { id:'reimprimir',    label:'Reimpressão necessária',              cor:'#FF4D6A', cat:'producao' },
  { id:'pintura',       label:'Pintura à mão pendente',              cor:'#FF2E9A', cat:'producao' },
  { id:'presente',      label:'Embalagem de presente',               cor:'#2BE6F0', cat:'entrega' },
  { id:'urgente',       label:'Prazo crítico / urgente',             cor:'#FF4D6A', cat:'entrega' },
  { id:'vip',           label:'Cliente VIP',                         cor:'#FFB300', cat:'cliente' },
];

// Helper — gera próximo id de cliente baseado em ids existentes
function gerarIdCliente(clientes) {
  const max = clientes.reduce((m, c) => {
    const n = parseInt((c.id || '').split('-')[1] || '0', 10);
    return n > m ? n : m;
  }, 0);
  return 'CL-' + String(max + 1).padStart(4, '0');
}

// Helper — formata "contato" string a partir do schema do cliente (compatibilidade c/ pedidos antigos)
function clienteContatoStr(c) {
  if (!c) return '—';
  const partes = [c.instagram, c.telefone, c.email].filter(x => x && x.trim());
  return partes.join(' · ') || '—';
}

Object.assign(window, { MOCK_PEDIDOS, MOCK_CLIENTES, OBS_TAGS, gerarIdCliente, clienteContatoStr, calcTotalPago, calcCustoTotal, calcLucro, calcMargem, fmtBRL, fmtData, STATUS_IMP_COR, STATUS_ENT_COR, STATUS_PAG_COR });
