// App-wide data store

/* Status-based appointment colors */
const APPT_COLORS = {
  aguardando: { bg:'#f3f4f6', border:'#9ca3af', text:'#4b5563', dot:'#9ca3af', label:'Aguardando confirm.' },
  confirmado: { bg:'#dcfce7', border:'#22c55e', text:'#15803d', dot:'#22c55e', label:'Confirmado' },
  reagendado: { bg:'#fef9c3', border:'#eab308', text:'#854d0e', dot:'#eab308', label:'Reagendado' },
  cancelado:  { bg:'#fee2e2', border:'#ef4444', text:'#991b1b', dot:'#ef4444', label:'Cancelado' },
  falta:      { bg:'#ffedd5', border:'#f97316', text:'#9a3412', dot:'#f97316', label:'Falta' },
};

const STATUS_LEGEND_ITEMS = Object.entries(APPT_COLORS).map(([key, c]) => ({ key, ...c }));

const PATIENT_COLOR_MAP = {
  'Ana Silva':    'confirmado',
  'Jorge Ribeiro':'aguardando',
  'Carmem Lúcia': 'reagendado',
  'Amanda Viana': 'falta',
};

const WEEK_APPTS = {
  seg: [{ patient:'Ana Silva',     time:'09:00', status:'confirmado', unidade:'Unidade Centro',  sala:'Sala 201', terapeuta:'Dra. Ana Silva'   }],
  ter: [
    { patient:'Jorge Ribeiro', time:'09:00', status:'aguardando', unidade:'Unidade Centro',  sala:'Sala 202', terapeuta:'Dr. Carlos Mendes' },
    { patient:'Amanda Viana',  time:'10:00', status:'falta',      unidade:'Unidade Jardins', sala:'Sala 201', terapeuta:'Dra. Ana Silva'   },
    { patient:'Carmem Lúcia',  time:'11:00', status:'reagendado', unidade:'Unidade Centro',  sala:'Sala 203', terapeuta:'Dra. Ana Silva'   },
  ],
  qua: [
    { patient:'Carmem Lúcia',  time:'09:00', status:'cancelado',  unidade:'Unidade Jardins', sala:'Sala 201', terapeuta:'Dra. Ana Silva'   },
    { patient:'Ana Silva',     time:'10:00', status:'confirmado', unidade:'Unidade Centro',  sala:'Sala 201', terapeuta:'Dra. Ana Silva'   },
  ],
  qui: [{ patient:'Amanda Viana',  time:'09:00', status:'aguardando', unidade:'Unidade Jardins', sala:'Sala 202', terapeuta:'Dr. Carlos Mendes' }],
  sex: [
    { patient:'Ana Silva',     time:'09:00', status:'confirmado', unidade:'Unidade Centro',  sala:'Sala 201', terapeuta:'Dra. Ana Silva'   },
    { patient:'Jorge Ribeiro', time:'11:00', status:'falta',      unidade:'Unidade Centro',  sala:'Sala 203', terapeuta:'Dr. Carlos Mendes' },
  ],
  sab: [{ patient:'Carmem Lúcia',  time:'09:00', status:'reagendado', unidade:'Unidade Jardins', sala:'Sala 201', terapeuta:'Dra. Ana Silva'   }],
};
const WEEK_DAYS = [
  { key: 'seg', label: 'Seg', num: 11 },
  { key: 'ter', label: 'Ter', num: 12 },
  { key: 'qua', label: 'Qua', num: 13 },
  { key: 'qui', label: 'Qui', num: 14 },
  { key: 'sex', label: 'Sex', num: 15 },
  { key: 'sab', label: 'Sab', num: 16 },
];

const BILLS = [
  { id: 1, title: 'Aluguel - Unidade Centro',          date: '17/05/2026', amount: 'R$ 3.500',  status: 'Pendente' },
  { id: 2, title: 'Fornecedor - Material de escritório',date: '14/05/2026', amount: 'R$ 850',    status: 'Pendente' },
  { id: 3, title: 'Salários - Equipe administrativa',   date: '17/05/2026', amount: 'R$ 12.000', status: 'Pendente' },
];

const BIRTHDAYS = [
  { name: 'Jorge Lima',    day: 'Segunda-feira', date: '17/05/2026' },
  { name: 'Amanda Sales',  day: 'Segunda-feira', date: '17/05/2026' },
  { name: 'João Silveira', day: 'Segunda-feira', date: '17/05/2026' },
];

