//
//  KWMPPCacheUtil.m
//  iCemarose
//
//  Created by HouWeiBin on 2017/11/14.
//  Copyright © 2017年 kollway. All rights reserved.
//

#import "KWMPPCacheUtil.h"

@implementation KWMPPCacheUtil

#pragma mark -cache


//这个key用的地方比较多,所以抽在这里了
+ (NSDictionary *)getProductPageCacheKey:(NSUInteger)page
                                pageSize:(NSUInteger)pageSize
                              sortOrder:(BUYCollectionSort)sortOrder
                                   tags:(nullable NSArray <NSString *> *)tags
                           inCollection:(nullable NSNumber *)collectionId{
    NSMutableDictionary *params = @{
                                    @"limit"         : @(pageSize),
                                    @"page"          : @(page),
                                    @"sort_by"       : [BUYCollection sortOrderParameterForCollectionSort:sortOrder]
                                    }.mutableCopy;
    if (tags) {
        params[@"tag"] = [tags componentsJoinedByString:@","];
    }
    if (collectionId) {
        params[@"collection_id"] = collectionId;
    }
    return params;
}

//初始化缓存parameters key
+ (NSDictionary *)getProductCacheKeyDictionary:(NSUInteger)page
                                          tags:(nullable NSArray <NSString *> *)tags
                                        handle:(nullable NSString *)handle{
    NSMutableDictionary *params = @{
//                                    @"limit"         : @(self.client.pageSize),
                                    @"page"          : @(page)
                                    }.mutableCopy;
    if (tags) {
        params[@"tag"] = [tags componentsJoinedByString:@","];
    }
    if (handle) {
        params[@"handle"] = handle;
    }
    return params;
}


+ (void)saveDataToCache:(NSDictionary *)cacheKeyDictionary urlKey:(NSString *)urlKey products:(NSArray *)products{
    NSMutableArray *dictArray = [NSMutableArray array];
    if(products){
        for(BUYProduct *product in products){
            NSDictionary *productDict = product.JSONDictionary;
            if(productDict){
                [dictArray addObject:productDict];
            }
        }
    }
    NSDictionary *saveDict = [[NSDictionary alloc] initWithObjectsAndKeys:dictArray, @"array",nil];
    [PPNetworkCache setHttpCache:saveDict URL:urlKey parameters:cacheKeyDictionary];
}

+ (NSArray *)getProductDataByCache:(NSDictionary *)cacheKeyDictionary urlKey:(NSString *)urlKey{
    NSDictionary *cacheDictionary = [PPNetworkCache httpCacheForURL:urlKey parameters:cacheKeyDictionary];
    NSMutableArray *products = [NSMutableArray array];
    if(cacheDictionary && [cacheDictionary objectForKey:@"array"]){
        NSArray *dictArray = [cacheDictionary objectForKey:@"array"];
        for(NSDictionary *dict in dictArray){
            if(dict){
                BUYProduct *product = (BUYProduct *)[[BUYModelManager modelManager] buy_objectWithEntityName:[BUYProduct entityName] JSONDictionary:dict];
                [products addObject:product];
            }
        }
    }
    return products;
}

+(void)saveDataToCache:(NSDictionary *)cacheKeyDictionary urlKey:(NSString *)urlKey homeData:(KWMHomeData *)homeData{
    NSDictionary *saveDict = [[NSDictionary alloc]initWithObjectsAndKeys:homeData,@"homeData", nil];
    [PPNetworkCache setHttpCache:saveDict URL:urlKey parameters:cacheKeyDictionary];
}

+(KWMHomeData *)getHomeDataByCache:(NSDictionary *)cacheKeyDictionary urlKey:(NSString *)urlKey{
    NSDictionary *cacheDictionary = [PPNetworkCache httpCacheForURL:urlKey parameters:cacheKeyDictionary];
    if(cacheDictionary && [cacheDictionary objectForKey:@"homeData"]){
        KWMHomeData *homeData = (KWMHomeData *)[cacheDictionary objectForKey:@"homeData"];
        return homeData;
    }else{
        return nil;
    }
}

+(void)saveDataToCache:(NSDictionary *)cacheKeyDictionary urlKey:(NSString *)urlKey collection:(BUYCollection *)collection{
//    if(collection && collection.JSONDictionary){
    //这里会崩溃,因为collection的image(BuyImageLink里又有一个Collection,获取其dictionary会出现无限递归的问题)
//        NSDictionary *saveDict = collection.JSONDictionary;
//        [PPNetworkCache setHttpCache:saveDict URL:urlKey parameters:cacheKeyDictionary];
//    }
    if(collection && collection.identifier){
        NSMutableDictionary *collectionData = @{@"identifier":collection.identifier.stringValue,
                                         @"description":collection.htmlDescription,
                                         }.mutableCopy;;
        if (collection.image && collection.image.sourceURL) {
            NSString *imageString = collection.image.sourceURL.absoluteString;
            collectionData[@"image"] = imageString;
        }
        if(collection.htmlDescription){
            collectionData[@"description"] = collection.htmlDescription;
        }
        [PPNetworkCache setHttpCache:collectionData URL:urlKey parameters:cacheKeyDictionary];
    }
}

+(BUYCollection *)getCollectionByCache:(NSDictionary *)cacheKeyDictionary urlKey:(NSString *)urlKey{
    NSDictionary *cacheDictionary = [PPNetworkCache httpCacheForURL:urlKey parameters:cacheKeyDictionary];
    if(cacheDictionary){
//        BUYCollection *collection = (BUYCollection *)[[BUYModelManager modelManager] buy_objectWithEntityName:[BUYCollection entityName] JSONDictionary:cacheDictionary];
//        return collection;
        BUYCollection *collection = [[BUYCollection alloc]init];
        if(cacheDictionary[@"image"]){
            collection.image = [[BUYImageLink alloc]init];
            NSString *imageString = cacheDictionary[@"image"];
            collection.image.sourceURL = [[NSURL alloc]initWithString:imageString];
        }
        if(cacheDictionary[@"description"]){
            collection.htmlDescription = cacheDictionary[@"description"];
        }else{
            collection.htmlDescription = @"";
        }
        NSString *idString = cacheDictionary[@"identifier"];
        collection.identifier = @([idString integerValue]);
        return collection;
    }else{
        return nil;
    }
}


@end