1
0
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:
Peng DU 2016-07-19 12:16:41 +02:00
parent 43740b2364
commit 79ef7f4188
7 changed files with 30 additions and 15 deletions

View File

@ -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])

View File

@ -5,4 +5,7 @@ Application.Services.factory 'Training', ["$resource", ($resource)->
{id: "@id"},
update:
method: 'PUT'
availabilities:
method: 'GET'
url: "/api/trainings/:id/availabilities"
]

View File

@ -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])

View File

@ -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

View 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

View File

@ -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

View File

@ -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