mirror of
https://codeberg.org/JasterV/spazio-solazzo.git
synced 2026-04-26 18:20:03 +00:00
71 lines
1.9 KiB
Elixir
71 lines
1.9 KiB
Elixir
defmodule SpazioSolazzo.BookingSystem do
|
|
@moduledoc """
|
|
Manages bookings, spaces, 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, :capacity]
|
|
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 :read_pending_bookings,
|
|
action: :read_pending_bookings,
|
|
args: [:space_id, :email, :date]
|
|
|
|
define :read_booking_history,
|
|
action: :read_booking_history,
|
|
args: [:space_id, :email, :date]
|
|
|
|
define :search_bookings,
|
|
action: :search,
|
|
args: [:space_id, :start_datetime, :end_datetime, :states, :select]
|
|
|
|
define :create_booking,
|
|
action: :create,
|
|
args: [
|
|
:space_id,
|
|
:user_id,
|
|
:date,
|
|
:start_time,
|
|
:end_time,
|
|
:customer_name,
|
|
:customer_email,
|
|
:customer_phone,
|
|
:customer_comment
|
|
]
|
|
|
|
define :create_walk_in,
|
|
action: :create_walk_in,
|
|
args: [
|
|
:space_id,
|
|
:start_datetime,
|
|
:end_datetime,
|
|
:customer_name,
|
|
:customer_email,
|
|
:customer_phone
|
|
]
|
|
|
|
define :approve_booking, action: :approve, args: []
|
|
define :reject_booking, action: :reject, args: [:reason]
|
|
define :cancel_booking, action: :cancel, args: [:reason]
|
|
end
|
|
end
|
|
end
|