On the event page, promoter can choose to mark the event as "sold out" using the status field or as "published". Only published event can be marked as sold out if promoter thinks he cannot handle all the people available.
115 lines
4.1 KiB
Ruby
Executable File
115 lines
4.1 KiB
Ruby
Executable File
Rails.application.routes.draw do
|
|
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
|
|
|
|
# Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.
|
|
# Can be used by load balancers and uptime monitors to verify that the app is live.
|
|
get "up" => "rails/health#show", as: :rails_health_check
|
|
|
|
# Render dynamic PWA files from app/views/pwa/* (remember to link manifest in application.html.erb)
|
|
# get "manifest" => "rails/pwa#manifest", as: :pwa_manifest
|
|
# get "service-worker" => "rails/pwa#service_worker", as: :pwa_service_worker
|
|
|
|
# Defines the root path route ("/")
|
|
root "pages#home"
|
|
|
|
# === Devise ===
|
|
|
|
# Routes for devise authentication Gem
|
|
# Bind devise to user
|
|
devise_for :users, path: "auth", path_names: {
|
|
sign_in: "sign_in", # Route for user login
|
|
sign_out: "sign_out", # Route for user logout
|
|
password: "reset-password", # Route for changing password
|
|
confirmation: "verification", # Route for account confirmation
|
|
unlock: "unblock", # Route for account unlock
|
|
# registration: "account", # Route for user account
|
|
sign_up: "signup" # Route for user registration
|
|
},
|
|
controllers: {
|
|
sessions: "auth/sessions", # Custom controller for sessions
|
|
registrations: "auth/registrations", # Custom controller for registrations
|
|
passwords: "auth/passwords", # Custom controller for passwords
|
|
confirmation: "auth/confirmations" # Custom controller for confirmations
|
|
}
|
|
|
|
# === Onboarding ===
|
|
get "onboarding", to: "onboarding#index", as: "onboarding"
|
|
post "onboarding", to: "onboarding#complete", as: "complete_onboarding"
|
|
|
|
# === Pages ===
|
|
get "dashboard", to: "pages#dashboard", as: "dashboard"
|
|
|
|
# === Settings ===
|
|
get "settings", to: "settings#show", as: "settings"
|
|
patch "settings", to: "settings#update"
|
|
|
|
# === Events ===
|
|
get "events", to: "events#index", as: "events"
|
|
get "events/:slug.:id", to: "events#show", as: "event"
|
|
|
|
# === Orders (scoped to events) ===
|
|
get "orders/new/events/:slug.:id", to: "orders#new", as: "event_order_new"
|
|
post "orders/create/events/:slug.:id", to: "orders#create", as: "event_order_create"
|
|
|
|
resources :orders, only: [ :index, :show ] do
|
|
member do
|
|
get :checkout
|
|
get :invoice
|
|
match :retry_payment, via: [ :get, :post ]
|
|
post :increment_payment_attempt
|
|
end
|
|
end
|
|
|
|
get "orders/payments/success", to: "orders#payment_success", as: "order_payment_success"
|
|
get "orders/payments/cancel", to: "orders#payment_cancel", as: "order_payment_cancel"
|
|
|
|
# Legacy routes - redirect to order system
|
|
get "events/:slug.:id/tickets/checkout", to: "tickets#checkout", as: "ticket_checkout"
|
|
post "events/:slug.:id/tickets/retry", to: "tickets#retry_payment", as: "ticket_retry_payment"
|
|
get "payments/success", to: "tickets#payment_success", as: "payment_success"
|
|
get "payments/cancel", to: "tickets#payment_cancel", as: "payment_cancel"
|
|
|
|
# === Tickets ===
|
|
get "tickets/:qr_code", to: "tickets#show", as: "ticket"
|
|
get "tickets/:qr_code/download", to: "tickets#download", as: "ticket_download"
|
|
|
|
# === Promoter Routes ===
|
|
namespace :promoter do
|
|
resources :events do
|
|
member do
|
|
patch :publish
|
|
patch :unpublish
|
|
patch :cancel
|
|
patch :mark_sold_out
|
|
patch :mark_available
|
|
post :duplicate
|
|
end
|
|
|
|
# Nested ticket types routes
|
|
resources :ticket_types do
|
|
member do
|
|
post :duplicate
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
# API routes versioning
|
|
namespace :api do
|
|
namespace :v1 do
|
|
# RESTful routes for event management
|
|
resources :events, only: [ :index, :show, :create, :update, :destroy ]
|
|
post "carts/store", to: "carts#store", as: "store_cart"
|
|
|
|
# RESTful routes for order management
|
|
resources :orders, only: [] do
|
|
member do
|
|
patch :increment_payment_attempt
|
|
end
|
|
end
|
|
|
|
# resources :ticket_types, only: [ :index, :show, :create, :update, :destroy ]
|
|
end
|
|
end
|
|
end
|