@@ -170,15 +170,20 @@ def aggregate_errors
170170 # @return [Array<String>]
171171 def invalid_course_user_errors
172172 invalid_course_users . flat_map do |course_user |
173+ email = course_user . user &.email || course_user . name
173174 errors = [ ]
174175 if course_user . errors [ :external_id ] . any?
175176 errors << t ( 'errors.course.user_invitations.duplicate_external_id' ,
176- external_id : course_user . external_id )
177+ email : email , external_id : course_user . external_id )
177178 end
178- non_external_id_errors = course_user . errors . reject { |e | e . attribute . to_s == 'external_id' }
179- if non_external_id_errors . any?
180- user = self . class . helpers . display_course_user ( course_user )
181- errors << t ( 'errors.course.user_invitations.duplicate_user' , user : user )
179+ if course_user . errors [ :user ] . any? || course_user . errors [ :course ] . any?
180+ errors << t ( 'errors.course.user_invitations.already_enrolled' , email : email )
181+ end
182+ other_errors = course_user . errors . reject { |e | %w[ external_id user course ] . include? ( e . attribute . to_s ) }
183+ if other_errors . any?
184+ message = other_errors . map { |e | course_user . errors . full_message ( e . attribute , e . message ) } .
185+ to_sentence
186+ errors << t ( 'errors.course.user_invitations.other_error' , email : email , message : message )
182187 end
183188 errors
184189 end
@@ -196,15 +201,24 @@ def invalid_course_users
196201 # @return [Array<String>]
197202 def invalid_invitation_email_errors
198203 invalid_invitations . flat_map do |invitation |
204+ email = invitation . email
199205 errors = [ ]
200206 if invitation . errors [ :external_id ] . any?
201207 errors << t ( 'errors.course.user_invitations.duplicate_external_id' ,
202- external_id : invitation . external_id )
208+ email : email , external_id : invitation . external_id )
209+ end
210+ if invitation . errors [ :email ] . any?
211+ message = invitation . errors [ :email ] . to_sentence
212+ errors << t ( 'errors.course.user_invitations.invalid_email' , email : email , message : message )
213+ end
214+ if invitation . errors [ :base ] . any?
215+ errors << t ( 'errors.course.user_invitations.duplicate_invitation' , email : email )
203216 end
204- non_external_id_errors = invitation . errors . reject { |e | e . attribute . to_s == 'external_id' }
205- if non_external_id_errors . any?
206- message = non_external_id_errors . map { |e | invitation . errors . full_message ( e . attribute , e . message ) } . to_sentence
207- errors << t ( 'errors.course.user_invitations.invalid_email' , email : invitation . email , message : message )
217+ other_errors = invitation . errors . reject { |e | %w[ external_id email base ] . include? ( e . attribute . to_s ) }
218+ if other_errors . any?
219+ message = other_errors . map { |e | invitation . errors . full_message ( e . attribute , e . message ) } .
220+ to_sentence
221+ errors << t ( 'errors.course.user_invitations.other_error' , email : email , message : message )
208222 end
209223 errors
210224 end
0 commit comments