Improved schedule conflict algorithm
This commit is contained in:
		
							parent
							
								
									50f0bb14d8
								
							
						
					
					
						commit
						f773aa7f76
					
				| @ -606,17 +606,6 @@ class ApplicationController < LinguaFrancaApplicationController | ||||
| 									end | ||||
| 								end | ||||
| 
 | ||||
| 								(0..ids.length).each do | j | | ||||
| 									workshop_j = time_data[:item][:workshops][ids[j]].present? ? time_data[:item][:workshops][ids[j]][:workshop] : nil | ||||
| 									if workshop_i.present? && workshop_j.present? && workshop_i.id != workshop_j.id | ||||
| 										workshop_i.interested.each do | interested_i | | ||||
| 											workshop_j.interested.each do | interested_j | | ||||
| 												conflicts[interested_i.id] ||= true | ||||
| 											end | ||||
| 										end | ||||
| 									end | ||||
| 								end | ||||
| 
 | ||||
| 								location = workshop_i.event_location || EventLocation.new | ||||
| 								needs = JSON.parse(workshop_i.needs || '[]').map &:to_sym | ||||
| 								amenities = JSON.parse(location.amenities || '[]').map &:to_sym | ||||
| @ -635,7 +624,16 @@ class ApplicationController < LinguaFrancaApplicationController | ||||
| 										} unless amenities.include? need | ||||
| 								end | ||||
| 
 | ||||
| 								@schedule[day][:times][time][:item][:workshops][ids[i]][:status][:conflict_score] = (conflicts || []).length | ||||
| 								# collect common interested users | ||||
| 								interests = [] | ||||
| 								(0..ids.length).each do | j | | ||||
| 									workshop_j = time_data[:item][:workshops][ids[j]].present? ? time_data[:item][:workshops][ids[j]][:workshop] : nil | ||||
| 									if workshop_i.present? && workshop_j.present? && workshop_i.id != workshop_j.id | ||||
| 										interests = interests | workshop_j.interested.map { | u | u.user_id } | ||||
| 									end | ||||
| 								end | ||||
| 
 | ||||
| 								@schedule[day][:times][time][:item][:workshops][ids[i]][:status][:conflict_score] = (interests & (workshop_i.interested.map { | u | u.user_id })).length | ||||
| 							end | ||||
| 						end | ||||
| 					end | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user