319 lines
8.4 KiB
Ruby
319 lines
8.4 KiB
Ruby
class Panel::ErEmail::BackEnd::EmailErsController < OrbitBackendController
|
|
# before_filter :for_app_manager,:except => [:index,:show]
|
|
include OrbitControllerLib::DivisionForDisable
|
|
|
|
|
|
before_filter :force_order_for_user
|
|
|
|
|
|
before_filter :only => [ :new,:edit,:update,:create] do |controller|
|
|
controller.get_categorys('EmailErCategory')
|
|
end
|
|
|
|
def preview
|
|
email_er = EmailEr.new params
|
|
@preview_obj = email_er.to_preview
|
|
@preview_obj.save
|
|
render '/shared/preview/preview.html.erb',:layout=>false
|
|
end
|
|
|
|
def index
|
|
|
|
get_categorys("EmailErCategory",params[:email_er_category_id])
|
|
|
|
email_group_data
|
|
|
|
@filter = params[:filter]
|
|
new_filter = params[:new_filter]
|
|
|
|
if @filter && params[:clear]
|
|
@filter.delete(params[:type])
|
|
elsif @filter && new_filter
|
|
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
|
|
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
|
|
elsif @filter.has_key?(new_filter[:type])
|
|
@filter[new_filter[:type]] << new_filter[:id].to_s
|
|
else
|
|
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
|
|
end
|
|
elsif new_filter
|
|
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
|
|
end
|
|
|
|
@email_er_categories = get_categories_for_index("EmailErCategory")
|
|
@email_er_category_ids = @email_er_categories.collect{|t| t.id.to_s} + [nil]
|
|
|
|
@email_ers = (params[:sort] || @filter) ? get_sorted_and_filtered("email_er",:email_er_category_id.in => @email_er_category_ids) : get_viewable("email_er",:email_er_category_id.in => @email_er_category_ids)
|
|
|
|
respond_to do |format|
|
|
format.html # index.html.erb
|
|
format.xml { render :xml => @email_ers }
|
|
format.js
|
|
end
|
|
end
|
|
|
|
# GET /email_ers/1
|
|
# GET /email_ers/1.xml
|
|
|
|
def show
|
|
|
|
email_group_data
|
|
|
|
@item = Page.find(params[:page_id]) rescue nil
|
|
if params[:preview] == "true"
|
|
preview_content
|
|
else
|
|
@email_er = EmailEr.all.can_display.where(_id: params[:id]).first
|
|
if @email_er and !@email_er.disable? and !@email_er.is_rejected
|
|
if @email_er.enabled_for_lang(I18n.locale.to_s)
|
|
delayed_impressionist(@email_er)
|
|
# get_categorys
|
|
else
|
|
render :text => "<div class='alert alert-error'>#{t('sys.can_not_display_due_to_no_context')}</div>".html_safe
|
|
end
|
|
else
|
|
render :nothing => true, :status => 403
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
def preview_content
|
|
@email_er = EmailEr.find params[:id] rescue nil
|
|
@email_er = Preview.find(params[:id]).get_virtual_object if @email_er.nil?
|
|
# get_categorys
|
|
end
|
|
|
|
# GET /email_ers/new
|
|
# GET /email_ers/new.xml
|
|
def new
|
|
|
|
email_group_data
|
|
|
|
@email_er = EmailEr.new(:mail_sentdate => DateTime.now)
|
|
|
|
respond_to do |format|
|
|
format.html # new.html.erb
|
|
format.xml { render :xml => @email_er }
|
|
end
|
|
end
|
|
|
|
# GET /email_ers/1/edit
|
|
def edit
|
|
|
|
email_group_data
|
|
|
|
@email_er = EmailEr.find(params[:id])
|
|
|
|
end
|
|
|
|
# POST /email_ers
|
|
# POST /email_ers.xml
|
|
def create
|
|
|
|
email_group_data
|
|
|
|
@email_er = EmailEr.new(params[:email_er])
|
|
@email_er.create_user_id = current_user.id
|
|
@email_er.update_user_id = current_user.id
|
|
|
|
if(is_manager? || is_admin?)
|
|
@email_er.is_checked = true
|
|
@email_er.is_rejected = false
|
|
@email_er.de_pending
|
|
end
|
|
|
|
respond_to do |format|
|
|
if @email_er.save
|
|
|
|
if @email_er.is_checked == true and !@email_er.is_rejected
|
|
send_email_data(@email_er)
|
|
end
|
|
|
|
format.html { redirect_to(panel_er_email_back_end_email_ers_url) }
|
|
format.xml { render :xml => @email_er, :status => :created, :location => @email_er }
|
|
# format.js
|
|
format.js {
|
|
@info = {"success"=>"true","redirect_url"=>panel_er_email_back_end_email_ers_url}
|
|
flash[:notice] = t('er_email.create_er_email_success')
|
|
render "/shared/preview/after_create.js.erb"
|
|
}
|
|
else
|
|
format.html { render :action => "new" }
|
|
format.xml { render :xml => @email_er.errors, :status => :unprocessable_entity }
|
|
format.js {
|
|
@info = {"success"=>"false","redirect_url"=>new_panel_er_email_back_end_email_er_url(:email_er => @email_er)}
|
|
session[:in_validate_object] = @email_er
|
|
render "/shared/preview/after_create.js.erb"
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
# PUT /email_ers/1
|
|
# PUT /email_ers/1.xml
|
|
def update
|
|
|
|
email_group_data
|
|
|
|
@email_er = EmailEr.find(params[:id])
|
|
|
|
@email_er.update_user_id = current_user.id
|
|
|
|
respond_to do |format|
|
|
if @email_er.update_attributes(params[:email_er])
|
|
|
|
if(is_manager? || is_admin?)
|
|
@email_er.is_checked = true
|
|
@email_er.is_rejected = false
|
|
@email_er.de_pending!
|
|
end
|
|
|
|
if @email_er.is_checked == true and !@email_er.is_rejected
|
|
send_email_data(@email_er)
|
|
end
|
|
|
|
format.html { redirect_to(panel_er_email_back_end_email_ers_url(:page => params[:page])) }
|
|
format.xml { head :ok }
|
|
else
|
|
format.html { render :action => "edit" }
|
|
format.xml { render :xml => @email_er.errors, :status => :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
|
|
# DELETE /email_ers/1
|
|
# DELETE /email_ers/1.xml
|
|
def destroy
|
|
@email_er = EmailEr.find(params[:id])
|
|
@email_er.destroy
|
|
|
|
respond_to do |format|
|
|
format.html { redirect_to(panel_er_email_back_end_email_ers_url) }
|
|
# format.xml { head :ok }
|
|
format.js
|
|
end
|
|
end
|
|
|
|
def delete
|
|
if params[:ids]
|
|
# email_ers = EmailEr.any_in(:_id => params[:ids]).destroy_all
|
|
end
|
|
redirect_to panel_er_email_back_end_email_ers_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
|
end
|
|
|
|
def email_resend
|
|
if params[:id]
|
|
@email_er = EmailEr.find(params[:id])
|
|
|
|
@email_er.is_checked = false
|
|
@email_er.is_pending = true
|
|
|
|
@email_er.save
|
|
|
|
end
|
|
redirect_to panel_er_email_back_end_email_ers_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
|
end
|
|
|
|
def test_send_email
|
|
if params[:id]
|
|
@email_er = EmailEr.find(params[:id])
|
|
|
|
if (@email_er.create_user_id == current_or_guest_user.id) || is_manager?
|
|
if current_or_guest_user.admin? || (!@email_er.is_rejected? && !@email_er.is_checked?)
|
|
if @email_er.is_pending
|
|
send_email_data( @email_er , true )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
redirect_to panel_er_email_back_end_email_ers_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
|
|
end
|
|
|
|
protected
|
|
|
|
def send_email_data(email_er , test_send = false)
|
|
|
|
@user = User.find(email_er.create_user_id)
|
|
|
|
if !test_send
|
|
|
|
email_group_data
|
|
|
|
@group_mail = Array.new
|
|
|
|
email_er.email_group.each do |egroup|
|
|
|
|
if @email_group_data.include?(egroup) and (egroup == '0' or egroup == '1' or egroup == '2' or egroup == '3')
|
|
|
|
@group_mail << @email_group_data[egroup]["email"]
|
|
|
|
elsif @email_group_data.include?(egroup) and egroup == '4'
|
|
|
|
@group_mail << email_er.other_mailaddress
|
|
|
|
end
|
|
|
|
end
|
|
|
|
else
|
|
|
|
# @group_mail = ["spen@rulingcom.com"]
|
|
@group_mail = [@user.email]
|
|
|
|
end
|
|
|
|
if !@group_mail.join.blank?
|
|
|
|
@mail_content = {
|
|
"text" => email_er.mail_content
|
|
}
|
|
|
|
@mail_cron = {
|
|
:mail_from_app => 'er_email',
|
|
:mail_from => @user.email,
|
|
:mail_reply_to => @user.email,
|
|
:mail_subject => email_er.mail_subject,
|
|
:mail_to => @group_mail.join(','),
|
|
:mail_content => @mail_content ,
|
|
# :mail_sentdate => email_er.mail_sentdate,
|
|
:mail_sentdate => DateTime.now,
|
|
:create_user_id => email_er.create_user_id,
|
|
:update_user_id => email_er.create_user_id
|
|
}
|
|
|
|
@mail_cron = MailCron.new(@mail_cron)
|
|
|
|
email_er.email_er_files.each do | mrfile |
|
|
|
|
@mcfile = @mail_cron.mail_cron_files.build
|
|
|
|
tmp_file = File.new(mrfile.file_identifier, 'w+')
|
|
|
|
tmp_file.write(Mongo::GridFileSystem.new(Mongoid.database).open(mrfile.file.url.gsub("/gridfs/", ""), 'r').read.force_encoding("UTF-8"))
|
|
|
|
@mcfile.file = tmp_file
|
|
|
|
@mcfile.title = mrfile.title
|
|
|
|
# delete file
|
|
FileUtils.rm_f(tmp_file)
|
|
|
|
end
|
|
|
|
@mail_cron.save
|
|
|
|
MailCron.send_mail_now(@mail_cron.id)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
def email_group_data
|
|
|
|
@email_group_data = EmailEr.email_group_data
|
|
|
|
end
|
|
|
|
end
|