aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/history/Period.cpp
blob: 2c6589c0c9cf75bba6db2a0df3b1dc5618537ca6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "Period.hpp"

#include "openvic-simulation/utility/Logger.hpp"

using namespace OpenVic;

Period::Period(
   const Date new_start_date,
   const std::optional<Date> new_end_date
) : start_date { new_start_date }, end_date { new_end_date } {}

bool Period::is_date_in_period(const Date date) const {
   return start_date <= date && (!end_date.has_value() || end_date.value() >= date);
}

bool Period::try_set_end(const Date date) {
   if (end_date.has_value()) {
      Logger::error("Period already has end date ", end_date.value());
      return false;
   }

   if (date < start_date) {
      Logger::error("Proposed end date ", date, " is before start date ", start_date);
      return false;
   }

   end_date = date;
   return true;
}