# app/controllers/admin/planilhas_simpliroute_controller.rb # # Gera a planilha de carga do SimpliRoute (.xlsx) a partir de UMA operação # vigente. Lat/long são preenchidas com o histórico do mês anterior # (SimpliRoute::PlanilhaCarga). Somente leitura das bases. class Admin::PlanilhasSimpliRouteController < ApplicationController XLSX_MIME = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'.freeze def show authorize :planilha_simpli_route @operacoes_agrupadas = Operacao.agrupadas_por_mes end # GET /admin/planilha_simpli_route/baixar?tabela=gade_entregas_... def baixar authorize :planilha_simpli_route tabela = params[:tabela].to_s unless Operacao.valida?(tabela) return redirect_to(admin_planilha_simpli_route_path, alert: 'Selecione uma operação válida.') end carga = SimpliRoute::PlanilhaCarga.new(tabela) linhas = carga.linhas if linhas.empty? return redirect_to(admin_planilha_simpli_route_path, alert: "A operação #{carga.label} não tem registros.") end binario = SimpliRoute::PlanilhaCargaXlsx.new(linhas).gerar send_data binario, filename: "carga_simpliroute_#{nome_arquivo(carga.label)}.xlsx", type: XLSX_MIME, disposition: 'attachment' end private def nome_arquivo(label) label.to_s.parameterize(separator: '_').presence || 'operacao' end end