Files
aperonight/config/routes.rb
kbe 5279ebe1a4 feat(event available/sold out): Promoter can mark event as sold out or available
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.
2025-09-16 17:15:09 +02:00

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