Class: Tramway::Admin::RecordsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/tramway/admin/records_controller.rb

Instance Method Summary collapse

Methods included from RecordRoutesHelper

#edit_record_path, #new_record_path, #record_path, #records_path

Instance Method Details

#createObject



40
41
42
43
44
45
46
47
# File 'app/controllers/tramway/admin/records_controller.rb', line 40

def create
  @record_form = admin_form_class.new model_class.new
  if @record_form.submit params[:record]
    redirect_to params[:redirect].present? ? params[:redirect] : record_path(@record_form.model)
  else
    render :new
  end
end

#destroyObject



68
69
70
71
72
# File 'app/controllers/tramway/admin/records_controller.rb', line 68

def destroy
  record = model_class.active.find params[:id]
  record.remove!
  redirect_to params[:redirect].present? ? params[:redirect] : records_path
end

#editObject



49
50
51
# File 'app/controllers/tramway/admin/records_controller.rb', line 49

def edit
  @record_form = admin_form_class.new model_class.active.find params[:id]
end

#indexObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/controllers/tramway/admin/records_controller.rb', line 4

def index
  scope = params[:scope].present? ? params[:scope] : :all
  records = model_class.active.order(id: :desc).send scope
  records = records.full_text_search params[:search] if params[:search].present?
  if params[:filter].present?
    if params[:filter].is_a? String
      params[:filter] = JSON.parse params[:filter]
    end
    records = records.ransack(params[:filter]).result 
  end
  params[:list_filters]&.each do |filter, value|
    case decorator_class.list_filters[filter.to_sym][:type]
    when :select
      records = decorator_class.list_filters[filter.to_sym][:query].call(records, value) if value.present?
    when :dates
      begin_date = params[:list_filters][filter.to_sym][:begin_date]
      end_date = params[:list_filters][filter.to_sym][:end_date]
      if begin_date.present? && end_date.present?
        if value.present?
          records = decorator_class.list_filters[filter.to_sym][:query].call(records, begin_date, end_date)
        end
      end
    end
  end
  records = records.send "#{current_admin.role}_scope", current_admin.id
  @records = decorator_class.decorate records.page params[:page]
end

#newObject



36
37
38
# File 'app/controllers/tramway/admin/records_controller.rb', line 36

def new
  @record_form = admin_form_class.new model_class.new
end

#showObject



32
33
34
# File 'app/controllers/tramway/admin/records_controller.rb', line 32

def show
  @record = decorator_class.decorate model_class.active.find params[:id]
end

#updateObject



53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'app/controllers/tramway/admin/records_controller.rb', line 53

def update
  @record_form = admin_form_class.new model_class.active.find params[:id]
  if params[:record][:aasm_event].present?
    if @record_form.model.send("may_#{params[:record][:aasm_event]}?")
      @record_form.model.send("#{params[:record][:aasm_event]}!")
    end
  else
    if @record_form.submit params[:record]
      redirect_to params[:redirect].present? ? params[:redirect] : record_path(@record_form.model)
    else
      render :edit
    end
  end
end