import { create } from 'zustand';

/**
 * Store global para gerenciar o estado do Novo Ambiente de Frota (Fleet V2).
 * Contém dados mockados baseados no mockup original.
 */
export const useFleetStore = create((set) => ({
  veiculos: [
    { id: 1, placa: 'ABC-1234', modelo: 'Fiorino', base: 'Pralog CD', uf:'SP', status: 'operacao', kmAtual: 45000, motorista: 'João Silva', sascar: 'Sim', t4s: 'Não', geotab: 'Sim', statusTel: 'Ativo' },
    { id: 2, placa: 'XYZ-9876', modelo: 'Constellation', base: 'Pralog Norte', uf:'AM', status: 'manutencao', kmAtual: 120000, motorista: 'Maria Oliveira', sascar: 'Sim', t4s: 'Sim', geotab: 'Não', statusTel: 'Inativo' },
    { id: 3, placa: 'PRL-2024', modelo: 'Sprinter', base: 'Pralog Sul', uf:'RS', status: 'operacao', kmAtual: 15000, motorista: 'Pedro Santos', sascar: 'Não', t4s: 'Sim', geotab: 'Sim', statusTel: 'Ativo' }
  ],
  abastecimentos: [
    { id: 1, data: '2023-10-25', veiculoId: 1, motorista: 'João Silva', km: 45000, litros: 40, valor: 240.00, posto: 'Shell Centro', combustivel: 'Diesel S10' }
  ],
  manutencoes: [
    { id: 101, veiculoId: 2, dataSolicitacao: '2023-10-20', tipo: 'Corretiva', status: 'Em Execução', oficina: 'Oficina Central', custo: 1850.00 }
  ],
  checklists: [
    { id: 1, data: '2023-10-26', unidade: 'CD SP', checklist: 'Diário', autor: 'João', aprovacao: 100, status: 'Aprovado' },
    { id: 2, data: '2023-10-25', unidade: 'Norte AM', checklist: 'Segurança', autor: 'Maria', aprovacao: 60, status: 'Reprovado' }
  ],
  
  // Ações
  addAbastecimento: (novo) => set((state) => ({ 
    abastecimentos: [ { ...novo, id: Date.now() }, ...state.abastecimentos ],
    veiculos: state.veiculos.map(v => v.id === novo.veiculoId ? { ...v, kmAtual: novo.km } : v)
  })),
  
  updateVeiculoStatus: (id, status) => set((state) => ({
    veiculos: state.veiculos.map(v => v.id === id ? { ...v, status } : v)
  })),
}));

export const useFleetData = () => {
  const store = useFleetStore();
  
  const stats = {
    total: store.veiculos.length,
    operacao: store.veiculos.filter(v => v.status === 'operacao').length,
    manutencao: store.veiculos.filter(v => v.status === 'manutencao').length,
    abastecimentosMes: store.abastecimentos.length,
    checklists: store.checklists.length,
    alertas: store.veiculos.filter(v => v.statusTel === 'Inativo').length
  };

  return { ...store, stats };
};
