Skip to content

Instantly share code, notes, and snippets.

@jcreed
Created January 30, 2024 22:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jcreed/c4597852b0ef351547cbf8b7f9f3467e to your computer and use it in GitHub Desktop.
Save jcreed/c4597852b0ef351547cbf8b7f9f3467e to your computer and use it in GitHub Desktop.
CollegeBase types
diff --git a/app/controllers/residency_users_controller.rb b/app/controllers/residency_users_controller.rb
index 78151dc49c..10da48ac24 100644
--- a/app/controllers/residency_users_controller.rb
+++ b/app/controllers/residency_users_controller.rb
@@ -12,7 +12,7 @@ class ResidencyUsersController < ApplicationController
def new
@user = User.new
@user_identity = @user.residency_user_identities.build
- @colleges = Association.where(name: 'ResidencyCAS').order(id: :desc).first.colleges
+ @colleges = Association.where(name: 'ResidencyCAS').order(id: :desc).first.medical_schools
end
def create
@@ -21,7 +21,7 @@ class ResidencyUsersController < ApplicationController
user_params = params.delete(:user).permit(:id, :first_name, :last_name, :email, :phone_number, :extension, residency_user_identities: [:cas_id, :college_base])
residency_user_params = user_params.delete(:residency_user_identities).permit(:cas_id, :college_base)
residency_user_params[:cas_id] = cas.id
- residency_user_params[:college_base] = cas.colleges.find(residency_user_params[:college_base])
+ residency_user_params[:college_base] = cas.medical_schools.find(residency_user_params[:college_base])
if user_params[:id]
@user = current_user_identity.users.find(user_params[:id])
@user_identity = @user.residency_user_identities.joins(:college_base, :cas).where(college_bases: {id: residency_user_params[:college_base]}, associations: {id: residency_user_params[:cas_id]}).first
@@ -43,7 +43,7 @@ class ResidencyUsersController < ApplicationController
else
message = (@user.errors.full_messages + @user_identity.errors.full_messages).join('<br/>').html_safe
flash.now[:negative] = message
- @colleges = Association.where(name: 'ResidencyCAS').order(id: :desc).first.colleges
+ @colleges = Association.where(name: 'ResidencyCAS').order(id: :desc).first.medical_schools
render :new
end
end
diff --git a/app/models/association.rb b/app/models/association.rb
index 67365fdce7..44958e95d6 100644
--- a/app/models/association.rb
+++ b/app/models/association.rb
@@ -178,6 +178,7 @@ class Association < ApplicationModel
designation_evaluations
evaluations
graduate_programs
+ medical_schools
parent_occupations
pharmacy_colleges
phone_preferences
diff --git a/app/models/permissions/advisor_user_identity.rb b/app/models/permissions/advisor_user_identity.rb
index 3dfdc4d5bf..1fd1bfa14a 100644
--- a/app/models/permissions/advisor_user_identity.rb
+++ b/app/models/permissions/advisor_user_identity.rb
@@ -5,7 +5,7 @@ module Permissions
has_one :user_identity_cas, foreign_key: :user_identity_id
has_one :user_identity_college, foreign_key: :user_identity_id
has_one :cas, through: :user_identity_cas
- has_one :college_base, through: :user_identity_college
+ has_one :college_base, through: :user_identity_college, class_name: 'College'
# Virtual association, they don't provide relation between data
# Practical sence is to be able to preload cas and organization for any type of user identity
has_one :organization, -> { none }, class_name: 'Organization', through: :user_identity_organization
diff --git a/app/models/permissions/residency_user_identity.rb b/app/models/permissions/residency_user_identity.rb
index 3d507ebc19..ed6d139618 100644
--- a/app/models/permissions/residency_user_identity.rb
+++ b/app/models/permissions/residency_user_identity.rb
@@ -5,7 +5,7 @@ module Permissions
has_one :user_identity_cas, foreign_key: :user_identity_id
has_one :user_identity_college, foreign_key: :user_identity_id
has_one :cas, through: :user_identity_cas
- has_one :college_base, through: :user_identity_college
+ has_one :college_base, through: :user_identity_college, class_name: 'MedicalSchool'
has_one :organization, -> { none }, class_name: 'Organization', through: :user_identity_organization
validates_presence_of :cas
diff --git a/app/views/residency_users/index.html.haml b/app/views/residency_users/index.html.haml
index 4845946004..13c49e9df4 100644
--- a/app/views/residency_users/index.html.haml
+++ b/app/views/residency_users/index.html.haml
@@ -52,7 +52,7 @@
%td
= user_identities.first.cas.cycle_name
%td
- = user_identities.first.college_base.name
+ = user_identities.first.college_base&.name
%td
- if user_identities.first.active?
= login_icon_link 'Login As', user_login_path(user_identities.first)
@@ -64,7 +64,7 @@
%td
= user_identity.cas.cycle_name
%td
- = user_identity.college_base.name
+ = user_identity.college_base&.name
%td
- if user_identity.active?
= login_icon_link 'Login As', user_login_path(user_identity)
diff --git a/app/views/users/_residency_user_identity_row.html.haml b/app/views/users/_residency_user_identity_row.html.haml
index f6b64e0717..15ab5f5214 100644
--- a/app/views/users/_residency_user_identity_row.html.haml
+++ b/app/views/users/_residency_user_identity_row.html.haml
@@ -1,4 +1,4 @@
-- query = Association.where(name: 'ResidencyCAS').includes(:cycle, :colleges)
+- query = Association.where(name: 'ResidencyCAS').includes(:cycle, :medical_schools)
- cycles = query.to_a.map(&:cycle)
%tr
%td= select_tag 'residency_cycles', options_from_collection_for_select(cycles, :id, :name), prompt: 'Cycle'
@@ -8,7 +8,7 @@
= add_icon_link "Add to Medical School", residency_users_path, method: :post, id: 'add_residency', style: 'pointer-events: none'
:javascript
- const cas = #{query.to_json(only: [:id, :name], include: [{cycle: {only: [:id, :name]}}, {colleges: {only: [:id, :name]}}])}
+ const cas = #{query.to_json(only: [:id, :name], include: [{cycle: {only: [:id, :name]}}, {medical_schools: {only: [:id, :name]}}])}
const link = document.querySelector('#add_residency')
document.querySelector('#residency_cycles').onchange = function() {
const row = document.querySelector('#residency_colleges')
@@ -20,7 +20,8 @@
const found_cas = cas.find((c) => c.cycle.id === Number(this.value))
if(!found_cas) return
const s = document.createElement('select')
- found_cas.colleges.forEach((c) => {
+
+ found_cas.medical_schools.forEach((c) => {
const o = document.createElement('option')
o.value = c.id
o.text = c.name
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment