Openfoodnetwork::Application.routes.draw do
  namespace :admin do

    authenticated :spree_user, -> user { user.superadmin? } do
      mount DelayedJobWeb, at: '/delayed_job'
    end

    resources :bulk_line_items

    resources :order_cycles do
      post :bulk_update, on: :collection, as: :bulk_update
      get :incoming
      get :outgoing

      member do
        get :clone
        post :notify_producers
      end
    end

    resources :enterprises do
      collection do
        get :for_order_cycle
        get :visible
        post :bulk_update, as: :bulk_update
      end

      member do
        get :welcome
        put :register
      end

      resources :producer_properties do
        post :update_positions, on: :collection
      end

      resources :tag_rules, only: [:destroy]
    end

    resources :manager_invitations, only: [:create]

    resources :enterprise_relationships
    resources :enterprise_roles

    resources :enterprise_fees, except: :destroy do
      collection do
        get :for_order_cycle
        post :bulk_update, :as => :bulk_update
      end
    end

    resources :enterprise_groups do
      get :move_up
      get :move_down
    end

    get '/inventory', to: 'variant_overrides#index'

    get '/product_import', to: 'product_import#index'
    post '/product_import', to: 'product_import#import'
    post '/product_import/validate_data', to: 'product_import#validate_data', as: 'product_import_process_async'
    post '/product_import/save_data', to: 'product_import#save_data', as: 'product_import_save_async'
    post '/product_import/reset_absent', to: 'product_import#reset_absent_products', as: 'product_import_reset_async'

    resources :variant_overrides do
      post :bulk_update, on: :collection
      post :bulk_reset, on: :collection
    end

    resources :inventory_items, only: [:create, :update]

    resources :customers, only: [:index, :create, :update, :destroy, :show]

    resources :tag_rules, only: [], format: :json do
      get :map_by_tag, on: :collection
    end

    resource :contents

    resources :column_preferences, only: [], format: :json do
      put :bulk_update, on: :collection
    end

    resource :invoice_settings, only: [:edit, :update]

    resource :stripe_connect_settings, only: [:edit, :update]

    resource :matomo_settings, only: [:edit, :update]

    resources :stripe_accounts, only: [:destroy] do
      get :connect, on: :collection
      get :status, on: :collection
    end

    resources :schedules, only: [:index, :create, :update, :destroy], format: :json

    resources :subscriptions, only: [:index, :new, :create, :edit, :update] do
      put :cancel, on: :member
      put :pause, on: :member
      put :unpause, on: :member
    end

    resources :subscription_line_items, only: [], format: :json do
      post :build, on: :collection
    end

    resources :proxy_orders, only: [:edit] do
      put :cancel, on: :member, format: :json
      put :resume, on: :member, format: :json
    end
  end
end
