Class: Renalware::Admissions::ConsultsController

Inherits:
BaseController show all
Includes:
Concerns::Pageable, Concerns::PdfRenderable
Defined in:
app/controllers/renalware/admissions/consults_controller.rb

Instance Method Summary collapse

Methods inherited from BaseController

#patient

Instance Method Details

#createObject



48
49
50
51
52
53
54
55
56
# File 'app/controllers/renalware/admissions/consults_controller.rb', line 48

def create
  consult = Consult.new(consult_params)
  authorize consult
  if consult.save_by(current_user)
    redirect_to admissions_consults_path, notice: success_msg_for("consult")
  else
    render_new(consult)
  end
end

#destroyObject



73
74
75
76
77
78
79
# File 'app/controllers/renalware/admissions/consults_controller.rb', line 73

def destroy
  find_and_authorize_consult.update!(ended_on: Time.zone.now, by: current_user)
  redirect_back(
    fallback_location: admissions_consults_path,
    notice: success_msg_for("consult")
  )
end

#editObject



58
59
60
61
# File 'app/controllers/renalware/admissions/consults_controller.rb', line 58

def edit
  session[:consults_results] = request&.referer # for back link
  render_edit(find_and_authorize_consult)
end

#indexObject

rubocop:disable Metrics/AbcSize, Metrics/MethodLength



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/controllers/renalware/admissions/consults_controller.rb', line 13

def index
  session[:consults_results] = nil if params.key?(:reset)
  query = ConsultQuery.new(params[:q])

  respond_to do |format|
    format.pdf do
      consults = query.call
      authorize consults
      options = default_pdf_options.merge!(
        pdf: "Admission Consults #{I18n.l(Time.zone.today)}",
        locals: {
          consults: CollectionPresenter.new(consults, ConsultPresenter),
          query: query.search
        }
      )
      render options
    end
    format.html do
      consults = query.call.page(page).per(per_page)
      authorize consults
      render locals: {
        consults: CollectionPresenter.new(consults, ConsultPresenter),
        query: query.search
      }
    end
  end
end

#newObject

rubocop:enable Metrics/AbcSize, Metrics/MethodLength



42
43
44
45
46
# File 'app/controllers/renalware/admissions/consults_controller.rb', line 42

def new
  consult = Consult.new(started_on: Time.zone.today)
  authorize consult
  render_new(consult)
end

#updateObject



63
64
65
66
67
68
69
70
71
# File 'app/controllers/renalware/admissions/consults_controller.rb', line 63

def update
  consult = find_and_authorize_consult
  if consult.update_by(current_user, consult_params)
    url = session[:consults_results] || admissions_consults_path
    redirect_to url, notice: success_msg_for("consult")
  else
    render_edit(consult)
  end
end