From 81e2c3aa29c843d68572c6619e5a77d1570f77c7 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Thu, 17 Jul 2025 11:05:31 +0300 Subject: [PATCH] refacto controllers --- .../admin/domain_versions_controller.rb | 22 +++++---- app/controllers/admin/domains_controller.rb | 47 ++++++++++++------- 2 files changed, 43 insertions(+), 26 deletions(-) diff --git a/app/controllers/admin/domain_versions_controller.rb b/app/controllers/admin/domain_versions_controller.rb index 9579d26ad..fcada856e 100644 --- a/app/controllers/admin/domain_versions_controller.rb +++ b/app/controllers/admin/domain_versions_controller.rb @@ -2,6 +2,8 @@ module Admin class DomainVersionsController < BaseController load_and_authorize_resource class: Version::DomainVersion + PER_PAGE = 7 + def index params[:q] ||= {} @@ -55,25 +57,18 @@ module Admin end def show - per_page = 7 if params[:current] @domain = Domain.find(params[:domain_id] || params[:id]) - @version = nil else @version = Version::DomainVersion.find(params[:id]) @domain = Domain.find(@version.item_id) end + @versions = Version::DomainVersion.where(item_id: @domain.id).order(created_at: :desc, id: :desc) @versions_map = @versions.all.map(&:id) - if params[:page].blank? - counter = @version ? (@versions_map.index(@version.id) + 1) : 1 - page = counter / per_page - page += 1 if (counter % per_page) != 0 - params[:page] = page - end - - @versions = @versions.page(params[:page]).per(per_page) + get_page if params[:page].blank? + @versions = @versions.page(params[:page]).per(PER_PAGE) end def search @@ -86,6 +81,13 @@ module Admin private + def get_page + counter = @version ? (@versions_map.index(@version.id) + 1) : 1 + page = counter / PER_PAGE + page += 1 if (counter % PER_PAGE) != 0 + params[:page] = page + end + def fix_date_params params_copy = params[:q].deep_dup created_at = params_copy['created_at_lteq'] diff --git a/app/controllers/admin/domains_controller.rb b/app/controllers/admin/domains_controller.rb index 07d646552..0e9279a46 100644 --- a/app/controllers/admin/domains_controller.rb +++ b/app/controllers/admin/domains_controller.rb @@ -52,24 +52,12 @@ module Admin end def versions - @domain = Domain.where(id: params[:domain_id]).includes({ versions: :item }).first + @domain = get_domain_with_versions @versions = @domain.versions - @old_versions = Kaminari.paginate_array(@versions.not_creates.reverse) - .page(params[:page]) - .per(DEFAULT_VERSIONS_PER_PAGE) + @old_versions = paginate_versions(@versions.not_creates.reverse) - @post_update_domains = [] - old_versions_arr = @old_versions.to_a - old_versions_arr.each_with_index do |version, idx| - next_version = old_versions_arr[idx - 1] # reverse order! - if next_version - @post_update_domains << (next_version.reify || @domain) - else - @post_update_domains << @domain - end - end - - @post_update_domains.sort_by! { |d| -d.updated_at.to_i } + post_update_domains = generate_collection_of_post_update_domains(@old_versions.to_a) + @post_update_domains = sort_post_update_domains(post_update_domains) end def download @@ -84,6 +72,33 @@ module Admin private + def get_domain_with_versions + Domain.where(id: params[:domain_id]).includes({ versions: :item }).first + end + + def paginate_versions(versions) + Kaminari.paginate_array(versions).page(params[:page]).per(DEFAULT_VERSIONS_PER_PAGE) + end + + def generate_collection_of_post_update_domains(old_versions_arr) + post_update_domains = [] + + old_versions_arr.each_with_index do |version, idx| + next_version = old_versions_arr[idx - 1] # reverse order! + if next_version + post_update_domains << (next_version.reify || @domain) + else + post_update_domains << @domain + end + end + + post_update_domains + end + + def sort_post_update_domains(post_update_domains) + post_update_domains.sort_by! { |d| -d.updated_at.to_i } + end + def set_domain @domain = Domain.find(params[:id]) end