NAP
operationalcalendar.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // Local includes
8 #include "calendar.h"
9 
10 // External Includes
11 #include <nap/resource.h>
12 
13 namespace nap
14 {
21  class NAPAPI OperationalCalendar : public ICalendar
22  {
23  RTTI_ENABLE(ICalendar)
24  public:
25  // Constructor
27 
28  // Destructor
29  virtual ~OperationalCalendar();
30 
35  virtual bool init(utility::ErrorState& errorState) override;
36 
40  CalendarInstance& getInstance() override { assert(mInstance != nullptr); return *mInstance; }
41 
45  const CalendarInstance& getInstance() const override { assert(mInstance != nullptr); return *mInstance; }
46 
50  bool isOperational();
51 
52  bool mAllowFailure = true;
60 
61  private:
62 
68  void addItem(const CalendarItem::Point& point, EDay day, CalendarItemList& outItems);
69 
70  std::unique_ptr<CalendarInstance> mInstance = nullptr;
71  };
72 }
nap::OperationalCalendar::mWednesday
CalendarItem::Point mWednesday
Property: 'Wednesday' Wednesday operational hours.
Definition: operationalcalendar.h:55
nap::OperationalCalendar::getInstance
const CalendarInstance & getInstance() const override
Definition: operationalcalendar.h:45
nap::CalendarItem::Point
Definition: calendaritem.h:56
nap::OperationalCalendar::mMonday
CalendarItem::Point mMonday
Property: 'Monday' Monday operational hours.
Definition: operationalcalendar.h:53
nap::utility::ErrorState
Definition: errorstate.h:19
nap::CalendarInstance
Definition: calendar.h:114
nap::ICalendar
Definition: calendar.h:30
nap::OperationalCalendar::mSunday
CalendarItem::Point mSunday
Property: 'Sunday' Sunday operational hours.
Definition: operationalcalendar.h:59
nap::OperationalCalendar::mTuesday
CalendarItem::Point mTuesday
Property: 'Tuesday' Tuesday operational hours.
Definition: operationalcalendar.h:54
nap::Core
Definition: core.h:82
nap::OperationalCalendar
Definition: operationalcalendar.h:21
nap::OperationalCalendar::mFriday
CalendarItem::Point mFriday
Property: 'Friday' Friday operational hours.
Definition: operationalcalendar.h:57
nap::OperationalCalendar::mThursday
CalendarItem::Point mThursday
Property: 'Thursday' Thursday operational hours.
Definition: operationalcalendar.h:56
nap::EDay
EDay
Definition: datetime.h:92
nap
Definition: templateapp.h:17
nap::OperationalCalendar::mSaturday
CalendarItem::Point mSaturday
Property: 'Saturday' Saturday operational hours.
Definition: operationalcalendar.h:58
nap::OperationalCalendar::getInstance
CalendarInstance & getInstance() override
Definition: operationalcalendar.h:40
nap::CalendarItemList
std::vector< nap::ResourcePtr< CalendarItem > > CalendarItemList
Definition: calendar.h:21