diff --git a/app/controllers/admin/asks_controller.rb b/app/controllers/admin/asks_controller.rb index fd97887..b46da32 100644 --- a/app/controllers/admin/asks_controller.rb +++ b/app/controllers/admin/asks_controller.rb @@ -6,6 +6,9 @@ class Admin::AsksController < OrbitAdminController before_action :set_askquestion, only: [:edit, :destroy, :update, :print] layout :compute_layout helper_method :ask_thead + def show + @ask_status_histories = @ask_question.ask_status_histories.reverse + end def compute_layout if action_name=='print' false @@ -389,7 +392,7 @@ class Admin::AsksController < OrbitAdminController temp_params['custom_values'][to_save[0]] = [temp_params['custom_values'][to_save[0]].original_filename ,to_save[1].file.url] end end - temp_params = temp_params.merge({reviewer: current_user.member_profile, review_time: DateTime.now}) + temp_params = temp_params.merge({reviewer: current_user.member_profile, review_time: DateTime.now, user: current_user}) @ask_question.update_attributes(temp_params) if @ask_question.send_email? build_email(@ask_question) @@ -410,6 +413,12 @@ class Admin::AsksController < OrbitAdminController site = Site.first mail_from = site.title_translations[site['default_locale']] + new_history = email_er.new_history + host_url = Site.first.root_url rescue "http://" + if host_url == "http://" + host_url = request.protocol + request.host_with_port + end + email_er.email.update_attributes( :mail_lang=> site['default_locale'], :create_user=>current_user, @@ -419,7 +428,9 @@ class Admin::AsksController < OrbitAdminController :mail_subject=>mail_from+" #{t('ask.reply')}:", :template=>'admin/asks/email', :template_data=>{ - "reply" => email_er.reply + "host_url" => host_url, + "reply" => email_er.reply, + "attachment" => (new_history ? new_history.file.url : nil) } ) end diff --git a/app/models/ask_question.rb b/app/models/ask_question.rb index 54ef4bb..86c5c2f 100644 --- a/app/models/ask_question.rb +++ b/app/models/ask_question.rb @@ -30,11 +30,27 @@ class AskQuestion field :review_time, type: DateTime belongs_to :reviewer, class_name: "MemberProfile", foreign_key: :reviewer_id + has_many :ask_status_histories + + attr_accessor :release_comment, :release_file, :user before_create do last_serial_number = AskSetting.update_last_serial_number self.serial_number = last_serial_number end + + before_save :create_ask_status_history + + def release_comment=(v) + @changed = true + @release_comment = v + end + + def release_file=(v) + @changed = true + @release_file = v + end + def email mail = Email.where(:id=>self.email_id).first end @@ -79,5 +95,24 @@ class AskQuestion def send_email? self.send_email == 1 end + + def new_history + @new_history + end + + private + + def create_ask_status_history + if changed? || @changed + @new_history = AskStatusHistory.create( + ask_question: self, + status: self.situation, + comment: @release_comment, + file: @release_file, + user: @user + ) + else + @new_history = nil + end end end diff --git a/app/models/ask_status_history.rb b/app/models/ask_status_history.rb new file mode 100644 index 0000000..cc62ee4 --- /dev/null +++ b/app/models/ask_status_history.rb @@ -0,0 +1,19 @@ +class AskStatusHistory + include Mongoid::Document + include Mongoid::Timestamps + + field :status, type: String + field :comment, type: String + belongs_to :user + belongs_to :ask_question + + mount_uploader :file, AssetUploader + + def modified_by_name + if user.present? && user.member_profile.present? + user.member_profile.name + end + end +end + + diff --git a/app/models/ask_ticket_status.rb b/app/models/ask_ticket_status.rb index 6985389..29d317c 100644 --- a/app/models/ask_ticket_status.rb +++ b/app/models/ask_ticket_status.rb @@ -39,4 +39,8 @@ class AskTicketStatus end trans end + + def self.default_sorting + self.all.sort_by{|a| [a.is_default ? 0 : 1, DefaultKeys.index(a.key)] } + end end \ No newline at end of file diff --git a/app/views/admin/asks/_form.html.erb b/app/views/admin/asks/_form.html.erb index b019e4c..b1cf3e0 100644 --- a/app/views/admin/asks/_form.html.erb +++ b/app/views/admin/asks/_form.html.erb @@ -41,102 +41,180 @@ }) }) +
| <%= AskQuestion.human_attribute_name(:name) %>:<%= @ask_question.name %> | - -<%= AskQuestion.human_attribute_name(:mail) %>:<%= @ask_question.mail %> | -<%= AskQuestion.human_attribute_name(:phone) %>:<%= @ask_question.phone %> | - -||
| <%= t('ask.serial_number') %>:<%= @ask_question.get_serial_number %> | -||||
| <%= t('ask.ip') %>:<%= @ask_question.ip %> | -||||
| <%= t('title') %>:<%= @ask_question.title %> | -||||
| <%= AskQuestion.human_attribute_name(:appointment) %>:<%= @ask_question.appointment.strftime("%Y-%m-%d %H:%M") rescue nil %> | - -||||
|
- <%= f.label :reply %>
- <%= f.text_area :reply, rows: 10, style: 'width: 500px' %> - |
- ||||
|
- <%= f.label :comment %>
- <%= @ask_question.comment %> |
- ||||
| <%= f.label :agree_show %><%= @ask_question.agree_show ? t('ask.yes') : t('ask.no') %> - | -||||
| <%= f.label t('situation') %> - <%= f.select :situation, AskTicketStatus.all.map{|a| [a.title, a.key]} %> - | -||||
|
- <%= f.label :send_email, class: "control-label muted" %>
-
+
+
+
+
+ <% ask_setting.custom_fields.each do |k,v| %>
+ <%
+ required_pattern = v['required']=='true' ? '*' : ''
+ %>
+ <%= AskQuestion.human_attribute_name(:name) %>:<%= @ask_question.name %>
+ <%= AskQuestion.human_attribute_name(:mail) %>:<%= @ask_question.mail %>
+ <%= AskQuestion.human_attribute_name(:phone) %>:<%= @ask_question.phone %>
+
+
-
-
-
-
-
-
-
-
-
+ <%= show_on_front(k,v,@ask_question,true) %>
- |
- ||||
| <%= t('status') %> | +<%= t('ask.modified_by') %> | +<%= t('ask.remark') %> | +<%= t('ask.attachment') %> | +<%= t('ask.updated_at') %> | +
|---|---|---|---|---|
| + <%= status_mapping[ask_status_history.status] %> + | ++ <%= ask_status_history.modified_by_name %> + | ++ <%= ask_status_history.comment %> + | ++ <%= link_to(ask_status_history[:file], ask_status_history.file.url) if ask_status_history.file.present? %> + | ++ <%= ask_status_history.created_at.strftime("%Y-%m-%d %H:%M:%S") %> + | +
<%= t('no_history_records') %>
+ <% end %> +
<%= @data['reply'].to_s.gsub(/[(\n)(\r)]/, "\n" => "
", "\r" => "" ).html_safe %>
+ <%= t('ask.attachment') %>: + <%= filename %> +
+ <% end %><%= t('ask.email_automation_hint') %>