Class: Arbeitszeitkonto::WoechentlichZeitkontoCalculator
- Inherits:
-
ZeitkontoCalculator
- Object
- ZeitkontoCalculator
- Arbeitszeitkonto::WoechentlichZeitkontoCalculator
- Defined in:
- lib/arbeitszeitkonto/woechentlich_zeitkonto_calculator.rb
Overview
Ein Zeitkonto im Rhythmus :wöchentlich
Instance Method Summary collapse
-
#calculate(zeitspannen) ⇒ Object
Liefert * Anzahl Sekunden, welche die gegebene :zeitspanne mit dem Zeitkonto überlappt * Die Reste (Zeitspanne).
-
#initialize(wday, zeit_von, zeit_bis) ⇒ WoechentlichZeitkontoCalculator
constructor
@wday: Wochentag, an dem die Zeitspanne beginnt: 0 = Sonntag, 6 = Samstag.
Constructor Details
#initialize(wday, zeit_von, zeit_bis) ⇒ WoechentlichZeitkontoCalculator
@wday: Wochentag, an dem die Zeitspanne beginnt: 0 = Sonntag, 6 = Samstag
12 13 14 15 16 17 |
# File 'lib/arbeitszeitkonto/woechentlich_zeitkonto_calculator.rb', line 12 def initialize wday, zeit_von, zeit_bis @wday = wday @zeit_von = zeit_von @zeit_bis = zeit_bis @anzahl_tage_dazwischen = (@zeit_bis.to_date - @zeit_von.to_date).to_i end |
Instance Method Details
#calculate(zeitspannen) ⇒ Object
Liefert
-
Anzahl Sekunden, welche die gegebene :zeitspanne mit dem Zeitkonto überlappt
-
Die Reste (Zeitspanne)
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/arbeitszeitkonto/woechentlich_zeitkonto_calculator.rb', line 25 def calculate zeitspannen reste = [] seconds = 0 Array(zeitspannen).each do |zeitspanne| anzahl_tage_zurueck = calculate_tage_zurueck(zeitspanne.datum_zeit_von.wday, @wday) datum = zeitspanne.datum_zeit_von - anzahl_tage_zurueck.days datum_zeit_von = kombiniere(datum, @zeit_von) datum_zeit_bis = kombiniere(datum, @zeit_bis) + @anzahl_tage_dazwischen.days zeitkonto_zeitspanne_eins = Zeitspanne.new(datum_zeit_von, datum_zeit_bis) zeitkonto_zeitspanne_zwei = Zeitspanne.new(datum_zeit_von+7.days, datum_zeit_bis+7.days) #puts "#{self.class.name}#calculate: wday der ersten Zeitspanne: #{zeitkonto_zeitspanne_eins.datum_zeit_von.wday}" #puts "#{self.class.name}#calculate: wday der zweiten Zeitspanne: #{zeitkonto_zeitspanne_zwei.datum_zeit_von.wday}" raise ArbeitszeitkontoError, "wday ist entspricht nicht wday der Vorlage " if @wday != zeitkonto_zeitspanne_eins.datum_zeit_von.wday || @wday != zeitkonto_zeitspanne_zwei.datum_zeit_von.wday sec, r = calc([zeitspanne], [zeitkonto_zeitspanne_eins, zeitkonto_zeitspanne_zwei]) seconds+=sec reste.push(*r) end [seconds, reste] end |