# app/controllers/motorista/dashboard_controller.rb module Motorista class DashboardController < ApplicationController before_action :garantir_motorista # GET /motorista def index nome = current_user.nome # Card 1 — Valor ESTIMADO (mês atual): entregas pagas × preco_entrega @estimado_inicio = Date.current.beginning_of_month @estimado_fim = Date.current entregas_mes = Entrega.pagas.da_conta_gade .do_motorista(nome) .no_periodo(@estimado_inicio, @estimado_fim) .count @valor_estimado = entregas_mes * Configuracao.preco_entrega @entregas_mes = entregas_mes # Card 2 — Valor CONSOLIDADO: soma das consolidações finalizadas @minhas_consolidacoes = Consolidacao.ativas .joins(:consolidacao_motoristas) .where(consolidacao_motoristas: { motorista_nome: nome }) .recentes .distinct @valor_consolidado = ConsolidacaoMotorista .joins(:consolidacao) .where(motorista_nome: nome, consolidacoes: { status: :finalizada, deleted_at: nil }) .sum(:valor_total) # Aviso in-app: pagamentos confirmados nos últimos 7 dias (notificação na # própria página do motorista, além de WhatsApp/email). @pagamentos_recentes = ConsolidacaoMotorista .joins(:consolidacao) .where(motorista_nome: nome, consolidacoes: { status: :finalizada, deleted_at: nil }) .where.not(pago_em: nil) .where('pago_em >= ?', 7.days.ago) .order(pago_em: :desc) .includes(:consolidacao) end private def garantir_motorista return if current_user.motorista? redirect_to dashboard_path, alert: 'Área exclusiva dos motoristas.' end end end