mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
API with more options, includes #712
This commit is contained in:
parent
28e55f3f50
commit
ecef151f91
7 changed files with 86 additions and 38 deletions
|
|
@ -1,15 +1,15 @@
|
|||
module Api
|
||||
module V1
|
||||
class ConferencesController < Api::BaseController
|
||||
load_resource find_by: :short_title
|
||||
respond_to :json
|
||||
|
||||
def index
|
||||
if params[:conference_id].blank?
|
||||
conferences = Conference.all
|
||||
else
|
||||
conferences = Conference.find_all_by_guid(params[:conference_id])
|
||||
end
|
||||
render json: conferences, serializer: ConferencesArraySerializer
|
||||
render json: @conferences, serializer: ConferencesArraySerializer
|
||||
end
|
||||
|
||||
def show
|
||||
render json: [@conference], serializer: ConferencesArraySerializer
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,13 +1,16 @@
|
|||
module Api
|
||||
module V1
|
||||
class EventsController < Api::BaseController
|
||||
load_resource :conference, find_by: :short_title
|
||||
respond_to :json
|
||||
|
||||
def index
|
||||
events = Event.includes(:conference, :track, :room, :event_type, event_users: :user)
|
||||
unless params[:conference_id].blank?
|
||||
events = events.where(conferences: { guid: params[:conference_id] })
|
||||
|
||||
if @conference
|
||||
events = events.where(conference: @conference)
|
||||
end
|
||||
|
||||
respond_with events.confirmed
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,15 +1,12 @@
|
|||
module Api
|
||||
module V1
|
||||
class RoomsController < Api::BaseController
|
||||
load_resource :conference, find_by: :short_title
|
||||
respond_to :json
|
||||
|
||||
def index
|
||||
if params[:conference_id].blank?
|
||||
rooms = Room.all
|
||||
else
|
||||
conference = Conference.find_by_guid(params[:conference_id])
|
||||
rooms = conference.rooms
|
||||
end
|
||||
@conference ? (rooms = @conference.rooms) : (rooms = Room.all)
|
||||
|
||||
respond_with rooms
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,16 +1,18 @@
|
|||
module Api
|
||||
module V1
|
||||
class SpeakersController < Api::BaseController
|
||||
load_resource :conference, find_by: :short_title
|
||||
respond_to :json
|
||||
|
||||
def index
|
||||
if params[:conference_id].blank?
|
||||
users = User.joins(:event_users)
|
||||
else
|
||||
if @conference
|
||||
users = User.joins(event_users: { event: :conference })
|
||||
users = users.where(conferences: { guid: params[:conference_id] })
|
||||
users = users.where(conferences: { short_title: @conference.short_title })
|
||||
else
|
||||
users = User.joins(:event_users)
|
||||
end
|
||||
users = users.where(event_users: {event_role: :speaker})
|
||||
|
||||
users = users.where(event_users: {event_role: :speaker}).uniq
|
||||
render json: users, each_serializer: SpeakerSerializer
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,15 +1,12 @@
|
|||
module Api
|
||||
module V1
|
||||
class TracksController < Api::BaseController
|
||||
load_resource :conference, find_by: :short_title
|
||||
respond_to :json
|
||||
|
||||
def index
|
||||
if params[:conference_id].blank?
|
||||
tracks = Track.all
|
||||
else
|
||||
tracks = Track.joins(:conference)
|
||||
tracks = tracks.where(conferences: { guid: params[:conference_id] })
|
||||
end
|
||||
@conference ? (tracks = @conference.tracks) : (tracks = Track.all)
|
||||
|
||||
respond_with tracks
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue