spazio-solazzo/lib/spazio_solazzo/booking_system.ex
2026-01-10 19:03:02 +01:00

55 lines
1.7 KiB
Elixir

defmodule SpazioSolazzo.BookingSystem do
@moduledoc """
Manages bookings, spaces, assets and time slots for the booking system.
"""
use Ash.Domain,
otp_app: :spazio_solazzo
resources do
resource SpazioSolazzo.BookingSystem.Space do
define :get_space_by_slug, action: :read, get_by: [:slug]
define :create_space, action: :create, args: [:name, :slug, :description]
end
resource SpazioSolazzo.BookingSystem.Asset do
define :get_asset_by_id, action: :read, get_by: [:id]
define :get_asset_by_space_id, action: :read, get_by: [:space_id]
define :get_space_assets, action: :get_space_assets, args: [:space_id]
define :create_asset, action: :create, args: [:name, :space_id]
end
resource SpazioSolazzo.BookingSystem.TimeSlotTemplate do
define :get_space_time_slots_by_date,
action: :get_space_time_slots_by_date,
args: [:space_id, :date]
define :create_time_slot_template,
action: :create,
args: [:start_time, :end_time, :day_of_week, :space_id]
end
resource SpazioSolazzo.BookingSystem.Booking do
define :list_active_asset_bookings_by_date,
action: :list_active_asset_bookings_by_date,
args: [:asset_id, :date]
define :create_booking,
action: :create,
args: [
:time_slot_template_id,
:asset_id,
:user_id,
:date,
:customer_name,
:customer_email,
:customer_phone,
:customer_comment
]
define :confirm_booking, action: :confirm_booking, args: []
define :cancel_booking, action: :cancel, args: []
define :delete_booking, action: :destroy, args: []
end
end
end