mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-02-19 13:54:25 +01:00
refactoring show training controller and add a new action avaibilities
This commit is contained in:
parent
43740b2364
commit
79ef7f4188
@ -296,7 +296,7 @@ Application.Controllers.controller "TrainingsAdminController", ["$scope", "$stat
|
||||
# The selected training details will be loaded from the API and rendered into the accordions.
|
||||
##
|
||||
$scope.selectTrainingToMonitor = ->
|
||||
Training.get {id: $scope.monitoring.training.id}, (training) ->
|
||||
Training.availabilities {id: $scope.monitoring.training.id}, (training) ->
|
||||
$scope.groupedAvailabilities = groupAvailabilities([training])
|
||||
|
||||
|
||||
|
@ -5,4 +5,7 @@ Application.Services.factory 'Training', ["$resource", ($resource)->
|
||||
{id: "@id"},
|
||||
update:
|
||||
method: 'PUT'
|
||||
availabilities:
|
||||
method: 'GET'
|
||||
url: "/api/trainings/:id/availabilities"
|
||||
]
|
||||
|
@ -17,8 +17,7 @@ class API::TrainingsController < API::ApiController
|
||||
end
|
||||
|
||||
def show
|
||||
@training = Training.includes(availabilities: {slots: {reservation: {user: [:profile, :trainings] }}})
|
||||
.where(id: params[:id]).first
|
||||
@training = Training.find(params[:id])
|
||||
end
|
||||
|
||||
def create
|
||||
@ -55,6 +54,12 @@ class API::TrainingsController < API::ApiController
|
||||
head :no_content
|
||||
end
|
||||
|
||||
def availabilities
|
||||
authorize Training
|
||||
@training = Training.find(params[:id])
|
||||
@availabilities = @training.availabilities.includes(slots: {reservation: {user: [:profile, :trainings] }}).order('start_at DESC')
|
||||
end
|
||||
|
||||
private
|
||||
def set_training
|
||||
@training = Training.find(params[:id])
|
||||
|
@ -5,7 +5,7 @@ class TrainingPolicy < ApplicationPolicy
|
||||
end
|
||||
end
|
||||
|
||||
%w(show create update).each do |action|
|
||||
%w(create update).each do |action|
|
||||
define_method "#{action}?" do
|
||||
user.is_admin?
|
||||
end
|
||||
@ -14,4 +14,8 @@ class TrainingPolicy < ApplicationPolicy
|
||||
def destroy?
|
||||
user.is_admin? and record.destroyable?
|
||||
end
|
||||
|
||||
def availabilities?
|
||||
user.is_admin?
|
||||
end
|
||||
end
|
||||
|
11
app/views/api/trainings/availabilities.json.jbuilder
Normal file
11
app/views/api/trainings/availabilities.json.jbuilder
Normal file
@ -0,0 +1,11 @@
|
||||
json.extract! @training, :id, :name, :description, :machine_ids, :nb_total_places, :public_page
|
||||
json.availabilities @availabilities do |a|
|
||||
json.id a.id
|
||||
json.start_at a.start_at.iso8601
|
||||
json.end_at a.end_at.iso8601
|
||||
json.reservation_users a.slots.map do |slot|
|
||||
json.id slot.reservation.user.id
|
||||
json.full_name slot.reservation.user.profile.full_name
|
||||
json.is_valid slot.reservation.user.trainings.include?(@training)
|
||||
end
|
||||
end
|
@ -1,12 +1,2 @@
|
||||
json.extract! @training, :id, :name, :description, :machine_ids, :nb_total_places, :public_page
|
||||
json.training_image @training.training_image.attachment.large.url if @training.training_image
|
||||
json.availabilities @training.availabilities.order('start_at DESC') do |a|
|
||||
json.id a.id
|
||||
json.start_at a.start_at.iso8601
|
||||
json.end_at a.end_at.iso8601
|
||||
json.reservation_users a.slots.map do |slot|
|
||||
json.id slot.reservation.user.id
|
||||
json.full_name slot.reservation.user.profile.full_name
|
||||
json.is_valid slot.reservation.user.trainings.include?(@training)
|
||||
end
|
||||
end
|
||||
|
@ -86,7 +86,9 @@ Rails.application.routes.draw do
|
||||
end
|
||||
|
||||
# for admin
|
||||
resources :trainings
|
||||
resources :trainings do
|
||||
get :availabilities, on: :member
|
||||
end
|
||||
resources :credits
|
||||
resources :categories
|
||||
resources :event_themes
|
||||
|
Loading…
x
Reference in New Issue
Block a user