Files
aperonight/config/routes.rb
kbe aa5dccb508 feat: Implement comprehensive event management system for promoters
This commit adds a complete event management interface allowing promoters to 
create, edit, and manage their events with full CRUD operations.

## Backend Features
- New Promoter::EventsController with full CRUD operations
- Event state management (draft, published, canceled, sold_out)
- User authorization system with can_manage_events? method
- Proper scoping to ensure users only see their own events

## Frontend Features  
- Modern responsive UI with Tailwind CSS styling
- Event listing with status indicators and quick actions
- Comprehensive event creation and editing forms
- Detailed event show page with metrics and management options
- Integration with main dashboard via promoter action buttons

## JavaScript Improvements
- Refactored inline JavaScript to dedicated Stimulus controller
- Auto-slug generation from event names with proper sanitization
- Improved code organization following Rails conventions

## Routes & Navigation
- Namespaced promoter routes under /promoter/
- RESTful endpoints with state management actions
- Proper breadcrumb navigation and user flow

## Files Added/Modified
- app/controllers/promoter/events_controller.rb (new)
- app/javascript/controllers/event_form_controller.js (new) 
- app/views/promoter/events/*.html.erb (4 new view files)
- app/models/user.rb (added authorization methods)
- app/views/pages/dashboard.html.erb (added promoter buttons)
- config/routes.rb (added promoter namespace)
- app/javascript/controllers/index.js (registered new controller)

🎯 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2025-08-31 19:22:19 +02:00

79 lines
3.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: "authentications/sessions", # Custom controller for sessions
registrations: "authentications/registrations", # Custom controller for registrations
passwords: "authentications/passwords", # Custom controller for passwords
confirmation: "authentications/confirmations" # Custom controller for confirmations
}
# === Pages ===
get "dashboard", to: "pages#dashboard", as: "dashboard"
# === Promoter Routes ===
namespace :promoter do
resources :events do
member do
patch :publish
patch :unpublish
patch :cancel
patch :mark_sold_out
end
end
end
# === Events ===
get "events", to: "events#index", as: "events"
get "events/:slug.:id", to: "events#show", as: "event"
# === Tickets ===
get "events/:slug.:id/tickets/new", to: "tickets#new", as: "ticket_new"
post "events/:slug.:id/tickets/create", to: "tickets#create", as: "ticket_create"
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"
# Payment routes
get "payments/success", to: "tickets#payment_success", as: "payment_success"
get "payments/cancel", to: "tickets#payment_cancel", as: "payment_cancel"
# === Tickets ===
get "tickets/:ticket_id/download", to: "events#download_ticket", as: "download_ticket"
# API routes versioning
namespace :api do
namespace :v1 do
# RESTful routes for event management
resources :events, only: [ :index, :show, :create, :update, :destroy ] do
member do
post :store_cart
end
end
# resources :ticket_types, only: [ :index, :show, :create, :update, :destroy ]
end
end
end