diff --git a/app/controllers/admin/import_data_controller.rb b/app/controllers/admin/import_data_controller.rb index bda2f9ed7..fbf0284b0 100644 --- a/app/controllers/admin/import_data_controller.rb +++ b/app/controllers/admin/import_data_controller.rb @@ -6,11 +6,11 @@ require 'open-uri' class Admin::ImportDataController < OrbitBackendController def get_teacher_data - uri = URI("https://15fc4b.ngrok.com/teachers.xml") + uri = URI("https://tp.rulingcom.com:33333/teachers.xml") + #params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"} #uri.query = URI.encode_www_form(params) res = Net::HTTP.get_response(uri) - @teacher_data = Hash.from_xml(res.body) @teachers = @teacher_data["objects"] @@ -42,53 +42,199 @@ class Admin::ImportDataController < OrbitBackendController @i += 10 if hash['email'].blank? @teacher.email = "#{@i}@ntu.edu.tw" - Rails.logger.info"@@@@@@@@@@@@@@@@@@@@@"+@teacher.email.inspect else @teacher.email = hash['email'] end - @teacher.user_id = hash['teacher_en'] + + if hash['teacher_zh_tw'].blank? + @teacher.user_id = hash['teacher_en'] + elsif hash['teacher_en'].blank? + @teacher.user_id = hash['teacher_zh_tw'] + end @teacher.save! end end - # def get_book_data - # uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp") - # params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"} - # uri.query = URI.encode_www_form(params) - # res = Net::HTTP.get_response(uri) - - # teachers = User.all - # teachers.each do |hash| - # if hash.ntu_seq.present? - # ntu_seq = hash.ntu_seq - # books_xml = Nokogiri::XML( \ - # open("http://ann.cc.ntu.edu.tw/Achv/xmlBook.asp?Seq=#{ntu_seq}")) - # @books = books_xml.xpath("//Book").map do |book_node| - # { - # author: (book_node>"Authors").text, - # year: (book_node>"PublishYear").text, - # title: (book_node>"DocTitle").text, - # remarks: (book_node>"Remarks").text, - # publisher: (book_node>"Publisher").text, - # book_title: (book_node>"BookTitle").text - # } - # end - # if @books.present? - # @books.each do |b| - # @book = WritingBook.new - # @book.authors = b[:author] - # @book.paper_title = b[:title] - # @book.book_title = b[:book_title] - # @book.year = b[:year] - # @book.note = b[:remarks] - # @book.publisher = b[:publisher] - # @book.create_user_id = hash.id - # @book.save - # end - # else - # puts "No books by Teacher" - # end - # end - # end - #end + def get_book_data + uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp") + params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"} + uri.query = URI.encode_www_form(params) + res = Net::HTTP.get_response(uri) + + teachers = User.all + + teachers.each do |hash| + if hash.ntu_seq.present? + ntu_seq = hash.ntu_seq + books_xml = Nokogiri::XML( \ + open("http://ann.cc.ntu.edu.tw/Achv/xmlBook.asp?Seq=#{ntu_seq}")) + @books = books_xml.xpath("//Book").map do |book_node| + { + author: (book_node>"Authors").text, + year: (book_node>"PublishYear").text, + title: (book_node>"DocTitle").text, + remarks: (book_node>"Remarks").text, + publisher: (book_node>"Publisher").text, + book_title: (book_node>"BookTitle").text + } + end + if @books.present? + @books.each do |b| + @book = WritingBook.new + @book.authors = b[:author] + @book.paper_title = b[:title] + @book.book_title = b[:book_title] + @book.year = b[:year] + @book.note = b[:remarks] + @book.publisher = b[:publisher] + @book.create_user_id = hash.id + @book.save + end + else + puts "No books by Teacher" + end + end + end + end + + def get_conference_data + uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp") + params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"} + uri.query = URI.encode_www_form(params) + res = Net::HTTP.get_response(uri) + + teachers = User.all + + teachers.each do |hash| + if hash.ntu_seq.present? + ntu_seq = hash.ntu_seq + conference_xml = Nokogiri::XML( \ + open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=C")) + #open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml")) + @conference_papers = conference_xml.xpath("//Paper").map do |cp_node| + { + author: (cp_node>"Authors").text, + year: (cp_node>"PublishYear").text, + title: (cp_node>"PaperTitle").text, + conference: (cp_node>"PublishOn").text, + date: Date::MONTHNAMES[(cp_node>"PublishMonth").text.to_i], + location: (cp_node>"Location").text, + remarks: (cp_node>"Remarks").text + } + end + if @conference_papers.present? + @conference_papers.each do |b| + @conference_paper = WritingConference.new + @conference_paper.authors = b[:author] + if b[:title].blank? + @conference_paper.paper_title = b[:title] + else + @conference_paper.paper_title = "No Title Present" + end + @conference_paper.year = b[:year] + @conference_paper.note = b[:remarks] + @conference_paper.create_user_id = hash.id + @conference_paper.save! + end + else + puts "No conference by Teacher" + end + end + end + end + + + def get_journal_paper_data + uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp") + params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"} + uri.query = URI.encode_www_form(params) + res = Net::HTTP.get_response(uri) + + teachers = User.all + + teachers.each do |hash| + if hash.ntu_seq.present? + ntu_seq = hash.ntu_seq + paper_xml = Nokogiri::XML( \ + #open("http://versatile.management.ntu.edu.tw/publication1/journal/#{ntuseq}.xml")) + open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=J")) + @journal_papers = paper_xml.xpath("//Paper").map do |paper_node| + { + author: (paper_node>"Authors").text, + year: (paper_node>"PublishYear").text, + title: (paper_node>"PaperTitle").text, + journal: (paper_node>"PublishOn").text, + volume:(paper_node>"Volume").text, + volumeno:(paper_node>"VolumeNo").text, + beginpage:(paper_node>"BeginPage").text, + endpage:(paper_node>"EndPage").text, + subgroup:(paper_node>"subgroup").text, + remarks: (paper_node>"Remarks").text, + cate: ((paper_node>"subgroup")>"group").text + } + end + if @journal_papers.present? + @journal_papers.each do |b| + @journal_paper = WritingJournal.new + @journal_paper.authors = b[:author] + if b[:title].blank? + @journal_paper.paper_title = b[:title] + else + @journal_paper.paper_title = "No Title Present" + end + @journal_paper.year = b[:year] + @journal_paper.note = b[:remarks] + @journal_paper.vol_no = b[:volumeno] + @journal_paper.form_to_start = b[:beginpage] + @journal_paper.form_to_end = b[:endpage] + @journal_paper.create_user_id = hash.id + @journal_paper.save! + end + else + puts "No journal paper by Teacher" + end + end + end + end + + def get_announcement_data + uri = URI("https://tp.rulingcom.com:33333/announcements.xml") + + #params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"} + #uri.query = URI.encode_www_form(params) + res = Net::HTTP.get_response(uri) + + @announcement_data = Hash.from_xml(res.body) + @announcements = @announcement_data["objects"] + @announcements.each do |hash| + @bulletin = Bulletin.new + + I18n.locale = :zh_tw + if hash['announcement_title_zh_tw'].blank? + @bulletin.title = hash['announcement_title_en'] + @bulletin.text = hash['announcement_content_zh_tw'] + elsif hash['announcement_title_zh_tw'].blank? && hash['announcement_title_en'].blank? + @bulletin.title = "Please Fill the Name" + @bulletin.text = hash['announcement_content_zh_tw'] + else + @bulletin.title = hash['announcement_title_zh_tw'] + @bulletin.text = hash['announcement_content_zh_tw'] + end + + I18n.locale = :en + if hash['announcement_title_en'].blank? + @bulletin.title = hash['announcement_zh_tw'] + @bulletin.text = hash['announcement_content_en'] + elsif hash['announcement_title_zh_tw'].blank? && hash['announcement_title_en'].blank? + @bulletin.first_name = "Please Fill the Name" + @bulletin.text = hash['announcement_content_en'] + else + @bulletin.first_name = hash['announcement_title_en'] + @bulletin.text = hash['announcement_content_en'] + end + + @bulletin.save! + end + end + end diff --git a/app/models/user/user.rb b/app/models/user/user.rb index c8a682c89..7623874b9 100644 --- a/app/models/user/user.rb +++ b/app/models/user/user.rb @@ -18,6 +18,8 @@ class User field :office_tel field :cache_dept,type: Hash field :status_record,type: Hash + field :ntu_seq + #validates :ntu_seq, :uniqueness => true has_and_belongs_to_many :approving_apps, class_name: 'AuthApproval', inverse_of: 'authorized_users' has_and_belongs_to_many :managing_apps, class_name: 'AuthManager', inverse_of: 'authorized_users' diff --git a/app/views/admin/import_data/get_journal_paper_data.html.erb b/app/views/admin/import_data/get_journal_paper_data.html.erb new file mode 100644 index 000000000..cd34dce59 --- /dev/null +++ b/app/views/admin/import_data/get_journal_paper_data.html.erb @@ -0,0 +1 @@ +
Successfully Journal Paper Data!
\ No newline at end of file