# encoding: utf-8
require "net/http"
require "uri"
require 'json'

class Admin::ImportController < OrbitBackendController

	open_for_admin

	def rss2_news
		@url = params['url']
		uri = URI.parse(@url)
		@host = uri.host
		http = Net::HTTP.new(uri.host, uri.port)
		request = Net::HTTP::Get.new(uri.request_uri)
		response = http.request(request)
		data = response.body
		data = JSON.parse(data)
		@categories = data['categories']
		@data = data['data']
		@xxx = []
		@new_category_ids = {}
		l = I18n.locale
		I18n.locale = :zh_tw
		module_id = ModuleApp.where(:key=>"announcement").first.id

		@categories.each do |category|
			x = Category.where(:title => category["zh_tw"]).first
			if x.nil?
				@xxx << category
				cat = Category.new
				titles = {}
		    	@site_valid_locales.each do |locale|
		    		titles[locale] = category[locale]
		    	end
		    	cat.title_translations = titles
		    	cat.module_app_id = module_id
		    	cat.save!
		    	@new_category_ids[category["id"]] = cat.id
			else
		    	@new_category_ids[category["id"]] = x.id
			end
		end

		@user = User.where(:user_id => "rulingcom").first

		@data.each do |row|
			# next if row['files'].size == 0
			bulletin = Bulletin.new
			bulletin.title_translations = row['Title']
			bulletin.subtitle_translations = row['Summary']

			next if row['Title']==[] and row['Summary']==[] and row['Content']==[]

			@site_valid_locales.each do |locale|
			    	if row['Content'][locale]=="" and row['Summary'][locale]!=""
			    		row['Content'][locale] = row['Summary'][locale]
			    		row['Summary'][locale] = " "
			    	end

			    	temp = row['Content'][locale]

			    	urls = Nokogiri::HTML(temp).css("img").map do |link|
					if URI.parse(link.attr("src")).host == @host
						link.attr("src")
					end
				end

			    	urls.each do |url|
			    		next if url.nil?
			    		a = Asset.new
			    		a.remote_data_url = url
			    		a.assetable_type = "User"
			    		a.assetable_id = @user.id
			    		a.title = {"en" => a["data"], "zh_tw" => a["data"]}
			    		a.save!
			    		temp.sub!(url,a.data.to_s)
			    	end
			    	row['Content'][locale] = temp
			end

			bulletin.text_translations = row['Content']
			bulletin.category_id = @new_category_ids[row["Category"]]
			bulletin.view_count = row["Visits"].blank? ? 0 : row["Visits"]
			bulletin.postdate = row["PostDate"]
			bulletin.deadline = row['Deadline']
			bulletin.remote_image_url = row["Pic"] if row["Pic"]

			if row["URL"] && row['URL'] != ""
				bl = BulletinLink.new
				bl.url = row["URL"] 
				bl.title_translations = {"en" => "Link", "zh_tw" => "Link"}
				bl.bulletin_id = bulletin.id
				bl.save!
			end
			row['files'].each do |f|
				bf = BulletinFile.new
				if f['url'].split('title=').size == 1
					f['url'] = f['url']+"檔案下載" 
				end

				f['title'] = "檔案下載" if f['title'].blank?

				bf.remote_file_url = f['url']
				bf.title_translations = {"en" => f['title'], "zh_tw" => f['title']}
				bf.bulletin_id = bulletin.id
				bf.save!

				# Rename uploaded file
				file_ext = File.extname(f['url'].split('&')[0])
				file = File.new("tmp/uploads/#{bf.title}#{file_ext}","w+b")
				file.write(bf.file.read)
				bf.file.cache!(file)
				bf.save!
				File.delete(file)
			end
			
			bulletin.tagged_ids = []
			bulletin.save!
		end

		I18n.locale = l

		redirect_to(panel_announcement_back_end_bulletins_url)
	end
end