From 1aa9b2fe395648be3ddb2df270b092dfa4d5080c Mon Sep 17 00:00:00 2001 From: Guilherme Chaguri Date: Wed, 1 Mar 2023 17:44:01 -0300 Subject: [PATCH] Added reservation deadlines for each type of reservation --- app/frontend/src/javascript/models/setting.ts | 5 +++- app/frontend/src/javascript/router.js | 3 +- .../admin/settings/reservations.html | 28 +++++++++++++++++-- app/helpers/settings_helper.rb | 5 +++- app/models/cart_item/event_reservation.rb | 4 +++ app/models/cart_item/machine_reservation.rb | 4 +++ app/models/cart_item/reservation.rb | 8 +++++- app/models/cart_item/space_reservation.rb | 4 +++ app/models/cart_item/training_reservation.rb | 4 +++ .../availabilities/availabilities_service.rb | 19 +++++++++++-- config/locales/app.admin.en.yml | 5 +++- db/seeds/settings.rb | 10 ++++++- test/frontend/__fixtures__/settings.ts | 22 +++++++++++++-- .../reservations/last_minute_test.rb | 6 ++-- 14 files changed, 112 insertions(+), 15 deletions(-) diff --git a/app/frontend/src/javascript/models/setting.ts b/app/frontend/src/javascript/models/setting.ts index 6337466d2..27f84db14 100644 --- a/app/frontend/src/javascript/models/setting.ts +++ b/app/frontend/src/javascript/models/setting.ts @@ -81,7 +81,10 @@ export const bookingSettings = [ 'reminder_delay', 'visibility_yearly', 'visibility_others', - 'reservation_deadline', + 'machine_reservation_deadline', + 'training_reservation_deadline', + 'event_reservation_deadline', + 'space_reservation_deadline', 'display_name_enable', 'book_overlapping_slots', 'slot_duration', diff --git a/app/frontend/src/javascript/router.js b/app/frontend/src/javascript/router.js index d54da8537..f2186e456 100644 --- a/app/frontend/src/javascript/router.js +++ b/app/frontend/src/javascript/router.js @@ -1175,7 +1175,8 @@ angular.module('application.router', ['ui.router']) "'renew_pack_threshold', 'pack_only_for_subscription', 'overlapping_categories', 'public_registrations'," + "'extended_prices_in_same_day', 'recaptcha_site_key', 'recaptcha_secret_key', 'user_validation_required', " + "'user_validation_required_list', 'machines_module', 'user_change_group', 'show_username_in_admin_list', " + - "'store_module', 'reservation_deadline']" + "'store_module', 'machine_reservation_deadline', 'training_reservation_deadline', 'event_reservation_deadline', " + + "'space_reservation_deadline']" }).$promise; }], privacyDraftsPromise: ['Setting', function (Setting) { return Setting.get({ name: 'privacy_draft', history: true }).$promise; }], diff --git a/app/frontend/templates/admin/settings/reservations.html b/app/frontend/templates/admin/settings/reservations.html index 6f6469ba1..3307fedd9 100644 --- a/app/frontend/templates/admin/settings/reservations.html +++ b/app/frontend/templates/admin/settings/reservations.html @@ -108,9 +108,33 @@

{{ 'app.admin.settings.reservation_deadline' }}

{{ 'app.admin.settings.reservation_deadline_help' }}

- + + + + + + = ? AND available_type = ?', window_end, window_start, type) diff --git a/config/locales/app.admin.en.yml b/config/locales/app.admin.en.yml index c89977d48..c8d48c577 100644 --- a/config/locales/app.admin.en.yml +++ b/config/locales/app.admin.en.yml @@ -1578,7 +1578,10 @@ en: visibility_for_other_members: "For all other members" reservation_deadline: "Prevent last minute booking" reservation_deadline_help: "If you increase the prior period, members won't be able to book a slot X minutes before its start." - deadline_minutes: "Prior period (minutes)" + machine_deadline_minutes: "Machine prior period (minutes)" + training_deadline_minutes: "Training prior period (minutes)" + event_deadline_minutes: "Event prior period (minutes)" + space_deadline_minutes: "Space prior period (minutes)" ability_for_the_users_to_move_their_reservations: "Ability for the users to move their reservations" reservations_shifting: "Reservations shifting" prior_period_hours: "Prior period (hours)" diff --git a/db/seeds/settings.rb b/db/seeds/settings.rb index 87c5faba0..4df47c23c 100644 --- a/db/seeds/settings.rb +++ b/db/seeds/settings.rb @@ -418,7 +418,15 @@ Setting.set('visibility_yearly', 3) unless Setting.find_by(name: 'visibility_yea Setting.set('visibility_others', 1) unless Setting.find_by(name: 'visibility_others').try(:value) -Setting.set('reservation_deadline', 0) unless Setting.find_by(name: 'reservation_deadline').try(:value) +reservation_deadline = Setting.get('reservation_deadline') || 0 + +Setting.set('machine_reservation_deadline', reservation_deadline) unless Setting.find_by(name: 'machine_reservation_deadline').try(:value) + +Setting.set('training_reservation_deadline', reservation_deadline) unless Setting.find_by(name: 'training_reservation_deadline').try(:value) + +Setting.set('event_reservation_deadline', reservation_deadline) unless Setting.find_by(name: 'event_reservation_deadline').try(:value) + +Setting.set('space_reservation_deadline', reservation_deadline) unless Setting.find_by(name: 'space_reservation_deadline').try(:value) Setting.set('display_name_enable', false) unless Setting.find_by(name: 'display_name_enable').try(:value) diff --git a/test/frontend/__fixtures__/settings.ts b/test/frontend/__fixtures__/settings.ts index 430b439d2..9c45bb421 100644 --- a/test/frontend/__fixtures__/settings.ts +++ b/test/frontend/__fixtures__/settings.ts @@ -737,9 +737,27 @@ export const settings: Array = [ localized: 'éviter la génération de factures à 0' }, { - name: 'reservation_deadline', + name: 'machine_reservation_deadline', value: '0', - last_update: '2022-11-29T21:02:47-0300', + last_update: '2023-03-01T16:28:23-0300', + localized: "Empêcher la réservation avant qu'elle ne commence" + }, + { + name: 'training_reservation_deadline', + value: '0', + last_update: '2023-03-01T16:28:23-0300', + localized: "Empêcher la réservation avant qu'elle ne commence" + }, + { + name: 'event_reservation_deadline', + value: '0', + last_update: '2023-03-01T16:28:23-0300', + localized: "Empêcher la réservation avant qu'elle ne commence" + }, + { + name: 'space_reservation_deadline', + value: '0', + last_update: '2023-03-01T16:28:23-0300', localized: "Empêcher la réservation avant qu'elle ne commence" }, { diff --git a/test/integration/reservations/last_minute_test.rb b/test/integration/reservations/last_minute_test.rb index d0910ea37..88b366f75 100644 --- a/test/integration/reservations/last_minute_test.rb +++ b/test/integration/reservations/last_minute_test.rb @@ -13,7 +13,7 @@ class Reservations::LastMinuteTest < ActionDispatch::IntegrationTest end test 'user cannot reserve last minute booking' do - Setting.set('reservation_deadline', '120') + Setting.set('space_reservation_deadline', '120') login_as(@user, scope: :user) @@ -44,7 +44,7 @@ class Reservations::LastMinuteTest < ActionDispatch::IntegrationTest end test 'user can reserve last minute booking' do - Setting.set('reservation_deadline', '0') + Setting.set('space_reservation_deadline', '0') login_as(@user, scope: :user) @@ -85,7 +85,7 @@ class Reservations::LastMinuteTest < ActionDispatch::IntegrationTest end test 'admin can reserve last minute booking anyway' do - Setting.set('reservation_deadline', '120') + Setting.set('space_reservation_deadline', '120') login_as(@admin, scope: :user)