//
// HotelSearchData.h
// Project
//
// Created by Ziv on 15/12/14.
//
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "Address.h"

@interface HotelRoomTypeFacility : NSObject
// @property (nonatomic, assign) NSInteger facility_id;
@property (nonatomic, strong) NSString *name;
@end

@interface HotelDetailProp : NSObject
@property (nonatomic, assign) NSInteger hotelID;
// @property (nonatomic, strong) NSString *name;
// @property (nonatomic, strong) NSString *brand;
// @property (nonatomic, strong) NSString *provider;
@property (nonatomic, strong) NSString *checkInTime;
@property (nonatomic, strong) NSString *checkOutTime;
// @property (nonatomic, strong) NSString *currency;
// @property (nonatomic, strong) NSString *thumb;
@property (nonatomic, strong) NSString *hotelPhone;
@property (nonatomic, strong) NSString *hotelFax;
@property (nonatomic, assign) CGFloat starLevel;
// @property (nonatomic, assign) BOOL isOpaque;
// @property (nonatomic, assign) NSInteger ranking;
@property (nonatomic, assign) BOOL bestValue;
@end

@interface HotelLocation : Address

@property (nonatomic, strong) NSString *searchingCity;
// @property (nonatomic, strong) NSString *destinationCode;
@property (nonatomic, strong) NSString *location;

@property (nonatomic, strong, readonly) NSString *shortDescription;

@end

@interface HotelRefPoint : NSObject

@property (nonatomic, strong) NSString *type;
@property (nonatomic, strong) NSString *name;
// @property (nonatomic, strong) NSString *airportCode;
// @property (nonatomic, strong) NSString *direction;
@property (nonatomic, assign) CGFloat distance;
@property (nonatomic, strong) NSString *unit;

@property (nonatomic, strong, readonly) NSString *shortDescription;

@end

@interface HotelAmenity : NSObject
@property (nonatomic, assign) NSInteger amenity_id;
@property (nonatomic, strong) NSString *amenity_name;
@end

@interface HotelSearchRoomTypeBoardbase : NSObject
@property (nonatomic, strong) NSString *bdname;
@property (nonatomic, assign) CGFloat bdprice;
@end

@interface HotelSearchRoomTypePromotion : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *info;
@end

@interface HotelSearchRoomType : NSObject

@property (nonatomic, assign) NSInteger t_room_type_id;
@property (nonatomic, strong) NSString *t_room_name;
@property (nonatomic, assign) CGFloat t_room_price;
@property (nonatomic, assign) CGFloat t_discount_room_price;
@property (nonatomic, assign) CGFloat no_discount_room_price;
@property (nonatomic, assign) CGFloat no_tax_price;
@property (nonatomic, assign) CGFloat hava_tax_price;
@property (nonatomic, assign) CGFloat tax_save_price;
@property (nonatomic, strong) NSArray<HotelSearchRoomTypeBoardbase *> *t_boardbases;
@property (nonatomic, strong) HotelSearchRoomTypePromotion *promotion_xml;
@property (nonatomic, strong) NSArray<HotelRoomTypeFacility *> *facilities;

- (NSAttributedString *)attributedPriceTextWithFont:(UIFont *)font;
- (NSAttributedString *)attributedTotalPriceTextWithFont:(UIFont *)font roomCount:(NSInteger)roomCount nights:(NSInteger)nights additionalPrice:(CGFloat)additionalPrice;

@end

@interface HotelSearchRoomData : NSObject
@property (nonatomic, strong) NSArray *t_room_types;
@property (nonatomic, assign) CGFloat t_room_type_lowest_price;
@property (nonatomic, assign) CGFloat no_discount_lowest_price;
@end

@interface HotelSearchDetailData : NSObject
@property (nonatomic, strong) HotelDetailProp *hotel_base_info;
@property (nonatomic, strong) HotelLocation *location;
@property (nonatomic, strong) HotelRefPoint *ref_point;

@property (nonatomic, strong) NSString *voucher_remark;

@property (nonatomic, strong) NSString *free_text_long_description;

@property (nonatomic, strong) NSArray *general_descriptions;
@property (nonatomic, strong) NSArray *d_locations;
@property (nonatomic, strong) NSArray *location_attractions;
@property (nonatomic, strong) NSArray *recreations;
@property (nonatomic, strong) NSArray *restaurants_lounges;
@property (nonatomic, strong) NSArray *services;
@property (nonatomic, strong) NSArray *accommodations;
@property (nonatomic, strong) NSArray *meeting_facilities;
@property (nonatomic, strong) NSArray *parkings;

@property (nonatomic, strong) NSArray *images;
@property (nonatomic, strong) NSArray<HotelAmenity *> *amenities;
@end

@interface HotelSearchData : NSObject

@property (nonatomic, assign) NSInteger pid;
@property (nonatomic, strong) NSString *product_name;
@property (nonatomic, strong) NSString *thumb_path;
@property (nonatomic, assign) CGFloat tripadvisor_rating;
@property (nonatomic, assign) NSInteger tripadvisor_num_reviews;
@property (nonatomic, strong) NSString *tripadvisor_reviews_url;
@property (nonatomic, strong) NSString *tripadvisor_image_url;
@property (nonatomic, strong) NSDictionary *dateOption;
@property (nonatomic, strong) HotelSearchRoomData *t_room;
@property (nonatomic, strong) HotelSearchDetailData *hotel_description_ext;

- (NSString *)adaptiveImageUrl;
- (NSAttributedString *)attributedRatingTextWithFont:(UIFont *)font;
- (NSAttributedString *)attributedPriceTextWithFont:(UIFont *)font;
- (NSAttributedString *)attributedTotalPriceTextWithFont:(UIFont *)font roomCount:(NSInteger)roomCount nights:(NSInteger)nights additionalPrice:(CGFloat)additionalPrice headerTitle:(NSString *)headerTitle;
- (UIImage *)concatenateAmenityImageToWidth:(CGFloat)width tintColor:(UIColor *)tintColor borderWidth:(CGFloat)borderWidth;

+ (NSString *)imageNameWithAmenityId:(NSInteger)amenityId;

@end
