317 lines
11 KiB
Ruby
317 lines
11 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"]
|
|
@user_sites << ["Upgrade from R2", "upgrade"]
|
|
@optional_modules = RegisteredModule.where(:category_id.in => ["54ae569248345219fa080000","54abc1797470006ee0270000"], :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"
|
|
case rs.site_id
|
|
when "newsite"
|
|
rs.type = "newsite"
|
|
when "upgrade"
|
|
rs.type = "upgrade"
|
|
else
|
|
rs.type = "existing"
|
|
end
|
|
rs.save
|
|
session[:addsitestouser] = true
|
|
session[:request_uid] = rs.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_construct.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_construct.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_construct.tickets.where(:subject => regex).order_by([:status, :desc],[:created_at, :desc]).page(params[:page]).per(10)
|
|
else
|
|
@tickets = @site_construct.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_construct.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
|
|
|
|
def history
|
|
if !params[:query].present?
|
|
@objects = SiteRequest.where(:c_panel_user_id => current_cpanel_user.id).desc(:created_at).page(params[:page]).per(15)
|
|
elsif params[:query] == "addsites"
|
|
@objects = SiteRequest.where(:type => "addsites", :c_panel_user_id => current_cpanel_user.id).desc(:created_at).page(params[:page]).per(15)
|
|
else
|
|
@objects = SiteRequest.where(:site_id => params[:query], :c_panel_user_id => current_cpanel_user.id).desc(:created_at).page(params[:page]).per(15)
|
|
end
|
|
if request.xhr?
|
|
render :partial => "history_partial"
|
|
else
|
|
@user_sites = current_cpanel_user.registered_sites.collect{|rs|[rs.title, rs.id.to_s]}
|
|
@user_sites << ["New site request", "newsite"]
|
|
@user_sites << ["Addition of sites request", "addsites"]
|
|
end
|
|
end
|
|
|
|
def see_request
|
|
@site_request = SiteRequest.where(:uid => params[:request_uid]).first rescue nil
|
|
end
|
|
|
|
def see_contract
|
|
@contract = RequestContract.where(:uid => params[:contract_uid]).first rescue nil
|
|
@site_request = @contract.site_request
|
|
end
|
|
|
|
def update_contract
|
|
contract = RequestContract.where(:uid => params[:contract_uid]).first rescue nil
|
|
contract.update_attributes(contract_params)
|
|
redirect_to cpanel_contract_show_path(contract.uid)
|
|
end
|
|
|
|
def cancel_request
|
|
request = SiteRequest.where(:uid => params[:request_uid]).first rescue nil
|
|
request.destroy if !request.nil?
|
|
redirect_to cpanel_myhistory_path(:page => params[:page])
|
|
end
|
|
|
|
def contracts
|
|
if !params[:query].present?
|
|
@objects = SiteRequest.any_of({:site_id.in => current_cpanel_user.registered_site_ids.collect{|id| id.to_s}, :request_contract.ne => nil},{:c_panel_user_id => current_cpanel_user.id, :request_contract.ne => nil}).desc(:created_at).page(params[:page]).per(15)
|
|
else
|
|
@objects = SiteRequest.where(:site_id => params[:query], :request_contract.ne => nil).desc(:created_at).page(params[:page]).per(15)
|
|
end
|
|
if request.xhr?
|
|
render :partial => "contract_partial"
|
|
else
|
|
@user_sites = current_cpanel_user.registered_sites.collect{|rs|[rs.title, rs.id.to_s]}
|
|
@user_sites << ["New site request", "newsite"]
|
|
end
|
|
end
|
|
|
|
def purchases
|
|
if !params[:query].present?
|
|
site_requests = SiteRequest.any_of({:site_id.in => current_cpanel_user.registered_site_ids.collect{|id| id.to_s}, :request_contract.ne => nil},{:c_panel_user_id => current_cpanel_user.id, :request_contract.ne => nil}).asc(:created_at)
|
|
@purchases = site_requests.collect{|sr| sr.request_contract.contract_purchase if sr.request_contract.contract_purchase != nil}
|
|
@purchases.delete(nil)
|
|
@purchases = Kaminari.paginate_array(@purchases).page(params[:page]).per(15)
|
|
else
|
|
site_requests = SiteRequest.where(:site_id => params[:query], :request_contract.ne => nil).asc(:created_at)
|
|
@purchases = site_requests.collect{|sr| sr.request_contract.contract_purchase if sr.request_contract.contract_purchase != nil}
|
|
@purchases.delete(nil)
|
|
@purchases = Kaminari.paginate_array(@purchases).page(params[:page]).per(15)
|
|
end
|
|
if request.xhr?
|
|
render :partial => "purchase_partial"
|
|
else
|
|
@user_sites = current_cpanel_user.registered_sites.collect{|rs|[rs.title, rs.id.to_s]}
|
|
@user_sites << ["New site request", "newsite"]
|
|
end
|
|
end
|
|
|
|
def confirm_contract
|
|
contract = RequestContract.where(:uid => params[:contract_uid]).first rescue nil
|
|
contract.confirmed = true
|
|
contract.save
|
|
if params[:ref] == "contract_page"
|
|
redirect_to cpanel_contract_show_path(contract.uid)
|
|
else
|
|
redirect_to cpanel_mycontracts_path(:page => params[:page])
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def is_site_authorized_to_user?
|
|
@site_construct = RegisteredSite.where(:uid => params[:site_uid]).first
|
|
if !current_cpanel_user.registered_site_ids.include?(@site_construct.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_construct = @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
|
|
|
|
def contract_params
|
|
params.require(:request_contract).permit!
|
|
end
|
|
|
|
end |