tiss2go/app/controllers/crawlers/courses_crawler_controller.rb

96 lines
3.1 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]}
@personal_keyword = get_stored_keyword 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
def add_keyword
store_keyword FavoriteCourse, 'Course', {number: params[:id]}
end
end