Rename WorkingDays to OpeningDays. Implement TimeTableSet to OpeningHours convesion.

This commit is contained in:
Sergey Magidovich 2015-12-26 12:27:59 +03:00 committed by Sergey Yershov
parent a58b20374c
commit 718ba4908f
6 changed files with 350 additions and 53 deletions

View file

@ -23,7 +23,7 @@ UNIT_TEST(TestTimeTable)
TEST(tt.RemoveWorkingDay(osmoh::Weekday::Friday), ());
TEST(!tt.RemoveWorkingDay(osmoh::Weekday::Saturday), ());
TEST_EQUAL(tt.GetWorkingDays(), (set<osmoh::Weekday>{osmoh::Weekday::Saturday}), ());
TEST_EQUAL(tt.GetOpeningDays(), (set<osmoh::Weekday>{osmoh::Weekday::Saturday}), ());
}
}
@ -167,7 +167,7 @@ UNIT_TEST(TestAppendTimeTable)
TEST(tt.Commit(), ());
TEST(tts.Append(tts.GetComplementTimeTable()), ());
TEST_EQUAL(tts.Back().GetWorkingDays(), (set<osmoh::Weekday>{osmoh::Weekday::Sunday,
TEST_EQUAL(tts.Back().GetOpeningDays(), (set<osmoh::Weekday>{osmoh::Weekday::Sunday,
osmoh::Weekday::Saturday}), ());
}
@ -179,7 +179,7 @@ UNIT_TEST(TestAppendTimeTable)
}
TEST(tts.Append(tts.GetComplementTimeTable()), ());
TEST_EQUAL(tts.Back().GetWorkingDays(), (set<osmoh::Weekday>{osmoh::Weekday::Monday,
TEST_EQUAL(tts.Back().GetOpeningDays(), (set<osmoh::Weekday>{osmoh::Weekday::Monday,
osmoh::Weekday::Tuesday}), ());
TEST(!tts.GetComplementTimeTable().IsValid(), ());
@ -202,8 +202,8 @@ UNIT_TEST(TestAppendTimeTable)
TEST(tts.Append(tt), ());
TEST_EQUAL(tts.Size(), 2, ());
TEST_EQUAL(tts.Front().GetWorkingDays().size(), 4, ());
TEST_EQUAL(tts.Back().GetWorkingDays().size(), 3, ());
TEST_EQUAL(tts.Front().GetOpeningDays().size(), 4, ());
TEST_EQUAL(tts.Back().GetOpeningDays().size(), 3, ());
TEST(!tts.GetComplementTimeTable().IsValid(), ());
}
@ -215,16 +215,16 @@ UNIT_TEST(TestAppendTimeTable)
TEST(tts.Append(tt), ());
TEST_EQUAL(tts.Size(), 2, ());
TEST_EQUAL(tts.Front().GetWorkingDays().size(), 6, ());
TEST_EQUAL(tts.Back().GetWorkingDays().size(), 1, ());
TEST_EQUAL(tts.Front().GetOpeningDays().size(), 6, ());
TEST_EQUAL(tts.Back().GetOpeningDays().size(), 1, ());
TEST(!tts.GetComplementTimeTable().IsValid(), ());
tt = tts.Front();
tt.AddWorkingDay(osmoh::Weekday::Friday);
TEST(!tts.Append(tt), ());
TEST_EQUAL(tts.Front().GetWorkingDays().size(), 6, ());
TEST_EQUAL(tts.Back().GetWorkingDays().size(), 1, ());
TEST_EQUAL(tts.Front().GetOpeningDays().size(), 6, ());
TEST_EQUAL(tts.Back().GetOpeningDays().size(), 1, ());
}
{
TimeTableSet tts;
@ -236,8 +236,8 @@ UNIT_TEST(TestAppendTimeTable)
}
TEST_EQUAL(tts.Size(), 2, ());
TEST_EQUAL(tts.Front().GetWorkingDays().size(), 6, ());
TEST_EQUAL(tts.Back().GetWorkingDays().size(), 1, ());
TEST_EQUAL(tts.Front().GetOpeningDays().size(), 6, ());
TEST_EQUAL(tts.Back().GetOpeningDays().size(), 1, ());
auto tt = tts.Front();
tt.AddWorkingDay(osmoh::Weekday::Friday);

View file

@ -6,7 +6,17 @@ using namespace osmoh;
using namespace editor;
using namespace editor::ui;
UNIT_TEST(ConvertOpeningHours)
namespace
{
string ToString(OpeningHours const & oh)
{
stringstream sstr;
sstr << oh.GetRule();
return sstr.str();
}
} // namespace
UNIT_TEST(OpeningHours2TimeTableSt)
{
{
OpeningHours oh("Mo-Fr 08:00-22:00");
@ -19,7 +29,7 @@ UNIT_TEST(ConvertOpeningHours)
auto const tt = tts.Front();
TEST(!tt.IsTwentyFourHours(), ());
TEST_EQUAL(tt.GetWorkingDays().size(), 5, ());
TEST_EQUAL(tt.GetOpeningDays().size(), 5, ());
TEST_EQUAL(tt.GetOpeningTime().GetStart().GetHourMinutes().GetHoursCount(), 8, ());
TEST_EQUAL(tt.GetOpeningTime().GetEnd().GetHourMinutes().GetHoursCount(), 22, ());
}
@ -34,7 +44,7 @@ UNIT_TEST(ConvertOpeningHours)
auto const tt = tts.Front();
TEST(!tt.IsTwentyFourHours(), ());
TEST_EQUAL(tt.GetWorkingDays().size(), 5, ());
TEST_EQUAL(tt.GetOpeningDays().size(), 5, ());
TEST_EQUAL(tt.GetOpeningTime().GetStart().GetHourMinutes().GetHoursCount(), 8, ());
TEST_EQUAL(tt.GetOpeningTime().GetEnd().GetHourMinutes().GetHoursCount(), 22, ());
@ -53,7 +63,7 @@ UNIT_TEST(ConvertOpeningHours)
auto const tt = tts.Front();
TEST(!tt.IsTwentyFourHours(), ());
TEST_EQUAL(tt.GetWorkingDays().size(), 5, ());
TEST_EQUAL(tt.GetOpeningDays().size(), 5, ());
TEST_EQUAL(tt.GetOpeningTime().GetStart().GetHourMinutes().GetHoursCount(), 8, ());
TEST_EQUAL(tt.GetOpeningTime().GetEnd().GetHourMinutes().GetHoursCount(), 22, ());
@ -77,13 +87,13 @@ UNIT_TEST(ConvertOpeningHours)
{
auto const tt = tts.Get(0);
TEST(!tt.IsTwentyFourHours(), ());
TEST_EQUAL(tt.GetWorkingDays().size(), 5, ());
TEST_EQUAL(tt.GetOpeningDays().size(), 5, ());
}
{
auto const tt = tts.Get(1);
TEST(!tt.IsTwentyFourHours(), ());
TEST_EQUAL(tt.GetWorkingDays().size(), 2, ());
TEST_EQUAL(tt.GetOpeningDays().size(), 2, ());
}
}
{
@ -121,26 +131,213 @@ UNIT_TEST(ConvertOpeningHours)
auto const tt = tts.Front();
TEST(!tt.IsTwentyFourHours(), ());
TEST_EQUAL(tt.GetWorkingDays().size(), 7, ());
TEST_EQUAL(tt.GetOpeningDays().size(), 7, ());
TEST_EQUAL(tt.GetOpeningTime().GetStart().GetHourMinutes().GetHoursCount(), 11, ());
TEST_EQUAL(tt.GetOpeningTime().GetEnd().GetHourMinutes().GetHoursCount(), 24, ());
}
{
OpeningHours oh("Mo-Fr 08:00-10:00; Su, Sa 13:00-22:00");
TEST(oh.IsValid(), ());
TimeTableSet tts;
TEST(ConvertOpeningHours("Mo-Fr 08:00-10:00\n Su, Sa 13:00-22:00", tts), ());
TEST(ConvertOpeningHours(oh, tts), ());
TEST_EQUAL(tts.Size(), 2, ());
{
auto const tt = tts.Get(0);
TEST(!tt.IsTwentyFourHours(), ());
TEST_EQUAL(tt.GetWorkingDays().size(), 5, ());
TEST_EQUAL(tt.GetOpeningDays().size(), 5, ());
}
{
auto const tt = tts.Get(1);
TEST(!tt.IsTwentyFourHours(), ());
TEST_EQUAL(tt.GetWorkingDays().size(), 2, ());
TEST_EQUAL(tt.GetOpeningDays().size(), 2, ());
}
}
{
OpeningHours oh("Mo-Fr 08:00-13:00,14:00-20:00; Sa 09:00-13:00,14:00-18:00; Su off");
TEST(oh.IsValid(), ());
TimeTableSet tts;
TEST(ConvertOpeningHours(oh, tts), ());
TEST_EQUAL(tts.Size(), 2, ());
{
auto const tt = tts.Get(0);
TEST(!tt.IsTwentyFourHours(), ());
TEST_EQUAL(tt.GetOpeningDays().size(), 5, ());
}
{
auto const tt = tts.Get(1);
TEST(!tt.IsTwentyFourHours(), ());
TEST_EQUAL(tt.GetOpeningDays().size(), 1, ());
}
}
}
UNIT_TEST(TimeTableSt2OpeningHours)
{
{
TimeTableSet tts;
auto tt = tts.Front();
TEST(tt.SetOpeningDays({
osmoh::Weekday::Monday,
osmoh::Weekday::Tuesday,
osmoh::Weekday::Wednesday,
osmoh::Weekday::Thursday,
osmoh::Weekday::Friday}), ());
tt.SetTwentyFourHours(false);
TEST(tt.SetOpeningTime({8_h, 22_h}), ());
TEST(tt.Commit(), ());
TEST_EQUAL(ToString(ConvertOpeningHours(tts)), "Mo-Fr 08:00-22:00", ());
}
{
TimeTableSet tts;
auto tt = tts.Front();
TEST(tt.SetOpeningDays({
osmoh::Weekday::Monday,
osmoh::Weekday::Tuesday,
osmoh::Weekday::Wednesday,
osmoh::Weekday::Thursday,
osmoh::Weekday::Friday}), ());
tt.SetTwentyFourHours(false);
TEST(tt.SetOpeningTime({8_h, 22_h}), ());
TEST(tt.AddExcludeTime({12_h, 13_h}), ());
TEST(tt.Commit(), ());
TEST_EQUAL(ToString(ConvertOpeningHours(tts)), "Mo-Fr 08:00-12:00, 13:00-22:00", ());
}
{
TimeTableSet tts;
auto tt = tts.Front();
TEST(tt.SetOpeningDays({
osmoh::Weekday::Monday,
osmoh::Weekday::Tuesday,
osmoh::Weekday::Wednesday,
osmoh::Weekday::Thursday,
osmoh::Weekday::Friday}), ());
tt.SetTwentyFourHours(false);
TEST(tt.SetOpeningTime({8_h, 22_h}), ());
TEST(tt.AddExcludeTime({10_h, 11_h}), ());
TEST(tt.AddExcludeTime({12_h + 30_min, 13_h}), ());
TEST(tt.Commit(), ());
TEST_EQUAL(ToString(ConvertOpeningHours(tts)), "Mo-Fr 08:00-10:00, 11:00-12:30, 13:00-22:00", ());
}
{
TimeTableSet tts;
{
auto tt = tts.Front();
TEST(tt.SetOpeningDays({
osmoh::Weekday::Monday,
osmoh::Weekday::Tuesday,
osmoh::Weekday::Wednesday,
osmoh::Weekday::Thursday}), ());
tt.SetTwentyFourHours(false);
TEST(tt.SetOpeningTime({8_h, 10_h}), ());
TEST(tt.Commit(), ());
}
{
TimeTable tt;
TEST(tt.SetOpeningDays({
osmoh::Weekday::Friday,
osmoh::Weekday::Saturday,
osmoh::Weekday::Sunday}), ());
tt.SetTwentyFourHours(false);
TEST(tt.SetOpeningTime({13_h, 22_h}), ());
TEST(tts.Append(tt), ());
}
TEST_EQUAL(ToString(ConvertOpeningHours(tts)), "Mo-Th 08:00-10:00; Fr-Su 13:00-22:00", ());
}
{
TimeTableSet tts;
{
auto tt = tts.Front();
TEST(tt.SetOpeningDays({
osmoh::Weekday::Monday,
osmoh::Weekday::Wednesday,
osmoh::Weekday::Friday}), ());
tt.SetTwentyFourHours(false);
TEST(tt.SetOpeningTime({8_h, 10_h}), ());
TEST(tt.Commit(), ());
}
{
TimeTable tt;
TEST(tt.SetOpeningDays({
osmoh::Weekday::Saturday,
osmoh::Weekday::Sunday}), ());
tt.SetTwentyFourHours(false);
TEST(tt.SetOpeningTime({13_h, 22_h}), ());
TEST(tts.Append(tt), ());
}
TEST_EQUAL(ToString(ConvertOpeningHours(tts)), "Mo, We, Fr 08:00-10:00; Sa-Su 13:00-22:00", ());
}
{
TimeTableSet tts;
auto tt = tts.Front();
TEST(tt.SetOpeningDays({
osmoh::Weekday::Sunday,
osmoh::Weekday::Monday,
osmoh::Weekday::Tuesday,
osmoh::Weekday::Wednesday,
osmoh::Weekday::Thursday,
osmoh::Weekday::Friday,
osmoh::Weekday::Saturday}), ());
tt.SetTwentyFourHours(false);
TEST(tt.SetOpeningTime({11_h, 24_h}), ());
TEST(tt.Commit(), ());
TEST_EQUAL(ToString(ConvertOpeningHours(tts)), "Mo-Su 11:00-24:00", ());
}
{
TimeTableSet tts;
{
auto tt = tts.Front();
TEST(tt.SetOpeningDays({
osmoh::Weekday::Monday,
osmoh::Weekday::Wednesday,
osmoh::Weekday::Thursday}), ());
tt.SetTwentyFourHours(false);
TEST(tt.SetOpeningTime({8_h, 20_h}), ());
TEST(tt.AddExcludeTime({13_h, 14_h}), ());
TEST(tt.Commit(), ());
}
{
TimeTable tt;
TEST(tt.SetOpeningDays({osmoh::Weekday::Saturday}), ());
tt.SetTwentyFourHours(false);
TEST(tt.SetOpeningTime({9_h, 18_h}), ());
TEST(tt.AddExcludeTime({13_h, 14_h}), ());
TEST(tts.Append(tt), ());
}
TEST_EQUAL(ToString(ConvertOpeningHours(tts)),
"Mo, We-Th 08:00-13:00, 14:00-20:00; "
"Sa 09:00-13:00, 14:00-18:00", ());
}
}

View file

@ -146,7 +146,7 @@ TimeTable TimeTable::GetPredefinedTimeTable()
return tt;
}
bool TimeTable::SetWorkingDays(TOpeningDays const & days)
bool TimeTable::SetOpeningDays(TOpeningDays const & days)
{
if (days.empty())
return false;
@ -296,7 +296,7 @@ TOpeningDays TimeTableSet::GetUnhandledDays() const
};
for (auto const tt : *this)
for (auto const day : tt.GetWorkingDays())
for (auto const day : tt.GetOpeningDays())
days.erase(day);
return days;
@ -309,7 +309,7 @@ TimeTable TimeTableSet::GetComplementTimeTable() const
// it has no effect.
tt.SetOpeningTime(tt.GetPredefinedOpeningTime());
tt.SetTwentyFourHours(true);
tt.SetWorkingDays(GetUnhandledDays());
tt.SetOpeningDays(GetUnhandledDays());
return tt;
}
@ -364,11 +364,11 @@ bool TimeTableSet::UpdateByIndex(TimeTableSet & ttSet, size_t const index)
// Remove all days of updated timetable from all other timetables.
TOpeningDays days;
set_difference(std::begin(ttSet[i].GetWorkingDays()), std::end(ttSet[i].GetWorkingDays()),
std::begin(updated.GetWorkingDays()), std::end(updated.GetWorkingDays()),
set_difference(std::begin(ttSet[i].GetOpeningDays()), std::end(ttSet[i].GetOpeningDays()),
std::begin(updated.GetOpeningDays()), std::end(updated.GetOpeningDays()),
inserter(days, std::end(days)));
if (!ttSet[i].SetWorkingDays(days))
if (!ttSet[i].SetOpeningDays(days))
return false;
}

