diff --git a/app/forms/competitions/save_team_form.rb b/app/forms/competitions/save_team_form.rb index 10685d260..dd2610083 100644 --- a/app/forms/competitions/save_team_form.rb +++ b/app/forms/competitions/save_team_form.rb @@ -73,10 +73,10 @@ class Competitions::SaveTeamForm # 竞赛是否限制了职业 def check_creator_identity_enrollable - if user.is_teacher? && competition.teacher_enroll_forbidden? + if creator.is_teacher? && competition.teacher_enroll_forbidden? errors.add(:creator, :teacher_enroll_forbidden) return false - elsif !user.is_teacher? && competition.member_enroll_forbidden? + elsif !creator.is_teacher? && competition.member_enroll_forbidden? errors.add(:creator, :member_enroll_forbidden) return false end @@ -86,9 +86,9 @@ class Competitions::SaveTeamForm # 创建者是否能多次报名 def check_creator_multiple_enrollable - return unless competition.enrolled?(user) + return unless competition.enrolled?(creator) - if (user.is_teacher? && competition.teacher_multiple_limited?) || (!user.is_teacher? && competition.member_multiple_limited?) + if (creator.is_teacher? && competition.teacher_multiple_limited?) || (!creator.is_teacher? && competition.member_multiple_limited?) errors.add(:creator, :enrolled) return false end diff --git a/app/models/competition.rb b/app/models/competition.rb index d8a8318b3..39e4f4dfe 100644 --- a/app/models/competition.rb +++ b/app/models/competition.rb @@ -40,6 +40,17 @@ class Competition < ApplicationRecord end end + def competition_status + if !status + com_status = "nearly_published" + elsif end_time > Time.now + com_status = "progressing" + else + com_status = "ended" + end + com_status + end + def teacher_staff_num teacher_staff ? "#{teacher_staff.minimum}~#{teacher_staff.maximum}" : "--" end diff --git a/app/views/competitions/competitions/common_header.json.jbuilder b/app/views/competitions/competitions/common_header.json.jbuilder index c5732a51d..a90ab14ee 100644 --- a/app/views/competitions/competitions/common_header.json.jbuilder +++ b/app/views/competitions/competitions/common_header.json.jbuilder @@ -13,6 +13,7 @@ json.nearly_published @competition.published_at.present? json.competition_modules @competition_modules do |com_module| json.(com_module, :id, :name, :position, :module_type) json.module_url com_module.module_url + json.has_url com_module.url.present? end json.stages diff --git a/app/views/competitions/competitions/index.json.jbuilder b/app/views/competitions/competitions/index.json.jbuilder index 8e99d754d..810cbfd18 100644 --- a/app/views/competitions/competitions/index.json.jbuilder +++ b/app/views/competitions/competitions/index.json.jbuilder @@ -3,6 +3,7 @@ json.competitions do json.array! @competitions.each do |competition| json.extract! competition, :id, :identifier, :name, :sub_title, :bonus, :description, :mode + json.competition_status competition.competition_status json.visits_count competition.visits member_count = @member_count_map&.fetch(competition.id, 0) || competition.team_members.count json.member_count member_count.zero? ? 268 : member_count