mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-02-19 13:54:25 +01:00
public calendar endpoint refactoring & testing
This commit is contained in:
parent
b68e47a0ea
commit
6a8c441e85
@ -2,6 +2,9 @@
|
||||
|
||||
## next deploy
|
||||
|
||||
- Improved calendars loading time
|
||||
- Refactored and documented the availability-slot-reservation data model
|
||||
- Fix a bug: unable to book a space's slot with an existing reservation
|
||||
- Fix a bug: Unable to import accounts from SSO when the transformation modal was opened but leaved empty
|
||||
|
||||
## v5.4.12 2022 July 06
|
||||
|
@ -20,19 +20,14 @@ class API::AvailabilitiesController < API::ApiController
|
||||
end
|
||||
|
||||
def public
|
||||
# FIXME, use AvailabilitiesService
|
||||
display_window = window
|
||||
@reservations = Reservation.includes(:slots, :statistic_profile)
|
||||
.references(:slots)
|
||||
.where('slots.start_at >= ? AND slots.end_at <= ?', display_window[:start], display_window[:end])
|
||||
|
||||
machine_ids = params[:m] || []
|
||||
service = Availabilities::PublicAvailabilitiesService.new(current_user)
|
||||
@availabilities = service.public_availabilities(
|
||||
display_window[:start],
|
||||
display_window[:end],
|
||||
@reservations,
|
||||
machines: machine_ids, spaces: params[:s]
|
||||
display_window,
|
||||
{ machines: machine_ids, spaces: params[:s], trainings: params[:t] },
|
||||
(params[:evt] && params[:evt] == 'true')
|
||||
)
|
||||
|
||||
@title_filter = { machine_ids: machine_ids.map(&:to_i) }
|
||||
@ -47,10 +42,8 @@ class API::AvailabilitiesController < API::ApiController
|
||||
authorize Availability
|
||||
@availability = Availability.new(availability_params)
|
||||
if @availability.save
|
||||
if params[:availability][:occurrences]
|
||||
service = Availabilities::CreateAvailabilitiesService.new
|
||||
service.create(@availability, params[:availability][:occurrences])
|
||||
end
|
||||
service = Availabilities::CreateAvailabilitiesService.new
|
||||
service.create(@availability, params[:availability][:occurrences])
|
||||
render :show, status: :created, location: @availability
|
||||
else
|
||||
render json: @availability.errors, status: :unprocessable_entity
|
||||
@ -170,35 +163,7 @@ class API::AvailabilitiesController < API::ApiController
|
||||
end
|
||||
|
||||
def filter_availabilites(availabilities)
|
||||
availabilities_filtered = []
|
||||
availabilities.to_ary.each do |a|
|
||||
# machine slot
|
||||
if !a.try(:available_type)
|
||||
availabilities_filtered << a
|
||||
else
|
||||
availabilities_filtered << a if filter_training?(a)
|
||||
availabilities_filtered << a if filter_space?(a)
|
||||
availabilities_filtered << a if filter_machine?(a)
|
||||
availabilities_filtered << a if filter_event?(a)
|
||||
end
|
||||
end
|
||||
availabilities_filtered.delete_if(&method(:remove_full?))
|
||||
end
|
||||
|
||||
def filter_training?(availability)
|
||||
params[:t] && availability.available_type == 'training' && params[:t].include?(availability.trainings.first.id.to_s)
|
||||
end
|
||||
|
||||
def filter_space?(availability)
|
||||
params[:s] && availability.available_type == 'space' && params[:s].include?(availability.spaces.first.id.to_s)
|
||||
end
|
||||
|
||||
def filter_machine?(availability)
|
||||
params[:m] && availability.available_type == 'machines' && (params[:m].map(&:to_i) & availability.machine_ids).any?
|
||||
end
|
||||
|
||||
def filter_event?(availability)
|
||||
params[:evt] && params[:evt] == 'true' && availability.available_type == 'event'
|
||||
availabilities.delete_if(&method(:remove_full?))
|
||||
end
|
||||
|
||||
def remove_full?(availability)
|
||||
|
@ -55,6 +55,8 @@ class API::EventsController < API::ApiController
|
||||
authorize Event
|
||||
@event = Event.new(event_params.permit!)
|
||||
if @event.save
|
||||
service = Availabilities::CreateAvailabilitiesService.new
|
||||
service.create_slots(@event.availability)
|
||||
render :show, status: :created, location: @event
|
||||
else
|
||||
render json: @event.errors, status: :unprocessable_entity
|
||||
|
@ -216,8 +216,9 @@ Application.Controllers.controller('CalendarController', ['$scope', '$state', '$
|
||||
} else if (event.available_type === 'training') {
|
||||
$state.go('app.public.training_show', { id: event.training_id });
|
||||
} else {
|
||||
if (event.machine_id) {
|
||||
$state.go('app.public.machines_show', { id: event.machine_id });
|
||||
if (event.machine_ids) {
|
||||
// TODO open modal to ask the user to select the machine to show
|
||||
$state.go('app.public.machines_show', { id: event.machine_ids[0] });
|
||||
} else if (event.space_id) {
|
||||
$state.go('app.public.space_show', { id: event.space_id });
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ class Availability < ApplicationRecord
|
||||
scope :trainings, -> { includes(:trainings).where(available_type: 'training') }
|
||||
scope :spaces, -> { includes(:spaces).where(available_type: 'space') }
|
||||
|
||||
attr_accessor :is_reserved, :slot_id, :can_modify
|
||||
attr_accessor :is_reserved, :current_user_slots_reservations_ids, :can_modify
|
||||
|
||||
validates :start_at, :end_at, presence: true
|
||||
validate :length_must_be_slot_multiple, unless: proc { end_at.blank? or start_at.blank? }
|
||||
|
@ -1,29 +1,38 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Provides helper methods for Availability resources and properties
|
||||
# List all Availability's slots for the given resources
|
||||
class Availabilities::AvailabilitiesService
|
||||
|
||||
def initialize(current_user)
|
||||
def initialize(current_user, level = 'slot')
|
||||
@current_user = current_user
|
||||
@maximum_visibility = {
|
||||
year: Setting.get('visibility_yearly').to_i.months.since,
|
||||
other: Setting.get('visibility_others').to_i.months.since
|
||||
}
|
||||
@service = Availabilities::StatusService.new(current_user&.role)
|
||||
@level = level
|
||||
end
|
||||
|
||||
# list all slots for the given machine, with visibility relative to the given user
|
||||
def machines(machine, user, window)
|
||||
availabilities = availabilities(machine.availabilities, 'machines', user, window[:start], window[:end])
|
||||
|
||||
availabilities.map(&:slots).flatten.map { |s| @service.slot_reserved_status(s, user, [machine]) }
|
||||
if @level == 'slot'
|
||||
availabilities.map(&:slots).flatten.map { |s| @service.slot_reserved_status(s, user, [machine]) }
|
||||
else
|
||||
availabilities.map { |a| @service.availability_reserved_status(a, user, [machine]) }
|
||||
end
|
||||
end
|
||||
|
||||
# list all slots for the given space, with visibility relative to the given user
|
||||
def spaces(space, user, window)
|
||||
availabilities = availabilities(space.availabilities, 'space', user, window[:start], window[:end])
|
||||
|
||||
availabilities.map(&:slots).flatten.map { |s| @service.slot_reserved_status(s, user, [space]) }
|
||||
if @level == 'slot'
|
||||
availabilities.map(&:slots).flatten.map { |s| @service.slot_reserved_status(s, user, [space]) }
|
||||
else
|
||||
availabilities.map { |a| @service.availability_reserved_status(a, user, [space]) }
|
||||
end
|
||||
end
|
||||
|
||||
# list all slots for the given training(s), with visibility relative to the given user
|
||||
@ -32,7 +41,23 @@ class Availabilities::AvailabilitiesService
|
||||
.where('trainings_availabilities.training_id': trainings.map(&:id))
|
||||
availabilities = availabilities(tr_availabilities, 'training', user, window[:start], window[:end])
|
||||
|
||||
availabilities.map(&:slots).flatten.map { |s| @service.slot_reserved_status(s, user, s.availability.trainings) }
|
||||
if @level == 'slot'
|
||||
availabilities.map(&:slots).flatten.map { |s| @service.slot_reserved_status(s, user, s.availability.trainings) }
|
||||
else
|
||||
availabilities.map { |a| @service.availability_reserved_status(a, user, a.trainings) }
|
||||
end
|
||||
end
|
||||
|
||||
# list all slots for the given event(s), with visibility relative to the given user
|
||||
def events(events, user, window)
|
||||
ev_availabilities = Availability.includes('event').where('events.id': events.map(&:id))
|
||||
availabilities = availabilities(ev_availabilities, 'event', user, window[:start], window[:end])
|
||||
|
||||
if @level == 'slot'
|
||||
availabilities.map(&:slots).flatten.map { |s| @service.slot_reserved_status(s, user, [s.availability.event]) }
|
||||
else
|
||||
availabilities.map { |a| @service.availability_reserved_status(a, user, [a.event]) }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
@ -45,7 +70,7 @@ class Availabilities::AvailabilitiesService
|
||||
# the trainings further in the futur. This is used to prevent users with a rolling subscription to take
|
||||
# their first training in a very long delay.
|
||||
def show_more_trainings?(user)
|
||||
user.trainings.size.positive? && subscription_year?(user)
|
||||
user&.trainings&.size&.positive? && subscription_year?(user)
|
||||
end
|
||||
|
||||
def availabilities(availabilities, type, user, range_start, range_end)
|
||||
@ -53,8 +78,10 @@ class Availabilities::AvailabilitiesService
|
||||
# 1) an admin (he can see all availabilities from 1 month ago to anytime in the future)
|
||||
if @current_user&.admin? || @current_user&.manager?
|
||||
window_start = [range_start, 1.month.ago].max
|
||||
availabilities.includes(:tags, :plans)
|
||||
.where('start_at <= ? AND end_at >= ? AND available_type = ?', range_end, window_start, type)
|
||||
availabilities.includes(:tags, :plans, :slots)
|
||||
.joins(:slots)
|
||||
.where('availabilities.start_at <= ? AND availabilities.end_at >= ? AND available_type = ?', range_end, window_start, type)
|
||||
.where('slots.start_at > ? AND slots.end_at < ?', window_start, range_end)
|
||||
.where(lock: false)
|
||||
# 2) an user (he cannot see past availabilities neither those further than 1 (or 3) months in the future)
|
||||
else
|
||||
@ -63,9 +90,11 @@ class Availabilities::AvailabilitiesService
|
||||
end_at = @maximum_visibility[:year] if show_more_trainings?(user) && type == 'training'
|
||||
window_end = [end_at, range_end].min
|
||||
window_start = [range_start, DateTime.current].max
|
||||
availabilities.includes(:tags, :plans)
|
||||
.where('start_at < ? AND end_at > ? AND available_type = ?', window_end, window_start, type)
|
||||
.where('availability_tags.tag_id' => user.tag_ids.concat([nil]))
|
||||
availabilities.includes(:tags, :plans, :slots)
|
||||
.joins(:slots)
|
||||
.where('availabilities.start_at <= ? AND availabilities.end_at >= ? AND available_type = ?', window_end, window_start, type)
|
||||
.where('slots.start_at > ? AND slots.end_at < ?', window_start, window_end)
|
||||
.where('availability_tags.tag_id' => user&.tag_ids&.concat([nil]))
|
||||
.where(lock: false)
|
||||
end
|
||||
end
|
||||
|
@ -1,44 +1,47 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Provides helper methods to create an Availability with multiple occurrences
|
||||
# Provides an helper method to create the slots for an Availability and optionnaly, for its multiple occurrences
|
||||
class Availabilities::CreateAvailabilitiesService
|
||||
def create(availability, occurrences = [])
|
||||
availability.update_attributes(occurrence_id: availability.id)
|
||||
slot_duration = availability.slot_duration || Setting.get('slot_duration').to_i
|
||||
create_slots(availability)
|
||||
|
||||
occurrences.each do |o|
|
||||
start_at = Time.zone.parse(o[:start_at])
|
||||
end_at = Time.zone.parse(o[:end_at])
|
||||
|
||||
avail = if availability.start_at == start_at && availability.end_at == end_at
|
||||
availability
|
||||
else
|
||||
Availability.create!(
|
||||
start_at: start_at,
|
||||
end_at: end_at,
|
||||
available_type: availability.available_type,
|
||||
is_recurrent: availability.is_recurrent,
|
||||
period: availability.period,
|
||||
nb_periods: availability.nb_periods,
|
||||
end_date: availability.end_date,
|
||||
occurrence_id: availability.occurrence_id,
|
||||
machine_ids: availability.machine_ids,
|
||||
training_ids: availability.training_ids,
|
||||
space_ids: availability.space_ids,
|
||||
tag_ids: availability.tag_ids,
|
||||
nb_total_places: availability.nb_total_places,
|
||||
slot_duration: availability.slot_duration,
|
||||
plan_ids: availability.plan_ids
|
||||
)
|
||||
end
|
||||
next if availability.start_at == start_at && availability.end_at == end_at
|
||||
|
||||
((end_at - start_at) / slot_duration.minutes).to_i.times do |i|
|
||||
Slot.new(
|
||||
start_at: start_at + (i * slot_duration).minutes,
|
||||
end_at: start_at + (i * slot_duration).minutes + slot_duration.minutes,
|
||||
availability_id: avail.id
|
||||
).save!
|
||||
end
|
||||
occ = Availability.create!(
|
||||
start_at: start_at,
|
||||
end_at: end_at,
|
||||
available_type: availability.available_type,
|
||||
is_recurrent: availability.is_recurrent,
|
||||
period: availability.period,
|
||||
nb_periods: availability.nb_periods,
|
||||
end_date: availability.end_date,
|
||||
occurrence_id: availability.occurrence_id,
|
||||
machine_ids: availability.machine_ids,
|
||||
training_ids: availability.training_ids,
|
||||
space_ids: availability.space_ids,
|
||||
tag_ids: availability.tag_ids,
|
||||
nb_total_places: availability.nb_total_places,
|
||||
slot_duration: availability.slot_duration,
|
||||
plan_ids: availability.plan_ids
|
||||
)
|
||||
create_slots(occ)
|
||||
end
|
||||
end
|
||||
|
||||
def create_slots(availability)
|
||||
slot_duration = availability.slot_duration || Setting.get('slot_duration').to_i
|
||||
|
||||
((availability.end_at - availability.start_at) / slot_duration.minutes).to_i.times do |i|
|
||||
Slot.new(
|
||||
start_at: availability.start_at + (i * slot_duration).minutes,
|
||||
end_at: availability.start_at + (i * slot_duration).minutes + slot_duration.minutes,
|
||||
availability_id: availability.id
|
||||
).save!
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,8 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Provides helper methods for public calendar of Availability
|
||||
# FIXME, Availabilities::StatusService was refactored
|
||||
# TODO, Use Availabilities::AvailabilitiesService
|
||||
class Availabilities::PublicAvailabilitiesService
|
||||
def initialize(current_user)
|
||||
@current_user = current_user
|
||||
@ -10,95 +8,39 @@ class Availabilities::PublicAvailabilitiesService
|
||||
end
|
||||
|
||||
# provides a list of slots and availabilities for the machines, between the given dates
|
||||
def machines(start_date, end_date, reservations, machine_ids)
|
||||
availabilities = Availability.includes(:tags, :machines)
|
||||
.where(available_type: 'machines')
|
||||
.where('start_at >= ? AND end_at <= ?', start_date, end_date)
|
||||
.where(lock: false)
|
||||
def machines(window, machine_ids, level)
|
||||
machine_ids = [] if machine_ids.nil?
|
||||
service = Availabilities::AvailabilitiesService.new(@current_user, level)
|
||||
slots = []
|
||||
availabilities.each do |a|
|
||||
slot_duration = a.slot_duration || Setting.get('slot_duration').to_i
|
||||
a.machines.each do |machine|
|
||||
next unless machine_ids&.include?(machine.id.to_s)
|
||||
|
||||
((a.end_at - a.start_at) / slot_duration.minutes).to_i.times do |i|
|
||||
slot = Slot.new(
|
||||
start_at: a.start_at + (i * slot_duration).minutes,
|
||||
end_at: a.start_at + (i * slot_duration).minutes + slot_duration.minutes,
|
||||
availability_id: a.id,
|
||||
availability: a,
|
||||
machine: machine,
|
||||
title: machine.name
|
||||
)
|
||||
slot = @service.machine_reserved_status(slot, reservations, @current_user)
|
||||
slots << slot
|
||||
end
|
||||
end
|
||||
machine_ids.each do |machine_id|
|
||||
machine = Machine.friendly.find(machine_id)
|
||||
slots.concat(service.machines(machine, @current_user, window))
|
||||
end
|
||||
{ availabilities: availabilities, slots: slots }
|
||||
slots
|
||||
end
|
||||
|
||||
# provides a list of slots and availabilities for the spaces, between the given dates
|
||||
def spaces(start_date, end_date, reservations, available_id)
|
||||
availabilities = Availability.includes(:tags, :spaces).where(available_type: 'space')
|
||||
.where('start_at >= ? AND end_at <= ?', start_date, end_date)
|
||||
.where(lock: false)
|
||||
|
||||
availabilities.where(available_id: available_id) if available_id
|
||||
|
||||
def spaces(window, spaces_ids, level)
|
||||
spaces_ids = [] if spaces_ids.nil?
|
||||
service = Availabilities::AvailabilitiesService.new(@current_user, level)
|
||||
slots = []
|
||||
availabilities.each do |a|
|
||||
slot_duration = a.slot_duration || Setting.get('slot_duration').to_i
|
||||
space = a.spaces.first
|
||||
((a.end_at - a.start_at) / slot_duration.minutes).to_i.times do |i|
|
||||
next unless (a.start_at + (i * slot_duration).minutes) > DateTime.current
|
||||
|
||||
slot = Slot.new(
|
||||
start_at: a.start_at + (i * slot_duration).minutes,
|
||||
end_at: a.start_at + (i * slot_duration).minutes + slot_duration.minutes,
|
||||
availability_id: a.id,
|
||||
availability: a,
|
||||
space: space,
|
||||
title: space.name
|
||||
)
|
||||
slot = @service.space_reserved_status(slot, reservations, @current_user)
|
||||
slots << slot
|
||||
end
|
||||
spaces_ids.each do |space_id|
|
||||
space = Space.friendly.find(space_id)
|
||||
slots.concat(service.spaces(space, @current_user, window))
|
||||
end
|
||||
{ availabilities: availabilities, slots: slots }
|
||||
slots
|
||||
end
|
||||
|
||||
def public_availabilities(start_date, end_date, reservations, ids)
|
||||
if in_same_day(start_date, end_date)
|
||||
# request for 1 single day
|
||||
def public_availabilities(window, ids, events = false)
|
||||
level = in_same_day(window[:start], window[:end]) ? 'slot' : 'availability'
|
||||
service = Availabilities::AvailabilitiesService.new(@current_user, level)
|
||||
|
||||
# trainings, events
|
||||
training_event_availabilities = Availability.includes(:tags, :trainings, :slots)
|
||||
.where(available_type: %w[training event])
|
||||
.where('start_at >= ? AND end_at <= ?', start_date, end_date)
|
||||
.where(lock: false)
|
||||
# machines
|
||||
machines_avail = machines(start_date, end_date, reservations, ids[:machines])
|
||||
machine_slots = machines_avail[:slots]
|
||||
# spaces
|
||||
spaces_avail = spaces(start_date, end_date, reservations, ids[:spaces])
|
||||
space_slots = spaces_avail[:slots]
|
||||
machines_slots = machines(window, ids[:machines], level)
|
||||
spaces_slots = spaces(window, ids[:spaces], level)
|
||||
trainings_slots = service.trainings(Training.where(id: ids[:trainings]), @current_user, window)
|
||||
events_slots = events ? service.events(Event.all, @current_user, window) : []
|
||||
|
||||
[].concat(training_event_availabilities).concat(machine_slots).concat(space_slots)
|
||||
else
|
||||
# request for many days (week or month)
|
||||
avails = Availability.includes(:tags, :machines, :trainings, :spaces, :event, :slots)
|
||||
.where('start_at >= ? AND end_at <= ?', start_date, end_date)
|
||||
.where(lock: false)
|
||||
avails.each do |a|
|
||||
if a.available_type == 'training' || a.available_type == 'event'
|
||||
a = @service.training_event_reserved_status(a, reservations, @current_user)
|
||||
elsif a.available_type == 'space'
|
||||
a.is_reserved = @service.reserved_availability?(a, @current_user)
|
||||
end
|
||||
end
|
||||
avails
|
||||
end
|
||||
[].concat(trainings_slots).concat(events_slots).concat(machines_slots).concat(spaces_slots)
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -10,6 +10,10 @@ class Availabilities::StatusService
|
||||
# check that the provided slot is reserved for the given reservable (machine, training or space).
|
||||
# Mark it accordingly for display in the calendar
|
||||
def slot_reserved_status(slot, user, reservables)
|
||||
unless reservables.map(&:class).map(&:name).reduce(:==)
|
||||
raise TypeError('[Availabilities::StatusService#slot_reserved_status] reservables have differents types')
|
||||
end
|
||||
|
||||
statistic_profile_id = user&.statistic_profile&.id
|
||||
|
||||
slots_reservations = slot.slots_reservations
|
||||
@ -29,16 +33,22 @@ class Availabilities::StatusService
|
||||
end
|
||||
|
||||
# check that the provided ability is reserved by the given user
|
||||
def reserved_availability?(availability, user)
|
||||
if user
|
||||
reserved_slots = []
|
||||
availability.slots.each do |s|
|
||||
reserved_slots << s if s.canceled_at.nil?
|
||||
end
|
||||
reserved_slots.map(&:reservations).flatten.map(&:statistic_profile_id).include? user.statistic_profile&.id
|
||||
else
|
||||
false
|
||||
def availability_reserved_status(availability, user, reservables)
|
||||
unless reservables.map(&:class).map(&:name).reduce(:==)
|
||||
raise TypeError('[Availabilities::StatusService#availability_reserved_status] reservables have differents types')
|
||||
end
|
||||
|
||||
slots_reservations = availability.slots_reservations
|
||||
.includes(:reservation)
|
||||
.where('reservations.reservable_type': reservables.map(&:class).map(&:name))
|
||||
.where('reservations.reservable_id': reservables.map(&:id))
|
||||
.where('slots_reservations.canceled_at': nil)
|
||||
|
||||
user_slots_reservations = slots_reservations.where('reservations.statistic_profile_id': user&.statistic_profile&.id)
|
||||
|
||||
availability.is_reserved = !slots_reservations.empty?
|
||||
availability.current_user_slots_reservations_ids = user_slots_reservations.map(&:id)
|
||||
availability
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -166,27 +166,33 @@ class EventService
|
||||
e_params = e_params.merge(
|
||||
event_files_attributes: ef_attributes
|
||||
)
|
||||
original_slots_ids = event.availability.slots.map(&:id)
|
||||
begin
|
||||
results[:events].push status: !!e.update(e_params.permit!), event: e # rubocop:disable Style/DoubleNegation
|
||||
rescue StandardError => err
|
||||
results[:events].push status: false, event: e, error: err.try(:record).try(:class).try(:name), message: err.message
|
||||
end
|
||||
results[:slots].concat(update_slots(e.availability_id))
|
||||
results[:slots].concat(update_slots(e.availability_id, original_slots_ids))
|
||||
end
|
||||
original_slots_ids = event.availability.slots.map(&:id)
|
||||
begin
|
||||
event_params[:availability_attributes][:id] = event.availability_id
|
||||
results[:events].push status: !!event.update(event_params), event: event # rubocop:disable Style/DoubleNegation
|
||||
rescue StandardError => err
|
||||
results[:events].push status: false, event: event, error: err.try(:record).try(:class).try(:name), message: err.message
|
||||
end
|
||||
results[:slots].concat(update_slots(event.availability_id))
|
||||
results[:slots].concat(update_slots(event.availability_id, original_slots_ids))
|
||||
results
|
||||
end
|
||||
|
||||
def update_slots(availability_id)
|
||||
def update_slots(availability_id, original_slots_ids)
|
||||
results = []
|
||||
avail = Availability.find(availability_id)
|
||||
avail.slots.each do |s|
|
||||
results.push(status: !!s.update_attributes(start_at: avail.start_at, end_at: avail.end_at), slot: s) # rubocop:disable Style/DoubleNegation
|
||||
Slot.where(id: original_slots_ids).each do |slot|
|
||||
results.push(
|
||||
status: !!slot.update_attributes(availability_id: availability_id, start_at: avail.start_at, end_at: avail.end_at), # rubocop:disable Style/DoubleNegation
|
||||
slot: slot
|
||||
)
|
||||
rescue StandardError => err
|
||||
results.push status: false, slot: s, error: err.try(:record).try(:class).try(:name), message: err.message
|
||||
end
|
||||
|
@ -1,18 +1,18 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
json.array!(@availabilities) do |availability|
|
||||
json.id availability.id
|
||||
json.start availability.start_at.iso8601
|
||||
json.end availability.end_at.iso8601
|
||||
json.textColor 'black'
|
||||
json.backgroundColor 'white'
|
||||
# availability object
|
||||
# availability object (for weeks/months views)
|
||||
if availability.instance_of? Availability
|
||||
json.title availability.title(@title_filter)
|
||||
if availability.available_type == 'event'
|
||||
json.event_id availability.event.id
|
||||
end
|
||||
if availability.available_type == 'training'
|
||||
json.training_id availability.trainings.first.id
|
||||
end
|
||||
json.event_id availability.event.id if availability.available_type == 'event'
|
||||
json.training_id availability.trainings.first.id if availability.available_type == 'training'
|
||||
json.space_id availability.spaces.first.id if availability.available_type == 'space'
|
||||
json.machines_ids availability.machines.map(&:id) if availability.available_type == 'machines'
|
||||
json.available_type availability.available_type
|
||||
json.tag_ids availability.tag_ids
|
||||
json.tags availability.tags do |t|
|
||||
@ -20,33 +20,17 @@ json.array!(@availabilities) do |availability|
|
||||
json.name t.name
|
||||
end
|
||||
|
||||
if availability.available_type == 'training' or availability.available_type == 'event'
|
||||
json.borderColor trainings_events_border_color(availability)
|
||||
if availability.is_reserved
|
||||
json.is_reserved true
|
||||
json.title "#{availability.title}' - #{t('trainings.i_ve_reserved')}"
|
||||
elsif availability.full?
|
||||
json.is_completed true
|
||||
json.title "#{availability.title} - #{t('trainings.completed')}"
|
||||
end
|
||||
elsif availability.available_type == 'space'
|
||||
complete = availability.slots.length >= availability.available_space_places
|
||||
json.is_completed complete
|
||||
json.borderColor availability_border_color(availability)
|
||||
if complete
|
||||
json.title "#{availability.title} - #{t('trainings.completed')}"
|
||||
json.borderColor AvailabilityHelper::IS_FULL
|
||||
end
|
||||
if availability.is_reserved
|
||||
json.is_reserved true
|
||||
json.title "#{availability.title} - #{t('trainings.i_ve_reserved')}"
|
||||
end
|
||||
else
|
||||
json.borderColor availability_border_color(availability)
|
||||
json.is_completed availability.full?
|
||||
json.is_reserved availability.is_reserved
|
||||
json.borderColor availability_border_color(availability)
|
||||
if availability.is_reserved && !availability.current_user_slots_reservations_ids.empty?
|
||||
json.title "#{availability.title}' - #{t('trainings.i_ve_reserved')}"
|
||||
elsif availability.full?
|
||||
json.title "#{availability.title} - #{t('trainings.completed')}"
|
||||
json.borderColor AvailabilityHelper::IS_FULL
|
||||
end
|
||||
|
||||
# slot object ( here => availability = slot )
|
||||
# -> machines / spaces
|
||||
# slot object ( here => availability = slot ), for daily view
|
||||
elsif availability.instance_of? Slot
|
||||
json.title availability.title
|
||||
json.tag_ids availability.availability.tag_ids
|
||||
@ -54,14 +38,20 @@ json.array!(@availabilities) do |availability|
|
||||
json.id t.id
|
||||
json.name t.name
|
||||
end
|
||||
if availability.try(:machine)
|
||||
json.machine_id availability.machine.id
|
||||
json.is_reserved availability.is_reserved
|
||||
json.is_completed availability.full?
|
||||
if availability.availability.available_type == 'machines'
|
||||
json.machine_ids availability.availability.machines.map(&:id)
|
||||
json.borderColor machines_slot_border_color(availability)
|
||||
json.is_reserved availability.is_reserved
|
||||
elsif availability.try(:space)
|
||||
json.space_id availability.space.id
|
||||
elsif availability.availability.available_type == 'space'
|
||||
json.space_id availability.availability.space.first.id
|
||||
json.borderColor space_slot_border_color(availability)
|
||||
json.is_completed availability.full?
|
||||
elsif availability.availability.available_type == 'training'
|
||||
json.training_id availability.availability.trainings.first.id
|
||||
json.borderColor trainings_events_border_color(availability)
|
||||
elsif availability.availability.available_type == 'event'
|
||||
json.event_id availability.availability.event.id
|
||||
json.borderColor trainings_events_border_color(availability)
|
||||
else
|
||||
json.title 'Unknown slot'
|
||||
end
|
||||
|
68
test/fixtures/availabilities.yml
vendored
68
test/fixtures/availabilities.yml
vendored
@ -1,8 +1,8 @@
|
||||
|
||||
availability_1:
|
||||
id: 1
|
||||
start_at: <%= DateTime.current.utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= DateTime.current.utc.change({:hour => 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: training
|
||||
created_at: 2016-04-04 15:24:01.517486000 Z
|
||||
updated_at: 2016-04-04 15:24:01.517486000 Z
|
||||
@ -11,8 +11,8 @@ availability_1:
|
||||
|
||||
availability_2:
|
||||
id: 2
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({:hour => 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: training
|
||||
created_at: 2016-04-04 15:24:09.169364000 Z
|
||||
updated_at: 2016-04-04 15:24:09.169364000 Z
|
||||
@ -21,8 +21,8 @@ availability_2:
|
||||
|
||||
availability_3:
|
||||
id: 3
|
||||
start_at: <%= DateTime.current.utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= DateTime.current.utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: machines
|
||||
created_at: 2016-04-04 15:24:27.587583000 Z
|
||||
updated_at: 2016-04-04 15:24:27.587583000 Z
|
||||
@ -31,8 +31,8 @@ availability_3:
|
||||
|
||||
availability_4:
|
||||
id: 4
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: machines
|
||||
created_at: 2016-04-04 15:24:44.044908000 Z
|
||||
updated_at: 2016-04-04 15:24:44.044908000 Z
|
||||
@ -41,8 +41,8 @@ availability_4:
|
||||
|
||||
availability_5:
|
||||
id: 5
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: machines
|
||||
created_at: 2016-04-04 15:25:48.584444000 Z
|
||||
updated_at: 2016-04-04 15:25:48.584444000 Z
|
||||
@ -51,8 +51,8 @@ availability_5:
|
||||
|
||||
availability_6:
|
||||
id: 6
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: machines
|
||||
created_at: 2016-04-04 15:26:17.953216000 Z
|
||||
updated_at: 2016-04-04 15:26:17.953216000 Z
|
||||
@ -61,8 +61,8 @@ availability_6:
|
||||
|
||||
availability_7:
|
||||
id: 7
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: machines
|
||||
created_at: 2016-04-04 15:26:39.278627000 Z
|
||||
updated_at: 2016-04-04 15:26:39.278627000 Z
|
||||
@ -71,8 +71,8 @@ availability_7:
|
||||
|
||||
availability_8:
|
||||
id: 8
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({:hour => 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: training
|
||||
created_at: 2016-04-04 15:26:49.572724000 Z
|
||||
updated_at: 2016-04-04 15:26:49.572724000 Z
|
||||
@ -132,8 +132,8 @@ availability_13:
|
||||
|
||||
availability_14:
|
||||
id: 14
|
||||
start_at: <%= 20.days.from_now.utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 20.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 20.days.from_now.utc.change({:hour => 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 20.days.from_now.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: machines
|
||||
created_at: 2016-04-04 15:44:04.023557000 Z
|
||||
updated_at: 2016-04-04 15:44:04.023557000 Z
|
||||
@ -142,8 +142,8 @@ availability_14:
|
||||
|
||||
availability_15:
|
||||
id: 15
|
||||
start_at: <%= 40.days.from_now.utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 40.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 40.days.from_now.utc.change({:hour => 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 40.days.from_now.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: machines
|
||||
created_at: 2016-04-04 15:44:04.023557000 Z
|
||||
updated_at: 2016-04-04 15:44:04.023557000 Z
|
||||
@ -152,8 +152,8 @@ availability_15:
|
||||
|
||||
availability_16:
|
||||
id: 16
|
||||
start_at: <%= 80.days.from_now.utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 80.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 80.days.from_now.utc.change({:hour => 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 80.days.from_now.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: machines
|
||||
created_at: 2016-04-04 15:44:04.023557000 Z
|
||||
updated_at: 2016-04-04 15:44:04.023557000 Z
|
||||
@ -162,9 +162,9 @@ availability_16:
|
||||
|
||||
availability_17:
|
||||
id: 17
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: machines
|
||||
start_at: <%= 10.days.from_now.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: event
|
||||
created_at: 2016-04-04 15:44:04.023557000 Z
|
||||
updated_at: 2016-04-04 15:44:04.023557000 Z
|
||||
nb_total_places:
|
||||
@ -172,8 +172,8 @@ availability_17:
|
||||
|
||||
availability_18:
|
||||
id: 18
|
||||
start_at: <%= 2.days.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 2.days.from_now.utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 2.days.from_now.utc.change({:hour => 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 2.days.from_now.utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: space
|
||||
created_at: 2017-02-15 15:53:35.154433000 Z
|
||||
updated_at: 2017-02-15 15:53:35.154433000 Z
|
||||
@ -182,10 +182,20 @@ availability_18:
|
||||
|
||||
availability_19:
|
||||
id: 19
|
||||
start_at: <%= 1.day.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 1.day.from_now.utc.change({:hour => 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: machines
|
||||
created_at: 2017-02-15 15:53:35.154433000 Z
|
||||
updated_at: 2017-02-15 15:53:35.154433000 Z
|
||||
nb_total_places:
|
||||
destroying: false
|
||||
|
||||
availability_20:
|
||||
id: 20
|
||||
start_at: <%= 10.days.ago.utc.change({:hour => 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.ago.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
available_type: training
|
||||
created_at: 2022-07-18 12:38:21.616510000 Z
|
||||
updated_at: 2022-07-18 12:38:21.616510000 Z
|
||||
nb_total_places: 5
|
||||
destroying: false
|
||||
|
5
test/fixtures/invoices.yml
vendored
5
test/fixtures/invoices.yml
vendored
@ -19,6 +19,7 @@ invoice_1:
|
||||
invoicing_profile_id: 3
|
||||
operator_profile_id: 3
|
||||
statistic_profile_id: 3
|
||||
|
||||
invoice_2:
|
||||
id: 2
|
||||
total: 2000
|
||||
@ -39,6 +40,7 @@ invoice_2:
|
||||
invoicing_profile_id: 4
|
||||
operator_profile_id: 1
|
||||
statistic_profile_id: 4
|
||||
|
||||
invoice_3:
|
||||
id: 3
|
||||
total: 3000
|
||||
@ -59,6 +61,7 @@ invoice_3:
|
||||
invoicing_profile_id: 7
|
||||
operator_profile_id: 1
|
||||
statistic_profile_id: 7
|
||||
|
||||
invoice_4:
|
||||
id: 4
|
||||
total: 0
|
||||
@ -79,6 +82,7 @@ invoice_4:
|
||||
invoicing_profile_id: 7
|
||||
operator_profile_id: 1
|
||||
statistic_profile_id: 7
|
||||
|
||||
invoice_5:
|
||||
id: 5
|
||||
total: 1500
|
||||
@ -99,6 +103,7 @@ invoice_5:
|
||||
invoicing_profile_id: 3
|
||||
operator_profile_id: 1
|
||||
statistic_profile_id: 3
|
||||
|
||||
invoice_6:
|
||||
id: 6
|
||||
total: 3000
|
||||
|
7
test/fixtures/invoicing_profiles.yml
vendored
7
test/fixtures/invoicing_profiles.yml
vendored
@ -60,3 +60,10 @@ proudhon:
|
||||
first_name: Pierre-Joseph
|
||||
last_name: Proudhon
|
||||
email: pj.proudhon@la-propriete.org
|
||||
|
||||
acamus:
|
||||
id: 10
|
||||
user_id: 10
|
||||
first_name: Albert
|
||||
last_name: Camus
|
||||
email: albert.camus@letranger.org
|
||||
|
22
test/fixtures/payment_gateway_objects.yml
vendored
22
test/fixtures/payment_gateway_objects.yml
vendored
@ -208,3 +208,25 @@ pgo30:
|
||||
item_type: PaymentSchedule
|
||||
item_id: 12
|
||||
payment_gateway_object_id: 29
|
||||
|
||||
pgo31:
|
||||
id: 31
|
||||
gateway_object_id: fakefakefakefake
|
||||
gateway_object_type: PayZen::Order
|
||||
item_type: PaymentSchedule
|
||||
item_id: 13
|
||||
|
||||
pgo32:
|
||||
id: 32
|
||||
gateway_object_id: fakefakefakefake
|
||||
gateway_object_type: PayZen::Token
|
||||
item_type: PaymentSchedule
|
||||
item_id: 13
|
||||
|
||||
pgo33:
|
||||
id: 33
|
||||
gateway_object_id: fakefakefakefake
|
||||
gateway_object_type: PayZen::Subscription
|
||||
item_type: PaymentSchedule
|
||||
item_id: 13
|
||||
payment_gateway_object_id: 32
|
||||
|
169
test/fixtures/payment_schedule_items.yml
vendored
169
test/fixtures/payment_schedule_items.yml
vendored
@ -166,3 +166,172 @@ payment_schedule_item_116:
|
||||
footprint: 9b162c2b342d8c82e9163202a22a405b879d4b2ad2409a61ad10942f743bc576
|
||||
created_at: '2021-06-14 12:24:45.882343'
|
||||
updated_at: '2021-06-14 12:24:45.884709'
|
||||
|
||||
payment_schedule_item_117:
|
||||
id: 117
|
||||
amount: 9474
|
||||
due_date: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
state: paid
|
||||
details: '{"recurring": 9466, "adjustment": 8, "other_items": 0}'
|
||||
payment_method: card
|
||||
client_secret:
|
||||
payment_schedule_id: 13
|
||||
invoice_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
||||
payment_schedule_item_118:
|
||||
id: 118
|
||||
amount: 9466
|
||||
due_date: <%= 8.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
state: paid
|
||||
details: '{"recurring": 9466}'
|
||||
payment_method: card
|
||||
client_secret:
|
||||
payment_schedule_id: 13
|
||||
invoice_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
||||
|
||||
payment_schedule_item_119:
|
||||
id: 119
|
||||
amount: 9466
|
||||
due_date: <%= 7.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
state: paid
|
||||
details: '{"recurring": 9466}'
|
||||
payment_method: card
|
||||
client_secret:
|
||||
payment_schedule_id: 13
|
||||
invoice_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
||||
payment_schedule_item_120:
|
||||
id: 120
|
||||
amount: 9466
|
||||
due_date: <%= 6.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
state: paid
|
||||
details: '{"recurring": 9466}'
|
||||
payment_method: card
|
||||
client_secret:
|
||||
payment_schedule_id: 13
|
||||
invoice_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
||||
payment_schedule_item_121:
|
||||
id: 121
|
||||
amount: 9466
|
||||
due_date: <%= 5.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
state: paid
|
||||
details: '{"recurring": 9466}'
|
||||
payment_method: card
|
||||
client_secret:
|
||||
payment_schedule_id: 13
|
||||
invoice_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
||||
payment_schedule_item_122:
|
||||
id: 122
|
||||
amount: 9466
|
||||
due_date: <%= 4.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
state: paid
|
||||
details: '{"recurring": 9466}'
|
||||
payment_method: card
|
||||
client_secret:
|
||||
payment_schedule_id: 13
|
||||
invoice_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
||||
payment_schedule_item_123:
|
||||
id: 123
|
||||
amount: 9466
|
||||
due_date: <%= 3.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
state: paid
|
||||
details: '{"recurring": 9466}'
|
||||
payment_method: card
|
||||
client_secret:
|
||||
payment_schedule_id: 13
|
||||
invoice_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
||||
payment_schedule_item_124:
|
||||
id: 124
|
||||
amount: 9466
|
||||
due_date: <%= 2.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
state: paid
|
||||
details: '{"recurring": 9466}'
|
||||
payment_method: card
|
||||
client_secret:
|
||||
payment_schedule_id: 13
|
||||
invoice_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
||||
payment_schedule_item_125:
|
||||
id: 125
|
||||
amount: 9466
|
||||
due_date: <%= 1.month.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
state: paid
|
||||
details: '{"recurring": 9466}'
|
||||
payment_method: card
|
||||
client_secret:
|
||||
payment_schedule_id: 13
|
||||
invoice_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
||||
payment_schedule_item_126:
|
||||
id: 126
|
||||
amount: 9466
|
||||
due_date: <%= DateTime.current.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
state: new
|
||||
details: '{"recurring": 9466}'
|
||||
payment_method:
|
||||
client_secret:
|
||||
payment_schedule_id: 13
|
||||
invoice_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
||||
payment_schedule_item_127:
|
||||
id: 127
|
||||
amount: 9466
|
||||
due_date: <%= 1.month.from_now.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
state: new
|
||||
details: '{"recurring": 9466}'
|
||||
payment_method:
|
||||
client_secret:
|
||||
payment_schedule_id: 13
|
||||
invoice_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
||||
payment_schedule_item_128:
|
||||
id: 128
|
||||
amount: 9466
|
||||
due_date: <%= 2.months.from_now.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
state: new
|
||||
details: '{"recurring": 9466}'
|
||||
payment_method:
|
||||
client_secret:
|
||||
payment_schedule_id: 13
|
||||
invoice_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
12
test/fixtures/payment_schedule_objects.yml
vendored
12
test/fixtures/payment_schedule_objects.yml
vendored
@ -1,4 +1,4 @@
|
||||
payment_schedule_oject_10:
|
||||
payment_schedule_object_10:
|
||||
id: 10
|
||||
object_type: Subscription
|
||||
object_id: 5
|
||||
@ -7,3 +7,13 @@ payment_schedule_oject_10:
|
||||
footprint: a1ef3a0c3abac7e02bc11193458c0d1e90a5acf290c9e3b4e7c049a7efcbeb30
|
||||
created_at: '2021-06-14 12:24:45.890373'
|
||||
updated_at: '2021-06-14 12:24:45.894701'
|
||||
|
||||
payment_schedule_object_11:
|
||||
id: 11
|
||||
object_type: Subscription
|
||||
object_id: 6
|
||||
payment_schedule_id: 13
|
||||
main: true
|
||||
footprint: fakefakefakefakefakefake
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
16
test/fixtures/payment_schedules.yml
vendored
16
test/fixtures/payment_schedules.yml
vendored
@ -13,3 +13,19 @@ payment_schedule_12:
|
||||
operator_profile_id: 1
|
||||
created_at: '2021-06-14 12:24:45.843714'
|
||||
updated_at: '2021-06-14 12:24:45.908386'
|
||||
|
||||
payment_schedule_13:
|
||||
id: 13
|
||||
total: 180000
|
||||
reference: <%= 9.months.ago.utc.strftime('%y%m00310/E') %>
|
||||
payment_method: card
|
||||
wallet_amount:
|
||||
wallet_transaction_id:
|
||||
coupon_id:
|
||||
footprint: fakefakefakefakefakefake
|
||||
environment: development
|
||||
invoicing_profile_id: 10
|
||||
statistic_profile_id: 10
|
||||
operator_profile_id: 10
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
|
11
test/fixtures/profiles.yml
vendored
11
test/fixtures/profiles.yml
vendored
@ -97,3 +97,14 @@ profile_9:
|
||||
software_mastered:
|
||||
created_at: 2020-06-15 18:03:06.553623000 Z
|
||||
updated_at: 2021-06-14 15:51:39.729052000 Z
|
||||
|
||||
profile_10:
|
||||
id: 10
|
||||
user_id: 10
|
||||
first_name: Albert
|
||||
last_name: Camus
|
||||
phone: '0752145796'
|
||||
interest: écriture, philosophie
|
||||
software_mastered:
|
||||
created_at: 1913-11-07 07:01:51.498120
|
||||
updated_at: 1960-01-04 17:05:09.219841
|
||||
|
688
test/fixtures/slots.yml
vendored
688
test/fixtures/slots.yml
vendored
@ -17,240 +17,240 @@ slot_2:
|
||||
|
||||
slot_9:
|
||||
id: 9
|
||||
start_at: <%= DateTime.current.utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= DateTime.current.utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({:hour => 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.880751'
|
||||
updated_at: '2022-07-12 15:18:43.880751'
|
||||
availability_id: 3
|
||||
|
||||
slot_10:
|
||||
id: 10
|
||||
start_at: <%= DateTime.current.utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= DateTime.current.utc.change({:hour => 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({:hour => 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.882957'
|
||||
updated_at: '2022-07-12 15:18:43.882957'
|
||||
availability_id: 3
|
||||
|
||||
slot_11:
|
||||
id: 11
|
||||
start_at: <%= DateTime.current.utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= DateTime.current.utc.change({:hour => 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({:hour => 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.884691'
|
||||
updated_at: '2022-07-12 15:18:43.884691'
|
||||
availability_id: 3
|
||||
|
||||
slot_12:
|
||||
id: 12
|
||||
start_at: <%= DateTime.current.utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= DateTime.current.utc.change({:hour => 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({:hour => 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.886431'
|
||||
updated_at: '2022-07-12 15:18:43.886431'
|
||||
availability_id: 3
|
||||
|
||||
slot_13:
|
||||
id: 13
|
||||
start_at: <%= DateTime.current.utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= DateTime.current.utc.change({:hour => 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({:hour => 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.888074'
|
||||
updated_at: '2022-07-12 15:18:43.888074'
|
||||
availability_id: 3
|
||||
|
||||
slot_14:
|
||||
id: 14
|
||||
start_at: <%= DateTime.current.utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= DateTime.current.utc.change({:hour => 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.889691'
|
||||
updated_at: '2022-07-12 15:18:43.889691'
|
||||
availability_id: 3
|
||||
|
||||
slot_15:
|
||||
id: 15
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({:hour => 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.893096'
|
||||
updated_at: '2022-07-12 15:18:43.893096'
|
||||
availability_id: 4
|
||||
|
||||
slot_16:
|
||||
id: 16
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({:hour => 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({:hour => 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.894777'
|
||||
updated_at: '2022-07-12 15:18:43.894777'
|
||||
availability_id: 4
|
||||
|
||||
slot_17:
|
||||
id: 17
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({:hour => 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({:hour => 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.896423'
|
||||
updated_at: '2022-07-12 15:18:43.896423'
|
||||
availability_id: 4
|
||||
|
||||
slot_18:
|
||||
id: 18
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({:hour => 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({:hour => 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.898021'
|
||||
updated_at: '2022-07-12 15:18:43.898021'
|
||||
availability_id: 4
|
||||
|
||||
slot_19:
|
||||
id: 19
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({:hour => 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({:hour => 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.899592'
|
||||
updated_at: '2022-07-12 15:18:43.899592'
|
||||
availability_id: 4
|
||||
|
||||
slot_20:
|
||||
id: 20
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({:hour => 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.900938'
|
||||
updated_at: '2022-07-12 15:18:43.900938'
|
||||
availability_id: 4
|
||||
|
||||
slot_21:
|
||||
id: 21
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({:hour => 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.904013'
|
||||
updated_at: '2022-07-12 15:18:43.904013'
|
||||
availability_id: 5
|
||||
|
||||
slot_22:
|
||||
id: 22
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({:hour => 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({:hour => 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.905470'
|
||||
updated_at: '2022-07-12 15:18:43.905470'
|
||||
availability_id: 5
|
||||
|
||||
slot_23:
|
||||
id: 23
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({:hour => 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({:hour => 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.907030'
|
||||
updated_at: '2022-07-12 15:18:43.907030'
|
||||
availability_id: 5
|
||||
|
||||
slot_24:
|
||||
id: 24
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({:hour => 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({:hour => 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.908585'
|
||||
updated_at: '2022-07-12 15:18:43.908585'
|
||||
availability_id: 5
|
||||
|
||||
slot_25:
|
||||
id: 25
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({:hour => 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({:hour => 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.910138'
|
||||
updated_at: '2022-07-12 15:18:43.910138'
|
||||
availability_id: 5
|
||||
|
||||
slot_26:
|
||||
id: 26
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({:hour => 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.911643'
|
||||
updated_at: '2022-07-12 15:18:43.911643'
|
||||
availability_id: 5
|
||||
|
||||
slot_27:
|
||||
id: 27
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.914664'
|
||||
updated_at: '2022-07-12 15:18:43.914664'
|
||||
availability_id: 6
|
||||
|
||||
slot_28:
|
||||
id: 28
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.916047'
|
||||
updated_at: '2022-07-12 15:18:43.916047'
|
||||
availability_id: 6
|
||||
|
||||
slot_29:
|
||||
id: 29
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.917304'
|
||||
updated_at: '2022-07-12 15:18:43.917304'
|
||||
availability_id: 6
|
||||
|
||||
slot_30:
|
||||
id: 30
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.918798'
|
||||
updated_at: '2022-07-12 15:18:43.918798'
|
||||
availability_id: 6
|
||||
|
||||
slot_31:
|
||||
id: 31
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.920194'
|
||||
updated_at: '2022-07-12 15:18:43.920194'
|
||||
availability_id: 6
|
||||
|
||||
slot_32:
|
||||
id: 32
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.921662'
|
||||
updated_at: '2022-07-12 15:18:43.921662'
|
||||
availability_id: 6
|
||||
|
||||
slot_33:
|
||||
id: 33
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.924285'
|
||||
updated_at: '2022-07-12 15:18:43.924285'
|
||||
availability_id: 7
|
||||
|
||||
slot_34:
|
||||
id: 34
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.925669'
|
||||
updated_at: '2022-07-12 15:18:43.925669'
|
||||
availability_id: 7
|
||||
|
||||
slot_35:
|
||||
id: 35
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.927038'
|
||||
updated_at: '2022-07-12 15:18:43.927038'
|
||||
availability_id: 7
|
||||
|
||||
slot_36:
|
||||
id: 36
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.928407'
|
||||
updated_at: '2022-07-12 15:18:43.928407'
|
||||
availability_id: 7
|
||||
|
||||
slot_37:
|
||||
id: 37
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.929907'
|
||||
updated_at: '2022-07-12 15:18:43.929907'
|
||||
availability_id: 7
|
||||
|
||||
slot_38:
|
||||
id: 38
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 3.day).utc.change({:hour => 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 3.day).utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.931295'
|
||||
updated_at: '2022-07-12 15:18:43.931295'
|
||||
availability_id: 7
|
||||
@ -297,680 +297,240 @@ slot_43:
|
||||
|
||||
slot_44:
|
||||
id: 44
|
||||
start_at: <%= 20.days.from_now.utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 20.days.from_now.utc.change({hour: 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 20.days.from_now.utc.change({:hour => 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 20.days.from_now.utc.change({:hour => 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.942392'
|
||||
updated_at: '2022-07-12 15:18:43.942392'
|
||||
availability_id: 14
|
||||
|
||||
slot_45:
|
||||
id: 45
|
||||
start_at: <%= 20.days.from_now.utc.change({hour: 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 20.days.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 20.days.from_now.utc.change({:hour => 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 20.days.from_now.utc.change({:hour => 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.943779'
|
||||
updated_at: '2022-07-12 15:18:43.943779'
|
||||
availability_id: 14
|
||||
|
||||
slot_46:
|
||||
id: 46
|
||||
start_at: <%= 20.days.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 20.days.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 20.days.from_now.utc.change({:hour => 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 20.days.from_now.utc.change({:hour => 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.945154'
|
||||
updated_at: '2022-07-12 15:18:43.945154'
|
||||
availability_id: 14
|
||||
|
||||
slot_47:
|
||||
id: 47
|
||||
start_at: <%= 20.days.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 20.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 20.days.from_now.utc.change({:hour => 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 20.days.from_now.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.946515'
|
||||
updated_at: '2022-07-12 15:18:43.946515'
|
||||
availability_id: 14
|
||||
|
||||
slot_48:
|
||||
id: 48
|
||||
start_at: <%= 40.days.from_now.utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 40.days.from_now.utc.change({hour: 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 40.days.from_now.utc.change({:hour => 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 40.days.from_now.utc.change({:hour => 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.949178'
|
||||
updated_at: '2022-07-12 15:18:43.949178'
|
||||
availability_id: 15
|
||||
|
||||
slot_49:
|
||||
id: 49
|
||||
start_at: <%= 40.days.from_now.utc.change({hour: 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 40.days.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 40.days.from_now.utc.change({:hour => 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 40.days.from_now.utc.change({:hour => 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.950348'
|
||||
updated_at: '2022-07-12 15:18:43.950348'
|
||||
availability_id: 15
|
||||
|
||||
slot_50:
|
||||
id: 50
|
||||
start_at: <%= 40.days.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 40.days.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 40.days.from_now.utc.change({:hour => 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 40.days.from_now.utc.change({:hour => 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.951535'
|
||||
updated_at: '2022-07-12 15:18:43.951535'
|
||||
availability_id: 15
|
||||
|
||||
slot_51:
|
||||
id: 51
|
||||
start_at: <%= 40.days.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 40.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 40.days.from_now.utc.change({:hour => 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 40.days.from_now.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.952864'
|
||||
updated_at: '2022-07-12 15:18:43.952864'
|
||||
availability_id: 15
|
||||
|
||||
slot_52:
|
||||
id: 52
|
||||
start_at: <%= 80.days.from_now.utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 80.days.from_now.utc.change({hour: 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 80.days.from_now.utc.change({:hour => 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 80.days.from_now.utc.change({:hour => 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.955443'
|
||||
updated_at: '2022-07-12 15:18:43.955443'
|
||||
availability_id: 16
|
||||
|
||||
slot_53:
|
||||
id: 53
|
||||
start_at: <%= 80.days.from_now.utc.change({hour: 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 80.days.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 80.days.from_now.utc.change({:hour => 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 80.days.from_now.utc.change({:hour => 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.956657'
|
||||
updated_at: '2022-07-12 15:18:43.956657'
|
||||
availability_id: 16
|
||||
|
||||
slot_54:
|
||||
id: 54
|
||||
start_at: <%= 80.days.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 80.days.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 80.days.from_now.utc.change({:hour => 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 80.days.from_now.utc.change({:hour => 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.957811'
|
||||
updated_at: '2022-07-12 15:18:43.957811'
|
||||
availability_id: 16
|
||||
|
||||
slot_55:
|
||||
id: 55
|
||||
start_at: <%= 80.days.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 80.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 80.days.from_now.utc.change({:hour => 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 80.days.from_now.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.959063'
|
||||
updated_at: '2022-07-12 15:18:43.959063'
|
||||
availability_id: 16
|
||||
|
||||
slot_56:
|
||||
id: 56
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 10.days.from_now.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.961319'
|
||||
updated_at: '2022-07-12 15:18:43.961319'
|
||||
availability_id: 17
|
||||
|
||||
slot_57:
|
||||
id: 57
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.962492'
|
||||
updated_at: '2022-07-12 15:18:43.962492'
|
||||
availability_id: 17
|
||||
|
||||
slot_58:
|
||||
id: 58
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.963665'
|
||||
updated_at: '2022-07-12 15:18:43.963665'
|
||||
availability_id: 17
|
||||
|
||||
slot_59:
|
||||
id: 59
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.964853'
|
||||
updated_at: '2022-07-12 15:18:43.964853'
|
||||
availability_id: 17
|
||||
|
||||
slot_60:
|
||||
id: 60
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.966003'
|
||||
updated_at: '2022-07-12 15:18:43.966003'
|
||||
availability_id: 17
|
||||
|
||||
slot_61:
|
||||
id: 61
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.967147'
|
||||
updated_at: '2022-07-12 15:18:43.967147'
|
||||
availability_id: 17
|
||||
|
||||
slot_62:
|
||||
id: 62
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.968371'
|
||||
updated_at: '2022-07-12 15:18:43.968371'
|
||||
availability_id: 17
|
||||
|
||||
slot_63:
|
||||
id: 63
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.969636'
|
||||
updated_at: '2022-07-12 15:18:43.969636'
|
||||
availability_id: 17
|
||||
|
||||
slot_64:
|
||||
id: 64
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 19}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.970899'
|
||||
updated_at: '2022-07-12 15:18:43.970899'
|
||||
availability_id: 17
|
||||
|
||||
slot_65:
|
||||
id: 65
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 19}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 20}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.972292'
|
||||
updated_at: '2022-07-12 15:18:43.972292'
|
||||
availability_id: 17
|
||||
|
||||
slot_66:
|
||||
id: 66
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 20}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 21}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.973726'
|
||||
updated_at: '2022-07-12 15:18:43.973726'
|
||||
availability_id: 17
|
||||
|
||||
slot_67:
|
||||
id: 67
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 21}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 22}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.975239'
|
||||
updated_at: '2022-07-12 15:18:43.975239'
|
||||
availability_id: 17
|
||||
|
||||
slot_68:
|
||||
id: 68
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 22}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.from_now.utc.change({hour: 23}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.976671'
|
||||
updated_at: '2022-07-12 15:18:43.976671'
|
||||
availability_id: 17
|
||||
|
||||
slot_69:
|
||||
id: 69
|
||||
start_at: <%= 10.days.from_now.utc.change({hour: 23}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 0}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.978191'
|
||||
updated_at: '2022-07-12 15:18:43.978191'
|
||||
availability_id: 17
|
||||
|
||||
slot_70:
|
||||
id: 70
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 0}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 1}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.979560'
|
||||
updated_at: '2022-07-12 15:18:43.979560'
|
||||
availability_id: 17
|
||||
|
||||
slot_71:
|
||||
id: 71
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 1}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 2}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.980799'
|
||||
updated_at: '2022-07-12 15:18:43.980799'
|
||||
availability_id: 17
|
||||
|
||||
slot_72:
|
||||
id: 72
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 2}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 3}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.982141'
|
||||
updated_at: '2022-07-12 15:18:43.982141'
|
||||
availability_id: 17
|
||||
|
||||
slot_73:
|
||||
id: 73
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 3}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 4}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.983501'
|
||||
updated_at: '2022-07-12 15:18:43.983501'
|
||||
availability_id: 17
|
||||
|
||||
slot_74:
|
||||
id: 74
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 4}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 5}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.984866'
|
||||
updated_at: '2022-07-12 15:18:43.984866'
|
||||
availability_id: 17
|
||||
|
||||
slot_75:
|
||||
id: 75
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 5}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.986257'
|
||||
updated_at: '2022-07-12 15:18:43.986257'
|
||||
availability_id: 17
|
||||
|
||||
slot_76:
|
||||
id: 76
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.987589'
|
||||
updated_at: '2022-07-12 15:18:43.987589'
|
||||
availability_id: 17
|
||||
|
||||
slot_77:
|
||||
id: 77
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.988913'
|
||||
updated_at: '2022-07-12 15:18:43.988913'
|
||||
availability_id: 17
|
||||
|
||||
slot_78:
|
||||
id: 78
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.990191'
|
||||
updated_at: '2022-07-12 15:18:43.990191'
|
||||
availability_id: 17
|
||||
|
||||
slot_79:
|
||||
id: 79
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.991488'
|
||||
updated_at: '2022-07-12 15:18:43.991488'
|
||||
availability_id: 17
|
||||
|
||||
slot_80:
|
||||
id: 80
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.992988'
|
||||
updated_at: '2022-07-12 15:18:43.992988'
|
||||
availability_id: 17
|
||||
|
||||
slot_81:
|
||||
id: 81
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.994311'
|
||||
updated_at: '2022-07-12 15:18:43.994311'
|
||||
availability_id: 17
|
||||
|
||||
slot_82:
|
||||
id: 82
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.995812'
|
||||
updated_at: '2022-07-12 15:18:43.995812'
|
||||
availability_id: 17
|
||||
|
||||
slot_83:
|
||||
id: 83
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.997242'
|
||||
updated_at: '2022-07-12 15:18:43.997242'
|
||||
availability_id: 17
|
||||
|
||||
slot_84:
|
||||
id: 84
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:43.998733'
|
||||
updated_at: '2022-07-12 15:18:43.998733'
|
||||
availability_id: 17
|
||||
|
||||
slot_85:
|
||||
id: 85
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.000009'
|
||||
updated_at: '2022-07-12 15:18:44.000009'
|
||||
availability_id: 17
|
||||
|
||||
slot_86:
|
||||
id: 86
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.001315'
|
||||
updated_at: '2022-07-12 15:18:44.001315'
|
||||
availability_id: 17
|
||||
|
||||
slot_87:
|
||||
id: 87
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.002961'
|
||||
updated_at: '2022-07-12 15:18:44.002961'
|
||||
availability_id: 17
|
||||
|
||||
slot_88:
|
||||
id: 88
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 19}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.004321'
|
||||
updated_at: '2022-07-12 15:18:44.004321'
|
||||
availability_id: 17
|
||||
|
||||
slot_89:
|
||||
id: 89
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 19}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 20}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.005828'
|
||||
updated_at: '2022-07-12 15:18:44.005828'
|
||||
availability_id: 17
|
||||
|
||||
slot_90:
|
||||
id: 90
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 20}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 21}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.007295'
|
||||
updated_at: '2022-07-12 15:18:44.007295'
|
||||
availability_id: 17
|
||||
|
||||
slot_91:
|
||||
id: 91
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 21}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 22}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.008631'
|
||||
updated_at: '2022-07-12 15:18:44.008631'
|
||||
availability_id: 17
|
||||
|
||||
slot_92:
|
||||
id: 92
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 22}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 11.days.from_now.utc.change({hour: 23}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.010249'
|
||||
updated_at: '2022-07-12 15:18:44.010249'
|
||||
availability_id: 17
|
||||
|
||||
slot_93:
|
||||
id: 93
|
||||
start_at: <%= 11.days.from_now.utc.change({hour: 23}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 0}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.011771'
|
||||
updated_at: '2022-07-12 15:18:44.011771'
|
||||
availability_id: 17
|
||||
|
||||
slot_94:
|
||||
id: 94
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 0}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 1}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.013133'
|
||||
updated_at: '2022-07-12 15:18:44.013133'
|
||||
availability_id: 17
|
||||
|
||||
slot_95:
|
||||
id: 95
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 1}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 2}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.014419'
|
||||
updated_at: '2022-07-12 15:18:44.014419'
|
||||
availability_id: 17
|
||||
|
||||
slot_96:
|
||||
id: 96
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 2}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 3}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.015693'
|
||||
updated_at: '2022-07-12 15:18:44.015693'
|
||||
availability_id: 17
|
||||
|
||||
slot_97:
|
||||
id: 97
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 3}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 4}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.016849'
|
||||
updated_at: '2022-07-12 15:18:44.016849'
|
||||
availability_id: 17
|
||||
|
||||
slot_98:
|
||||
id: 98
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 4}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 5}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.018072'
|
||||
updated_at: '2022-07-12 15:18:44.018072'
|
||||
availability_id: 17
|
||||
|
||||
slot_99:
|
||||
id: 99
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 5}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.019364'
|
||||
updated_at: '2022-07-12 15:18:44.019364'
|
||||
availability_id: 17
|
||||
|
||||
slot_100:
|
||||
id: 100
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.020527'
|
||||
updated_at: '2022-07-12 15:18:44.020527'
|
||||
availability_id: 17
|
||||
|
||||
slot_101:
|
||||
id: 101
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 7}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>'
|
||||
created_at: '2022-07-12 15:18:44.021871'
|
||||
updated_at: '2022-07-12 15:18:44.021871'
|
||||
availability_id: 17
|
||||
|
||||
slot_102:
|
||||
id: 102
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.023185'
|
||||
updated_at: '2022-07-12 15:18:44.023185'
|
||||
availability_id: 17
|
||||
|
||||
slot_103:
|
||||
id: 103
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.024405'
|
||||
updated_at: '2022-07-12 15:18:44.024405'
|
||||
availability_id: 17
|
||||
|
||||
slot_104:
|
||||
id: 104
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.025867'
|
||||
updated_at: '2022-07-12 15:18:44.025867'
|
||||
availability_id: 17
|
||||
|
||||
slot_105:
|
||||
id: 105
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.027282'
|
||||
updated_at: '2022-07-12 15:18:44.027282'
|
||||
availability_id: 17
|
||||
|
||||
slot_106:
|
||||
id: 106
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.028605'
|
||||
updated_at: '2022-07-12 15:18:44.028605'
|
||||
availability_id: 17
|
||||
|
||||
slot_107:
|
||||
id: 107
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.029949'
|
||||
updated_at: '2022-07-12 15:18:44.029949'
|
||||
availability_id: 17
|
||||
|
||||
slot_108:
|
||||
id: 108
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.031298'
|
||||
updated_at: '2022-07-12 15:18:44.031298'
|
||||
availability_id: 17
|
||||
|
||||
slot_109:
|
||||
id: 109
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.032602'
|
||||
updated_at: '2022-07-12 15:18:44.032602'
|
||||
availability_id: 17
|
||||
|
||||
slot_110:
|
||||
id: 110
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.034111'
|
||||
updated_at: '2022-07-12 15:18:44.034111'
|
||||
availability_id: 17
|
||||
|
||||
slot_111:
|
||||
id: 111
|
||||
start_at: <%= 12.days.from_now.utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 12.days.from_now.utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.035567'
|
||||
updated_at: '2022-07-12 15:18:44.035567'
|
||||
availability_id: 17
|
||||
|
||||
slot_112:
|
||||
id: 112
|
||||
start_at: <%= 2.days.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 2.days.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 2.days.from_now.utc.change({:hour => 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 2.days.from_now.utc.change({:hour => 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.038089'
|
||||
updated_at: '2022-07-12 15:18:44.038089'
|
||||
availability_id: 18
|
||||
|
||||
slot_113:
|
||||
id: 113
|
||||
start_at: <%= 2.days.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 2.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 2.days.from_now.utc.change({:hour => 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 2.days.from_now.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.039392'
|
||||
updated_at: '2022-07-12 15:18:44.039392'
|
||||
availability_id: 18
|
||||
|
||||
slot_114:
|
||||
id: 114
|
||||
start_at: <%= 2.days.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 2.days.from_now.utc.change({hour: 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 2.days.from_now.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 2.days.from_now.utc.change({:hour => 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.040522'
|
||||
updated_at: '2022-07-12 15:18:44.040522'
|
||||
availability_id: 18
|
||||
|
||||
slot_115:
|
||||
id: 115
|
||||
start_at: <%= 2.days.from_now.utc.change({hour: 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 2.days.from_now.utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 2.days.from_now.utc.change({:hour => 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 2.days.from_now.utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.041937'
|
||||
updated_at: '2022-07-12 15:18:44.041937'
|
||||
availability_id: 18
|
||||
|
||||
slot_116:
|
||||
id: 116
|
||||
start_at: <%= 1.day.from_now.utc.change({hour: 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 1.day.from_now.utc.change({:hour => 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({:hour => 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.044421'
|
||||
updated_at: '2022-07-12 15:18:44.044421'
|
||||
availability_id: 19
|
||||
|
||||
slot_117:
|
||||
id: 117
|
||||
start_at: <%= 1.day.from_now.utc.change({hour: 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 1.day.from_now.utc.change({:hour => 9}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.045689'
|
||||
updated_at: '2022-07-12 15:18:44.045689'
|
||||
availability_id: 19
|
||||
|
||||
slot_118:
|
||||
id: 118
|
||||
start_at: <%= 1.day.from_now.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({hour: 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 1.day.from_now.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({:hour => 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.047009'
|
||||
updated_at: '2022-07-12 15:18:44.047009'
|
||||
availability_id: 19
|
||||
|
||||
slot_119:
|
||||
id: 119
|
||||
start_at: <%= 1.day.from_now.utc.change({hour: 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 1.day.from_now.utc.change({:hour => 11}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.048272'
|
||||
updated_at: '2022-07-12 15:18:44.048272'
|
||||
availability_id: 19
|
||||
|
||||
slot_120:
|
||||
id: 120
|
||||
start_at: <%= 1.day.from_now.utc.change({hour: 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 1.day.from_now.utc.change({:hour => 12}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({:hour => 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.049599'
|
||||
updated_at: '2022-07-12 15:18:44.049599'
|
||||
availability_id: 19
|
||||
|
||||
slot_121:
|
||||
id: 121
|
||||
start_at: <%= 1.day.from_now.utc.change({hour: 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 1.day.from_now.utc.change({:hour => 13}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({:hour => 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.050947'
|
||||
updated_at: '2022-07-12 15:18:44.050947'
|
||||
availability_id: 19
|
||||
|
||||
slot_122:
|
||||
id: 122
|
||||
start_at: <%= 1.day.from_now.utc.change({hour: 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 1.day.from_now.utc.change({:hour => 14}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({:hour => 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.052817'
|
||||
updated_at: '2022-07-12 15:18:44.052817'
|
||||
availability_id: 19
|
||||
|
||||
slot_123:
|
||||
id: 123
|
||||
start_at: <%= 1.day.from_now.utc.change({hour: 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 1.day.from_now.utc.change({:hour => 15}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({:hour => 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.054966'
|
||||
updated_at: '2022-07-12 15:18:44.054966'
|
||||
availability_id: 19
|
||||
|
||||
slot_124:
|
||||
id: 124
|
||||
start_at: <%= 1.day.from_now.utc.change({hour: 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 1.day.from_now.utc.change({:hour => 16}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({:hour => 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.057217'
|
||||
updated_at: '2022-07-12 15:18:44.057217'
|
||||
availability_id: 19
|
||||
|
||||
slot_125:
|
||||
id: 125
|
||||
start_at: <%= 1.day.from_now.utc.change({hour: 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({hour: 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= 1.day.from_now.utc.change({:hour => 17}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 1.day.from_now.utc.change({:hour => 18}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.059135'
|
||||
updated_at: '2022-07-12 15:18:44.059135'
|
||||
availability_id: 19
|
||||
|
||||
slot_126:
|
||||
id: 126
|
||||
start_at: <%= DateTime.current.utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= DateTime.current.utc.change({:hour => 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= DateTime.current.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.061887'
|
||||
updated_at: '2022-07-12 15:18:44.061887'
|
||||
availability_id: 1
|
||||
|
||||
slot_127:
|
||||
id: 127
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 1.day).utc.change({:hour => 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 1.day).utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.063528'
|
||||
updated_at: '2022-07-12 15:18:44.063528'
|
||||
availability_id: 2
|
||||
|
||||
slot_128:
|
||||
id: 128
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({hour: 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({hour: 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
start_at: <%= (DateTime.current + 2.day).utc.change({:hour => 6}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= (DateTime.current + 2.day).utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-12 15:18:44.065114'
|
||||
updated_at: '2022-07-12 15:18:44.065114'
|
||||
availability_id: 8
|
||||
@ -998,3 +558,11 @@ slot_131:
|
||||
created_at: '2022-07-12 15:18:44.069870'
|
||||
updated_at: '2022-07-12 15:18:44.069870'
|
||||
availability_id: 11
|
||||
|
||||
slot_132:
|
||||
id: 132
|
||||
start_at: <%= 10.days.ago.utc.change({:hour => 8}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
end_at: <%= 10.days.ago.utc.change({:hour => 10}).strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
created_at: '2022-07-18 12:38:21.616510'
|
||||
updated_at: '2022-07-18 12:38:21.616510'
|
||||
availability_id: 20
|
||||
|
7
test/fixtures/statistic_profiles.yml
vendored
7
test/fixtures/statistic_profiles.yml
vendored
@ -60,3 +60,10 @@ proudhon:
|
||||
gender: true
|
||||
birthday: 1809-01-15
|
||||
group_id: 1
|
||||
|
||||
acamus:
|
||||
id: 10
|
||||
user_id: 10
|
||||
gender: true
|
||||
birthday: 1913-11-07
|
||||
group_id: 1
|
||||
|
9
test/fixtures/subscriptions.yml
vendored
9
test/fixtures/subscriptions.yml
vendored
@ -45,3 +45,12 @@ subscription_5:
|
||||
updated_at: 2021-06-14 12:24:45.836045000 Z
|
||||
expiration_date: 2022-06-14 12:24:45.836045000 Z
|
||||
canceled_at:
|
||||
|
||||
subscription_6:
|
||||
id: 6
|
||||
plan_id: 4
|
||||
statistic_profile_id: 10
|
||||
created_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
updated_at: <%= 9.months.ago.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
expiration_date: <%= 3.months.from_now.utc.strftime('%Y-%m-%d %H:%M:%S.%9N Z') %>
|
||||
canceled_at:
|
||||
|
7
test/fixtures/trainings_availabilities.yml
vendored
7
test/fixtures/trainings_availabilities.yml
vendored
@ -26,3 +26,10 @@ trainings_availability_4:
|
||||
availability_id: 12
|
||||
created_at: 2020-07-22 10:09:41.841162000 Z
|
||||
updated_at: 2020-07-22 10:09:41.841162000 Z
|
||||
|
||||
trainings_availability_5:
|
||||
id: 5
|
||||
training_id: 2
|
||||
availability_id: 20
|
||||
created_at: 2020-07-22 10:09:41.841162000 Z
|
||||
updated_at: 2020-07-22 10:09:41.841162000 Z
|
||||
|
32
test/fixtures/users.yml
vendored
32
test/fixtures/users.yml
vendored
@ -285,3 +285,35 @@ user_9:
|
||||
auth_token:
|
||||
merged_at:
|
||||
is_allow_newsletter: true
|
||||
|
||||
user_10:
|
||||
id: 10
|
||||
username: acamus
|
||||
email: albert.camus@letranger.org
|
||||
encrypted_password: $2a$10$r85b9a2/BZvQsZRPVyhT2uuLnoLpUZ.ch8qca63yvuCn6kC4I2Jam
|
||||
reset_password_token:
|
||||
reset_password_sent_at:
|
||||
remember_created_at:
|
||||
sign_in_count: 10
|
||||
current_sign_in_at: 1960-01-01 11:04:02.566161
|
||||
last_sign_in_at: 1960-01-01 11:04:02.566161
|
||||
current_sign_in_ip: 177.92.140.29
|
||||
last_sign_in_ip: 177.92.140.29
|
||||
confirmation_token:
|
||||
confirmed_at: 1931-11-08 14:29:01.441270
|
||||
confirmation_sent_at: 1931-11-07 07:01:51.498120
|
||||
unconfirmed_email:
|
||||
failed_attempts: 0
|
||||
unlock_token:
|
||||
locked_at:
|
||||
created_at: 1913-11-07 07:01:51.498120
|
||||
updated_at: 1960-01-04 17:05:09.219841
|
||||
is_allow_contact: true
|
||||
group_id: 1
|
||||
slug: acamus
|
||||
is_active: true
|
||||
provider:
|
||||
uid:
|
||||
auth_token:
|
||||
merged_at:
|
||||
is_allow_newsletter: true
|
||||
|
4
test/fixtures/wallets.yml
vendored
4
test/fixtures/wallets.yml
vendored
@ -33,3 +33,7 @@ wallet_8:
|
||||
wallet_9:
|
||||
invoicing_profile_id: 9
|
||||
amount: 0
|
||||
|
||||
wallet_10:
|
||||
invoicing_profile_id: 10
|
||||
amount: 0
|
||||
|
@ -67,8 +67,8 @@ class Availabilities::AsPublicTest < ActionDispatch::IntegrationTest
|
||||
end
|
||||
|
||||
test 'get public events availabilities' do
|
||||
start_date = DateTime.parse('2016-04-18').to_date
|
||||
end_date = DateTime.parse('2016-04-24').to_date
|
||||
start_date = 8.days.from_now.to_date
|
||||
end_date = 16.days.from_now.to_date
|
||||
|
||||
get "/api/availabilities/public?start=#{start_date.to_s}&end=#{end_date.to_s}&timezone=Europe%2FParis&evt=true"
|
||||
|
||||
@ -100,4 +100,4 @@ class Availabilities::AsPublicTest < ActionDispatch::IntegrationTest
|
||||
def all_spaces
|
||||
Space.all.map { |m| "s%5B%5D=#{m.id}" }.join('&')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,5 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'test_helper'
|
||||
|
||||
class Availabilities::AsUserTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
user = User.find_by(username: 'kdumas')
|
||||
|
@ -229,7 +229,7 @@ class Reservations::CreateAsAdminTest < ActionDispatch::IntegrationTest
|
||||
reservation: {
|
||||
reservable_id: machine.id,
|
||||
reservable_type: machine.class.name,
|
||||
sslots_reservations_attributes: [
|
||||
slots_reservations_attributes: [
|
||||
{
|
||||
slot_id: availability.slots.first.id
|
||||
}
|
||||
|
94
test/services/availabilities_service_test.rb
Normal file
94
test/services/availabilities_service_test.rb
Normal file
@ -0,0 +1,94 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'test_helper'
|
||||
|
||||
# Test the service returning the availabilities for the given resources
|
||||
class AvailabilitiesServiceTest < ActiveSupport::TestCase
|
||||
setup do
|
||||
@no_subscription = User.find_by(username: 'jdupond')
|
||||
@with_subscription = User.find_by(username: 'kdumas')
|
||||
@with_1y_subscription = User.find_by(username: 'acamus')
|
||||
@admin = User.find_by(username: 'admin')
|
||||
end
|
||||
|
||||
test 'no machines availabilities during given window' do
|
||||
service = Availabilities::AvailabilitiesService.new(@no_subscription)
|
||||
slots = service.machines(Machine.find(3), @no_subscription, { start: DateTime.current.beginning_of_day, end: 1.day.from_now.end_of_day })
|
||||
|
||||
assert_empty slots
|
||||
end
|
||||
|
||||
test 'no machines availabilities for user tags' do
|
||||
service = Availabilities::AvailabilitiesService.new(@no_subscription)
|
||||
slots = service.machines(Machine.find(3), @no_subscription, { start: 2.days.from_now.beginning_of_day, end: 4.days.from_now.end_of_day })
|
||||
|
||||
assert_empty slots
|
||||
end
|
||||
|
||||
test 'no past availabilities for members' do
|
||||
service = Availabilities::AvailabilitiesService.new(@no_subscription)
|
||||
slots = service.machines(Machine.find(2), @no_subscription, { start: DateTime.parse('2015-06-15').beginning_of_day, end: DateTime.parse('2015-06-15').end_of_day })
|
||||
|
||||
assert_empty slots
|
||||
end
|
||||
|
||||
test 'admin cannot see past availabilities further than 1 month' do
|
||||
service = Availabilities::AvailabilitiesService.new(@admin)
|
||||
slots = service.machines(Machine.find(2), @no_subscription, { start: DateTime.parse('2015-06-15').beginning_of_day, end: DateTime.parse('2015-06-15').end_of_day })
|
||||
|
||||
assert_empty slots
|
||||
end
|
||||
|
||||
test 'admin can see past availabilities in 1 month ago' do
|
||||
service = Availabilities::AvailabilitiesService.new(@admin)
|
||||
slots = service.trainings([Training.find(2)], @no_subscription, { start: 1.month.ago.beginning_of_day, end: 1.day.ago.end_of_day })
|
||||
|
||||
assert_not_empty slots
|
||||
assert_equal Availability.find(20).slots.count, slots.count
|
||||
assert_equal Availability.find(20).start_at, slots.first.start_at
|
||||
assert_equal Availability.find(20).end_at, slots.first.end_at
|
||||
end
|
||||
|
||||
test 'machines availabilities' do
|
||||
service = Availabilities::AvailabilitiesService.new(@no_subscription)
|
||||
slots = service.machines(Machine.find(1), @no_subscription, { start: 2.days.from_now.beginning_of_day, end: 4.days.from_now.end_of_day })
|
||||
|
||||
assert_not_empty slots
|
||||
assert_equal Availability.find(7).slots.count, slots.count
|
||||
assert_equal Availability.find(7).start_at, slots.first.start_at
|
||||
assert_equal Availability.find(7).end_at, slots.last.end_at
|
||||
end
|
||||
|
||||
test 'spaces availabilities' do
|
||||
service = Availabilities::AvailabilitiesService.new(@no_subscription)
|
||||
slots = service.spaces(Space.find(1), @no_subscription, { start: 2.days.from_now.beginning_of_day, end: 4.days.from_now.end_of_day })
|
||||
|
||||
assert_not_empty slots
|
||||
assert_equal Availability.find(18).slots.count, slots.count
|
||||
assert_equal Availability.find(18).start_at, slots.first.start_at
|
||||
assert_equal Availability.find(18).end_at, slots.last.end_at
|
||||
end
|
||||
|
||||
test 'trainings availabilities' do
|
||||
service = Availabilities::AvailabilitiesService.new(@no_subscription)
|
||||
trainings = [Training.find(1), Training.find(2)]
|
||||
slots = service.trainings(trainings, @no_subscription, { start: DateTime.current.beginning_of_day, end: 2.days.from_now.end_of_day })
|
||||
|
||||
assert_not_empty slots
|
||||
if DateTime.current.hour > 10
|
||||
assert_equal Availability.find(2).slots.count, slots.count
|
||||
else
|
||||
assert_equal Availability.find(1).slots.count + Availability.find(2).slots.count, slots.count
|
||||
end
|
||||
end
|
||||
|
||||
test 'events availability' do
|
||||
service = Availabilities::AvailabilitiesService.new(@no_subscription)
|
||||
slots = service.events([Event.find(4)], @no_subscription, { start: DateTime.current.beginning_of_day, end: 30.days.from_now.end_of_day })
|
||||
|
||||
assert_not_empty slots
|
||||
assert_equal Availability.find(17).slots.count, slots.count
|
||||
assert_equal Availability.find(17).start_at, slots.first.start_at
|
||||
assert_equal Availability.find(17).end_at, slots.first.end_at
|
||||
end
|
||||
end
|
@ -14,15 +14,18 @@ class SubscriptionExtensionAfterReservationTest < ActiveSupport::TestCase
|
||||
|
||||
@user.reservations.destroy_all # ensure no reservations
|
||||
|
||||
@slot_reservation_machine = SlotsReservation.new({ slot_id: @machine.availabilities.first.slots.first.id })
|
||||
@slot_reservation_training = SlotsReservation.new({ slot_id: @training.availabilities.first.slots.first.id })
|
||||
|
||||
@reservation_machine = Reservation.new(
|
||||
statistic_profile: @user.statistic_profile,
|
||||
reservable: @machine,
|
||||
slots_reservations: [{ slot_id: @machine.availabilities.first.slots.first.id }]
|
||||
slots_reservations: [@slot_reservation_machine]
|
||||
)
|
||||
@reservation_training = Reservation.new(
|
||||
statistic_profile: @user.statistic_profile,
|
||||
reservable: @training,
|
||||
slots_reservations: [{ slot_id: @training.availabilities.first.slots.first.id }]
|
||||
slots_reservations: [@slot_reservation_training]
|
||||
)
|
||||
@reservation_training.save!
|
||||
end
|
||||
@ -53,6 +56,6 @@ class SubscriptionExtensionAfterReservationTest < ActiveSupport::TestCase
|
||||
|
||||
test 'method extend_subscription' do
|
||||
SubscriptionExtensionAfterReservation.new(@reservation_training).extend_subscription
|
||||
assert_equal @reservation_training.slots.first.start_at + @plan.duration, @user.subscription.expired_at
|
||||
assert_equal @reservation_training.slots_reservations.first.slot.start_at + @plan.duration, @user.subscription.expired_at
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user