From 8247f077dfdb3a763bd5687c7e73ae3315aafef4 Mon Sep 17 00:00:00 2001 From: Bernie Chiu Date: Wed, 25 Sep 2013 17:46:32 +0800 Subject: [PATCH] Change status based on your requests sent --- .../ask/back_end/ask_replies_controller.rb | 42 +++++++++++++------ 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/vendor/built_in_modules/ask_new/app/controllers/panel/ask/back_end/ask_replies_controller.rb b/vendor/built_in_modules/ask_new/app/controllers/panel/ask/back_end/ask_replies_controller.rb index 5ae4530ab..4a10f4050 100644 --- a/vendor/built_in_modules/ask_new/app/controllers/panel/ask/back_end/ask_replies_controller.rb +++ b/vendor/built_in_modules/ask_new/app/controllers/panel/ask/back_end/ask_replies_controller.rb @@ -28,15 +28,28 @@ class Panel::Ask::BackEnd::AskRepliesController < OrbitBackendController Resque.enqueue(SendAskReplyMail, @ask_reply.ask_question.id) end + status_stack = [] + new_status = "" params[:school][:depts].each do |dns| - next if dns.empty? begin - send_request(dns, @ask_question, @ask_reply) - rescue URI::InvalidURIError - next + status_stack << send_request(dns, @ask_question, @ask_reply) + rescue + status_stack << "fail" end end unless params[:school].nil? + success_count = status_stack.count("success") + failed_count = status_stack.count("fail") + + if failed_count == 0 && success_count > 0 + new_status = "轉介其他單位" + elsif failed_count > 0 && success_count > 0 + new_status = "部份傳送失敗 (Timeout)" + else + new_status = "傳送失敗 (Timeout)" + end + + @ask_reply.update_attributes(status: new_status) redirect_to panel_ask_back_end_ask_questions_path, notice: t('ask.reply_success') end @@ -49,6 +62,7 @@ class Panel::Ask::BackEnd::AskRepliesController < OrbitBackendController uri = URI.parse("http://" + dep_dns + uri_path) http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Post.new(uri.request_uri) + body = { # 'auth_token' => '3kjlfksjDFJ', 'name' => current_question.name, @@ -60,20 +74,22 @@ class Panel::Ask::BackEnd::AskRepliesController < OrbitBackendController 'content' => current_question.content, } #binding.pry - 2.times do + status = "" + 3.times do request.set_form_data(body) request.add_field 'X-Auth-Token', '3kjlfksjDFJ' response = http.request(request) - if response.code != "200" - new_status = "部份傳送失敗" - current_reply.update_attributes(status: new_status) - elsif response.code == "200" && (current_reply.status != "部份傳送失敗") - new_status = "轉介其他單位" - current_reply.update_attributes(status: new_status) + + if response.code == "200" + status = "success" break - end + else + status = "fail" + end end - puts "Response #{response.code} #{response.message}: #{response.body}" + + return status + # puts "Response #{response.code} #{response.message}: #{response.body}" # flash[:notice] = response.body # flash[:notice] = "Response #{response.code} #{response.message}: #{response.body}" end