VRFS-4058 - update search ordering for teachers
This commit is contained in:
parent
f9429f8712
commit
9725667e2a
|
|
@ -348,4 +348,5 @@ add_test_drive_types.sql
|
||||||
updated_subjects.sql
|
updated_subjects.sql
|
||||||
update_payment_history.sql
|
update_payment_history.sql
|
||||||
lesson_booking_schools.sql
|
lesson_booking_schools.sql
|
||||||
lesson_booking_schools_2.sql
|
lesson_booking_schools_2.sql
|
||||||
|
phantom_accounts.sql
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
ALTER TABLE users ADD COLUMN phantom BOOLEAN DEFAULT FALSE NOT NULL;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION phantom_check() RETURNS TRIGGER
|
||||||
|
STRICT VOLATILE AS $$
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
-- Remember who changed the payroll when
|
||||||
|
NEW.phantom := (SELECT NEW.email ilike 'phantom+%@jamkazam.com');
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE TRIGGER phantom_update BEFORE INSERT OR UPDATE
|
||||||
|
ON users FOR EACH ROW EXECUTE PROCEDURE phantom_check(id);
|
||||||
|
|
||||||
|
UPDATE users set updated_at = NOW();
|
||||||
|
|
@ -132,6 +132,13 @@ module JamRuby
|
||||||
query = query.where("teaches_age_lower <= ? AND (CASE WHEN teaches_age_upper = 0 THEN true ELSE teaches_age_upper >= ? END)", student_age, student_age)
|
query = query.where("teaches_age_lower <= ? AND (CASE WHEN teaches_age_upper = 0 THEN true ELSE teaches_age_upper >= ? END)", student_age, student_age)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# order in this way: https://jamkazam.atlassian.net/browse/VRFS-4058
|
||||||
|
# Real teachers who are marked as top.
|
||||||
|
# Real teachers who are not marked as top.
|
||||||
|
# Phantom teachers.
|
||||||
|
|
||||||
|
query = query.order("top_rated DESC, phantom ASC")
|
||||||
|
|
||||||
current_page = params[:page].nil? ? 1 : params[:page].to_i
|
current_page = params[:page].nil? ? 1 : params[:page].to_i
|
||||||
next_page = current_page + 1
|
next_page = current_page + 1
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,29 @@ describe Teacher do
|
||||||
teachers[0].should eq(teacher.user)
|
teachers[0].should eq(teacher.user)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "sorting" do
|
||||||
|
|
||||||
|
teacher3 = FactoryGirl.create(:teacher, ready_for_session_at: Time.now)
|
||||||
|
teacher3.user.email = 'phantom+dogpound@jamkazam.com'
|
||||||
|
teacher3.user.save!
|
||||||
|
|
||||||
|
|
||||||
|
teacher2 = FactoryGirl.create(:teacher, ready_for_session_at: Time.now)
|
||||||
|
teacher2.top_rated = false
|
||||||
|
teacher2.save!
|
||||||
|
|
||||||
|
|
||||||
|
teacher1 = FactoryGirl.create(:teacher, ready_for_session_at: Time.now)
|
||||||
|
teacher1.top_rated = true
|
||||||
|
teacher1.save!
|
||||||
|
|
||||||
|
query = Teacher.index(nil, {})[:query]
|
||||||
|
query.count.should eql 3
|
||||||
|
query[0].should eq(teacher1.user)
|
||||||
|
query[1].should eq(teacher2.user)
|
||||||
|
query[2].should eq(teacher3.user)
|
||||||
|
end
|
||||||
|
|
||||||
it "instruments" do
|
it "instruments" do
|
||||||
teacher = FactoryGirl.create(:teacher, ready_for_session_at: Time.now)
|
teacher = FactoryGirl.create(:teacher, ready_for_session_at: Time.now)
|
||||||
teachers = Teacher.index(nil, {instruments: ['acoustic guitar']})[:query]
|
teachers = Teacher.index(nil, {instruments: ['acoustic guitar']})[:query]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue