//
// PerlWS.h
// LiveProject
//
// Created by haibara on 9/18/15.
//
//

#import <Foundation/Foundation.h>
#import "JGotoWS.h"
#import "WebService.h"
#import "TourReview.h"
#import "TourSearchData.h"

@interface PerlWS : NSObject
@end

@interface AppInfoResponse : JGotoWSResponse
@property (nonatomic, assign) BOOL update_required;
@property (nonatomic, strong) NSString *tour_search_data_source_digest;
@property (nonatomic, strong) NSString *hotel_search_data_source_digest;
@property (nonatomic, strong) NSArray *slide_images;
@property (nonatomic, strong) NSArray *hot_destination_images;
@end

/////////////////////////////////////////////////////////////////////

@interface TourSearchImage : NSObject
@property (nonatomic, strong)NSString *title;
@property (nonatomic, strong) NSString *url;
@property (nonatomic, strong) NSDictionary *params;
@end

@interface GetTourDetails : WebService
@property (nonatomic, strong)NSString *tourCode;
@property (nonatomic, assign) BOOL appendSearchData;
@end

@interface GetTourDetailsResponseDailyTrip : NSObject
@property (nonatomic, assign) NSInteger nth_day;
@property (nonatomic, strong) NSString *title;
@property (nonatomic, strong) NSString *content;
@end

@interface GetTourDetailsResponseData : NSObject
@property (nonatomic, strong)NSString *name;
@property (nonatomic, strong) NSString *duration;
@property (nonatomic, strong) NSString *operates_on;
@property (nonatomic, strong) NSString *departs_from;
@property (nonatomic, strong) NSString *highlights;
@property (nonatomic, strong) NSArray *dates;
@property (nonatomic, strong) NSString *bottom_dc_description;
@property (nonatomic, strong) NSString *dc_description;
@property (nonatomic, strong) NSString *inclusion;
@property (nonatomic, strong) NSString *exclusion;
@property (nonatomic, strong) NSString *additional_note;
@property (nonatomic, strong) NSString *special_remarks;
@property (nonatomic, strong) NSString *terms_and_condition;
@property (nonatomic, strong) NSString *confirmation;
@property (nonatomic, strong) NSString *redemption;
@property (nonatomic, strong) NSString *pricing_policy;
@property (nonatomic, strong) NSString *stop_note;
@property (nonatomic, strong) NSString *lowest_price;
@property (nonatomic, strong) NSArray *bus_stops;
@property (nonatomic, strong) NSArray *parking_stops;
@end

@interface GetTourDetailsResponse : WebServiceResponse
@property (nonatomic, strong)TourSearchData *product;
@property (nonatomic, strong) GetTourDetailsResponseData *details;
@end

@interface GetTourOptions : GetProductOptions
@end

@interface variable : NSObject
@property(nonatomic, strong) NSString *displayName;
@property(nonatomic, strong) NSString *surchargeText;
@end

@interface Formula : NSObject
@property(nonatomic, strong) NSString *dateRestrictionText;
@property(nonatomic, strong) NSString *dateString;
@property(nonatomic, strong) NSArray <variable *>*variables;
@property(nonatomic, assign) BOOL isShow;
@end

@interface LabelEntry : NSObject
@property(nonatomic, strong) NSString *value;
@property(nonatomic, strong) NSArray <Formula *>* formulas;
@property(nonatomic, strong) NSString *dateString;
@property(nonatomic, strong) NSString *dateRestrictionText;
@property(nonatomic, assign) NSInteger minPeople;

@property(nonatomic, assign) BOOL isChecked;
@property(nonatomic, assign) BOOL isAvailable;
@end

@interface GetTourOptionsResponseLabel : Label
@property (nonatomic, strong) NSArray *departs;
@property (nonatomic, strong) NSArray <LabelEntry *> *entries;
@property (nonatomic, strong) NSArray *arrivals;
@property (nonatomic, strong) NSArray *arrivalAirportOptions;
@property (nonatomic, strong) NSArray *returnAirportOptions;
@property (nonatomic, assign, readonly) NSArray *currentTuples;
@property (nonatomic, strong) NSString *errorMessage;
@end


@interface GetTourOptionsResponseRoomRestriction : NSObject
@property (nonatomic, assign) NSInteger minPeople;
@property (nonatomic, assign) NSInteger maxPeople;
@property (nonatomic, assign) NSInteger minAdult;
@property (nonatomic, assign) NSInteger maxAdult;
@property (nonatomic, assign) NSInteger maxChild;
@property (nonatomic, assign) NSInteger maxInfant;
@end

@interface GetTourOptionsResponseLocationTuple : NSObject
@property (nonatomic, strong)NSString *station_city_name;
@property (nonatomic, strong) NSArray *stations;
@end

@interface GetTourOptionsResponse : GetProductOptionsResponse
@property (nonatomic, assign) BOOL needRoom;
@property (nonatomic, strong) GetTourOptionsResponseRoomRestriction *limitPeopleNumberOfRoom;
@property (nonatomic, assign) NSInteger peopleMinimum;
@property (nonatomic, assign) NSInteger maxPeople;
@end

@interface BookTour : BookGoods
@end

@interface EditFlightInfo : WebService
@property (nonatomic, strong)NSString *passengerNo;
@property (nonatomic, strong) FlightInfo *flightInfo;
@end

@interface RecordFlightInfo : WebService
@property (nonatomic, assign) NSInteger itineraryNo;
@end

@interface GetTourReviews : WebService
@property (nonatomic, strong)NSString *tourCode;
@property (nonatomic, assign) NSInteger pageNo;
@property (nonatomic, assign) NSInteger pageSize;
@end

@interface GetTourReviewsResponse : WebServiceResponse
@property (nonatomic, assign) NSInteger total_count;
@property (nonatomic, strong) NSArray *reviews;
@end

@interface PostTourReview : WebService
@property (nonatomic, strong)NSString *tourCode;
@property (nonatomic, strong) TourReview *reviewDetails;
@end
