Implement favoriting of courses
This commit is contained in:
@@ -40,6 +40,27 @@ class Crawlers::CoursesCrawlerController < Crawlers::TissCrawlerController
|
||||
end
|
||||
|
||||
def add_to_fav
|
||||
params[:api] = '/api/course/'
|
||||
regex = params[:detail_url].match(/courseNr=(?<number>\S{6})/)
|
||||
params[:number] = regex[:number]
|
||||
regex = params[:detail_url].match(/semester=(?<semester>\d{4}[SW])/)
|
||||
params[:semester] = regex[:semester]
|
||||
|
||||
@course = TissCrawler.get_course_details(params)
|
||||
|
||||
# create stores the object to the db after creation
|
||||
favorite_hash = {number: @course['courseNumber'],
|
||||
semester: @course['semesterCode'],
|
||||
title: @course['title']['de'],
|
||||
# the user who is currently active
|
||||
user_id: current_user.id}
|
||||
if FavoriteCourse.create(favorite_hash).valid?
|
||||
FavoriteCourse.create(favorite_hash)
|
||||
flash[:alert] = 'Course added to your favorites!'
|
||||
else
|
||||
flash[:alert] = 'Course is already favorited!'
|
||||
end
|
||||
redirect_back(fallback_location: search)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
class FavoriteCourse < ApplicationRecord
|
||||
validates :title, :semester, :number, presence: true
|
||||
validates :semester, :number, uniqueness: {scope: [:semester, :number]}
|
||||
end
|
||||
Reference in New Issue
Block a user