//
//  KWMSelectedGoodsVC.m
//  iCemarose
//
//  Created by 陈荣科 on 16/8/31.
//  Copyright © 2016年 kollway. All rights reserved.
//

#import "KWMSelectedGoodsVC.h"
#import "KWMProductDetailVC.h"
#import "KWMBeforePayVC.h"
#import "KWMMineTitleView.h"
#import "MJRefresh.h"
#import "KWMFilterUtil.h"
#import "KWMStringUtil.h"
#import "KWMImageBlurUtil.h"

@interface KWMSelectedGoodsVC ()
@end

@implementation KWMSelectedGoodsVC{
    UIButton *rightButton;
    BOOL isSelect;
    UIView *vStopTap;
    NSInteger openPosition;//标记展开标尺的pruduct下标
}

+(NSString *)kwmTag{
    return @"KWMSelectedGoodsVC";
}

- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
//    [_vTitle removeFromSuperview];
}

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:NO];
}


static NSString *idStr = @"KWMBrandCaramelCell";
- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self initView];
    
//    [self reLoadData];
}

- (void)initView{
    
    self.hasNextPage = NO;
    self.collectionSort = BUYCollectionSortCreatedDescending;
    if (self.handle) {
        self.title = self.handle.capitalizedString;
    }else if(self.productType != nil){
        //初始化双行标题栏
        NSString *mTitle;
        if(self.tagType == 0){
            mTitle = @"婴儿";
        }else if(self.tagType == 1){
            mTitle = @"女孩";
        }else if(self.tagType == 2){
            mTitle = @"男孩";
        }else if(self.tagType == 3){
            mTitle = @"鞋子";
        }
        KWMDoubleTitleView *doubleTitleView = [[KWMDoubleTitleView alloc] initWithFrame:CGRectMake(0, 0, 200, 40)];
        doubleTitleView.lbTitle.text = mTitle;
        doubleTitleView.lbSecondTitle.text = self.productType.value;
        self.navigationItem.titleView=doubleTitleView;
    }
    openPosition = -1;
    self.automaticallyAdjustsScrollViewInsets = NO;
    
    isSelect = NO;
    vStopTap = [[UIView alloc] initWithFrame:CGRectMake(0, 20, UI_SCREEN_WIDTH, 44)];
    vStopTap.backgroundColor = [UIColor clearColor];
    _vHeard.backgroundColor = [UIColor sam_colorWithHex:@"F4F5F7"];
    
    self.filterView.delegate = self;
    self.filterTab.delegate = self;
    
    [self initCacheData];
}

-(void)initCacheData{
    NSNumber *collectionId;
    NSArray *tags;
    if(self.collection!=nil){
        collectionId = self.collection.identifier;
    }
    if(self.productType!=nil){
        if(![KWMStringUtil isEmpty:self.productType.collectionId]){
            NSInteger num = [self.productType.collectionId integerValue];
            collectionId = @(num);
        }
        NSString *tag;
        if(self.tagType == 0){
            tag = @"baby";
        }else if(self.tagType == 1){
            tag = @"girls";
        }else if(self.tagType == 2){
            tag = @"boys";
        }else if(self.tagType == 3){
            tag = @"shoes";
        }
        tags = [NSArray arrayWithObjects:tag, nil];
    }

    NSArray *products =  [self.userDao getCollectionCache:collectionId tags:tags];
    if(products && products.count>0){
        [self appendDataList:products setPage:1];
        self.currentPage = 0;
    }
}

-(UITableView *)targetTableView{
    return self.tbvSelectedGoods;
}

-(void)loadData{
    [self requestProductList];
}

-(void)reLoadData{
    self.currentPage = 0;
    [self requestProductList];
}


- (void)setAnimatedWith:(CGFloat)moveHeight{
    [UIImageView animateWithDuration:1.0 animations:^{
        self.vGoodsStyle.frame = CGRectMake(0, moveHeight, UI_SCREEN_WIDTH, 340);
    } completion:^(BOOL finished) {
        [vStopTap removeFromSuperview];
        if (moveHeight>0) {
            self.vBackground.hidden = NO;
        }else{
            self.vBackground.hidden = YES;
        }
    }];
}

#pragma mark -- KWMFilterDelegate
-(void)kwm_onFilterFinish:(KWMFilterView *)filterView{
    self.filterView.hidden = YES;
    [self.filterTab close];
    [self reLoadData];
    [self.tbvSelectedGoods.mj_header beginRefreshing];
    [self.tbvSelectedGoods setContentOffset:CGPointMake(0,0) animated:YES];
}

-(void)kwm_onClickFilterBlank:(KWMFilterView *)filterView{
    [self.filterTab close];
}

#pragma mark -- KWMNormalFilterTabDelegate
-(void)kwm_onClickTab:(KWMFilterMode)filterMode isExpandView:(BOOL)isExpand{
    self.filterView.hidden = !isExpand;
    self.filterView.filterMode = filterMode;
}


#pragma mark -- KWMBrandCaramelCellDelegate

//点击左边商品回调
- (void)kwm_onClickLeftIamge:(KWMBrandCaramelCell *)brandCell{
    KWMProductDetailVC *productDetailVC = (KWMProductDetailVC*)[KWMBaseVC findControllerBy:[KWMProductDetailVC kwmTag] fromStoryboard:@"New"];
    productDetailVC.product = brandCell.leftProduct;
    [self.navigationController pushViewController:productDetailVC animated:YES];
}

