# frozen_string_literal: true

require "sidekiq/web"
require "sidekiq-scheduler/web"



Rails.application.routes.draw do
  # Compatible before
  get "/cn", to: redirect("/")
  get "/cn/*path", to: redirect("/%{path}")

  mount Sidekiq::Web => "/sidekiq", :constraints => AdminConstraint.new
  mount AuditLog::Engine => "/audit-log", :constraints => AdminConstraint.new
  get "auth/:provider/callback", to: "sessions#create_from_oauth"

  namespace :admin do
    root "dashboard#index"
    resources :users do
      member do
        put :toggle_admin
        put :toggle_writer
        put :toggle_reviewer
      end
    end
    resources :tags do
      member do
        put :restore
      end
    end

    resources :versions do
      member do
        put :restore
      end
    end

    resources :components do
      member do
        put :restore
      end
    end

    resources :categories do
      member do
        put :restore
      end
    end

    resources :products do
      member do
        put :restore
      end
    end

    resources :articles do
      member do
        put :restore
      end
    end
    resources :dashboard, only: [:index]
    resources :logs
  end

  scope "(:locale)", locale: /en/ do
    resources :registrations, only: %i[new create]
    resources :sessions, only: %i[new create]

    resources :articles do
      resources :comments, only: %i[create]
      member do
        put :toggle_useful
        put :approve
        put :disapprove
      end
    end

    resources :users do
      collection do
        get :setting
        put :update_setting
      end
    end
    get "about", to: "home#about"
    delete "sign_out", to: "sessions#destroy", as: :destroy_session
    root "articles#index"
  end
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end