View file

@ -20,8 +20,8 @@ public:
bool IsTwentyFourHours() const { return m_isTwentyFourHours; }
void SetTwentyFourHours(bool const on) { m_isTwentyFourHours = on; }
TOpeningDays const & GetWorkingDays() const { return m_weekdays; }
bool SetWorkingDays(TOpeningDays const & days);
TOpeningDays const & GetOpeningDays() const { return m_weekdays; }
bool SetOpeningDays(TOpeningDays const & days);
void AddWorkingDay(osmoh::Weekday const wd);
bool RemoveWorkingDay(osmoh::Weekday const wd);
@ -71,7 +71,8 @@ using TTimeTableProxy = TimeTableProxyBase<TimeTableSet>;
class TimeTableSet : vector<TimeTable>
{
public:
using vector<TimeTable>::vector;
using TBase = vector<TimeTable>;
using TBase::TBase;
TimeTableSet();
@ -91,9 +92,11 @@ public:
bool Replace(TimeTable const & tt, size_t const index);
TBase::const_iterator begin() const { return TBase::begin(); }
TBase::const_iterator end() const { return TBase::end(); }
private:
static bool UpdateByIndex(TimeTableSet & ttSet, size_t const index);
};
} // namespace ui
} // namespace editor

View file

@ -10,25 +10,25 @@ namespace
{
void SetUpWeekdays(osmoh::Weekdays const & wds, editor::ui::TimeTable & tt)
{
set<osmoh::Weekday> workingDays;
set<osmoh::Weekday> openingDays;
for (auto const & wd : wds.GetWeekdayRanges())
{
if (wd.HasSunday())
workingDays.insert(osmoh::Weekday::Sunday);
openingDays.insert(osmoh::Weekday::Sunday);
if (wd.HasMonday())
workingDays.insert(osmoh::Weekday::Monday);
openingDays.insert(osmoh::Weekday::Monday);
if (wd.HasTuesday())
workingDays.insert(osmoh::Weekday::Tuesday);
openingDays.insert(osmoh::Weekday::Tuesday);
if (wd.HasWednesday())
workingDays.insert(osmoh::Weekday::Wednesday);
openingDays.insert(osmoh::Weekday::Wednesday);
if (wd.HasThursday())
workingDays.insert(osmoh::Weekday::Thursday);
openingDays.insert(osmoh::Weekday::Thursday);
if (wd.HasFriday())
workingDays.insert(osmoh::Weekday::Friday);
openingDays.insert(osmoh::Weekday::Friday);
if (wd.HasSaturday())
workingDays.insert(osmoh::Weekday::Saturday);
openingDays.insert(osmoh::Weekday::Saturday);
}
tt.SetWorkingDays(workingDays);
tt.SetOpeningDays(openingDays);
}
void SetUpTimeTable(osmoh::TTimespans spans, editor::ui::TimeTable & tt)
@ -51,13 +51,108 @@ void SetUpTimeTable(osmoh::TTimespans spans, editor::ui::TimeTable & tt)
for (auto i = 0; i + 1 < spans.size(); ++i)
tt.AddExcludeTime({spans[i].GetEnd(), spans[i + 1].GetStart()});
}
int32_t WeekdayNumber(osmoh::Weekday const wd) { return static_cast<int32_t>(wd); }
constexpr uint32_t kDaysInWeek = 7;
int32_t NextWeekdayNumber(osmoh::Weekday const wd)
{
auto dayNumber = WeekdayNumber(wd);
return (dayNumber + kDaysInWeek) % kDaysInWeek + 1;
}
vector<osmoh::Weekday> RemoveInversion(editor::ui::TOpeningDays const & days)
{
vector<osmoh::Weekday> result(begin(days), end(days));
if (NextWeekdayNumber(result.back()) != WeekdayNumber(result.front()))
return result;
auto inversion = adjacent_find(begin(result), end(result),
[](osmoh::Weekday const a, osmoh::Weekday const b)
{
return NextWeekdayNumber(a) != WeekdayNumber(b) ||
a == osmoh::Weekday::Sunday;
});
if (inversion != end(result) && ++inversion != end(result))
rotate(begin(result), inversion, end(result));
return result;
}
using TWeekdays = vector<osmoh::Weekday>;
vector<TWeekdays> SplitIntoIntervals(editor::ui::TOpeningDays const & days)
{
vector<TWeekdays> result;
auto const & noInversionDays = RemoveInversion(days);
auto previous = *begin(noInversionDays);
result.push_back({previous});
for (auto it = next(begin(noInversionDays)); it != end(noInversionDays); ++it)
{
if (NextWeekdayNumber(previous) != WeekdayNumber(*it))
result.push_back({});
result.back().push_back(*it);
previous = *it;
}
return result;
}
osmoh::Weekdays MakeWeekdays(editor::ui::TimeTable const & tt)
{
osmoh::Weekdays wds;
for (auto const & daysInterval : SplitIntoIntervals(tt.GetOpeningDays()))
{
osmoh::WeekdayRange wdr;
wdr.SetStart(*begin(daysInterval));
if (daysInterval.size() > 1)
wdr.SetEnd(*(prev(end(daysInterval))));
wds.AddWeekdayRange(wdr);
}
return wds;
}
osmoh::TTimespans MakeTimespans(editor::ui::TimeTable const & tt)
{
if (tt.IsTwentyFourHours())
return {};
auto const & excludeTime = tt.GetExcludeTime();
if (excludeTime.empty())
return {tt.GetOpeningTime()};
osmoh::TTimespans spans{{tt.GetOpeningTime().GetStart(), excludeTime[0].GetStart()}};
for (auto i = 0; i + 1 < excludeTime.size(); ++i)
spans.emplace_back(excludeTime[i].GetEnd(), excludeTime[i + 1].GetStart());
spans.emplace_back(excludeTime.back().GetEnd(), tt.GetOpeningTime().GetEnd());
return spans;
}
} // namespace
namespace editor
{
osmoh::OpeningHours ConvertOpeningHours(ui::TimeTableSet const & tt)
osmoh::OpeningHours ConvertOpeningHours(ui::TimeTableSet const & tts)
{
return string(); // TODO(mgsergio): Implement me.
osmoh::TRuleSequences rule;
for (auto const & tt : tts)
{
osmoh::RuleSequence rulePart;
rulePart.SetWeekdays(MakeWeekdays(tt));
rulePart.SetTimes(MakeTimespans(tt));
rule.push_back(rulePart);
}
return rule;
}
bool ConvertOpeningHours(osmoh::OpeningHours const & oh, ui::TimeTableSet & tts)
@ -77,6 +172,14 @@ bool ConvertOpeningHours(osmoh::OpeningHours const & oh, ui::TimeTableSet & tts)
{
ui::TimeTable tt;
// TODO(mgsergio): We don't handle cases with speciffic time off.
// I.e. Mo-Fr 08-20; Fr 18:00-17:00 off.
// Can be implemented later.
if (rulePart.GetModifier() == osmoh::RuleSequence::Modifier::Closed ||
rulePart.GetModifier() == osmoh::RuleSequence::Modifier::Unknown ||
rulePart.GetModifier() == osmoh::RuleSequence::Modifier::Comment)
continue;
if (rulePart.HasWeekdays())
SetUpWeekdays(rulePart.GetWeekdays(), tt);
@ -98,10 +201,4 @@ bool ConvertOpeningHours(osmoh::OpeningHours const & oh, ui::TimeTableSet & tts)
return true;
}
bool ConvertOpeningHours(string oh, ui::TimeTableSet & tts)
{
replace(begin(oh), end(oh), '\n', ';');
return ConvertOpeningHours(osmoh::OpeningHours(oh), tts);
}
} // namespace editor

