Created
January 30, 2024 22:21
-
-
Save jcreed/c4597852b0ef351547cbf8b7f9f3467e to your computer and use it in GitHub Desktop.
CollegeBase types
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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