92 lines
3.0 KiB
Ruby
92 lines
3.0 KiB
Ruby
class Crawlers::CoursesCrawlerController < Crawlers::TissCrawlerController
|
|
|
|
def show_basic
|
|
params[:api] = '/api/search/course/v1.0/quickSearch'
|
|
params[:search_parameter] = 'searchterm'
|
|
puts params[:search_context]
|
|
@host = TissCrawler.host
|
|
|
|
# TissCrawler performs general search over the available courses
|
|
result = TissCrawler.search(params)
|
|
if result.has_key? :error
|
|
flash[:alert] = 'Something went wrong! ' + result[:error]
|
|
redirect_back(fallback_location: crawlers_tiss_crawler_search_path)
|
|
else
|
|
# TissCrawler performs general search over the available people
|
|
@courses = result[:content]
|
|
end
|
|
end
|
|
|
|
def show_detail
|
|
params[:api] = '/api/course/'
|
|
if (params[:number] || params[:semester]) == nil
|
|
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]
|
|
end
|
|
|
|
@personal_annotation = get_stored_annotation FavoriteCourse, {number: params[:number]}
|
|
|
|
puts params
|
|
|
|
# TissCrawler fetches the course's detail information
|
|
@course = TissCrawler.get_course_details(params)
|
|
puts @course
|
|
|
|
# Get all the org ids into one array
|
|
@lecturers_oid = @course['lecturers']['oid']
|
|
@lecturers_names = []
|
|
|
|
puts @lecturers_oid
|
|
|
|
if @lecturers_oid != nil
|
|
if @lecturers_oid.is_a?(Array)
|
|
# In case @lecturers_oid contains multiple items
|
|
@lecturers_oid.each do |item|
|
|
# For each org id get the associated name
|
|
puts TissCrawler.get_oid_name(item)
|
|
@lecturers_names << (TissCrawler.get_oid_name(item))
|
|
end
|
|
else
|
|
# In case @lecturers_oid only contains one item
|
|
@lecturers_names << (TissCrawler.get_oid_name(@lecturers_oid))
|
|
end
|
|
end
|
|
|
|
# Host is needed for image rendering
|
|
@host = TissCrawler.host
|
|
end
|
|
|
|
def add_to_fav
|
|
params[:api] = '/api/course/'
|
|
if (params[:number] || params[:semester]) == nil
|
|
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]
|
|
end
|
|
|
|
@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
|
|
|
|
def add_annotation
|
|
store_annotation FavoriteCourse, 'Course', {number: params[:id]}
|
|
end
|
|
|
|
end
|