mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-19 05:09:38 +02:00
* WIP * WIP * WIP * WIP * WIP * WIP * WIP * format * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * WIP * fix conflict * fix conflict * chore: run rubocop * fix test * update PWA logo * fix tests * chore: lint * fix test * Refactor: Remove duplicate data attribute in activity partial and add chat form rendering in chats index --------- Co-authored-by: Josh Pigford <josh@joshpigford.com>
53 lines
1.4 KiB
Ruby
53 lines
1.4 KiB
Ruby
class Import::UploadsController < ApplicationController
|
|
layout "imports"
|
|
|
|
before_action :set_import
|
|
|
|
def show
|
|
end
|
|
|
|
def sample_csv
|
|
send_data @import.csv_template.to_csv,
|
|
filename: "#{@import.type.underscore.split('_').first}_sample.csv",
|
|
type: "text/csv",
|
|
disposition: "attachment"
|
|
end
|
|
|
|
def update
|
|
if csv_valid?(csv_str)
|
|
@import.account = Current.family.accounts.find_by(id: params.dig(:import, :account_id))
|
|
@import.assign_attributes(raw_file_str: csv_str, col_sep: upload_params[:col_sep])
|
|
@import.save!(validate: false)
|
|
|
|
redirect_to import_configuration_path(@import, template_hint: true), notice: "CSV uploaded successfully."
|
|
else
|
|
flash.now[:alert] = "Must be valid CSV with headers and at least one row of data"
|
|
|
|
render :show, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
private
|
|
def set_import
|
|
@import = Current.family.imports.find(params[:import_id])
|
|
end
|
|
|
|
def csv_str
|
|
@csv_str ||= upload_params[:csv_file]&.read || upload_params[:raw_file_str]
|
|
end
|
|
|
|
def csv_valid?(str)
|
|
begin
|
|
csv = Import.parse_csv_str(str, col_sep: upload_params[:col_sep])
|
|
return false if csv.headers.empty?
|
|
return false if csv.count == 0
|
|
true
|
|
rescue CSV::MalformedCSVError
|
|
false
|
|
end
|
|
end
|
|
|
|
def upload_params
|
|
params.require(:import).permit(:raw_file_str, :csv_file, :col_sep)
|
|
end
|
|
end
|