You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.3 KiB
45 lines
1.3 KiB
1 year ago
|
module Forms
|
||
|
class DeleteLogsForm
|
||
|
include ActiveModel::Model
|
||
|
include ActiveModel::Validations
|
||
|
|
||
|
attr_reader :logs, :log_type, :selected_ids, :search_term, :delete_confirmation_path, :back_to_logs_path, :delete_path
|
||
|
|
||
|
validate :at_least_one_log_selected
|
||
|
|
||
|
def initialize(attributes)
|
||
|
@log_type = attributes[:log_type]
|
||
|
@search_term = attributes[:search_term]
|
||
|
@current_user = attributes[:current_user]
|
||
|
@logs = FilterManager.filter_logs(visible_logs, @search_term, attributes[:log_filters], nil, @current_user)
|
||
|
@selected_ids = attributes[:selected_ids] || @logs.map(&:id)
|
||
|
@delete_confirmation_path = attributes[:delete_confirmation_path]
|
||
|
@back_to_logs_path = attributes[:back_to_logs_path]
|
||
|
@delete_path = attributes[:delete_path]
|
||
|
end
|
||
|
|
||
|
def log_count
|
||
|
@logs.count
|
||
|
end
|
||
|
|
||
|
def table_partial_name
|
||
|
"logs/delete_logs_table_#{@log_type}"
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def at_least_one_log_selected
|
||
|
if selected_ids.blank? || selected_ids.reject(&:blank?).blank?
|
||
|
errors.add(:log_ids, "Select at least one log to delete or press cancel to return")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def visible_logs
|
||
|
case @log_type
|
||
|
when :lettings then @current_user.lettings_logs.visible
|
||
|
when :sales then @current_user.sales_logs.visible
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|