You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/app/controllers/competitions/competition_teams_controlle...

50 lines
1.4 KiB

class Competitions::CompetitionTeamsController < Competitions::BaseController
def index
admin_or_business? ? all_competition_teams : user_competition_teams
end
def create
team = current_competition.competition_teams.new(user: current_user)
Competitions::SaveTeamService.call(team, save_params)
render_ok
end
def update
team = current_competition.competition_teams.where(user: current_user).find(params[:id])
Competitions::SaveTeamService.call(team, save_params)
render_ok
end
def join
Competitions::JoinTeamService.call(current_competition, current_user, params)
render_ok
rescue Competitions::JoinTeamService::Error => ex
render_error(ex.message)
end
private
def all_competition_teams
teams = current_competition.competition_teams
keyword = params[:keyword].to_s.strip
if keyword.present?
teams = teams.joins(users: { user_extension: :school }).where('schools.name LIKE ?', "%#{keyword}%")
end
@count = teams.count
@teams = paginate(teams.includes(:user, users: :user_extension))
end
def user_competition_teams
teams = current_competition.competition_teams
teams = teams.joins(:team_members).where(team_members: { user_id: current_user.id })
@teams = teams.includes(:user, users: :user_extension).to_a
@count = @teams.size
end
def save_params
params.permit(:name, teacher_ids: [], member_ids: [])
end
end