aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/chouette/time_table.rb
diff options
context:
space:
mode:
authorXinhui2017-06-29 17:05:39 +0200
committerXinhui2017-06-29 17:05:44 +0200
commite32e370ece3fa78efc8cce97e3ea827b01bfe7d1 (patch)
tree3cab5fd896872b101e5062e93e33ec902ac83aa2 /app/models/chouette/time_table.rb
parent0b5fd40778b04ed62a9e881a7eb2f2948c80d627 (diff)
downloadchouette-core-e32e370ece3fa78efc8cce97e3ea827b01bfe7d1.tar.bz2
Refactoring time_table#intersect -m Refs
Diffstat (limited to 'app/models/chouette/time_table.rb')
-rw-r--r--app/models/chouette/time_table.rb19
1 files changed, 14 insertions, 5 deletions
diff --git a/app/models/chouette/time_table.rb b/app/models/chouette/time_table.rb
index c566452f4..cb1d0c5da 100644
--- a/app/models/chouette/time_table.rb
+++ b/app/models/chouette/time_table.rb
@@ -496,16 +496,25 @@ class Chouette::TimeTable < Chouette::TridentActiveRecord
self.convert_continuous_dates_to_periods
end
+ def included_days_in_dates_and_periods
+ in_day = self.dates.select {|d| d.in_out }.map(&:date)
+ out_day = self.dates.select {|d| !d.in_out }.map(&:date)
+
+ in_periods = self.periods.map{|p| (p.period_start..p.period_end).to_a }.flatten
+ days = in_periods + in_day
+ days -= out_day
+ days
+ end
+
# remove dates form tt which aren't in another_tt
def intersect!(another_tt)
transaction do
-
- # transform tt as effective dates and get common ones
- days = another_tt.intersects(self.effective_days) & self.intersects(another_tt.effective_days)
+ days = self.included_days_in_dates_and_periods & another_tt.included_days_in_dates_and_periods
self.dates.clear
- days.each {|d| self.dates << Chouette::TimeTableDate.new( :date =>d, :in_out => true)}
self.periods.clear
- self.dates.to_a.sort! { |a,b| a.date <=> b.date}
+ days.sort.each do |d|
+ self.dates << Chouette::TimeTableDate.new(:date => d, :in_out => true)
+ end
self.save!
end
self.convert_continuous_dates_to_periods