Sha256: 73dfc8decaa36d5be886d368571bfa75cd74f00f021f43e6df748ea93688d309

Contents?: true

Size: 1.55 KB

Versions: 59

Compression:

Stored size: 1.55 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, {})
      end

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

Version data entries

59 entries across 59 versions & 1 rubygems

Version Path
renalware-core-2.0.108 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.106 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.105 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.104 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.103 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.102 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.101 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.100 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.99 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.98 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.97 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.96 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.95 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.94 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.93 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.92 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.91 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.90 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.89 app/controllers/renalware/clinics/appointments_controller.rb
renalware-core-2.0.88 app/controllers/renalware/clinics/appointments_controller.rb