diff --git a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePagePreviewData.h b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePagePreviewData.h index 4896bc8957..b5914fea2c 100644 --- a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePagePreviewData.h +++ b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePagePreviewData.h @@ -31,6 +31,7 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, readonly, nullable) NSString *subtitle; @property(nonatomic, readonly, nullable) NSString *address; @property(nonatomic, readonly, nullable) NSString *pricing; +@property(nonatomic, readonly, nullable) NSNumber *rawPricing; @property(nonatomic, readonly) PlacePageDataSchedule schedule; @property(nonatomic, readonly) PlacePageDataHotelType hotelType; @property(nonatomic, readonly) BOOL hasBanner; diff --git a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePagePreviewData.mm b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePagePreviewData.mm index 3b43bee7b1..d963433bed 100644 --- a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePagePreviewData.mm +++ b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePagePreviewData.mm @@ -68,6 +68,7 @@ static PlacePageDataHotelType convertHotelType(std::optional 0; _isBookingPlace = rawData.GetSponsoredType() == place_page::SponsoredType::Booking; diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm index 1522cd935f..0b8a83e61b 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm @@ -405,12 +405,12 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) [[MapViewController sharedController].navigationController pushViewController:ugcVC animated:YES]; } -- (void)searchSimilar +- (void)searchSimilar:(PlacePageData *)data { -// [Statistics logEvent:@"Placepage_Hotel_search_similar" -// withParameters:@{kStatProvider : self.data.isBooking ? kStatBooking : kStatOSM}]; + [Statistics logEvent:@"Placepage_Hotel_search_similar" + withParameters:@{kStatProvider : data.sponsoredType == PlacePageSponsoredTypeBooking ? kStatBooking : kStatOSM}]; - MWMHotelParams * params = [[MWMHotelParams alloc] init]; + MWMHotelParams * params = [[MWMHotelParams alloc] initWithPlacePageData:data]; [[MWMSearchManager manager] showHotelFilterWithParams:params onFinishCallback:^{ [MWMMapViewControlsManager.manager searchTextOnMap:[L(@"booking_hotel") stringByAppendingString:@" "] diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.h b/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.h index 4c79fa25d2..07accfbfef 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.h +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.h @@ -9,7 +9,7 @@ + (void)showUGCAddReview:(PlacePageData *)data rating:(UgcSummaryRatingType)value fromSource:(MWMUGCReviewSource)source; -+ (void)searchSimilar; ++ (void)searchSimilar:(PlacePageData *)data; + (void)editPlace; + (void)addBusiness; + (void)addPlace:(CLLocationCoordinate2D)coordinate; diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.mm index 6eb5e205e7..b56489b0f6 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.mm +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.mm @@ -12,7 +12,7 @@ - (void)updateAvailableArea:(CGRect)frame; - (void)showUGCAddReview:(PlacePageData *)data rating:(UgcSummaryRatingType)value fromSource:(MWMUGCReviewSource)source; -- (void)searchSimilar; +- (void)searchSimilar:(PlacePageData *)data; - (void)editPlace; - (void)addBusiness; - (void)addPlace:(CLLocationCoordinate2D)coordinate; @@ -55,9 +55,9 @@ [[MWMMapViewControlsManager manager].placePageManager showUGCAddReview:data rating:value fromSource:source]; } -+ (void)searchSimilar ++ (void)searchSimilar:(PlacePageData *)data { - [[MWMMapViewControlsManager manager].placePageManager searchSimilar]; + [[MWMMapViewControlsManager manager].placePageManager searchSimilar:data]; } + (void)editPlace { diff --git a/iphone/Maps/UI/PlacePage/PlacePageViewController.swift b/iphone/Maps/UI/PlacePage/PlacePageViewController.swift index 066f58014f..4b55699f87 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageViewController.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageViewController.swift @@ -369,7 +369,7 @@ extension PlacePageViewController: PlacePagePreviewViewControllerDelegate { } func previewDidPressSimilarHotels() { - MWMPlacePageManagerHelper.searchSimilar() + MWMPlacePageManagerHelper.searchSimilar(placePageData) } } @@ -534,7 +534,7 @@ extension PlacePageViewController: ActionBarViewControllerDelegate { case .booking: MWMPlacePageManagerHelper.book(placePageData) case .bookingSearch: - MWMPlacePageManagerHelper.searchSimilar() + MWMPlacePageManagerHelper.searchSimilar(placePageData) case .bookmark: if placePageData.bookmarkData != nil { MWMPlacePageManagerHelper.removeBookmark(placePageData) diff --git a/iphone/Maps/UI/Search/Filters/MWMHotelParams.h b/iphone/Maps/UI/Search/Filters/MWMHotelParams.h index 0a79638b21..2f53f9d2ab 100644 --- a/iphone/Maps/UI/Search/Filters/MWMHotelParams.h +++ b/iphone/Maps/UI/Search/Filters/MWMHotelParams.h @@ -14,6 +14,8 @@ enum class Price { Three }; +@class PlacePageData; + @interface MWMHotelParams : NSObject @property (nonatomic) std::unordered_set price; @@ -22,6 +24,7 @@ enum class Price { @property (nonatomic) NSDate * checkInDate; @property (nonatomic) NSDate * checkOutDate; +- (instancetype)initWithPlacePageData:(PlacePageData *)data; - (std::shared_ptr)rules; - (booking::filter::Params)availabilityParams; diff --git a/iphone/Maps/UI/Search/Filters/MWMHotelParams.mm b/iphone/Maps/UI/Search/Filters/MWMHotelParams.mm index 2936520f82..41ba5f28ee 100644 --- a/iphone/Maps/UI/Search/Filters/MWMHotelParams.mm +++ b/iphone/Maps/UI/Search/Filters/MWMHotelParams.mm @@ -1,30 +1,36 @@ #import "MWMHotelParams.h" #include +#include +#include +#include static uint8_t kAdultsCount = 2; static int8_t kAgeOfChild = 5; @implementation MWMHotelParams -- (instancetype)init +- (instancetype)initWithPlacePageData:(PlacePageData *)data { self = [super init]; if (self) { _types.insert(ftypes::IsHotelChecker::Type::Hotel); - auto const & data = GetFramework().GetCurrentPlacePageInfo(); - CHECK(data.GetHotelType(), ("Incorrect hotel type at coordinate:", data.GetLatLon().m_lat, data.GetLatLon().m_lon)); + + PlacePagePreviewData *previewData = data.previewData; + HotelBookingData *hotelBookingData = data.hotelBooking; + CHECK(previewData && hotelBookingData, + ("Incorrect hotel type at coordinate:", data.locationCoordinate.latitude, data.locationCoordinate.longitude)); - if (data.GetSponsoredType() == place_page::SponsoredType::Booking) + if (data.sponsoredType == PlacePageSponsoredTypeBooking) { - if (auto const price = data.GetRawApproximatePricing()) + if (auto const price = [previewData.rawPricing intValue]) { - CHECK_LESS_OR_EQUAL(*price, base::Underlying(Price::Three), ()); - _price.insert(static_cast(*price)); + CHECK_LESS_OR_EQUAL(price, base::Underlying(Price::Three), ()); + _price.insert(static_cast(price)); } - self.rating = place_page::rating::GetFilterRating(data.GetRatingRawValue()); + self.rating = place_page::rating::GetFilterRating(hotelBookingData.score); } }