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

#import "KWMShopCartVC.h"
#import "KWMSelectSizeVC.h"
#import "KWMShopCarCell.h"
#import "KWMBeforePayVC.h"
#import "KWMUserModel.h"
#import "KWMLoginVC.h"
#import "KWMShopCartData.h"
#import "KWMNewVC.h"
#import "KWMStringUtil.h"
#import "KWMShoppingCart.h"

@interface KWMShopCartVC ()
@property (nonatomic) NSMutableArray *shopCartList;
@end

@implementation KWMShopCartVC{
    KWMShopCartModel *_removeModel;
    KWMShopCartModel *_changeModel;
}

+(NSString *)kwmTag{
    return @"KWMShopCartVC";
}
- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:NO];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.title = @"购物车";
//    self.vBackground.hidden = NO;
    _shopCartList = (NSMutableArray *)[[KWMShoppingCart sharedInstance] items];
    if (_shopCartList.count == 0) {
        self.vBackground.hidden = NO;
    }else{
        self.vBackground.hidden = YES;
    }
    self.btnRandom.layer.borderWidth = 0.5;
    self.btnRandom.layer.borderColor = [UIColor colorWithRed:78.0/255 green:78.0/255 blue:78.0/255 alpha:1.0].CGColor;
    
    [self setTotalPrice];
    __weak typeof(self) this = self;
    
    
    dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC));
    dispatch_after(delay, dispatch_get_main_queue(), ^{
        [[KWMShoppingCart sharedInstance] allItemsWithCallback:^(NSError *error, KWMCartResult *cart) {
            [this refresh];
        }];
    });
}


-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    
    if (_shopCartList.count == 0) {
        self.vBackground.hidden = NO;
    }else{
        self.vBackground.hidden = YES;
    }
    return _shopCartList.count;
}

#pragma  mark UITableViewDelegate
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 184;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSString *indentifier = @"KWMShopCarCell";
    
    KWMShopCarCell *shopCartCell = [tableView dequeueReusableCellWithIdentifier:indentifier];
    KWMShopCartModel *shopCartModel = [_shopCartList objectAtIndex:indexPath.row];
    if (!shopCartCell) {
        [tableView registerNib:[UINib nibWithNibName:indentifier bundle:nil] forCellReuseIdentifier:indentifier];
        shopCartCell = [tableView dequeueReusableCellWithIdentifier:indentifier];
    }
    shopCartCell.shopCartModel = shopCartModel;
    shopCartCell.delegate = self;
    return shopCartCell;
}

//点击随意逛逛
- (IBAction)onClickRandomBtn:(id)sender {
    NSLog(@"点击了随意逛逛");
    KWMNewVC *newVC = (KWMNewVC *)[KWMBaseVC findControllerBy:[KWMNewVC kwmTag] fromStoryboard:@"Main"];
    self.hidesBottomBarWhenPushed = NO;
    [self.navigationController pushViewController:newVC animated:YES];
}

- (void)onClickComplete:(id)sender{
    
    KWMUserModel *useModel = [KWMUserModel shareUser];
    if (useModel.status) {
        KWMBeforePayVC *beforePayVC = (KWMBeforePayVC *)[KWMBaseVC findControllerBy:[KWMBeforePayVC kwmTag] fromStoryboard:@"ShopCart"];
        beforePayVC.shopcartArray = self.shopCartList;
        [self.navigationController pushViewController:beforePayVC animated:YES];
    }else{
        //登录
        KWMLoginVC *loginVc = (KWMLoginVC *)[KWMBaseVC findControllerBy:[KWMLoginVC kwmTag] fromStoryboard:@"Login"];
        UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:loginVc];
        [self presentViewController:nav animated:YES completion:nil];
    }
}

- (void)kwm_onClickDelete:(KWMShopCartModel *)shopCartModel{
    self.vDelete.hidden = NO;
    self.vDelete.delegate = self;
    _removeModel = shopCartModel;
}

- (void)kwm_onClickEdit:(KWMShopCartModel *)shopCartModel{
    __block KWMShopCartVC *this = self;
    _changeModel = shopCartModel;
    [self showLoading];
    [self.client getProductById:shopCartModel.product_id completion:^(BUYProduct * _Nullable product, NSError * _Nullable error) {
        [this hideLoading];
        
        if(product){
            KWMVariantsVC *variantsVC = (KWMVariantsVC *)[KWMVariantsVC findControllerBy:[KWMVariantsVC kwmTag] fromStoryboard:@"NewProduct"];
            variantsVC.product = product;
            variantsVC.delegate = self;
            variantsVC.shopCartModel = shopCartModel;
            CGSize size = [UIScreen mainScreen].bounds.size;
            [self showPresentation:variantsVC size:size tapOutsideClose:YES style:MZFormSheetPresentationTransitionStyleFade];
        }
        
        
//        this.definesPresentationContext = YES;
//        KWMSelectSizeVC *editVC = (KWMSelectSizeVC *)[KWMBaseVC findControllerBy:[KWMSelectSizeVC kwmTag] fromStoryboard:@"ShopCart"];
//        editVC.delegate = this;
//        editVC.isShopcart = YES;
//        editVC.product = product;
//        editVC.shopCartModel = shopCartModel;
//        
//        editVC.view.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0];
//        editVC.modalPresentationStyle = UIModalPresentationOverCurrentContext;
//        editVC.providesPresentationContextTransitionStyle = YES;
//        editVC.definesPresentationContext = YES;
//        [this presentViewController:editVC animated:YES completion:nil];
    }];
    
}

