@ -23,7 +23,6 @@ class ExercisesController < ApplicationController
 
			
		
	
		
		
			
				
					
					  before_action  :commit_shixun_present , only :  [ :commit_shixun ] 
  before_action  :commit_shixun_present , only :  [ :commit_shixun ] 
 
			
		
	
		
		
			
				
					
					  include  ExportHelper 
  include  ExportHelper 
 
			
		
	
		
		
			
				
					
					  include  ExercisesHelper 
  include  ExercisesHelper 
 
			
		
	
		
		
			
				
					
					  # require 'pdfkit' 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  def  index 
  def  index 
 
			
		
	
		
		
			
				
					
					    ActiveRecord :: Base . transaction  do 
    ActiveRecord :: Base . transaction  do 
 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -43,46 +42,65 @@ class ExercisesController < ApplicationController
 
			
		
	
		
		
			
				
					
					          @exercises  =  @exercises_all                   #老师能看到全部的试卷,不管是已发布的/未发布的/已截止的/统一设置的/私有设置的(看到内容不同) 
          @exercises  =  @exercises_all                   #老师能看到全部的试卷,不管是已发布的/未发布的/已截止的/统一设置的/私有设置的(看到内容不同) 
 
			
		
	
		
		
			
				
					
					        elsif  @user_course_identity  ==  Course :: STUDENT   # 2为课堂成员,  
        elsif  @user_course_identity  ==  Course :: STUDENT   # 2为课堂成员,  
 
			
		
	
		
		
			
				
					
					          @is_teacher_or  =  2 
          @is_teacher_or  =  2 
 
			
		
	
		
		
			
				
					
					          # get_exercise_left_time(@exercise,current_user) 
          @member_group_id  =  @current_student . first . try ( :course_group_id ) . to_i   # 成员的分班id,  
 
			
				
				
			
		
	
		
		
			
				
					
					          member_group_id  =  @current_student . first . try ( :course_group_id ) . to_i   # 成员的分班id,  
          if  @member_group_id  ==  0    #表示是课堂的未分班成员,只能查看统一设置的试卷(已发布的/已截止的) 
 
			
				
				
			
		
	
		
		
			
				
					
					          if  member_group_id  ==  0    #表示是课堂的未分班成员,只能查看统一设置的试卷(已发布的/已截止的) 
 
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					            @exercises  =  member_show_exercises . exists?  ?  member_show_exercises . unified_setting  :  [ ] 
            @exercises  =  member_show_exercises . exists?  ?  member_show_exercises . unified_setting  :  [ ] 
 
			
		
	
		
		
			
				
					
					          else   #已分班级的成员,可以查看统一设置和单独设置(试卷是发布在该班级)试卷 
          else   #已分班级的成员,可以查看统一设置和单独设置(试卷是发布在该班级)试卷 
 
			
		
	
		
		
			
				
					
					            # 已发布 当前用户班级分组的 试卷id 
            # 已发布 当前用户班级分组的 试卷id 
 
			
		
	
		
		
			
				
					
					            exercise_settings_ids  =  @course . exercise_group_settings . exercise_group_published 
            not_exercise_ids  =  @course . exercise_group_settings . exercise_group_not_published . where ( " course_group_id =  #{ @member_group_id } " ) . pluck ( :exercise_id ) 
 
			
				
				
			
		
	
		
		
			
				
					
					                                        . where ( course_group_id :  member_group_id ) . pluck ( :exercise_id ) . uniq 
            @exercises  =  member_show_exercises . where . not ( id :  not_exercise_ids ) 
 
			
				
				
			
		
	
		
		
			
				
					
					            @exercises  =  member_show_exercises . exists?  ? 
            # exercise_settings_ids = @course.exercise_group_settings.exercise_group_published 
 
			
				
				
			
		
	
		
		
			
				
					
					                             member_show_exercises . unified_setting . or ( member_show_exercises . where ( id :  exercise_settings_ids ) ) 
            #                             .where(course_group_id: member_group_id).pluck(:exercise_id).uniq 
 
			
				
				
			
		
	
		
		
			
				
					
					                             :  [ ] 
            # @exercises = member_show_exercises.exists? ? 
 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					            #                  member_show_exercises.unified_setting.or(member_show_exercises.where(id: exercise_settings_ids)) 
 
			
		
	
		
		
			
				
					
					            #                  : [] 
 
			
		
	
		
		
			
				
					
					          end 
          end 
 
			
		
	
		
		
			
				
					
					        else   #用户未登陆或不是该课堂成员,仅显示统一设置的(已发布的/已截止的),如有公开,则不显示锁,不公开,则显示锁 
        else   #用户未登陆或不是该课堂成员,仅显示统一设置的(已发布的/已截止的),如有公开,则不显示锁,不公开,则显示锁 
 
			
		
	
		
		
			
				
					
					          @is_teacher_or  =  0 
          @is_teacher_or  =  0 
 
			
		
	
		
		
			
				
					
					          @exercises  =  member_show_exercises . exists? ?  member_show_exercises .  unified_setting :  [ ]  
          @exercises  =  member_show_exercises . 
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					        end 
        end 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					        if  @exercises . size  >  0 
        if  @exercises . size  >  0 
 
			
		
	
		
		
			
				
					
					          if  params [ :type ] . present? 
          if  params [ :type ] . present? 
 
			
		
	
		
		
			
				
					
					            choose_type  =  params [ :type ] . to_i 
            choose_type  =  params [ :type ] . to_i 
 
			
		
	
		
		
			
				
					
					            member_group_id  =  @current_student . first . try ( :course_group_id ) . to_i 
            ex_setting_ids  =  [ ] 
 
			
				
				
			
		
	
		
		
			
				
					
					            if  @is_teacher_or  ==  2  &&  member_group_id  >  0 
            case  choose_type 
 
			
				
				
			
		
	
		
		
			
				
					
					              exercise_groups_sets  =  @course . exercise_group_settings . where ( course_group_id :  member_group_id ) 
            when  1 
 
			
				
				
			
		
	
		
		
			
				
					
					                                         . exercise_group_published 
              ex_setting_ids  =  @course . exercise_group_settings . exercise_group_not_published . pluck ( :exercise_id ) 
 
			
				
				
			
		
	
		
		
			
				
					
					              exercise_settings_ids  =  exercise_groups_sets . pluck ( :exercise_id ) 
 
			
				
				
			
		
	
		
		
			
				
					
					              exercise_ended_ids  =  exercise_groups_sets . exercise_group_ended . pluck ( :exercise_id ) . uniq 
              # @exercises = @exercises.where("exercise_status = #{choose_type}").or(@exercises.where(id:ex_setting_ids)) 
 
			
				
				
			
		
	
		
		
			
				
					
					              if  choose_type  ==  2 
            when  2 
 
			
				
				
			
		
	
		
		
			
				
					
					                @exercises  =  @exercises_all . exists?  ? 
              ex_setting_ids  =  @course . exercise_group_settings . where ( " publish_time is not null and publish_time <= ? and end_time > ? " , Time . now , Time . now ) . pluck ( :exercise_id ) 
 
			
				
				
			
		
	
		
		
			
				
					
					                                 @exercises_all . exercise_by_status ( 2 ) . unified_setting 
              # @exercises = @exercises.where("exercise_status = #{choose_type}").or(@exercises.where(id:ex_published_groups)) 
 
			
				
				
			
		
	
		
		
			
				
					
					                                     . or ( @exercises_all . where ( id :  ( exercise_settings_ids  -  exercise_ended_ids ) . uniq ) ) 
            when  3 
 
			
				
				
			
		
	
		
		
			
				
					
					                                 :  [ ] 
              ex_setting_ids  =  @course . exercise_group_settings . exercise_group_ended . pluck ( :exercise_id ) 
 
			
				
				
			
		
	
		
		
			
				
					
					              elsif  choose_type  ==  3 
              # @exercises = @exercises.where("exercise_status = #{choose_type}").or(@exercises.where(id:ex_ended_groups)) 
 
			
				
				
			
		
	
		
		
			
				
					
					                @exercises  =  @exercises_all . exists?  ? 
 
			
		
	
		
		
			
				
					
					                                 @exercises_all . exercise_by_status ( 3 ) . unified_setting 
 
			
		
	
		
		
			
				
					
					                                     . or ( @exercises_all . where ( id :  exercise_ended_ids ) ) 
 
			
		
	
		
		
			
				
					
					                                 :  [ ] 
 
			
		
	
		
		
			
				
					
					              end 
 
			
		
	
		
		
			
				
					
					            else 
 
			
		
	
		
		
			
				
					
					              @exercises  =  @exercises . exercise_by_status ( choose_type ) 
 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					            end 
            end 
 
			
		
	
		
		
			
				
					
					            @exercises  =  @exercises . unified_setting . where ( " exercise_status =  #{ choose_type } " ) . or ( @exercises . where ( id :ex_setting_ids ) ) . distinct 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					            # member_group_id = @current_student.first.try(:course_group_id).to_i 
 
			
		
	
		
		
			
				
					
					            # if @is_teacher_or == 2 && member_group_id > 0 
 
			
		
	
		
		
			
				
					
					            #   exercise_groups_sets = @course.exercise_group_settings.where(course_group_id: member_group_id) 
 
			
		
	
		
		
			
				
					
					            #                              .exercise_group_published 
 
			
		
	
		
		
			
				
					
					            #   exercise_settings_ids = exercise_groups_sets.pluck(:exercise_id) 
 
			
		
	
		
		
			
				
					
					            #   exercise_ended_ids = exercise_groups_sets.exercise_group_ended.pluck(:exercise_id).uniq 
 
			
		
	
		
		
			
				
					
					            #   if choose_type == 2 
 
			
		
	
		
		
			
				
					
					            #     @exercises = @exercises_all.exists? ? 
 
			
		
	
		
		
			
				
					
					            #                      @exercises_all.exercise_by_status(2).unified_setting 
 
			
		
	
		
		
			
				
					
					            #                          .or(@exercises_all.where(id: (exercise_settings_ids - exercise_ended_ids).uniq)) 
 
			
		
	
		
		
			
				
					
					            #                      : [] 
 
			
		
	
		
		
			
				
					
					            #   elsif choose_type == 3 
 
			
		
	
		
		
			
				
					
					            #     @exercises = @exercises_all.exists? ? 
 
			
		
	
		
		
			
				
					
					            #                      @exercises_all.exercise_by_status(3).unified_setting 
 
			
		
	
		
		
			
				
					
					            #                          .or(@exercises_all.where(id: exercise_ended_ids)) 
 
			
		
	
		
		
			
				
					
					            #                      : [] 
 
			
		
	
		
		
			
				
					
					            #   end 
 
			
		
	
		
		
			
				
					
					            # else 
 
			
		
	
		
		
			
				
					
					            #   @exercises = @exercises.exercise_by_status(choose_type) 
 
			
		
	
		
		
			
				
					
					            # end 
 
			
		
	
		
		
			
				
					
					          end 
          end 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					          if  params [ :search ] . present? 
          if  params [ :search ] . present? 
 
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -1302,9 +1320,11 @@ class ExercisesController < ApplicationController
 
			
		
	
		
		
			
				
					
					            respond_to  do  | format | 
            respond_to  do  | format | 
 
			
		
	
		
		
			
				
					
					              format . xlsx { 
              format . xlsx { 
 
			
		
	
		
		
			
				
					
					                get_export_users ( @exercise , @course , @export_ex_users ) 
                get_export_users ( @exercise , @course , @export_ex_users ) 
 
			
		
	
		
		
			
				
					
					                exercise_export_name  = 
                exercise_export_name_  = 
 
			
				
				
			
		
	
		
		
			
				
					
					                    " #{ current_user . real_name } _ #{ @course . name } _ #{ @exercise . exercise_name } _ #{ Time . now . strftime ( '%Y%m%d_%H%M%S' ) } " 
                    " #{ current_user . real_name } _ #{ @course . name } _ #{ @exercise . exercise_name } " 
 
			
				
				
			
		
	
		
		
			
				
					
					                render  xlsx :  " #{ exercise_export_name . strip . first ( 30 ) } " , template :  " exercises/exercise_lists.xlsx.axlsx " , locals :  { table_columns : @table_columns , exercise_users : @user_columns } 
                exercise_export_name  =  Base64 . urlsafe_encode64 ( exercise_export_name_ . strip . first ( 30 ) ) 
 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					                render  xlsx :  " #{ exercise_export_name } " , template :  " exercises/exercise_lists.xlsx.axlsx " , locals :  { table_columns : @table_columns , exercise_users : @user_columns } 
 
			
		
	
		
		
			
				
					
					              } 
              } 
 
			
		
	
		
		
			
				
					
					            end 
            end 
 
			
		
	
		
		
			
				
					
					          end 
          end