diff --git a/app/controllers/admin/auctions_controller.rb b/app/controllers/admin/auctions_controller.rb index 39834ac54..22c186b17 100644 --- a/app/controllers/admin/auctions_controller.rb +++ b/app/controllers/admin/auctions_controller.rb @@ -6,6 +6,7 @@ module Admin params[:q] ||= {} @auctions = Auction.with_status(params[:statuses_contains]) + @auction = Auction.new normalize_search_parameters do @q = @auctions.ransack(PartialSearchFormatter.format(params[:q])) @@ -14,16 +15,47 @@ module Admin @auctions = @auctions.per(params[:results_per_page]) if params[:results_per_page].to_i.positive? + domains = ReservedDomain.all.order(:name) + q = domains.ransack(PartialSearchFormatter.format(params[:q])) + @domains = q.result.page(params[:page]) + @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive? + render_by_format('admin/auctions/index', 'auctions') end - def update + def create + auction = Auction.new(domain: params[:domain], status: Auction.statuses[:started]) + + if auction.save + remove_from_reserved(auction) + flash[:notice] = "Auction #{params[:domain]} created" + else + flash[:alert] = "Something goes wrong" + end + + redirect_to admin_auctions_path + end + + def upload_spreadsheet + table = CSV.parse(File.read(params[:q][:file]), headers: true) + + table.each do |row| + record = row.to_h + auction = Auction.new(domain: record['name'], status: Auction.statuses[:started]) + remove_from_reserved(auction) if auction.save! + end redirect_to admin_auctions_path end private + def remove_from_reserved(auction) + domain = ReservedDomain.find_by(name: auction.domain) + + domain.destroy if domain.present? + end + def normalize_search_parameters ca_cache = params[:q][:valid_to_lteq] begin diff --git a/app/controllers/admin/reserved_domains_controller.rb b/app/controllers/admin/reserved_domains_controller.rb index aeebe8906..dc9ff9d15 100644 --- a/app/controllers/admin/reserved_domains_controller.rb +++ b/app/controllers/admin/reserved_domains_controller.rb @@ -62,7 +62,7 @@ module Admin domain.destroy! end - redirect_to admin_reserved_domains_path + redirect_to admin_auctions_path end private diff --git a/app/views/admin/auctions/_modal.html.erb b/app/views/admin/auctions/_modal.html.erb new file mode 100644 index 000000000..e57d2139d --- /dev/null +++ b/app/views/admin/auctions/_modal.html.erb @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/app/views/admin/auctions/_search_form.html.erb b/app/views/admin/auctions/_search_form.html.erb deleted file mode 100644 index d675a70ca..000000000 --- a/app/views/admin/auctions/_search_form.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -<%= search_form_for [:admin, @q], html: { class: 'search-form', autocomplete: 'off' } do |f| %> - -
-
-
-
- -
- <%= link_to t('.download_csv_btn'), admin_domains_path(format: :csv, params: params.permit!), - "data-toggle" => "tooltip", "data-placement" => "bottom", "title" => t('.download_csv_btn'), - class: 'btn btn-primary' %> - -
-
- -
-<% end %> diff --git a/app/views/admin/auctions/index.html.erb b/app/views/admin/auctions/index.html.erb index a9a708755..d3f9f7745 100644 --- a/app/views/admin/auctions/index.html.erb +++ b/app/views/admin/auctions/index.html.erb @@ -34,28 +34,62 @@ <%= text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page) %> -
- - <%= link_to(t('.reset_btn'), admin_auctions_path, class: 'btn btn-default') %> +
+ <%= link_to(t('.reset_btn'), admin_auctions_path, class: 'btn btn-default') %> +
+
+ <%= link_to 'Download auction list', admin_auctions_path(format: :csv, params: params.permit!), + "data-toggle" => "tooltip", "data-placement" => "bottom", "title" => t('.download_csv_btn'), + class: 'btn btn-primary' %> +
+
+ <%= link_to "#", class: "btn btn-warning edit", + data: { + toggle: "modal", + url: admin_reserved_domains_path, + target: "#user-form-edit"} do %> + + Get reserved domains + <% end %> + + <%= render 'modal' %> + +
<% end %> +
+ + <%= search_form_for [:admin, @q], method: :post, html: { style: 'margin-bottom: 0;', class: 'js-form', autocomplete: 'off' } do |f| %> + <%= label_tag :new_auction %> + +
+ <%= text_field_tag :domain, params[:domain], class: 'form-control', placeholder: 'domain name' %> + <%= f.submit 'Create', class: 'btn btn-primary', style: 'margin-left: .4rem;' %> +
+ <% end %> +
-
-
- <%= link_to 'Download auction list', admin_auctions_path(format: :csv, params: params.permit!), - "data-toggle" => "tooltip", "data-placement" => "bottom", "title" => t('.download_csv_btn'), - class: 'btn btn-primary' %> -
+
+ <%= search_form_for @q, url: upload_spreadsheet_admin_auctions_path, method: :post, html: { style: 'margin-bottom: 0; display: flex; flex-direction: row; align-items: center;', class: 'js-form', autocomplete: 'off' } do |f| %> + <%= f.file_field :file, + accept: ".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel", + direct_upload: true, + style: 'width: 200px;' %> + <%= f.submit 'Upload csv', class: 'btn btn-primary' %> + <% end %> +
@@ -99,3 +133,9 @@
+ + \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 38e263c94..4ba44300d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -266,11 +266,13 @@ Rails.application.routes.draw do resources :accounts resources :account_activities - resources :auctions, only: [ :index ] do + resources :auctions, only: [ :index, :create ] do collection do - patch :update + post 'upload_spreadsheet', to: 'auctions#upload_spreadsheet', as: :upload_spreadsheet end end + # post 'admi/upload_spreadsheet', to: 'customers#upload_spreadsheet', as: :customers_upload_spreadsheet + resources :bank_statements do resources :bank_transactions