# config/routes.rb
Rails.application.routes.draw do
  # Devise — login padrão para admin/gerente/operador
  devise_for :users, path: 'auth',
    controllers: { sessions: 'users/sessions' },
    path_names: {
    sign_in:  'login',
    sign_out: 'logout',
    password: 'senha'
  }

  # Root — redireciona por role
  root 'dashboard#index'

  # Dashboard principal (admin/gerente/operador)
  get '/dashboard', to: 'dashboard#index', as: :dashboard
  get '/dashboard/relatorio_financeiro', to: 'dashboard#relatorio_financeiro', as: :dashboard_relatorio_financeiro

  # Painel motorista
  get '/motorista', to: 'motorista/dashboard#index', as: :motorista_dashboard

  # Login motorista — PIN de 4 dígitos + acesso via QR Code do holerite
  get  '/motorista/login',         to: 'motorista/sessoes#new',       as: :motorista_login
  post '/motorista/login',         to: 'motorista/sessoes#create'
  get  '/motorista/acesso/:token', to: 'motorista/sessoes#acesso_qr', as: :motorista_acesso_qr

  # Consolidações
  resources :consolidacoes do
    collection do
      get :veiculos_disponiveis   # JSON — veículos do(s) motorista(s) no período (form nova consolidação)
      get :operacoes_disponiveis  # JSON — tabelas de operação (gade_entregas_*)
      get :dados_da_operacao      # JSON — motoristas/veículos/período da(s) operação(ões)
      get  :buscar_nf             # JSON — busca a NF na rastreio (nota avulsa)
      post :avulsa                # cria consolidação avulsa a partir de uma NF
      get :arquivadas             # Histórico — consolidações arquivadas
    end

    member do
      get  :wizard            # Passo 1 — selecionar motorista
      post :finalizar
      post :arquivar
      post :reativar              # Restaura uma consolidação arquivada
      post :registrar_pagamento  # Marca 1 motorista (ou todos) como pago
      post :cancelar_pagamento   # Estorna o pagamento de 1 motorista (ou todos)
      get  :preview_holerite
      get  :gerar_pdf_relatorio
      get  :gerar_pdf_holerite
      get  :gerar_pdf_financeiro  # relatório financeiro da consolidação
    end

    resources :consolidacao_entregas, only: [] do
      collection do
        get  :validar               # Passo 2 — toggles de classificação
        post :classificar           # toggle individual (JSON)
        post :classificar_em_massa  # ações em massa (JSON)
        get  :revisar               # Passo 3 — revisão do motorista
        get    :buscar_nf            # JSON — busca a NF na SimpleRoute (apontamento manual)
        post   :apontar             # cria apontamento manual a partir da NF
        delete :remover_apontamento # remove um apontamento manual (por id)
      end
    end
  end

  # Configurações (apenas admin/gerente)
  namespace :admin do
    resources :usuarios, except: [:show] do
      member { patch :toggle_ativo }
    end
    resources :configuracoes, only: [:index, :edit, :update] do
      collection { post :toggle_tema }
    end
    resources :auditoria_logs, only: [:index]
  end

  # API interna — Dashboard métricas
  namespace :api do
    namespace :v1 do
      get 'dashboard/metricas', to: 'dashboard#metricas'
    end
  end

  # Health check (Docker)
  get '/health', to: proc { [200, {}, ['OK']] }
end
