mirror of
https://codeberg.org/JasterV/spazio-solazzo.git
synced 2026-04-26 18:20:03 +00:00
55 lines
1.7 KiB
Elixir
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
|