diff options
| author | Xinhui | 2017-06-29 17:05:39 +0200 |
|---|---|---|
| committer | Xinhui | 2017-06-29 17:05:44 +0200 |
| commit | e32e370ece3fa78efc8cce97e3ea827b01bfe7d1 (patch) | |
| tree | 3cab5fd896872b101e5062e93e33ec902ac83aa2 /app/models/chouette/time_table.rb | |
| parent | 0b5fd40778b04ed62a9e881a7eb2f2948c80d627 (diff) | |
| download | chouette-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.rb | 19 |
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 |
