1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-21 15:54:22 +01:00

fixed availabilities controller

This commit is contained in:
Sylvain 2019-01-17 16:55:25 +01:00
parent 5a09453ac2
commit 65892684a8
3 changed files with 12 additions and 22 deletions

View File

@ -28,7 +28,7 @@ class API::AvailabilitiesController < API::ApiController
.where('slots.start_at >= ? AND slots.end_at <= ?', start_date, end_date) .where('slots.start_at >= ? AND slots.end_at <= ?', start_date, end_date)
machine_ids = params[:m] || [] machine_ids = params[:m] || []
service = PublicAvailabilitiesService.new(current_user) service = Availabilities::PublicAvailabilitiesService.new(current_user)
@availabilities = service.public_availabilities( @availabilities = service.public_availabilities(
start_date, start_date,
end_date, end_date,
@ -75,19 +75,19 @@ class API::AvailabilitiesController < API::ApiController
def machine def machine
@current_user_role = current_user.admin? ? 'admin' : 'user' @current_user_role = current_user.admin? ? 'admin' : 'user'
service = AvailabilitiesService(current_user, other: @visi_max_other, year: @visi_max_year) service = Availabilities::AvailabilitiesService.new(current_user, other: @visi_max_other, year: @visi_max_year)
@slots = service.machines(params[:machine_id], user) @slots = service.machines(params[:machine_id], user)
end end
def trainings def trainings
service = AvailabilitiesService(current_user, other: @visi_max_other, year: @visi_max_year) service = Availabilities::AvailabilitiesService.new(current_user, other: @visi_max_other, year: @visi_max_year)
@availabilities = service.trainings(params[:training_id], @user) @availabilities = service.trainings(params[:training_id], user)
end end
def spaces def spaces
@current_user_role = current_user.admin? ? 'admin' : 'user' @current_user_role = current_user.admin? ? 'admin' : 'user'
service = AvailabilitiesService(current_user, other: @visi_max_other, year: @visi_max_year) service = Availabilities::AvailabilitiesService.new(current_user, other: @visi_max_other, year: @visi_max_year)
@slots = service.spaces(params[:space_id], user) @slots = service.spaces(params[:space_id], user)
end end
@ -148,16 +148,6 @@ class API::AvailabilitiesController < API::ApiController
params.require(:lock) params.require(:lock)
end end
def reserved?(start_at, reservations)
is_reserved = false
reservations.each do |r|
r.slots.each do |s|
is_reserved = true if s.start_at == start_at
end
end
is_reserved
end
def filter_availabilites(availabilities) def filter_availabilites(availabilities)
availabilities_filtered = [] availabilities_filtered = []
availabilities.to_ary.each do |a| availabilities.to_ary.each do |a|
@ -191,7 +181,7 @@ class API::AvailabilitiesController < API::ApiController
end end
def remove_completed?(availability) def remove_completed?(availability)
params[:dispo] == 'false' && (availability.reserved? || (availability.try(:completed?) && availability.completed?)) params[:dispo] == 'false' && (availability.is_reserved || (availability.try(:completed?) && availability.completed?))
end end
def define_max_visibility def define_max_visibility

View File

@ -39,7 +39,7 @@ class Availabilities::AvailabilitiesService
def spaces(space_id, user) def spaces(space_id, user)
space = Space.friendly.find(space_id) space = Space.friendly.find(space_id)
reservations = reservations(space) reservations = reservations(space)
availabilities = availabilities(machine, 'machines', user) availabilities = availabilities(space, 'space', user)
slots = [] slots = []
availabilities.each do |a| availabilities.each do |a|
@ -72,11 +72,11 @@ class Availabilities::AvailabilitiesService
reservations = reservations.joins(:slots).where('slots.start_at > ?', Time.now) reservations = reservations.joins(:slots).where('slots.start_at > ?', Time.now)
# visible availabilities depends on multiple parameters # visible availabilities depends on multiple parameters
availabilities = training_availabilities(training_id, @user) availabilities = training_availabilities(training_id, user)
# finally, we merge the availabilities with the reservations # finally, we merge the availabilities with the reservations
availabilities.each do |a| availabilities.each do |a|
a.merge!(@service.training_event_reserved_status(a, reservations, user)) a = @service.training_event_reserved_status(a, reservations, user)
end end
end end
@ -117,7 +117,7 @@ class Availabilities::AvailabilitiesService
def training_availabilities(training_id, user) def training_availabilities(training_id, user)
availabilities = if training_id.is_number? || (training_id.length.positive? && training_id != 'all') availabilities = if training_id.is_number? || (training_id.length.positive? && training_id != 'all')
Training.friendly.find(params[:training_id]).availabilities Training.friendly.find(training_id).availabilities
else else
Availability.trainings Availability.trainings
end end

View File

@ -57,7 +57,7 @@ class Availabilities::PublicAvailabilitiesService
space: space, space: space,
title: space.name title: space.name
) )
slot = @service.space_reserved_status(slot, reservations, @current_user, @user_role) slot = @service.space_reserved_status(slot, reservations, @current_user)
slots << slot slots << slot
end end
end end
@ -88,7 +88,7 @@ class Availabilities::PublicAvailabilitiesService
.where(lock: false) .where(lock: false)
avails.each do |a| avails.each do |a|
if a.available_type == 'training' || a.available_type == 'event' if a.available_type == 'training' || a.available_type == 'event'
a.merge!(@service.training_event_reserved_status(a, reservations, user)) a = @service.training_event_reserved_status(a, reservations, @current_user)
elsif a.available_type == 'space' elsif a.available_type == 'space'
a.is_reserved = @service.reserved_availability?(a, @current_user) a.is_reserved = @service.reserved_availability?(a, @current_user)
end end