Sha256: 119fc157d34c81ca3340fbc0e3f311d1227ef20c2900440ca85766700955a6c5

Contents?: true

Size: 1.61 KB

Versions: 4

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

require_dependency "renalware/clinics"

module Renalware
  module Clinics
    class AppointmentsController < BaseController
      include Renalware::Concerns::Pageable

      def index
        appointments_query = AppointmentQuery.new(query_params)
        appointments = appointments_query.call.page(page).per(per_page)
        authorize appointments

        render :index, locals: {
          appointments: appointments,
          query: appointments_query.search,
          clinics: Clinic.ordered,
          users: User.ordered,
          request_html_form_params: build_params_for_html_form(appointments)
        }
      end

      def new
        render_new(Appointment.new)
      end

      def create
        appointment = Appointment.new(appointment_params)
        appointment.user = current_user
        authorize appointment
        if appointment.save
          redirect_to appointments_path, notice: t(".success", model_name: "Appointment")
        else
          render_new(appointment)
        end
      end

      private

      def render_new(appointment)
        authorize appointment
        render :new, locals: { appointment: appointment }
      end

      def build_params_for_html_form(appointments)
        OpenStruct.new(
          patient_ids: appointments.map(&:patient_id).uniq
        )
      end

      def query_params
        params
          .fetch(:q, {})
          .merge(page: page, per_page: per_page)
      end

      def appointment_params
        params
          .require(:clinics_appointment)
          .permit(:patient_id, :clinic_id, :starts_at)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
renalware-core-2.0.44 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.43 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.42 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.41 app/controllers/renalware/clinics/appointments_controller.rb