I have no idea how this requirement shall be implemented at the end, but at first step, the tiss_crawler.rb lib checks if the search_term is an empty string and returns an error msg if found otherwise it returns the result, but appended to 'content' key
86 lines
2.8 KiB
Ruby
86 lines
2.8 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
|
|
|
|
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
|
|
|
|
end
|