const makePatients = () => {
  const base = [
    { id:1, name:'Maria Santos',    age:36, dob:'14/03/1990', cpf:'123.456.789-00', phone:'(11) 98765-4321', email:'maria.santos@email.com', cep:'01310-000', address:'Rua das Flores, 123 - São Paulo, SP', minor:false },
    { id:2, name:'João Pedro',      age:12, dob:'15/08/2013', cpf:'987.654.321-00', phone:'(21) 97662-3337', email:'jorge.george@email.com',  cep:'05422-000', address:'Rua dos Pinheiros, 45 - São Paulo, SP', minor:true  },
    { id:3, name:'Carla Ferreira',  age:29, dob:'02/11/1996', cpf:'111.222.333-44', phone:'(11) 93456-7890', email:'carla.f@email.com',        cep:'04056-000', address:'Al. Santos, 900 - São Paulo, SP',     minor:false },
    { id:4, name:'Roberto Lima',    age:45, dob:'30/07/1980', cpf:'555.666.777-88', phone:'(11) 91234-5678', email:'roberto.lima@email.com',   cep:'01415-000', address:'Rua Haddock Lobo, 595 - São Paulo, SP',minor:false },
    { id:5, name:'Fernanda Costa',  age:8,  dob:'10/04/2017', cpf:'222.333.444-55', phone:'(21) 99876-5432', email:'fer.costa@email.com',      cep:'05438-000', address:'Av. Rebouças, 3970 - São Paulo, SP',  minor:true  },
    { id:6, name:'Paulo Mendes',    age:52, dob:'05/01/1974', cpf:'333.444.555-66', phone:'(11) 92345-6789', email:'paulo.m@email.com',        cep:'01308-000', address:'Rua Augusta, 1200 - São Paulo, SP',   minor:false },
    { id:7, name:'Sônia Alves',     age:38, dob:'20/09/1987', cpf:'444.555.666-77', phone:'(11) 94567-8901', email:'sonia.a@email.com',        cep:'04543-000', address:'Av. Juscelino, 300 - São Paulo, SP',  minor:false },
    { id:8, name:'Diego Souza',     age:24, dob:'14/06/2001', cpf:'666.777.888-99', phone:'(21) 97891-2345', email:'diego.s@email.com',        cep:'01407-000', address:'Rua Oscar Freire, 890 - São Paulo, SP',minor:false },
    { id:9, name:'Lucia Barbosa',   age:61, dob:'03/03/1964', cpf:'777.888.999-00', phone:'(11) 96789-0123', email:'lucia.b@email.com',        cep:'04543-001', address:'Rua Funchal, 418 - São Paulo, SP',    minor:false },
    { id:10, name:'Thiago Ramos',   age:33, dob:'17/12/1992', cpf:'888.999.000-11', phone:'(11) 95678-9012', email:'thiago.r@email.com',       cep:'05425-000', address:'Al. Gabriel Monteiro, 4 - São Paulo, SP',minor:false },
  ];
  return base.map(p => ({
    ...p,
    professionals: ['Dra. Ana Silva', 'Dr. Carlos Mendes'],
    units: ['Unidade 1', 'Unidade 2'],
    documents: [],
    appointments: p.id === 1
      ? [{ id:1, dateLabel:'29 de mar.', time:'09:00', doctor:'Dr. Ana Silva', room:'Sala 101', unit:'Unidade Centro', status:'Confirmado' }]
      : [],
  }));
};

const PATIENTS = makePatients();

const USERS = [
  { id:1, initials:'D', name:'Dr. Ana Silva',    email:'ana.silva@conexaopsi.com',    units:'Todas',          role:'Administrador', status:'Ativo', color:'#2563a8' },
  { id:2, initials:'M', name:'Maria Santos',     email:'maria.santos@conexaopsi.com', units:'Unidade Centro', role:'Secretária',    status:'Ativo', color:'#2563a8' },
  { id:3, initials:'C', name:'Dr. Carlos Mendes',email:'carlos.mendes@conexaopsi.com',units:'Unidade Centro', role:'Terapeuta',     status:'Ativo', color:'#2563a8' },
];

const AUDIT_LOGS = [
  { action:'Maria Santos Cadastrou paciente', detail:'João Pedro',                   ts:'2026-03-30 14:30' },
  { action:'Dr. Ana Silva Editou unidade',    detail:'Unidade Centro',               ts:'2026-03-30 10:15' },
  { action:'Maria Santos Agendou consulta',   detail:'Maria Santos - 30/03 09:00',  ts:'2026-03-29 16:45' },
];

const UNITS_DATA = [
  { id:1, name:'Unidade Centro',  address:'Av. Paulista, 1000 – São Paulo, SP',
    rooms:[{id:1,name:'Sala 201',capacity:2,status:'Ativo'},{id:2,name:'Sala 202',capacity:2,status:'Ativo'},{id:3,name:'Sala 203',capacity:2,status:'Ativo'}] },
  { id:2, name:'Unidade Jardins', address:'Rua Augusta, 500 – São Paulo, SP',
    rooms:[{id:1,name:'Sala 201',capacity:2,status:'Ativo'},{id:2,name:'Sala 202',capacity:2,status:'Ativo'},{id:3,name:'Sala 203',capacity:2,status:'Ativo'}] },
];

const TRANSACTIONS = [
  { id:1, type:'entrada', category:'Consulta', date:'29/03/2026', desc:'Sessão · Maria Santos',     amount: 250  },
  { id:2, type:'saida',   category:'Aluguel',  date:'28/02/2026', desc:'Aluguel Unidade Centro',   amount: 3000 },
];

// Financial chart data (values in R$ thousands)
const FIN_MONTHS = ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'];
const FIN_ENTRADAS = [30,20,32,30,36,33,40,47,52,30,34,60];
const FIN_SAIDAS   = [28,18,30,28,32,30,36,43,48,28,30,32];
const FIN_SALDO    = FIN_ENTRADAS.map((e,i) => e - FIN_SAIDAS[i]);

Object.assign(window, {
  APPT_COLORS, PATIENT_COLOR_MAP,
  WEEK_APPTS, WEEK_DAYS,
  BILLS, BIRTHDAYS,
  PATIENTS, USERS, AUDIT_LOGS, UNITS_DATA, TRANSACTIONS,
  FIN_MONTHS, FIN_ENTRADAS, FIN_SAIDAS, FIN_SALDO,
});