#pragma mark -- KWMSelectSizeVCDelegate

- (void)kwm_addShopWithVariantId:(NSNumber *)identifier quantity:(NSInteger)quantity variant:(BUYProductVariant *) variant buyNow:(BOOL)buyNow callback:(void (^)(BOOL))callback {
    __weak KWMShopCartVC *this = self;
    void(^success)(NSError*,KWMCartResult*) = ^(NSError *error,KWMCartResult *cart){
        if (!error) {
            [this refresh];
            callback(YES);
        }else{
            [this showError:error];
            callback(NO);
        }
    };
    if (_changeModel.identifier.integerValue == identifier.integerValue) {
        [[KWMShoppingCart sharedInstance] changeProductWithVariantId:identifier quantity:quantity callback:success];
    }else{
        NSNumber *oldId = @(_changeModel.identifier.integerValue);
        KWMShopCartModel *model  = _changeModel;
        _changeModel = nil;
        NSArray<NSNumber *> *variantIds = @[oldId,identifier];
        NSArray<NSNumber *> *quantities = @[@0,@(quantity)];
        [[KWMShoppingCart sharedInstance] updateProductWithVariantIds:variantIds quantitties:quantities callback:^(NSError *error, KWMCartResult *cart) {
            if (!cart.items.firstObject.product_id) {
                KWMShopCartModel *tmp = cart.items.firstObject;
                tmp.imageStr = model.imageStr;
                tmp.size = variant.title;
                tmp.brand = model.brand;
                tmp.name = model.name;
                tmp.price = variant.price;
                tmp.product_id = model.product_id;
            }
            success(error,cart);
        }];
//        [[KWMShoppingCart sharedInstance] deleteProductWithVariantId:oldId callback:^(NSError *error, KWMCartResult *cart) {
//            [[KWMShoppingCart sharedInstance] increaseProductWithVariantId:identifier quantity:quantity callback:^(NSError *error, KWMCartResult *cart) {
//                if (!cart.items.lastObject.product_id) {
//                    KWMShopCartModel *tmp = cart.items.lastObject;
//                    tmp.imageStr = model.imageStr;
//                    tmp.size = variant.title;
//                    tmp.brand = model.brand;
//                    tmp.name = model.name;
//                    tmp.price = variant.price.floatValue;
//                    tmp.product_id = model.product_id;
//                }
//                success(error,cart);
//            }];
//        }];
    }
}

//- (void)kwm_addShopCartItem:(KWMShopCartModel *)shopCartModel{
//    
//    [_shopCartList removeAllObjects];
//    [_shopCartList addObjectsFromArray:[[KWMShopCartData alloc] getALLItems]];
//    [self.tbvCart reloadData];
//    [self setTotalPrice];
//}
//
//-(void)kwm_fastBuy:(BUYCart *)fastBuyCart{
//    
//}

-(void)kwm_deleteProduct{
//    BOOL isHas = NO;
//    for (KWMShopCartModel *item in _shopCartList) {
//        if ([item isEqual:_removeModel]) {
//            isHas = YES;
//            break;
//        }
//    }
//    if (isHas) {
//        [_shopCartList removeObjectIdenticalTo:_removeModel];
//    }
//    [self.tbvCart reloadData];
//    [self setTotalPrice];
//    [[KWMShopCartData alloc] removeItem:_removeModel];
    NSNumber *identifier = @(_removeModel.identifier.integerValue);
    __weak KWMShopCartVC *this = self;
    [self showLoading];
    [[KWMShoppingCart sharedInstance] deleteProductWithVariantId:identifier callback:^(NSError *error, KWMCartResult *cart) {
        [this hideLoading];
        [this refresh];
    }];
}

- (void)refresh {
    self.shopCartList = [[KWMShoppingCart sharedInstance] items];
    [self.tbvCart reloadData];
    [self setTotalPrice];
}

//计算总价格
- (void) setTotalPrice{
//    NSInteger price = 0;
    NSDecimalNumber *total = [NSDecimalNumber decimalNumberWithDecimal:@(0).decimalValue];
    for (KWMShopCartModel *model in _shopCartList) {
        if (model.line_price) {
//            price += model.line_price.priceValue.integerValue;
            total = [total decimalNumberByAdding:model.line_price.priceValue];
        }else{
//            price += [model.price.priceValue decimalNumberByMultiplyingBy:[NSDecimalNumber decimalNumberWithString:@(model.quantity).stringValue]].integerValue;
            total = [total decimalNumberByAdding:[model.price.priceValue decimalNumberByMultiplyingBy:[NSDecimalNumber decimalNumberWithString:@(model.quantity).stringValue]]];
        }
    }
//    _lbTotalPrice.text = [NSString stringWithFormat: @"¥%@",[KWMStringUtil getEUR2CNYstring:@(price)]];
    _lbTotalPrice.text = total.priceFormatted;
}

@end