Sha256: 8d68f493d045ee6fa1db391ce5ebe9651cd4821a74e30460927e02cc51d230a4

Contents?: true

Size: 1.6 KB

Versions: 46

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

require_dependency "renalware/pathology"
require "attr_extras"

module Renalware
  module Pathology
    module Requests
      class RequestParamsFactory
        pattr_initialize :params

        def build
          {
            clinic: clinic,
            consultant: consultant,
            telephone: telephone,
            template: template,
            by: params[:by]
          }
        end

        private

        def clinic
          @clinic ||= requested_clinic || default_clinic
        end

        def consultant
          @consultant ||= requested_consultant || default_consultant
        end

        def telephone
          @telephone ||= requested_telephone || default_telephone
        end

        def template
          requested_template || default_template
        end

        def requested_clinic
          return if params[:clinic_id].blank?

          Renalware::Clinics::Clinic.find(params[:clinic_id])
        end

        def default_clinic
          Renalware::Clinics::Clinic.ordered.first
        end

        def requested_consultant
          return if params[:consultant_id].blank?

          Renalware::Renal::Consultant.find(params[:consultant_id])
        end

        def default_consultant
          Renalware::Renal::Consultant.ordered.first
        end

        def requested_telephone
          params[:telephone]
        end

        def default_telephone
          consultant&.telephone
        end

        def requested_template
          params[:template]
        end

        def default_template
          "crs"
        end
      end
    end
  end
end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
renalware-core-2.0.159 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.158 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.157 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.156 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.155 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.153 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.152 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.151 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.149 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.148 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.147 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.146 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.145 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.144 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.143 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.142 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.141 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.140 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.139 app/models/renalware/pathology/requests/request_params_factory.rb
renalware-core-2.0.138 app/models/renalware/pathology/requests/request_params_factory.rb