Welcome to mirror list, hosted at ThFree Co, Russian Federation.

booking_availability_params.cpp « partners_api - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: f43cfa697c93913c2cb19a29ae3b9c587f00c365 (plain)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "partners_api/booking_availability_params.hpp"

#include "base/string_utils.hpp"

#include <sstream>

using namespace base;

namespace
{
bool IsAcceptedByFilter(booking::AvailabilityParams::UrlFilter const & filter,
                        std::string const & value)
{
  if (filter.empty())
    return true;

  return filter.find(value) != filter.cend();
}
}  // namespace

namespace booking
{
// static
AvailabilityParams AvailabilityParams::MakeDefault()
{
  AvailabilityParams result;
  result.m_orderingParams = OrderingParams::MakeDefault();

  return result;
}

url::Params AvailabilityParams::Get(UrlFilter const & filter /* = {} */) const
{
  url::Params result = m_orderingParams.Get();

  if (IsAcceptedByFilter(filter, "hotel_ids"))
    result.emplace_back("hotel_ids", strings::JoinStrings(m_hotelIds, ','));

  if (m_minReviewScore != 0.0 && IsAcceptedByFilter(filter, "min_review_score"))
    result.emplace_back("min_review_score", std::to_string(m_minReviewScore));

  if (!m_stars.empty() && IsAcceptedByFilter(filter, "stars"))
    result.emplace_back("stars", strings::JoinStrings(m_stars, ','));

  if (m_dealsOnly)
    result.emplace_back("show_only_deals", "smart,lastm");

  return result;
}

bool AvailabilityParams::IsEmpty() const
{
  return m_orderingParams.IsEmpty();
}

bool AvailabilityParams::Equals(ParamsBase const & rhs) const
{
  return rhs.Equals(*this);
}

bool AvailabilityParams::Equals(AvailabilityParams const & rhs) const
{
  return m_orderingParams.Equals(rhs.m_orderingParams) &&
         m_minReviewScore == rhs.m_minReviewScore && m_stars == rhs.m_stars &&
         m_dealsOnly == rhs.m_dealsOnly;
}

void AvailabilityParams::Set(ParamsBase const & src)
{
  src.CopyTo(*this);
}
}  // namespace booking