Commit 6a2ab96b by liyijie

extract importable & exportable

parent 6ed82a98
...@@ -37,43 +37,6 @@ class SimpleController::BaseController < ::InheritedResources::Base ...@@ -37,43 +37,6 @@ class SimpleController::BaseController < ::InheritedResources::Base
super(options, &block) super(options, &block)
end end
def upload_excel
excel = importable_class.import_excel_klass.new
excel.load(params[:file])
render json: { uid: excel.uid }
end
def excel
excel = importable_class.import_excel_klass.new(params[:uid])
pagination = excel.records_pagination(page: params[:page] || 1, per_page: params[:per_page] || 15)
render json: {
current_page: pagination.current_page,
total_pages: pagination.total_pages,
total_count: pagination.count,
titles: excel.titles,
records: pagination,
}
end
def import_headers
render json: { headers: importable_class.import_instance.import_headers }
end
def import
xlsx_file = params[:file] || importable_class.import_excel_klass.new(params[:uid])
response = importable_class.import_xlsx(xlsx_file, collection, **params.to_unsafe_h.symbolize_keys)
render json: response, status: 201
end
def export_headers
render json: { headers: exportable_class.export_instance.export_headers }
end
def export
path = exportable_class.export_xlsx collection, **params.to_unsafe_h.symbolize_keys
send_file path
end
def batch_destroy def batch_destroy
collection.transaction do collection.transaction do
params[:ids].each do |id| params[:ids].each do |id|
......
module SimpleController::Exportable
def export_headers
render json: { headers: exportable_class.export_instance.export_headers }
end
def export
path = exportable_class.export_xlsx collection, **params.to_unsafe_h.symbolize_keys
send_file path
end
end
module SimpleController::Importable
def upload_excel
excel = importable_class.import_excel_klass.new
excel.load(params[:file])
render json: { uid: excel.uid }
end
def excel
excel = importable_class.import_excel_klass.new(params[:uid])
pagination = excel.records_pagination(page: params[:page] || 1, per_page: params[:per_page] || 15)
render json: {
current_page: pagination.current_page,
total_pages: pagination.total_pages,
total_count: pagination.count,
titles: excel.titles,
records: pagination,
}
end
def import_headers
render json: { headers: importable_class.import_instance.import_headers }
end
def import
xlsx_file = params[:file] || importable_class.import_excel_klass.new(params[:uid])
response = importable_class.import_xlsx(xlsx_file, collection, **params.to_unsafe_h.symbolize_keys)
render json: response, status: 201
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment