Correções para funcionamento do dash,criar login do motorista senha, e gerar quelátório
This commit is contained in:
@@ -84,19 +84,34 @@ class DashboardController < ApplicationController
|
||||
end
|
||||
|
||||
def build_grafico_diario(entregas, preco_entrega)
|
||||
# Em períodos muito longos, agrupa o gráfico de forma a não gerar centenas de pontos.
|
||||
dias = (@periodo_inicio..@periodo_fim).to_a
|
||||
return { labels: [], valores: [], qtds: [] } if dias.size > MAX_DIAS_GRAFICO
|
||||
|
||||
contagem = entregas.pagas
|
||||
.group("DATE(planned_date)")
|
||||
.count
|
||||
.transform_keys(&:to_s)
|
||||
|
||||
labels = dias.map { |d| d.strftime('%d/%m') }
|
||||
valores = dias.map { |d| ((contagem[d.to_s] || 0) * preco_entrega).round(2) }
|
||||
qtds = dias.map { |d| contagem[d.to_s] || 0 }
|
||||
if dias.size <= MAX_DIAS_GRAFICO
|
||||
# Granularidade diária (períodos curtos)
|
||||
contagem = entregas.pagas.group("DATE(planned_date)").count.transform_keys(&:to_s)
|
||||
labels = dias.map { |d| d.strftime('%d/%m') }
|
||||
valores = dias.map { |d| ((contagem[d.to_s] || 0) * preco_entrega).round(2) }
|
||||
qtds = dias.map { |d| contagem[d.to_s] || 0 }
|
||||
else
|
||||
# Período longo: agrega por mês para o gráfico não ficar vazio nem poluído.
|
||||
contagem = entregas.pagas.group("TO_CHAR(planned_date, 'YYYY-MM')").count
|
||||
meses = meses_no_periodo
|
||||
labels = meses.map { |m| Date.strptime(m, '%Y-%m').strftime('%m/%Y') }
|
||||
valores = meses.map { |m| ((contagem[m] || 0) * preco_entrega).round(2) }
|
||||
qtds = meses.map { |m| contagem[m] || 0 }
|
||||
end
|
||||
|
||||
{ labels: labels, valores: valores, qtds: qtds }
|
||||
end
|
||||
|
||||
# Meses ("YYYY-MM") do início ao fim do período selecionado, inclusive.
|
||||
def meses_no_periodo
|
||||
meses = []
|
||||
cursor = @periodo_inicio.beginning_of_month
|
||||
while cursor <= @periodo_fim
|
||||
meses << cursor.strftime('%Y-%m')
|
||||
cursor = cursor.next_month
|
||||
end
|
||||
meses
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user