//
//  KWMAPIManager.h
//
//  Created by kevin on 3/14/15.
//

#import <Foundation/Foundation.h>

#import "AFNetworking.h"
#import "KWMRequestListResult.h"
#import "KWMRequestResult.h"
#import "KWMCemaroseResult.h"
#import "KWMCustomer.h"
#import "KWMCustomerResult.h"
#import "KWMBrandsResult.h"
#import "KWMSearchResult.h"
#import "KWMBlogResult.h"
#import "KWMNewGoodsModel.h"
#import "KWMNewProducts.h"
#import "KWMProductTypeResult.h"
#import "KWMProductType.h"
#import "KWMBrandsTypeResult.h"
#import "KWMImagesResult.h"
#import "KWMImage.h"
#import "KWMAppVersion.h"
#import "KWMProductResult.h"
#import "KWMProduct.h"
#import "KWMOrdersResult.h"
#import "KWMOrder.h"
#import "KWMExchangeRateResult.h"




#define KWM_COMMON_DATE_FORMAT @"yyyy-MM-dd HH:mm:ss"
#define KWM_PAGE_SIZE 20
#define SESSID                          @"PHPSESSID"

//#define API_HOST                        @"toyoung.kollway.com"

//#define API_HOST                        @"192.168.0.5"

#define API_HOST                        @"apps.cemarose.com"

#define API_HOST_PORT                   8088

@interface KWMAPIManager : NSObject

@property (nonatomic) NSString *baseUrl;

+ (KWMAPIManager *)sharedManager;
- (NSString *)toAbsoluteUrl:(NSString *)relativeUrl;

/**
 * 手机登录-获取短信API
 * @param parameters {mobile=?手机号}
 * @param success 成功callback
 * @param failure 失败callback
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) phoneSms:(NSDictionary *)parameters
                            success:(void(^)(NSURLSessionDataTask *task,KWMCemaroseResult *result))success
                            failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;

/**
 * 手机登录API
 * @param parameters {mobile=?手机号,code=?收到的短信验证码}
 * @param success 成功callback
 * @param failure 失败callback
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) phoneLogin:(NSDictionary *)parameters
                              success:(void(^)(NSURLSessionDataTask *task,KWMCustomerResult *result))success
                              failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;


/**
 * 获取所有品牌
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) getAllBrand:(NSDictionary *)parameters
                               success:(void(^)(NSURLSessionDataTask *task,KWMBrandsResult *result))success
                               failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;

/**
 * 搜索API
 * @param parameters {keyword=?搜索内容}
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) searchProduct:(NSDictionary *)parameters
                               success:(void(^)(NSURLSessionDataTask *task,KWMSearchResult *result))success
                               failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;

/**
 * 博客API
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) getAllBlog:(NSDictionary *)parameters
                                 success:(void(^)(NSURLSessionDataTask *task,KWMBlogResult *result))success
                                 failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;

/**
 * 商品——新品API
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) getNewProducts:(NSDictionary *)parameters
                              success:(void(^)(NSURLSessionDataTask *task,KWMNewProducts *result))success
                              failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;

/**
 * 商品——打折API
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) getDiscountProducts:(NSDictionary *)parameters
                                       success:(void(^)(NSURLSessionDataTask *task,KWMNewProducts *result))success
                                       failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;

/**
 * 获取商品分类API
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) getProductTypes:(NSDictionary *)parameters type:(NSInteger)type
                                   success:(void(^)(NSURLSessionDataTask *task,KWMProductTypeResult *result))success
                                   failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;
/**
 * 品牌类型--API
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) getBrandsType:(NSDictionary *)parameters
                                 success:(void(^)(NSURLSessionDataTask *task,KWMBrandsTypeResult *result))success
                                 failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;

/**
 * 汇率--API
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) getExchangeRate:(NSDictionary *)parameters
                                   success:(void(^)(NSURLSessionDataTask *task,KWMExchangeRateResult *result))success
                                   failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;

/**
 * 获取获取某个订单api
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) getAdminOrder:(NSDictionary *)parameters orderId:(NSNumber *)orderId
                            success:(void(^)(NSURLSessionDataTask *task,KWMOrdersResult *result))success
                            failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;

/**
 * 获取产品相关图片--API
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) getProductImages:(NSDictionary *)parameters productId:(NSNumber *)productId
                                    success:(void(^)(NSURLSessionDataTask *task,KWMImagesResult *result))success
                                    failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;

/**
 * 获取商品api,因為admin商品有剩余库存数量字段,所以商品詳細還需要請求此api。
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) getAdminProduct:(NSDictionary *)parameters productId:(NSNumber *)productId
                                   success:(void(^)(NSURLSessionDataTask *task,KWMProductResult *result))success
                                   failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;

/**
 * 取消订单api
 * amount 退款金额 (default: false)(十进制:21.20)If set, Shopify will attempt to void/refund the payment depending on the status.
 * restock 是否将此订单商品重新包装会商店 (default: false)
 * reason 订单取消原因 (用户customer, 库存inventory, 假货fraud, 其他other)(default: other)
 * email 发送邮箱通知用户 (default: false)
 * refund 更复杂的退款方式 As specified in the Refund documentation. Required for some more complex refund situations.
 * @return NSURLSessionDataTask
 */
- (NSURLSessionDataTask *) cancelOrder:(NSDictionary *)parameters orderId:(NSNumber *)orderId
                               success:(void(^)(NSURLSessionDataTask *task,KWMProductResult *result))success
                               failure:(void(^)(NSURLSessionDataTask *task,NSError *error))failure;

@end