Skip to main content

Calculation code comments Scrutiny start date for Commons only sitting days

On GitHub: app/lib/calculations/backwards/commons_only_sitting_days.rb

1 module Calculations
2   module Backwards
3     module CommonsOnlySittingDays

The calculation is set out in section 5 (4A) of the Planning Act 2008.

7       def commons_only_sitting_days_backwards( target_end_date, target_day_count )

Because the start of each loop causes the date to move to the preceding day and we wish to include the target end date ...

... we go forward one day.

11         date = target_end_date.next

We set the day count to zero.

14         day_count = 0

Whilst the number of days we’re counting is less than the target number of days to count ...

17         while day_count < target_day_count

... we move back to the previous day.

20           date = date.prev_day

If the date is sitting day in the House of Commons ...

23           if date.is_commons_parliamentary_sitting_day?

... if we've not set the scrutiny end date ...

26             unless @scrutiny_end_date

... we set the scrutiny end date to this date.

29               @scrutiny_end_date = date
30             end

We add 1 to the day count.

33             day_count +=1

Otherwise, if the calendar has no record of what type of day this is, we can't calculate the end date, ...

36           elsif date.is_calendar_not_populated?

... this error message is displayed to users ...

39             @error_message = "It's not currently possible to calculate an anticipated start date, as that date occurs during a period for which no sitting day information is available."

... and we stop looking through the calendar.

42             break
43           end
44         end

We return the anticipated start date of the scrutiny period for display.

47         date
48       end
49     end
50   end
51 end