2014-01-30 17:10:36 -05:00
|
|
|
class GroupsController < ApplicationController
|
|
|
|
|
|
|
|
def show
|
2014-02-18 16:43:02 -05:00
|
|
|
render_serialized(find_group(:id), BasicGroupSerializer)
|
2014-01-30 17:10:36 -05:00
|
|
|
end
|
|
|
|
|
2014-02-18 16:17:04 -05:00
|
|
|
def counts
|
2014-02-18 16:43:02 -05:00
|
|
|
group = find_group(:group_id)
|
2014-02-18 16:17:04 -05:00
|
|
|
render json: {counts: { posts: group.posts_for(guardian).count,
|
|
|
|
members: group.users.count } }
|
2014-02-12 14:00:45 -05:00
|
|
|
end
|
|
|
|
|
2014-02-07 10:44:03 -05:00
|
|
|
def posts
|
2014-02-18 16:43:02 -05:00
|
|
|
group = find_group(:group_id)
|
2014-02-12 14:00:45 -05:00
|
|
|
posts = group.posts_for(guardian, params[:before_post_id]).limit(20)
|
2014-02-07 10:44:03 -05:00
|
|
|
render_serialized posts.to_a, GroupPostSerializer
|
|
|
|
end
|
|
|
|
|
2014-02-06 13:06:19 -05:00
|
|
|
def members
|
2014-02-18 16:43:02 -05:00
|
|
|
group = find_group(:group_id)
|
2014-11-24 15:12:48 -05:00
|
|
|
|
2014-12-31 12:58:50 -05:00
|
|
|
members = group.users.order('username_lower asc')
|
|
|
|
|
|
|
|
# TODO: We should fix the root cause of the bug where if there
|
|
|
|
# are more than 200 groups it will truncate
|
|
|
|
if group.automatic?
|
|
|
|
limit = (params[:limit] || 200).to_i
|
|
|
|
offset = (params[:offset] || 0).to_i
|
|
|
|
members = members.limit(limit).offset(offset)
|
|
|
|
end
|
2014-11-24 15:12:48 -05:00
|
|
|
|
2014-11-18 06:13:45 -05:00
|
|
|
render_serialized(members.to_a, GroupUserSerializer)
|
2014-02-06 13:06:19 -05:00
|
|
|
end
|
|
|
|
|
2014-02-18 16:43:02 -05:00
|
|
|
private
|
|
|
|
|
|
|
|
def find_group(param_name)
|
|
|
|
name = params.require(param_name)
|
2014-05-06 09:41:59 -04:00
|
|
|
group = Group.find_by("lower(name) = ?", name.downcase)
|
2014-02-18 16:43:02 -05:00
|
|
|
guardian.ensure_can_see!(group)
|
|
|
|
group
|
|
|
|
end
|
|
|
|
|
2014-01-30 17:10:36 -05:00
|
|
|
end
|