1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-19 13:54:25 +01:00

(bug) prevent same slot booking feature ignores canceled reservations

This commit is contained in:
Sylvain 2022-07-26 13:35:14 +02:00
parent b53644d3a5
commit f67c286497
3 changed files with 16 additions and 12 deletions

View File

@ -6,6 +6,7 @@
- Refactored and documented the availability-slot-reservation data model
- Display bookers names to connected users now apply to all resources
- Updated rails locales files
- Fix a bug: prevent same slot booking feature ignores canceled reservations
- Fix a bug: wrong currency on invoices files
- Fix a bug: unable to reserve if user's subscription plan is disabled
- Fix a bug: for admins and managers, the current password is not requested before changing their own password

View File

@ -460,11 +460,13 @@ Application.Directives.directive('cart', ['$rootScope', '$uibModal', 'dialogs',
*/
const validateSameTimeReservations = function (slot, callback) {
let sameTimeReservations = $scope.settings.overlapping_categories.split(',').map(function (k) {
return _.filter($scope.user[k], function (r) {
return slot.start.isSame(r.start_at) ||
(slot.end.isAfter(r.start_at) && slot.end.isBefore(r.end_at)) ||
(slot.start.isAfter(r.start_at) && slot.start.isBefore(r.end_at)) ||
(slot.start.isBefore(r.start_at) && slot.end.isAfter(r.end_at));
return _.filter($scope.user[k], function (sr) {
return !sr.canceled_at && (
slot.start.isSame(sr.start_at) ||
(slot.end.isAfter(sr.start_at) && slot.end.isBefore(sr.end_at)) ||
(slot.start.isAfter(sr.start_at) && slot.start.isBefore(sr.end_at)) ||
(slot.start.isBefore(sr.start_at) && slot.end.isAfter(sr.end_at))
);
});
});
sameTimeReservations = _.union.apply(null, sameTimeReservations);

View File

@ -70,19 +70,20 @@ json.all_projects @member.all_projects do |project|
end
end
end
json.events_reservations @member.reservations.where(reservable_type: 'Event').joins(:slots).order('slots.start_at asc') do |r|
json.id r.id
json.start_at r.slots.first.start_at
json.end_at r.slots.first.end_at
json.nb_reserve_places r.nb_reserve_places
json.tickets r.tickets do |t|
json.events_reservations @member.reservations.where(reservable_type: 'Event').joins(:slots).order('slots.start_at asc').map(&:slots_reservations).flatten do |sr|
json.id sr.id
json.start_at sr.slot.start_at
json.end_at sr.slot.end_at
json.nb_reserve_places sr.reservation.nb_reserve_places
json.tickets sr.reservation.tickets do |t|
json.booked t.booked
json.price_category do
json.name t.event_price_category.price_category.name
end
end
json.reservable r.reservable
json.reservable sr.reservation.reservable
json.reservable_type 'Event'
json.canceled_at sr.canceled_at
end
json.invoices @member.invoices.order('reference DESC') do |i|
json.id i.id