client_management/app/controllers/client_managements_controll...

221 lines
6.6 KiB
Ruby

class ClientManagementsController < CPanelController
include CPanelHelper
before_filter :is_user_authorized?
before_filter :is_site_authorized_to_user?, :only => ["show", "site_tickets", "new_ticket", "create_ticket"]
before_filter :is_ticket_authorized_to_user?, :only => ["close_ticket","reopen_ticket","delete_ticket", "show_ticket", "create_ticket_query"]
def index
end
def user_sites
@sites = current_cpanel_user.registered_sites
@sites = Kaminari.paginate_array(@sites).page(params[:page]).per(10)
render :layout => false
end
def addsite
if session[:addsitestouser].present?
@noticemsg = true
@uid = session[:request_uid]
session.delete(:addsitestouser)
session.delete(:request_uid)
end
end
def addnewsite
@newrequest = SiteRequest.new
@user_sites = current_cpanel_user.registered_sites.collect{|rs|[rs.title, rs.id.to_s]}
@user_sites << ["Create new site", "newsite"]
@optional_modules = RegisteredModule.where(:category_id => "54ae569248345219fa080000", :approved => true)
end
def requestsite
rs = SiteRequest.new(rs_params)
rs.c_panel_user = current_cpanel_user
rs.type = rs.site_id == "newsite" ? "newsite" : "existing"
rs.save
session[:addsitestouser] = true
session[:request_uid] = sr.uid
redirect_to cpanel_add_site_path
end
def addsitestouser
urls = params[:urls].split(";") rescue []
sr = SiteRequest.new
sr.sites_to_add = urls
sr.c_panel_user = current_cpanel_user
sr.type = "addsites"
sr.save
session[:addsitestouser] = true
session[:request_uid] = sr.uid
redirect_to cpanel_add_site_path
end
def show
@categories = ModuleApp.where(:key => "ticket").first.categories.enabled.collect{|cat| [cat.title, cat.id.to_s] }
end
def show_ticket
if session[:reopen_cpanel_error].present?
@reopen_error = session[:reopen_cpanel_error]
session.delete(:reopen_cpanel_error)
end
end
def dofirstrun
do_first_time_run
@sites = current_cpanel_user.registered_sites
@sites = Kaminari.paginate_array(@sites).page(params[:page]).per(10)
render :layout => false
end
def site_tickets
if params[:category].present? && params[:keyword].present?
regex = Regexp.new(".*" + params[:keyword] + ".*", "i")
@tickets = @site.tickets.where(:category_id => params[:category], :subject => regex).order_by([:status, :desc],[:created_at, :desc]).page(params[:page]).per(10)
elsif params[:category].present?
@tickets = @site.tickets.where(:category_id => params[:category]).order_by([:status, :desc],[:created_at, :desc]).page(params[:page]).per(10)
elsif params[:keyword].present?
regex = Regexp.new(".*" + params[:keyword] + ".*", "i")
@tickets = @site.tickets.where(:subject => regex).order_by([:status, :desc],[:created_at, :desc]).page(params[:page]).per(10)
else
@tickets = @site.tickets.order_by([:status, :desc],[:created_at, :desc]).page(params[:page]).per(10)
end
render :layout => false
end
def new_ticket
@categories = ModuleApp.where(:key => "ticket").first.categories.enabled.collect{|cat| [cat.title, cat.id.to_s] }
@ticket = Ticket.new
end
def create_ticket
ticket = Ticket.new(ticket_params)
ticket.save
redirect_to cpanel_site_show_path(@site.uid)
end
def close_ticket
@ticket.status = "closed"
@ticket.save
if request.xhr?
render :json => {"success" => true}.to_json
else
redirect_to cpanel_show_ticket_path(@ticket.id)
end
end
def delete_ticket
@ticket.destroy
if request.xhr?
render :json => {"success" => true}.to_json
else
redirect_to cpanel_show_ticket_path(@ticket.id)
end
end
def reopen_ticket
if @ticket.can_be_reopened?
@ticket_query = @ticket.ticket_queries.new
else
session[:reopen_cpanel_error] = "This ticket cannot be reopened."
redirect_to cpanel_show_ticket_path(@ticket.id) and return
end
end
def create_ticket_query
if @ticket.can_be_reopened?
TicketQuery.create(tq_params)
@ticket.reopened_count = @ticket.reopened_count + 1
@ticket.status = "open"
@ticket.save
redirect_to cpanel_show_ticket_path(@ticket.id) and return
else
session[:reopen_cpanel_error] = "This ticket cannot be reopened."
redirect_to cpanel_show_ticket_path(@ticket.id) and return
end
end
# profile panel code
def myprofile
@user = CPanelUser.find(current_cpanel_user.id) rescue nil
end
def update_member_profile
user = CPanelUser.find(current_cpanel_user.id) rescue nil
user.update_attributes(update_member_profile_params)
user.save
redirect_to cpanel_myprofile_path
end
def myprofilepassword
if session[:update_profile_password_set]
if !session[:update_profile_password_error].blank?
@error = session[:update_profile_password_error]
session.delete(:update_profile_password_error)
session.delete(:update_profile_password_set)
else
session.delete(:update_profile_password_set)
@error = "success"
end
end
@user = CPanelUser.find(current_cpanel_user.id) rescue nil
end
def update_member_profile_password
session[:update_profile_password_set] = true
user = CPanelUser.find(current_cpanel_user.id) rescue nil
if user && user.authenticate(params[:current_password])
if params[:new_password] == params[:repeat_password]
user.update_password(params[:new_password], params[:repeat_password])
else
session[:update_profile_password_error] = "New password and repeat password don't match."
end
else
session[:update_profile_password_error] = "Your current password did not match."
end
redirect_to cpanel_myprofilepassword_path
end
private
def is_site_authorized_to_user?
@site = RegisteredSite.where(:uid => params[:site_uid]).first
if !current_cpanel_user.registered_site_ids.include?(@site.id)
redirect_to sites_path
end
end
def is_ticket_authorized_to_user?
@ticket = Ticket.find(params[:ticket_id]) rescue nil
if @ticket.nil? || !current_cpanel_user.registered_site_ids.include?(@ticket.registered_site.id)
if request.xhr?
render :json => {"success" => false}.to_json and return
else
redirect_to sites_path
end
else
@site = @ticket.registered_site
end
end
def ticket_params
params.require(:ticket).permit!
end
def tq_params
params.require(:ticket_query).permit!
end
def update_member_profile_params
params.require(:c_panel_user).permit!
end
def rs_params
params.require(:site_request).permit!
end
end