Class: Admin::AdminController
- Inherits:
-
CrmController
- Object
- CrmController
- Admin::AdminController
- Defined in:
- app/controllers/admin/admin_controller.rb
Instance Method Summary collapse
- #auto_ship_confirm_deliveries ⇒ Object
- #cache_status ⇒ Object
- #check_for_receipts ⇒ Object
-
#exception_test ⇒ Object
Exception testing page for verifying AppSignal error reporting GET /admin/exception_test.
- #flush_cache ⇒ Object
- #get_all_exchange_rates ⇒ Object
- #get_exchange_rates_for_today ⇒ Object
- #index ⇒ Object
- #invoice_shipped_deliveries ⇒ Object
- #process_shipped_deliveries ⇒ Object
- #reconcile_committed_items ⇒ Object
- #refresh_all_specs ⇒ Object
- #refresh_cache_blog_posts ⇒ Object
- #refresh_cache_product_lines ⇒ Object
- #refresh_cache_showcases ⇒ Object
- #search_test ⇒ Object
-
#sendfile_test ⇒ Object
X-Accel-Redirect diagnostics page GET /admin/sendfile_test.
-
#sendfile_test_download ⇒ Object
Serves a small generated text file via send_file_accelerated to verify the full nginx X-Accel-Redirect chain end-to-end.
- #simple_form ⇒ Object
- #simple_form_vertical ⇒ Object
- #status ⇒ Object
- #stimulus_form ⇒ Object
- #test ⇒ Object
- #youtube ⇒ Object
- #youtube_auto_link ⇒ Object
- #youtube_link_selected ⇒ Object
Instance Method Details
#auto_ship_confirm_deliveries ⇒ Object
138 139 140 141 142 143 |
# File 'app/controllers/admin/admin_controller.rb', line 138 def auto_ship_confirm_deliveries :manage, Delivery Delivery.auto_ship_confirm flash[:info] = 'Any deliveries pending ship confirm are now being processed.' redirect_to action: :index end |
#cache_status ⇒ Object
83 84 85 86 |
# File 'app/controllers/admin/admin_controller.rb', line 83 def cache_status @cache_info = gather_cache_status @redis_connections = gather_redis_connections end |
#check_for_receipts ⇒ Object
105 106 107 108 109 |
# File 'app/controllers/admin/admin_controller.rb', line 105 def check_for_receipts Order.check_for_receipts flash[:info] = 'Any unsettled orders are being checked to see if all invoices are paid' redirect_to action: :index end |
#exception_test ⇒ Object
Exception testing page for verifying AppSignal error reporting
GET /admin/exception_test
192 193 194 |
# File 'app/controllers/admin/admin_controller.rb', line 192 def exception_test :manage, Employee end |
#flush_cache ⇒ Object
125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'app/controllers/admin/admin_controller.rb', line 125 def flush_cache if current_account.has_role?('admin') Rails.cache.clear flash[:info] = 'Successfully flushed redis' redirect_to action: :index else head :forbidden end rescue StandardError => e flash[:error] = "Could not flush cache: #{e}" redirect_to action: :index end |
#get_all_exchange_rates ⇒ Object
118 119 120 121 122 123 |
# File 'app/controllers/admin/admin_controller.rb', line 118 def get_all_exchange_rates :manage, ExchangeRate ExchangeRate.get_all_exchange_rates flash[:info] = 'Missing exchange rates have been downloaded' redirect_to action: :index end |
#get_exchange_rates_for_today ⇒ Object
111 112 113 114 115 116 |
# File 'app/controllers/admin/admin_controller.rb', line 111 def get_exchange_rates_for_today :manage, ExchangeRate ExchangeRate.get_exchange_rates_for_today flash[:info] = 'Exchange rate has been downloaded' redirect_to action: :index end |
#index ⇒ Object
88 |
# File 'app/controllers/admin/admin_controller.rb', line 88 def index; end |
#invoice_shipped_deliveries ⇒ Object
145 146 147 148 149 150 151 |
# File 'app/controllers/admin/admin_controller.rb', line 145 def invoice_shipped_deliveries :manage, Invoice Delivery.invoice_shipped_deliveries flash[:info] = 'Shipped deliveries have been queued for invoicing, process may take a few minutes to complete.' redirect_to action: :index end |
#process_shipped_deliveries ⇒ Object
90 91 92 93 94 95 96 |
# File 'app/controllers/admin/admin_controller.rb', line 90 def process_shipped_deliveries :manage, Invoice Delivery.invoice_shipped_deliveries flash[:info] = 'Any shipped deliveries are now being processed' redirect_to action: :index end |
#reconcile_committed_items ⇒ Object
98 99 100 101 102 103 |
# File 'app/controllers/admin/admin_controller.rb', line 98 def reconcile_committed_items :manage, StoreItem Item::InventoryCommitter.consolidate_commit_counts flash[:info] = 'Item reconciliation complete' redirect_to action: :index end |
#refresh_all_specs ⇒ Object
162 163 164 165 166 167 |
# File 'app/controllers/admin/admin_controller.rb', line 162 def refresh_all_specs :manage, Item count = Item.async_update_all_items_product_specifications flash[:info] = "Specs queued for #{count} items" redirect_to action: :index end |
#refresh_cache_blog_posts ⇒ Object
179 180 181 182 183 184 185 186 |
# File 'app/controllers/admin/admin_controller.rb', line 179 def refresh_cache_blog_posts :manage, Post Post.all.each(&:touch) flash[:info] = 'Cache has been refreshed' redirect_to action: :index rescue StandardError => e flash[:error] = "Could not refresh cache: #{e}" end |
#refresh_cache_product_lines ⇒ Object
169 170 171 172 173 174 175 176 177 |
# File 'app/controllers/admin/admin_controller.rb', line 169 def refresh_cache_product_lines :manage, Item ProductLine.touch_all Item.touch_all flash[:info] = 'Cache has been refreshed' redirect_to action: :index rescue StandardError => e flash[:error] = "Could not refresh cache: #{e}" end |
#refresh_cache_showcases ⇒ Object
153 154 155 156 157 158 159 160 |
# File 'app/controllers/admin/admin_controller.rb', line 153 def refresh_cache_showcases :manage, Showcase Showcase.find_each(&:touch) flash[:info] = 'Cache has been refreshed' redirect_to action: :index rescue StandardError => e flash[:error] = "Could not refresh cache: #{e}" end |
#search_test ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/controllers/admin/admin_controller.rb', line 19 def search_test :search_test, Employee # A full database is required to test a solid text search methodology. But # in automated testing this is not possible # So a simple web portal will display the result against various test cases names = { 'We Floors' => 156_336, "Don's Floor Covering" => 119_642, 'DirectBuy Cincinnati' => 122_491, 'directbuy cin*' => 122_491, 'dir* cin*' => 122_491, 'DirectBuy Gaithersburg' => 123_584, 'directbuy gaith*' => 123_584, 'Prosource of Monroeville' => 133_439, 'Amy Bronzonie' => 180_273, 'Amy Bronz*' => 180_273, 'M A K Interiors' => 44_068, 'MAK Interiors' => 44_068, 'Design Kitchen and Bath' => 49_508 } @results = [] names.each do |n, pid| res = Party.lookup(n).limit(5) @results << { original: n, results: res.map do |p| "#{p.full_name} [#{p.id}]" end, success: res.any? do |p| p.id == pid end } end render layout: false end |
#sendfile_test ⇒ Object
X-Accel-Redirect diagnostics page
GET /admin/sendfile_test
198 199 200 201 202 203 204 |
# File 'app/controllers/admin/admin_controller.rb', line 198 def sendfile_test :manage, Employee @nginx_prefix = Rails.application.config.x.temp_storage_nginx_prefix @storage_path = Rails.application.config.x.temp_storage_path @sendfile_header = Rails.application.config.action_dispatch.x_sendfile_header @acceleration_enabled = @sendfile_header.present? && @storage_path.present? && @nginx_prefix.present? end |
#sendfile_test_download ⇒ Object
Serves a small generated text file via send_file_accelerated to verify the full
nginx X-Accel-Redirect chain end-to-end.
GET /admin/sendfile_test/download
209 210 211 212 213 214 215 216 217 |
# File 'app/controllers/admin/admin_controller.rb', line 209 def sendfile_test_download :manage, Employee test_file = Tempfile.new(['sendfile_test', '.txt'], Rails.application.config.x.temp_storage_path) test_file.write("X-Accel-Redirect test — generated at #{Time.current}\nServer: #{request.host}\nEnvironment: #{Rails.env}\n") test_file.flush send_file_accelerated(test_file.path, download: true, mime_type: 'text/plain', file_name: 'sendfile_test.txt') ensure test_file&.close end |
#simple_form ⇒ Object
4 5 6 7 8 |
# File 'app/controllers/admin/admin_controller.rb', line 4 def simple_form # Create a model with error @customer = Customer.new @customer.save end |
#simple_form_vertical ⇒ Object
10 11 12 13 14 |
# File 'app/controllers/admin/admin_controller.rb', line 10 def simple_form_vertical # Create a model with error @customer = Customer.new @customer.save end |
#status ⇒ Object
81 |
# File 'app/controllers/admin/admin_controller.rb', line 81 def status; end |
#stimulus_form ⇒ Object
16 17 |
# File 'app/controllers/admin/admin_controller.rb', line 16 def stimulus_form end |
#test ⇒ Object
188 |
# File 'app/controllers/admin/admin_controller.rb', line 188 def test; end |
#youtube ⇒ Object
51 |
# File 'app/controllers/admin/admin_controller.rb', line 51 def youtube; end |
#youtube_auto_link ⇒ Object
53 54 55 56 57 58 59 |
# File 'app/controllers/admin/admin_controller.rb', line 53 def youtube_auto_link service = YouTube::AutoLinkService.new @matches = service.discover_matches rescue YouTube::OauthService::TokenRefreshError, YouTube::ApiClient::ApiError => e @matches = [] flash.now[:alert] = "YouTube API error: #{e.}" end |
#youtube_link_selected ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'app/controllers/admin/admin_controller.rb', line 61 def youtube_link_selected links = params[:links]&.select { |_yt_id, video_id| video_id.present? } || {} if links.empty? redirect_to admin_youtube_auto_link_path, alert: 'No videos selected.' return end service = YouTube::AutoLinkService.new linked = 0 links.each do |youtube_id, video_id| service.link!(video_id.to_i, youtube_id) linked += 1 rescue StandardError => e Rails.logger.error("[YouTubeAutoLink] Failed to link video #{video_id} to #{youtube_id}: #{e.}") end redirect_to admin_youtube_path, notice: "Linked #{linked} video(s) to YouTube. Metadata sync queued." end |