//点击右边商品回调
- (void)kwm_onClickRightIamge:(KWMBrandCaramelCell *)brandCell{
    KWMProductDetailVC *productDetailVC = (KWMProductDetailVC*)[KWMBaseVC findControllerBy:[KWMProductDetailVC kwmTag] fromStoryboard:@"New"];
    productDetailVC.product = brandCell.rightProduct;
    [self.navigationController pushViewController:productDetailVC animated:YES];
}

- (void)kwm_openRule:(BUYProduct *)product Or:(KWMDataProduct *)dataProduct And:(KWMBrandCaramelCell *)brandCell{
    
    if (product == nil) {
        return;
    }
    [self.dataList enumerateObjectsUsingBlock:^(BUYProduct *obj, NSUInteger idx, BOOL * _Nonnull stop) {
        if ([obj isEqual:product]) {
            if (openPosition != idx) {
                openPosition = idx;
                [self.tbvSelectedGoods reloadData];
            }
            *stop = YES;
        }
    }];
    
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.05 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        if (openPosition % 2 ) {
            [brandCell openRule:NO];
        }else{
            [brandCell openRule:YES];
        }
        
    });
}

#pragma mark -- UITableViewDelegateU
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    if(self.dataList == nil){
        return 0;
    }
    NSInteger count = self.dataList.count;
    if(count%2 == 0){
        return count/2;
    }else{
        return count/2+1;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    KWMBrandCaramelCell *brandCaramelCell = [tableView dequeueReusableCellWithIdentifier:idStr];
    if(!brandCaramelCell){
        [tableView registerNib:[UINib nibWithNibName:idStr bundle:nil] forCellReuseIdentifier:idStr];
        brandCaramelCell = [tableView dequeueReusableCellWithIdentifier:idStr];
    }
    brandCaramelCell.delegate = self;
    brandCaramelCell.selectionStyle = UITableViewCellSelectionStyleNone;
    NSInteger position = indexPath.row * 2;
    if(self.dataList!=nil && self.dataList.count>0){
        BUYProduct *leftProduct = [self.dataList objectAtIndex:position];
        BUYProduct *rightProduct = self.dataList.count>(position+1)?[self.dataList objectAtIndex:(position+1)]:nil;
        [brandCaramelCell setData:leftProduct rightProduct:rightProduct];
    }    
    return brandCaramelCell;
}

#pragma mark -- ITableViewDataSource
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return (UI_SCREEN_WIDTH/2 - 20 + 64);
}

- (void)requestProductList{
    __weak KWMSelectedGoodsVC *weakSelf = self;
    NSInteger tagetPage = self.currentPage.integerValue + 1;
    void(^completion)(NSArray<BUYProduct *> *,NSUInteger,BOOL,NSError*) = ^(NSArray *products,NSUInteger page, BOOL reachedEnd, NSError *error){
        [weakSelf hideLoading];
        
        if(tagetPage == 1){
            if(!products || products.count == 0){
                self.vNoData.hidden = NO;
                [weakSelf.dataList removeAllObjects];
                [weakSelf.tbvSelectedGoods reloadData];
                return;
            }
        }
        
        weakSelf.isLoading = NO;
        if (error == nil && products) {
            self.vNoData.hidden = YES;
            weakSelf.hasNextPage = !reachedEnd;
            [weakSelf appendDataList:products setPage:page];
        }
        else {
            [self showError:error];
            NSLog(@"Error fetching products: %@", error);
        }
    };
    if (self.handle) {
        [self.client getCollectionByHandle:self.handle completion:^(BUYCollection * _Nullable collection, NSError * _Nullable error) {
    [self.client getProductsPage:tagetPage inCollection:collection.identifier withTags:self.ctags sortOrder:self.filterView.selectedSort completion:completion];
        }];
//        [self.client getProductsPage:tagetPage inCollection:nil withTags:self.ctags sortOrder:self.filterView.selectedSort completion:completion];
        return;
    }
    NSNumber *collectionId;
    if(self.collection!=nil){
        collectionId = self.collection.identifier;
    }
    
    //初始化排序及筛选tag
    BUYCollectionSort collectionSort = self.filterView.selectedSort;
    NSMutableArray *tags = [KWMFilterUtil getTagsByFilterArray:self.filterView.selectedTags];
    
    if(self.productType!=nil){
        if(![KWMStringUtil isEmpty:self.productType.collectionId]){
            NSInteger num = [self.productType.collectionId integerValue];
            collectionId = @(num);
        }
        if(self.tagType == 0){
            [tags addObject:@"baby"];
        }else if(self.tagType == 1){
            [tags addObject:@"girls"];
        }else if(self.tagType == 2){
            [tags addObject:@"boys"];
        }else if(self.tagType == 3){
            [tags addObject:@"shoes"];
        }
    }
    
    if(collectionId == nil){
        return;
    }
    
    self.isLoading = YES;
    
    
    [self.client getProductsPage:tagetPage inCollection:collectionId withTags:tags sortOrder:collectionSort completion:completion];
}


@end