From 92f9290839ba4631c762404465cae1cea22b525a Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Thu, 30 Jul 2020 10:50:03 +0300 Subject: [PATCH] [booking] block availability endpoint is fixed ("room" parameter is requred now). --- .../jni/com/mapswithme/maps/SearchEngine.cpp | 16 +-- .../Maps/UI/Search/Filters/MWMHotelParams.mm | 11 +- map/framework.cpp | 2 +- map/framework.hpp | 2 +- partners_api/CMakeLists.txt | 2 + partners_api/booking_api.cpp | 3 +- partners_api/booking_availability_params.cpp | 72 +----------- partners_api/booking_availability_params.hpp | 36 +----- partners_api/booking_block_params.cpp | 18 ++- partners_api/booking_block_params.hpp | 4 +- partners_api/booking_ordering_params.cpp | 106 ++++++++++++++++++ partners_api/booking_ordering_params.hpp | 56 +++++++++ partners_api/booking_params_base.hpp | 12 +- .../partners_api_tests/booking_tests.cpp | 12 +- .../partners_api.xcodeproj/project.pbxproj | 8 ++ 15 files changed, 217 insertions(+), 143 deletions(-) create mode 100644 partners_api/booking_ordering_params.cpp create mode 100644 partners_api/booking_ordering_params.hpp diff --git a/android/jni/com/mapswithme/maps/SearchEngine.cpp b/android/jni/com/mapswithme/maps/SearchEngine.cpp index 1fb947815d..5f55e63b9e 100644 --- a/android/jni/com/mapswithme/maps/SearchEngine.cpp +++ b/android/jni/com/mapswithme/maps/SearchEngine.cpp @@ -527,25 +527,27 @@ public: if (!m_initialized || bookingFilterParams == nullptr) return result; + auto & orderingParams = result.m_orderingParams; + jlong const jcheckin = env->GetLongField(bookingFilterParams, m_checkinMillisecId) / 1000; - result.m_checkin = - booking::AvailabilityParams::Clock::from_time_t(static_cast(jcheckin)); + orderingParams.m_checkin = + booking::OrderingParams::Clock::from_time_t(static_cast(jcheckin)); jlong const jcheckout = env->GetLongField(bookingFilterParams, m_checkoutMillisecId) / 1000; - result.m_checkout = - booking::AvailabilityParams::Clock::from_time_t(static_cast(jcheckout)); + orderingParams.m_checkout = + booking::OrderingParams::Clock::from_time_t(static_cast(jcheckout)); jobjectArray const jrooms = static_cast(env->GetObjectField(bookingFilterParams, m_roomsId)); ASSERT(jrooms, ("Rooms must be non-null!")); auto const length = static_cast(env->GetArrayLength(jrooms)); - result.m_rooms.resize(length); + orderingParams.m_rooms.resize(length); for (size_t i = 0; i < length; ++i) { jobject jroom = env->GetObjectArrayElement(jrooms, static_cast(i)); - booking::AvailabilityParams::Room room; + booking::OrderingParams::Room room; room.SetAdultsCount(static_cast(env->GetIntField(jroom, m_roomAdultsCountId))); auto const childrenObject = env->GetObjectField(jroom, m_roomAgeOfChildrenId); @@ -564,7 +566,7 @@ public: room.SetAgeOfChildren(ageOfChildren); } - result.m_rooms[i] = move(room); + orderingParams.m_rooms[i] = move(room); } return result; } diff --git a/iphone/Maps/UI/Search/Filters/MWMHotelParams.mm b/iphone/Maps/UI/Search/Filters/MWMHotelParams.mm index 244ce3729e..5ad2dedb7f 100644 --- a/iphone/Maps/UI/Search/Filters/MWMHotelParams.mm +++ b/iphone/Maps/UI/Search/Filters/MWMHotelParams.mm @@ -122,7 +122,7 @@ unsigned makeMask(std::unordered_set const &items) } - (booking::filter::Params)availabilityParams { - using Clock = booking::AvailabilityParams::Clock; + using Clock = booking::OrderingParams::Clock; booking::AvailabilityParams params; if (Platform::IsConnected()) { @@ -148,16 +148,17 @@ unsigned makeMask(std::unordered_set const &items) i += 1; } - std::vector filterRooms; + std::vector filterRooms; for (Room *room : rooms) { std::vector agesOfChildren(room.children, kAgeOfChild); agesOfChildren.insert(agesOfChildren.end(), room.infants, kAgeOfInfant); filterRooms.emplace_back(room.adults, agesOfChildren); } - params.m_rooms = filterRooms; - params.m_checkin = Clock::from_time_t(self.checkInDate.timeIntervalSince1970); - params.m_checkout = Clock::from_time_t(self.checkOutDate.timeIntervalSince1970); + auto &orderingParams = params.m_orderingParams; + orderingParams.m_rooms = filterRooms; + orderingParams.m_checkin = Clock::from_time_t(self.checkInDate.timeIntervalSince1970); + orderingParams.m_checkout = Clock::from_time_t(self.checkOutDate.timeIntervalSince1970); } return {std::make_shared(params), {}}; } diff --git a/map/framework.cpp b/map/framework.cpp index 59264b356b..aa6f785b28 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -4288,7 +4288,7 @@ void Framework::OnBookingFilterParamsUpdate(booking::filter::Tasks const & filte } } -booking::AvailabilityParams Framework::GetLastBookingAvailabilityParams() const +booking::AvailabilityParams const & Framework::GetLastBookingAvailabilityParams() const { return m_bookingAvailabilityParams; } diff --git a/map/framework.hpp b/map/framework.hpp index bcc3a0e7cf..7f5722762a 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -894,7 +894,7 @@ public: std::vector && featureIds) override; void OnBookingFilterParamsUpdate(booking::filter::Tasks const & filterTasks) override; - booking::AvailabilityParams GetLastBookingAvailabilityParams() const; + booking::AvailabilityParams const & GetLastBookingAvailabilityParams() const; private: // m_discoveryManager must be bellow m_searchApi, m_localsApi diff --git a/partners_api/CMakeLists.txt b/partners_api/CMakeLists.txt index 5672693795..0d82630023 100644 --- a/partners_api/CMakeLists.txt +++ b/partners_api/CMakeLists.txt @@ -35,6 +35,8 @@ set( booking_availability_params.hpp booking_block_params.cpp booking_block_params.hpp + booking_ordering_params.cpp + booking_ordering_params.hpp booking_params_base.hpp freenow_api.cpp freenow_api.hpp diff --git a/partners_api/booking_api.cpp b/partners_api/booking_api.cpp index d3694a8be1..3a589cb8bf 100644 --- a/partners_api/booking_api.cpp +++ b/partners_api/booking_api.cpp @@ -379,8 +379,9 @@ string ApplyAvailabilityParamsDeep(string const & url, AvailabilityParams const { auto p = params.Get(kAvailabilityParamsForDeepLink); + auto & orderingParams = params.m_orderingParams; auto const sum = std::accumulate( - params.m_rooms.cbegin(), params.m_rooms.cend(), 0 /* sum start value */, + orderingParams.m_rooms.cbegin(), orderingParams.m_rooms.cend(), 0 /* sum start value */, [](auto const s, auto const & room) { return s + room.GetAdultsCount(); }); p.emplace_back("numberOfGuests", std::to_string(sum)); diff --git a/partners_api/booking_availability_params.cpp b/partners_api/booking_availability_params.cpp index 57891f623b..f43cfa697c 100644 --- a/partners_api/booking_availability_params.cpp +++ b/partners_api/booking_availability_params.cpp @@ -20,86 +20,22 @@ bool IsAcceptedByFilter(booking::AvailabilityParams::UrlFilter const & filter, namespace booking { -AvailabilityParams::Room::Room(uint8_t adultsCount, std::vector const & ageOfChildren) - : m_adultsCount(adultsCount), m_ageOfChildren(ageOfChildren) -{ -} - -void AvailabilityParams::Room::SetAdultsCount(uint8_t adultsCount) -{ - m_adultsCount = adultsCount; -} - -void AvailabilityParams::Room::SetAgeOfChildren(std::vector const & ageOfChildren) -{ - m_ageOfChildren = ageOfChildren; -} - -uint8_t AvailabilityParams::Room::GetAdultsCount() const -{ - return m_adultsCount; -} - -std::vector const & AvailabilityParams::Room::GetAgeOfChildren() const -{ - return m_ageOfChildren; -} - -std::string AvailabilityParams::Room::ToString() const -{ - static std::string const kAdult = "A"; - std::vector adults(m_adultsCount, kAdult); - std::string children = - m_ageOfChildren.empty() ? "" : "," + strings::JoinAny(m_ageOfChildren, ',', strings::ToStringConverter()); - - std::ostringstream os; - os << strings::JoinStrings(adults, ',') << children; - - return os.str(); -} - -bool AvailabilityParams::Room::operator!=(AvailabilityParams::Room const & rhs) const -{ - return m_adultsCount != rhs.m_adultsCount || m_ageOfChildren != rhs.m_ageOfChildren; -} - -bool AvailabilityParams::Room::operator==(AvailabilityParams::Room const & rhs) const -{ - return !this->operator!=(rhs); -} - // static AvailabilityParams AvailabilityParams::MakeDefault() { AvailabilityParams result; - // Use tomorrow and day after tomorrow by default. - result.m_checkin = Clock::now(); - result.m_checkout = Clock::now() + std::chrono::hours(24); - // Use two adults without children. - result.m_rooms = {{2, {}}}; + result.m_orderingParams = OrderingParams::MakeDefault(); return result; } url::Params AvailabilityParams::Get(UrlFilter const & filter /* = {} */) const { - url::Params result; + url::Params result = m_orderingParams.Get(); if (IsAcceptedByFilter(filter, "hotel_ids")) result.emplace_back("hotel_ids", strings::JoinStrings(m_hotelIds, ',')); - if (IsAcceptedByFilter(filter, "checkin")) - result.emplace_back("checkin", FormatTime(m_checkin)); - - if (IsAcceptedByFilter(filter, "checkout")) - result.emplace_back("checkout", FormatTime(m_checkout)); - - if (IsAcceptedByFilter(filter, "room")) - { - for (size_t i = 0; i < m_rooms.size(); ++i) - result.emplace_back("room" + std::to_string(i + 1), m_rooms[i].ToString()); - } - if (m_minReviewScore != 0.0 && IsAcceptedByFilter(filter, "min_review_score")) result.emplace_back("min_review_score", std::to_string(m_minReviewScore)); @@ -114,7 +50,7 @@ url::Params AvailabilityParams::Get(UrlFilter const & filter /* = {} */) const bool AvailabilityParams::IsEmpty() const { - return m_checkin == Time() || m_checkout == Time() || m_rooms.empty(); + return m_orderingParams.IsEmpty(); } bool AvailabilityParams::Equals(ParamsBase const & rhs) const @@ -124,7 +60,7 @@ bool AvailabilityParams::Equals(ParamsBase const & rhs) const bool AvailabilityParams::Equals(AvailabilityParams const & rhs) const { - return m_checkin == rhs.m_checkin && m_checkout == rhs.m_checkout && m_rooms == rhs.m_rooms && + return m_orderingParams.Equals(rhs.m_orderingParams) && m_minReviewScore == rhs.m_minReviewScore && m_stars == rhs.m_stars && m_dealsOnly == rhs.m_dealsOnly; } diff --git a/partners_api/booking_availability_params.hpp b/partners_api/booking_availability_params.hpp index e7d50b689e..e73cbd4339 100644 --- a/partners_api/booking_availability_params.hpp +++ b/partners_api/booking_availability_params.hpp @@ -1,5 +1,6 @@ #pragma once +#include "partners_api/booking_ordering_params.hpp" #include "partners_api/booking_params_base.hpp" #include "coding/url.hpp" @@ -15,29 +16,7 @@ namespace booking /// [m_hotelIds], [m_checkin], [m_checkout], [m_rooms] are required. struct AvailabilityParams : public ParamsBase { - struct Room - { - Room() = default; - Room(uint8_t adultsCount, std::vector const & ageOfChildren); - - void SetAdultsCount(uint8_t adultsCount); - void SetAgeOfChildren(std::vector const & ageOfChildren); - - uint8_t GetAdultsCount() const; - std::vector const & GetAgeOfChildren() const; - - std::string ToString() const; - - bool operator!=(Room const & rhs) const; - bool operator==(Room const & rhs) const; - private: - uint8_t m_adultsCount = 0; - // No children by default. - std::vector m_ageOfChildren; - }; - using Hotels = std::vector; - using Rooms = std::vector; using Stars = std::vector; static AvailabilityParams MakeDefault(); @@ -54,15 +33,10 @@ struct AvailabilityParams : public ParamsBase /// Limit the result list to the specified hotels where they have availability for the /// specified guests and dates. Hotels m_hotelIds; - /// The arrival date. Must be within 360 days in the future and in the format yyyy-mm-dd. - Time m_checkin; - /// The departure date. Must be later than [m_checkin]. Must be between 1 and 30 days after - /// [m_checkin]. Must be within 360 days in the future and in the format yyyy-mm-dd. - Time m_checkout; - /// Each room is comma-separated array of guests to stay in this room where "A" represents an - /// adult and an integer represents a child. eg room1=A,A,4 would be a room with 2 adults and 1 - /// four year-old child. Child age numbers are 0..17. - Rooms m_rooms; + + // Arrival/deparure dates and rooms. + // For detailed description see booking::OrderingParams declaration. + OrderingParams m_orderingParams; /// Show only hotels with review_score >= that. min_review_score should be in the range 1 to 10. /// Values are rounded down: min_review_score 7.8 will result in properties with review scores /// of 7 and up. diff --git a/partners_api/booking_block_params.cpp b/partners_api/booking_block_params.cpp index 561adb0808..ee1655aa2e 100644 --- a/partners_api/booking_block_params.cpp +++ b/partners_api/booking_block_params.cpp @@ -10,20 +10,18 @@ namespace booking BlockParams BlockParams::MakeDefault() { BlockParams result; - // Use tomorrow and day after tomorrow by default. - result.m_checkin = Clock::now(); - result.m_checkout = Clock::now() + std::chrono::hours(24); + result.m_orderingParams = OrderingParams::MakeDefaultMinPrice(); // Information about sales by default. - result.m_extras = {"deal_smart", "deal_lastm", "photos"}; + result.m_extras = {"deal_smart", "deal_lastm"}; return result; } url::Params BlockParams::Get() const { - url::Params params = {{"hotel_ids", m_hotelId}, - {"checkin", FormatTime(m_checkin)}, - {"checkout", FormatTime(m_checkout)}}; + url::Params params = m_orderingParams.Get(); + + params.emplace_back("hotel_ids", m_hotelId); if (!m_currency.empty()) params.emplace_back("currency", m_currency); @@ -39,7 +37,7 @@ url::Params BlockParams::Get() const bool BlockParams::IsEmpty() const { - return m_checkin == Time() || m_checkout == Time(); + return m_orderingParams.IsEmpty(); } bool BlockParams::Equals(ParamsBase const & rhs) const @@ -49,8 +47,8 @@ bool BlockParams::Equals(ParamsBase const & rhs) const bool BlockParams::Equals(BlockParams const & rhs) const { - return m_checkin == rhs.m_checkin && m_checkout == rhs.m_checkout && - m_currency == rhs.m_currency && m_extras == rhs.m_extras && m_language == rhs.m_language; + return m_orderingParams.Equals(rhs.m_orderingParams) && m_currency == rhs.m_currency && + m_extras == rhs.m_extras && m_language == rhs.m_language; } void BlockParams::Set(ParamsBase const & src) diff --git a/partners_api/booking_block_params.hpp b/partners_api/booking_block_params.hpp index 6f987907d5..9fec9592dd 100644 --- a/partners_api/booking_block_params.hpp +++ b/partners_api/booking_block_params.hpp @@ -1,5 +1,6 @@ #pragma once +#include "partners_api/booking_ordering_params.hpp" #include "partners_api/booking_params_base.hpp" #include "coding/url.hpp" @@ -24,9 +25,8 @@ struct BlockParams : public ParamsBase void Set(ParamsBase const & src) override; std::string m_hotelId; + OrderingParams m_orderingParams; std::string m_currency; - Time m_checkin; - Time m_checkout; Extras m_extras; std::string m_language; }; diff --git a/partners_api/booking_ordering_params.cpp b/partners_api/booking_ordering_params.cpp new file mode 100644 index 0000000000..2fd6efec1b --- /dev/null +++ b/partners_api/booking_ordering_params.cpp @@ -0,0 +1,106 @@ +#include "partners_api/booking_ordering_params.hpp" + +#include "partners_api/utils.hpp" + +#include "base/assert.hpp" +#include "base/string_utils.hpp" + +namespace booking +{ +OrderingParams::Room::Room(uint8_t adultsCount, std::vector const & ageOfChildren) + : m_adultsCount(adultsCount), m_ageOfChildren(ageOfChildren) +{ +} + +void OrderingParams::Room::SetAdultsCount(uint8_t adultsCount) +{ + m_adultsCount = adultsCount; +} + +void OrderingParams::Room::SetAgeOfChildren(std::vector const & ageOfChildren) +{ + m_ageOfChildren = ageOfChildren; +} + +uint8_t OrderingParams::Room::GetAdultsCount() const +{ + return m_adultsCount; +} + +std::vector const & OrderingParams::Room::GetAgeOfChildren() const +{ + return m_ageOfChildren; +} + +std::string OrderingParams::Room::ToString() const +{ + static std::string const kAdult = "A"; + std::vector adults(m_adultsCount, kAdult); + std::string children = + m_ageOfChildren.empty() ? "" : "," + strings::JoinAny(m_ageOfChildren, ',', strings::ToStringConverter()); + + std::ostringstream os; + os << strings::JoinStrings(adults, ',') << children; + + return os.str(); +} + +bool OrderingParams::Room::operator!=(OrderingParams::Room const & rhs) const +{ + return m_adultsCount != rhs.m_adultsCount || m_ageOfChildren != rhs.m_ageOfChildren; +} + +bool OrderingParams::Room::operator==(OrderingParams::Room const & rhs) const +{ + return !this->operator!=(rhs); +} + +bool OrderingParams::IsEmpty() const +{ + return m_checkin == Time() || m_checkout == Time() || m_rooms.empty(); +} + +bool OrderingParams::Equals(OrderingParams const & rhs) const +{ + return m_checkin == rhs.m_checkin && m_checkout == rhs.m_checkout && m_rooms == rhs.m_rooms; +} + +url::Params OrderingParams::Get() const +{ + ASSERT(!IsEmpty(), ()); + + url::Params result; + result.reserve(2 + m_rooms.size()); + result.emplace_back("checkin", partners_api::FormatTime(m_checkin, "%Y-%m-%d")); + result.emplace_back("checkout", partners_api::FormatTime(m_checkout, "%Y-%m-%d")); + for (size_t i = 0; i < m_rooms.size(); ++i) + result.emplace_back("room" + std::to_string(i + 1), m_rooms[i].ToString()); + + return result; +} + +// static +OrderingParams OrderingParams::MakeDefault() +{ + OrderingParams result; + // Use tomorrow and day after tomorrow by default. + result.m_checkin = Clock::now(); + result.m_checkout = Clock::now() + std::chrono::hours(24); + // Use two adults without children. + result.m_rooms = {{2, {}}}; + + return result; +} + +OrderingParams OrderingParams::MakeDefaultMinPrice() +{ + OrderingParams result; + // Use tomorrow and day after tomorrow by default. + result.m_checkin = Clock::now(); + result.m_checkout = Clock::now() + std::chrono::hours(24); + // Use one adult without children. + result.m_rooms = {{1, {}}}; + + return result; +} +} // namespace booking diff --git a/partners_api/booking_ordering_params.hpp b/partners_api/booking_ordering_params.hpp new file mode 100644 index 0000000000..2e8a2fd2b2 --- /dev/null +++ b/partners_api/booking_ordering_params.hpp @@ -0,0 +1,56 @@ +#pragma once + +#include "coding/url.hpp" + +#include +#include + +namespace booking +{ +struct OrderingParams +{ + struct Room + { + Room() = default; + Room(uint8_t adultsCount, std::vector const & ageOfChildren); + + void SetAdultsCount(uint8_t adultsCount); + void SetAgeOfChildren(std::vector const & ageOfChildren); + + uint8_t GetAdultsCount() const; + std::vector const & GetAgeOfChildren() const; + + std::string ToString() const; + + bool operator!=(Room const & rhs) const; + bool operator==(Room const & rhs) const; + + private: + uint8_t m_adultsCount = 0; + // No children by default. + std::vector m_ageOfChildren; + }; + + using Clock = std::chrono::system_clock; + using Time = Clock::time_point; + using Rooms = std::vector; + + bool IsEmpty() const; + bool Equals(OrderingParams const & rhs) const; + + url::Params Get() const; + + static OrderingParams MakeDefault(); + static OrderingParams MakeDefaultMinPrice(); + + /// The arrival date. Must be within 360 days in the future and in the format yyyy-mm-dd. + Time m_checkin; + /// The departure date. Must be later than [m_checkin]. Must be between 1 and 30 days after + /// [m_checkin]. Must be within 360 days in the future and in the format yyyy-mm-dd. + Time m_checkout; + /// Each room is comma-separated array of guests to stay in this room where "A" represents an + /// adult and an integer represents a child. eg room1=A,A,4 would be a room with 2 adults and 1 + /// four year-old child. Child age numbers are 0..17. + Rooms m_rooms; +}; +} // namespace booking diff --git a/partners_api/booking_params_base.hpp b/partners_api/booking_params_base.hpp index c2c275662b..c0ad15b39a 100644 --- a/partners_api/booking_params_base.hpp +++ b/partners_api/booking_params_base.hpp @@ -1,8 +1,6 @@ #pragma once -#include "partners_api/utils.hpp" - -#include "base/macros.hpp" +#include "base/assert.hpp" #include @@ -13,14 +11,6 @@ struct BlockParams; struct ParamsBase { - using Clock = std::chrono::system_clock; - using Time = Clock::time_point; - - static std::string FormatTime(Time p) - { - return partners_api::FormatTime(p, "%Y-%m-%d"); - } - virtual ~ParamsBase() = default; virtual bool IsEmpty() const = 0; diff --git a/partners_api/partners_api_tests/booking_tests.cpp b/partners_api/partners_api_tests/booking_tests.cpp index 6615f6949d..e93532017c 100644 --- a/partners_api/partners_api_tests/booking_tests.cpp +++ b/partners_api/partners_api_tests/booking_tests.cpp @@ -39,9 +39,9 @@ UNIT_TEST(Booking_HotelAvailability) { AvailabilityParams params; params.m_hotelIds = {"98251"}; // booking hotel id for testing - params.m_rooms = {{2, {}}}; - params.m_checkin = std::chrono::system_clock::now() + std::chrono::hours(24); - params.m_checkout = std::chrono::system_clock::now() + std::chrono::hours(24 * 7); + params.m_orderingParams.m_rooms = {{2, {}}}; + params.m_orderingParams.m_checkin = std::chrono::system_clock::now() + std::chrono::hours(24); + params.m_orderingParams.m_checkout = std::chrono::system_clock::now() + std::chrono::hours(24 * 7); params.m_stars = {"4", "5"}; std::string result; TEST(RawApi::HotelAvailability(params, result), ()); @@ -124,9 +124,9 @@ UNIT_CLASS_TEST(AsyncGuiThreadBooking, GetHotelAvailability) { AvailabilityParams params; params.m_hotelIds = {"0"}; // Internal hotel id for testing. - params.m_rooms = {{2, {}}}; - params.m_checkin = std::chrono::system_clock::now() + std::chrono::hours(24); - params.m_checkout = std::chrono::system_clock::now() + std::chrono::hours(24 * 7); + params.m_orderingParams.m_rooms = {{2, {}}}; + params.m_orderingParams.m_checkin = std::chrono::system_clock::now() + std::chrono::hours(24); + params.m_orderingParams.m_checkout = std::chrono::system_clock::now() + std::chrono::hours(24 * 7); params.m_stars = {"4"}; Api api; HotelsWithExtras result; diff --git a/xcode/partners_api/partners_api.xcodeproj/project.pbxproj b/xcode/partners_api/partners_api.xcodeproj/project.pbxproj index e751151ab7..21aca02666 100644 --- a/xcode/partners_api/partners_api.xcodeproj/project.pbxproj +++ b/xcode/partners_api/partners_api.xcodeproj/project.pbxproj @@ -74,6 +74,8 @@ 3DBD7C2124251C1100ED9FE8 /* skyeng_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DBD7C1B24251C1000ED9FE8 /* skyeng_tests.cpp */; }; 3DBD7C2224251C1100ED9FE8 /* bookmark_catalog_ads_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DBD7C1C24251C1100ED9FE8 /* bookmark_catalog_ads_tests.cpp */; }; 3DBD7C2324251C1100ED9FE8 /* tinkoff_airlines_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DBD7C1D24251C1100ED9FE8 /* tinkoff_airlines_tests.cpp */; }; + 3DCAC69424D1CFE800518E8B /* booking_ordering_params.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3DCAC69224D1CFE800518E8B /* booking_ordering_params.hpp */; }; + 3DCAC69524D1CFE900518E8B /* booking_ordering_params.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DCAC69324D1CFE800518E8B /* booking_ordering_params.cpp */; }; 3DCD415320DAB33700143533 /* booking_block_params.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DCD415120DAB33700143533 /* booking_block_params.cpp */; }; 3DCD415420DAB33700143533 /* booking_block_params.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3DCD415220DAB33700143533 /* booking_block_params.hpp */; }; 3DF01C2D20652463005DDF8C /* taxi_places.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3DF01C2A20652462005DDF8C /* taxi_places.cpp */; }; @@ -191,6 +193,8 @@ 3DBD7C1B24251C1000ED9FE8 /* skyeng_tests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = skyeng_tests.cpp; sourceTree = ""; }; 3DBD7C1C24251C1100ED9FE8 /* bookmark_catalog_ads_tests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bookmark_catalog_ads_tests.cpp; sourceTree = ""; }; 3DBD7C1D24251C1100ED9FE8 /* tinkoff_airlines_tests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinkoff_airlines_tests.cpp; sourceTree = ""; }; + 3DCAC69224D1CFE800518E8B /* booking_ordering_params.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = booking_ordering_params.hpp; sourceTree = ""; }; + 3DCAC69324D1CFE800518E8B /* booking_ordering_params.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = booking_ordering_params.cpp; sourceTree = ""; }; 3DCD415120DAB33700143533 /* booking_block_params.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = booking_block_params.cpp; sourceTree = ""; }; 3DCD415220DAB33700143533 /* booking_block_params.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = booking_block_params.hpp; sourceTree = ""; }; 3DF01C2A20652462005DDF8C /* taxi_places.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = taxi_places.cpp; sourceTree = ""; }; @@ -332,6 +336,8 @@ F6B5363B1DA520B20067EEA5 /* partners_api */ = { isa = PBXGroup; children = ( + 3DCAC69324D1CFE800518E8B /* booking_ordering_params.cpp */, + 3DCAC69224D1CFE800518E8B /* booking_ordering_params.hpp */, 3D035CA1245195E600C21B57 /* guides_on_map_api.cpp */, 3D035CA0245195E500C21B57 /* guides_on_map_api.hpp */, 3DBD7BE524251BF000ED9FE8 /* ads */, @@ -486,6 +492,7 @@ 3D035CA2245195E600C21B57 /* guides_on_map_api.hpp in Headers */, 3DBD7C0424251BF000ED9FE8 /* mopub_ads.hpp in Headers */, 3DBD7C1224251BF000ED9FE8 /* ads_utils.hpp in Headers */, + 3DCAC69424D1CFE800518E8B /* booking_ordering_params.hpp in Headers */, 3DBD7C0624251BF000ED9FE8 /* ads_engine.hpp in Headers */, 3DBD7C2024251C1100ED9FE8 /* download_on_map_container_delegate.hpp in Headers */, 3DF01C2E20652463005DDF8C /* taxi_places.hpp in Headers */, @@ -608,6 +615,7 @@ 3DCD415320DAB33700143533 /* booking_block_params.cpp in Sources */, F6B536421DA520E40067EEA5 /* uber_api.cpp in Sources */, F6539537207FBED70057B97C /* taxi_places_loader.cpp in Sources */, + 3DCAC69524D1CFE900518E8B /* booking_ordering_params.cpp in Sources */, 4566605020D91FEE0085E8C1 /* megafon_countries.cpp in Sources */, 3DBD7C1024251BF000ED9FE8 /* ads_engine.cpp in Sources */, 3DFEBF9B1EFBFC1500317D5C /* taxi_engine.cpp in Sources */,