View file

@ -230,9 +230,9 @@ using namespace osmoh;
- (void)addSelectedDay:(Weekday)day
{
TTimeTableProxy timeTable = [self getTimeTableProxy];
TOpeningDays openingDays(timeTable.GetWorkingDays());
TOpeningDays openingDays(timeTable.GetOpeningDays());
openingDays.insert(day);
timeTable.SetWorkingDays(openingDays);
timeTable.SetOpeningDays(openingDays);
timeTable.Commit();
[self refresh:YES];
}
@ -240,9 +240,9 @@ using namespace osmoh;
- (void)removeSelectedDay:(Weekday)day
{
TTimeTableProxy timeTable = [self getTimeTableProxy];
TOpeningDays openingDays(timeTable.GetWorkingDays());
TOpeningDays openingDays(timeTable.GetOpeningDays());
openingDays.erase(day);
timeTable.SetWorkingDays(openingDays);
timeTable.SetOpeningDays(openingDays);
timeTable.Commit();
[self refresh:YES];
}
@ -250,7 +250,7 @@ using namespace osmoh;
- (BOOL)containsSelectedDay:(Weekday)day
{
TTimeTableProxy timeTable = [self getTimeTableProxy];
TOpeningDays const & openingDays = timeTable.GetWorkingDays();
TOpeningDays const & openingDays = timeTable.GetOpeningDays();
return openingDays.find(day) != openingDays.end();
}