From b006a18fbf9706d51ce4d844070a06d73a8b11a7 Mon Sep 17 00:00:00 2001 From: Harry Bomrah Date: Fri, 10 Mar 2017 14:53:25 +0800 Subject: [PATCH] backend see contract make contract and add sites etc --- .../admin/client_managements_controller.rb | 71 +++++++++++- app/models/request_contract.rb | 21 ++++ app/models/site_request.rb | 3 +- .../_add_site_spec.html.erb | 39 +++++-- .../_contract_index.html.erb | 20 ++++ .../admin/client_managements/_index.html.erb | 24 ++++ .../_site_spec_form.html.erb | 19 ++- .../completed_requests.html.erb | 17 +++ .../client_managements/contracts.html.erb | 17 +++ .../client_managements/edit_contract.html.erb | 48 ++++++++ .../admin/client_managements/index.html.erb | 25 +--- .../client_managements/make_contract.html.erb | 4 +- .../client_managements/make_purchase.html.erb | 0 .../client_managements/see_contract.html.erb | 109 ++++++++++++++++++ .../admin/client_managements/show.html.erb | 19 ++- config/locales/en.yml | 16 ++- config/locales/zh_tw.yml | 16 ++- config/routes.rb | 9 ++ lib/client_management/engine.rb | 14 ++- 19 files changed, 432 insertions(+), 59 deletions(-) create mode 100644 app/views/admin/client_managements/_contract_index.html.erb create mode 100644 app/views/admin/client_managements/_index.html.erb create mode 100644 app/views/admin/client_managements/completed_requests.html.erb create mode 100644 app/views/admin/client_managements/contracts.html.erb create mode 100644 app/views/admin/client_managements/edit_contract.html.erb create mode 100644 app/views/admin/client_managements/make_purchase.html.erb create mode 100644 app/views/admin/client_managements/see_contract.html.erb diff --git a/app/controllers/admin/client_managements_controller.rb b/app/controllers/admin/client_managements_controller.rb index 3e01075..8ee3f8f 100644 --- a/app/controllers/admin/client_managements_controller.rb +++ b/app/controllers/admin/client_managements_controller.rb @@ -12,18 +12,79 @@ class Admin::ClientManagementsController < OrbitAdminController def make_contract @site_request = SiteRequest.find(params[:id]) @user = @site_request.c_panel_user - @new_contract = RequestContract.new + @contract = RequestContract.new + end + + def complete_request + site_request = SiteRequest.find(params[:id]) + site_request.completed = true + site_request.save + redirect_to admin_client_management_path(site_request.id) end def create_contract - rc = RequestContract.create(contract_params) + rc = RequestContract.new(contract_params) + rc.save sr = SiteRequest.find(contract_params[:site_request]) sr.request_contract = rc + sr.completed = true sr.save - redirect_to admin_client_managements_path + redirect_to see_contract_admin_client_management_path(rc.id) + end + + def update_contract + contract = RequestContract.find(params[:id]) + contract.update_attributes(contract_params) + contract.save + redirect_to see_contract_admin_client_management_path(contract.id) end def edit_contract + @contract = RequestContract.find(params[:id]) + @site_request = @contract.site_request + @user = @site_request.c_panel_user + end + + def see_contract + @contract = RequestContract.find(params[:id]) + @site_request = @contract.site_request + end + + def completed_requests + @site_requests = SiteRequest.where(:completed => true).order_by(sort).page(params[:page]).per(10) + end + + def confirm_contract + contract = RequestContract.find(params[:id]) + if params["confirm"] == "true" + contract.confirmed = true + elsif params["confirm"] == "false" + contract.confirmed = false + end + contract.save + redirect_to see_contract_admin_client_management_path(contract.id) + end + + def make_purchase + end + + def add_sites + sr = SiteRequest.find(params[:id]) + sr.update_attributes(site_request_params) + user = CPanelUser.find(sr.c_panel_user.id) + site_request_params[:sites_added].each do |sid| + site = RegisteredSite.find(sid) + sr.sites_to_add.delete(site.site_domain) + user.registered_site_ids << site.id + end + sr.completed = true + sr.save + user.save + redirect_to admin_client_management_path(sr.id) + end + + def contracts + @contracts = RequestContract.all.order_by(:confirmed => 'desc', :created_at => "desc").page(params[:page]).per(10) end private @@ -31,5 +92,9 @@ class Admin::ClientManagementsController < OrbitAdminController def contract_params params.require(:request_contract).permit! end + + def site_request_params + params.require(:site_request).permit! + end end \ No newline at end of file diff --git a/app/models/request_contract.rb b/app/models/request_contract.rb index f6a1405..9ec1696 100644 --- a/app/models/request_contract.rb +++ b/app/models/request_contract.rb @@ -1,6 +1,7 @@ class RequestContract include Mongoid::Document include Mongoid::Timestamps + include Slug field :new_site_cost, type: Integer, :default => 0 field :hosting_with_rulingdigital_cost, type: Integer, :default => 0 @@ -10,6 +11,26 @@ class RequestContract field :template_cost, type: Integer, :default => 0 field :customized_template_cost, type: Integer, :default => 0 field :rwd_cost, type: Integer, :default => 0 + field :confirmed, type: Boolean, :default => false + + mount_uploader :contract_file, AssetUploader + mount_uploader :signed_contract_file, AssetUploader has_one :site_request + + def total_amount + self.new_site_cost + self.hosting_with_rulingdigital_cost + self.service_cost + self.option_module_cost + self.customized_module_cost + self.template_cost + self.customized_template_cost + self.rwd_cost + end + + def is_confirmed? + self.confirmed + end + + def contract_user + self.site_request.c_panel_user + end + + def get_site + self.site_request.get_site + end end \ No newline at end of file diff --git a/app/models/site_request.rb b/app/models/site_request.rb index 0976cfa..507d364 100644 --- a/app/models/site_request.rb +++ b/app/models/site_request.rb @@ -14,6 +14,7 @@ class SiteRequest field :custom_template_details field :rwd, type: Boolean, default: false field :sites_to_add, type: Array, default: [] + field :sites_added, type: Array, default: [] field :completed, type: Boolean, :default => false field :type @@ -26,7 +27,7 @@ class SiteRequest self.site_id == "newsite" ? nil : RegisteredSite.find(self.site_id) end - def get_site_type + def get_request_type case self.type when "newsite" t = "New Site" diff --git a/app/views/admin/client_managements/_add_site_spec.html.erb b/app/views/admin/client_managements/_add_site_spec.html.erb index ff29c80..05f93c2 100644 --- a/app/views/admin/client_managements/_add_site_spec.html.erb +++ b/app/views/admin/client_managements/_add_site_spec.html.erb @@ -1,17 +1,34 @@ Sites to add : - <% @site_request.sites_to_add.each_with_index do |sid,i| %> - <% site = RegisteredSite.where(:site_domain => sid).first rescue nil %> -
- <% if !site.nil? %> - - - <% else %> - <%= sid %>Site not found - <% end %> - -
+ <%= form_for @site_request, :url => {:action => "add_sites"} do |f| %> + <% x = 0 %> + <% @site_request.sites_to_add.each_with_index do |sid,i| %> + <% site = RegisteredSite.where(:site_domain => sid).first rescue nil %> +
+ <% if !site.nil? %> + <% x = 1 %> + + + <% else %> + <%= sid %>Site not found + <% end %> + +
+ <% end %> + <% @site_request.sites_added.each_with_index do |sid,i| %> + <% site = RegisteredSite.find(sid) rescue nil %> +
+ <%= site.title %>Site Already Added + +
+ <% end %> + <% if x > 0 %> + <%= f.submit "Add Sites", :class => "btn btn-primary" %> + <% end %> + <% if !@site_request.completed %> + Complete Request + <% end %> <% end %> \ No newline at end of file diff --git a/app/views/admin/client_managements/_contract_index.html.erb b/app/views/admin/client_managements/_contract_index.html.erb new file mode 100644 index 0000000..00f6cd2 --- /dev/null +++ b/app/views/admin/client_managements/_contract_index.html.erb @@ -0,0 +1,20 @@ +<% @contracts.each do |contract| %> + + <%= contract.uid %> + <%= contract.contract_user.name %> + + <% case contract.site_request.type %> + <% when "newsite" %> + New Site + <% when "existing" %> + New Feature +
Requested for : <%= contract.get_site.title %>
+ <% end %> + + <%= contract.created_at.strftime("%y-%m-%d %H:%M") %> + <%= (contract.confirmed ? "Yes" : "No").html_safe %> + + View + + +<% end %> \ No newline at end of file diff --git a/app/views/admin/client_managements/_index.html.erb b/app/views/admin/client_managements/_index.html.erb new file mode 100644 index 0000000..0e3e8e4 --- /dev/null +++ b/app/views/admin/client_managements/_index.html.erb @@ -0,0 +1,24 @@ +<% @site_requests.each do |request| %> + + <%= request.uid %> + <%= request.c_panel_user.name %> + + <% case request.type %> + <% when "newsite" %> + New Site + <% when "existing" %> + New Feature +
Requested for : <%= request.get_site.title %>
+ <% when "addsites" %> + Sites Addition + <% end %> + + <%= request.created_at.strftime("%y-%m-%d %H:%M") %> + + Details + <% if request.request_contract != nil %> + Contract + <% end %> + + +<% end %> \ No newline at end of file diff --git a/app/views/admin/client_managements/_site_spec_form.html.erb b/app/views/admin/client_managements/_site_spec_form.html.erb index 4ebc67d..5d845e7 100644 --- a/app/views/admin/client_managements/_site_spec_form.html.erb +++ b/app/views/admin/client_managements/_site_spec_form.html.erb @@ -79,11 +79,24 @@ <% end %> -
-

Total Amount : 0 NTD.

+<% if !@contract.contract_file.url.nil? %> + Download Contract +<% end %> +
+ <%= f.label :contract_file, "Contract File:", :class => "control-label" %> +
+ <%= f.file_field :contract_file %> +
-<%= f.hidden_field :site_request, :value => @site_request.id.to_s %> + +
+

Total Amount : <%= @contract.new_record? ? 0 : @contract.total_amount %> NTD.

+
+<% if @contract.new_record? %> + <%= f.hidden_field :site_request, :value => @site_request.id.to_s %> +<% end %> <%= f.submit "Submit", :class => "btn btn-primary" %> +Back