//
// Config.h
// Project
//
// Created by haibara on 1/21/16.
//
//

#import <Foundation/Foundation.h>
#import "AppDelegate.h"

FOUNDATION_EXPORT NSString *const PUNCTUATION_EXCLAMATION_MARK;
FOUNDATION_EXPORT NSString *const PUNCTUATION_COMMA;
FOUNDATION_EXPORT NSString *const PUNCTUATION_QUESTION_MARK;
FOUNDATION_EXPORT NSString *const PUNCTUATION_PERIOD;
FOUNDATION_EXPORT NSString *const PUNCTUATION_COLON;
FOUNDATION_EXPORT NSString *const PUNCTUATION_ELLIPSIS;
FOUNDATION_EXPORT NSString *const PUNCTUATION_PARENTHESES_LEFT;
FOUNDATION_EXPORT NSString *const PUNCTUATION_PARENTHESES_RIGHT;
FOUNDATION_EXPORT NSString *const PUNCTUATION_BRACKETS_LEFT;
FOUNDATION_EXPORT NSString *const PUNCTUATION_BRACKETS_RIGHT;
FOUNDATION_EXPORT NSString *const WORD_DIVIDER_SPACE;

FOUNDATION_EXPORT CGFloat const kDefaultRoundedCornerRadius;

typedef NS_ENUM (NSInteger, StandardColor) {
	StandardColorOrange = 0XFF6600,
	StandardColorBlue = 0X0033CC,
};

FOUNDATION_EXPORT NSString *const UserDefaultsKeyEAIntroViewSkipped;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyUserID;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyUserName;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyUserPassword;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyUserRegisterNotification;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyCalendarEventsEnabled;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyCalendarEventIdentifiersForUpcomingItineraries;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyUserNotificationsEnabled;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyAmazonSNSEndpointArn;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyHistoryBusSearchDepartureList;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyHistoryHotelSearchDestinationList;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyHistoryTourSearchDestinationList;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyHistoryNotificationList;
FOUNDATION_EXPORT NSString *const UserDefaultsKeyNotificationErrorList;

FOUNDATION_EXPORT NSString *const LoginStatusDidChangeNotification;
FOUNDATION_EXPORT NSString *const SegueDidPerformNotification;
FOUNDATION_EXPORT NSString *const UpcomingItinerariesCountDidChangeNotification;
FOUNDATION_EXPORT NSString *const BookingFinishNotification;
FOUNDATION_EXPORT NSString *const UnreadMessageNotification;


FOUNDATION_EXPORT NSString *const WXPayRespNotification;
FOUNDATION_EXPORT NSString *const UPPaymentResultNotification;
FOUNDATION_EXPORT NSString *const AlipayOrderPaymentResultNotification;

@protocol AppearanceConfig <NSObject>
+ (UIColor *)defaultTintColor;
@end

@protocol MainSiteConfig <NSObject>
+ (NSString *)domain;
+ (NSString *)site_name;
+ (NSString *)site_title;
+ (NSString *)support_email;
+ (NSString *)phone;
+ (BOOL)is_bus_site;
+ (BOOL)is_tours_site;
+ (BOOL)is_cn_website;
+ (NSStringEncoding)charset;
+ (NSString *)tollFreePhone;
+ (NSString *)liveZillaUrl;
+ (NSDictionary *)rangedPhones;
@end

@protocol ClientSiteConfig <NSObject>
+ (NSInteger)clientDomainId;
+ (NSString *)clientServiceProvider;
@end

@protocol WebServiceConfig <NSObject>
+ (NSString *)liveServer;
+ (NSString *)testingServer;
+ (NSString *)javaSearchLiveEndpoint;
+ (NSString *)javaAppLiveEndpoint;
@end

@protocol AWSConfig <NSObject>
+ (NSInteger)AWSRegionType;
+ (NSString *)AWSStaticCredentialsAccessKey;
+ (NSString *)AWSStaticCredentialsSecretKey;
+ (NSString *)AWSSNSSandboxPlatformApplicationArn;
+ (NSString *)AWSSNSLivePlatformApplicationArn;
@end

@protocol PayPalConfig <NSObject>
+ (NSString *)paypalSandboxClientId;
+ (NSString *)paypalSandboxSecret;
+ (NSString *)paypalLiveClientId;
+ (NSString *)paypalLiveSecret;
@end

@protocol WeChatConfig <NSObject>
+ (NSString *)wechatAppId;
@end

@protocol ThirdPartyPaymentConfig <NSObject>
+ (NSString *)alipayUrlScheme;
+ (NSString *)unionpayUrlScheme;
@end

@protocol PiwikConfig <NSObject>
+ (NSString *)piwikSiteId;
+ (NSString *)piwikBaseUrl;
@end

@protocol DebugConfig <NSObject>
+ (BOOL)is_testing_server;
+ (BOOL)is_develop;
+ (BOOL)isJavaSearchLocalhost;
+ (BOOL)isJavaAppLocalhost;
+ (NSInteger)autoLoginUserId;
+ (BOOL)isPaypalSandbox;
+ (BOOL)isUnionpaySandbox;
@end

@interface AllConfig : NSObject <AppearanceConfig, MainSiteConfig, ClientSiteConfig, WebServiceConfig, AWSConfig, PayPalConfig, WeChatConfig, ThirdPartyPaymentConfig, PiwikConfig, DebugConfig>
+ (AppDelegate *)appDelegate;
+ (NSString *)responseException;
+ (BOOL)isLiveServer;
+ (BOOL)isAffiliate;
+ (NSString *)developServer;
+ (NSString *)javaSearchLocalhost;
+ (NSString *)javaAppLocalhost;
+ (NSString *)javaSearchEndpoint;
+ (NSString *)javaAppEndpoint;
+ (NSString *)paypalClientId;
+ (NSString *)paypalSecret;
+ (NSString *)AWSSNSPlatformApplicationArn;
+ (NSString *)appId;
@end
