Submit social housing lettings and sales data (CORE)
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.
 
 
 
 

44 lines
1.3 KiB

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