//
//  CartViewController.m
//  RedAnt ERP Mobile
//
//  Created by Ray on 14-6-6.
//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
//


#import "RAUtils.h"
#import "CartViewController.h"
#import "ModelItemCell.h"
#import "iSalesNetwork.h"
//#import "CommonGridViewController.h"
#import "CreateOrderViewController.h"
#import "DetailViewController.h"
#import "EditModelPriceViewController.h"
#import "MainViewController.h"
#import "LoginViewController.h"
#import "ItemNotesViewController.h"

#import "CartGeneralNotesViewController.h"
#import "DefaultAppearance.h"
#import "DefaultTableHeaderView.h"
#import "SortItemViewController.h"
#import "SortButton.h"
#import "NotificationNameCenter.h"
#import "Singleton.h"
#import "JKMessageBoxController.h"
#import "PDFViewController.h"

#define ALERT_FREE 1024
#define ALERT_DEL 1025
#define ALERT_SET_FREE 1026
#define ALERT_RESTORE_FREE 1027

@interface CartViewController ()
{
    CGRect cancelButtonFrame;
}
@property (nonatomic,strong) SortItemViewController *sortItemController;
@property (nonatomic,assign) int sortIndex;
@property (nonatomic,strong) SortButton *sortButton;
@property (strong, nonatomic) IBOutlet UIButton *placeOrderButton;
@property (strong, nonatomic) IBOutlet UIButton *cancelOrderButton;

@property (nonatomic,strong) NSOperationQueue *dataOperationQueue;
@property (strong, nonatomic) IBOutlet UIButton *emailButton;
@property (strong, nonatomic) IBOutlet UIButton *printButton;

@property (nonatomic,assign) BOOL currentOrderIsMerged;

@property (nonatomic,copy) NSString *print_url;

@property (nonatomic,assign) BOOL available;///<所有Model均有库存，才能Place Order。

@end

@implementation CartViewController

- (NSOperationQueue *)dataOperationQueue {
    if (!_dataOperationQueue) {
        _dataOperationQueue = [[NSOperationQueue alloc] init];
        _dataOperationQueue.maxConcurrentOperationCount = 1;
    }
    return _dataOperationQueue;
}


- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

-(void) logout
{
    
    [self.content_arr removeAllObjects];
}


- (IBAction)OnEditSelectClick:(id)sender {
    
    
    
    
    NSMutableArray* arr_ids = [[NSMutableArray alloc] init];
    
    
    long count = self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
    
    if(count==0)
    {
        [RAUtils message_alert:@"No item in the cart" title:@"Cart" controller:self] ;
        return;
    }
    for(int i=0;i<count;i++)
    {
        NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
        
        [arr_ids addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"cart_item_id"] intValue]]];
        
    }
    
    NSString * ids = [arr_ids componentsJoinedByString:@","];
    
    
    
    UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Select all model and" message:nil preferredStyle:UIAlertControllerStyleAlert];
    //block代码块取代了delegate
    
    
    
    UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Delete" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
        UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Are you sure remove all models from cart?" message:nil preferredStyle:UIAlertControllerStyleAlert];
        //block代码块取代了delegate
        
        
        
        UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
            UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"Remove Models From Cart"];
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                
                NSDictionary* cart_json = [iSalesNetwork cart_remove:ids];
                
                dispatch_async(dispatch_get_main_queue(), ^{
                    
                    [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
                    
                    if([[cart_json valueForKey:@"result"] intValue]==2)
                    {
                        
                        [self end_edit];
                        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
                        [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:true];
                        [((MainViewController*)appDelegate.main_vc) reloadCategory:true immediately:true];
                    }
                    else
                    {
                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
                    }
                    
                    
                    
                });
            });
            
            
        }];
        
        UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
            DebugLog(@"No");
        }];
        [alertControl addAction:actionOne];
        
        [alertControl addAction:alertthree];
        
        //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
        
        
        [self presentViewController:alertControl animated:YES completion:nil];
        
        DebugLog(@"%@",self.edit_select_arr);
        
        
    }];
    UIAlertAction *actionTwo = [UIAlertAction actionWithTitle:@"Move To Wish List" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
        UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"Move Models To Wish List"];
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            
            NSDictionary* cart_json = [iSalesNetwork move_cart2wish:ids];
            
            dispatch_async(dispatch_get_main_queue(), ^{
                
                [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
                
                if([[cart_json valueForKey:@"result"] intValue]==2)
                {
                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
                    [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
                    
                    [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:true];
                    [self end_edit];
                }
                else
                {
                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Move Models To Wish List" controller:self] ;
                }
                
                
                
            });
        });
        
        
    }];
    
    UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
        DebugLog(@"No");
    }];
    [alertControl addAction:actionOne];
    [alertControl addAction:actionTwo];
    [alertControl addAction:alertthree];
    
    //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
    
    
    [self presentViewController:alertControl animated:YES completion:nil];
    
    DebugLog(@"%@",self.edit_select_arr);
    
    
    
}
- (IBAction)onEditAddWishClick:(id)sender {
    if(self.edit_select_arr.count==0)
    {
        [RAUtils message_alert:@"You must select at least one model." title:@"Cannot Move To Wish List" controller:self] ;
        return;
    }
    
    NSString * ids = [self.edit_select_arr componentsJoinedByString:@","];
    
    //    UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Are you sure remove selected models from cart?" message:nil preferredStyle:UIAlertControllerStyleAlert];
    //    //block代码块取代了delegate
    //
    //
    //
    //    UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
    UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"Move Models To Wish List"];
    
    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        
        NSDictionary* cart_json = [iSalesNetwork move_cart2wish:ids];
        
        dispatch_async(dispatch_get_main_queue(), ^{
            
            [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
            
            if([[cart_json valueForKey:@"result"] intValue]==2)
            {
                
                [self end_edit];
                AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
                [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
                [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:true];
            }
            else
            {
                [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Move To Wish List" controller:self] ;
            }
            
            
            
        });
    });
    
    
    //    }];
    
    //    UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
    //        DebugLog(@"No");
    //    }];
    //    [alertControl addAction:actionOne];
    //
    //    [alertControl addAction:alertthree];
    //
    //    //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
    //
    //
    //    [self presentViewController:alertControl animated:YES completion:nil];
    //
    //    DebugLog(@"%@",self.edit_select_arr);
    
}
- (IBAction)onEditDelClick:(id)sender {
    
    
    if(self.edit_select_arr.count==0)
    {
        [RAUtils message_alert:@"You must select at least one model." title:@"Cannot Delete From Cart" controller:self] ;
        return;
    }
    
    NSString * ids = [self.edit_select_arr componentsJoinedByString:@","];
    
    UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Are you sure remove selected models from cart?" message:nil preferredStyle:UIAlertControllerStyleAlert];
    //block代码块取代了delegate
    
    
    
    UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
        UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"Remove Models From Cart"];
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            
            NSDictionary* cart_json = [iSalesNetwork cart_remove:ids];
            
            dispatch_async(dispatch_get_main_queue(), ^{
                
                [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
                
                if([[cart_json valueForKey:@"result"] intValue]==2)
                {
                    
                    [self end_edit];
                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
                    [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:true];
                    [((MainViewController*)appDelegate.main_vc) reloadCategory:true immediately:true];
                }
                else
                {
                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
                }
                
                
                
            });
        });
        
        
    }];
    
    UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
        DebugLog(@"No");
    }];
    [alertControl addAction:actionOne];
    
    [alertControl addAction:alertthree];
    
    //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
    
    
    [self presentViewController:alertControl animated:YES completion:nil];
    
    DebugLog(@"%@",self.edit_select_arr);
}

- (IBAction)onEndEditClick:(id)sender {
    [self end_edit];
}

-(void)begin_edit
{
    self.toolpanel.hidden = true;
    self.toolbar.hidden = false;
    
    //   DebugLog(@"begin edit %@",NSStringFromCGRect(self.cartItemView.frame));
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation];
    if ( UIInterfaceOrientationIsPortrait(orientation))
        self.cartItemView.frame = CGRectMake(0,0,768,880);
    else
        self.cartItemView.frame = CGRectMake(0,0,1024,624);
    [self.itemListTable setEditing:true animated:YES];
    [self.itemListTable reloadData];
}
-(void) end_edit
{
    self.toolpanel.hidden=false;
    self.toolbar.hidden=true;
    //    DebugLog(@"end edit %@",NSStringFromCGRect(self.cartItemView.frame));
    
    
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation];
    if ( UIInterfaceOrientationIsPortrait(orientation))
        self.cartItemView.frame = CGRectMake(0,0,768,824);
    else
        self.cartItemView.frame = CGRectMake(0,0,1024,568);
    
    [self.itemListTable setEditing:false animated:YES];
    [self.edit_select_arr removeAllObjects];
    [self.itemListTable reloadData];
    //    [self reload_data];
}

- (IBAction)onEditClick:(id)sender {
    
//        AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//    
//        [appDelegate test_onDecodedDataResult:@"4400022"];
//    
//    
//        return;
    
    
    [self begin_edit];
}

-(void) reload_container_getdata:(bool) update_data
{
    
    [super reload_container_getdata:update_data];
    if(update_data)
        [self reload_data];
    else
    {
        [self.itemListTable reloadData];
        [self refresh_total];
    }
}



-(void) showHidePrice
{
    [self reload_container_getdata:false];
    //    [self refresh_total];
    
}


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        
    }
    return self;
}
- (IBAction)imgbtnClick:(UIButton *)sender {
    UITableViewCell* cell =(UITableViewCell*) sender.superview.superview;
    
    NSIndexPath *   indexPath = [self.itemListTable indexPathForCell:cell];
    //            DebugLog(@"shouldchangeedit %d_%d",indexPath.section,indexPath.row);
    NSDictionary * item_json = self.content_arr[indexPath.row];//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
    
    NSString* product_id = [item_json valueForKey:@"product_id"];
    
    int is_rate = [item_json[@"is_rate"] intValue];
    if(is_rate==1)
        return;
    
    DetailViewController* dvc = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController" ];
    //            dvc
    
    dvc.product_id=product_id;
    dvc.category_id=nil;
    dvc.ispush=true;
    
    [dvc reload];
    [self.navigationController pushViewController:dvc animated:true];
}
-(void)viewWillLayoutSubviews
{
    //    if(self.showDetail==true)
    //    {
    //        UIInterfaceOrientation orientation =[UIApplication sharedApplication].statusBarOrientation;
    //        int width=175;
    //        // int height;
    //        if(orientation == UIDeviceOrientationLandscapeLeft ||orientation == UIDeviceOrientationLandscapeRight)
    //        {
    //            width = 370;
    //            //      height = 400;
    //        }
    //        else
    //        {
    //            //      height = 300;
    //            width = 175;
    //        }
    //
    //
    //        CGRect frame = CGRectMake(0, 64, width, self.view.bounds.size.height-64);
    //
    //        self.collectionview.frame=frame;
    //
    //
    //
    //        CGRect framedetail = CGRectMake(width,64 ,self.view.bounds.size.width-width,self.view.bounds.size.height-64);
    //        self.detailView.frame = framedetail;
    //    }
    
    
    self.toolpanel.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.toolpanel.bounds].CGPath;
    
    
    //    self.collectionview.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.collectionview.bounds].CGPath;
}

- (void)viewWillAppear:(BOOL)animated
{
    
    [super viewWillAppear:animated];
    
    // print 13 email 19 cancel 24 place order

    // Shop 权限检查
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if (appDelegate.user && appDelegate.user_type == USER_ROLE_CUSTOMER) {
        if (![Singleton sharedInstance].permissions_edit_order) {
            
            CGRect frame0 = self.cancelOrderButton.frame;
            CGRect frame1 = self.placeOrderButton.frame;
            CGRect frame2 = self.emailButton.frame;
            CGRect frame3 = self.printButton.frame;
            
            CGFloat x = CGRectGetMaxX(frame1) - frame0.size.width;
            frame0.origin.x = x;
            self.cancelOrderButton.frame = frame0;
            
            x -= 19 + CGRectGetWidth(frame2);
            frame2.origin.x = x;
            self.emailButton.frame = frame2;
            
            x -= 13 + CGRectGetWidth(frame3);
            frame3.origin.x = x;
            self.printButton.frame = frame3;
            
            self.placeOrderButton.hidden = YES;
        } else {
            self.placeOrderButton.hidden = NO;
            CGSize size = cancelButtonFrame.size;
            CGFloat x = CGRectGetMinX(self.placeOrderButton.frame) - 24 - size.width;
            CGFloat y = CGRectGetMinY(self.placeOrderButton.frame);
            self.cancelOrderButton.frame = CGRectMake(x, y, size.width, size.height);
            
            CGRect frame2 = self.emailButton.frame;
            x -= 19 + CGRectGetWidth(frame2);
            frame2.origin.x = x;
            self.emailButton.frame = frame2;
            
            CGRect frame3 = self.printButton.frame;
            x -= 13 + CGRectGetWidth(frame3);
            frame3.origin.x = x;
            self.printButton.frame = frame3;
        }
    } else {
//        self.cancelOrderButton.frame = cancelButtonFrame;
        self.placeOrderButton.hidden = NO;
        CGSize size = cancelButtonFrame.size;
        CGFloat x = CGRectGetMinX(self.placeOrderButton.frame) - 24 - size.width;
        CGFloat y = CGRectGetMinY(self.placeOrderButton.frame);
        self.cancelOrderButton.frame = CGRectMake(x, y, size.width, size.height);
        
        CGRect frame2 = self.emailButton.frame;
        x -= 19 + CGRectGetWidth(frame2);
        frame2.origin.x = x;
        self.emailButton.frame = frame2;
        
        CGRect frame3 = self.printButton.frame;
        x -= 13 + CGRectGetWidth(frame3);
        frame3.origin.x = x;
        self.printButton.frame = frame3;
    }
    
    // 离线隐藏Email
    self.emailButton.hidden = appDelegate.offline_mode;
    // 离线隐藏Print
    self.printButton.hidden = appDelegate.offline_mode;
        
//    [self reload_data]; // 视图没及时刷新
    
    //    UIApplication * app = [UIApplication sharedApplication];
    //    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
    //    if(appDelegate.bLogin==false)
    //    {
    //        LoginViewController * loginvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
    //        //        loginvc.delegate = self;
    //        //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态，自己看看是哪种
    //
    //        loginvc.returnValue = ^(bool blogin){
    //
    //
    //            UIApplication * app = [UIApplication sharedApplication];
    //            AppDelegate *appDelegate = (AppDelegate *)[app delegate];
    //            MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
    //
    //            [main_vc checklogin:true];
    //
    ////            [self reload_data];
    //
    //            [[self navigationController] setNavigationBarHidden:YES animated:NO];
    //
    //        };
    //
    //        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:loginvc] ;
    //
    //
    //
    //
    //
    //        //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
    //
    //        navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态，自己看看是哪种
    //        [self presentViewController:navi animated:YES completion:^{
    //
    //            //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
    //
    //            DebugLog(@"CreateOrderViewController present.........");
    //
    //            //   self.btop = false;
    //            //  <#code#>
    //        }];
    //    }
    //    else
    //    {
    //    [self reload_data];
    ////    self.total = 0;
    //    }
    [[self navigationController] setNavigationBarHidden:YES animated:NO];
    
}

- (void)checkProductAvailable:(NSArray *)contents {
    
    [contents enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        
        if ([obj isKindOfClass:[NSDictionary class]]) {
            
            NSDictionary *item_json = (NSDictionary *)obj;
            BOOL isAvailable = ![[item_json valueForKey:@"is_out_of_stock"] boolValue];
            self.available = self.available && isAvailable;

        }
        
    }];
}

-(void) operation_reload_data
{
    if (self.dataOperationQueue.operationCount > 1) {
        return;
    }
    __weak typeof(self) weakself = self;
    dispatch_async(dispatch_get_main_queue(), ^{
        if(weakself.isrefreshing)
            return;
        
        weakself.available = YES;
        weakself.itemListTable.hidden = true;
        weakself.label_net_err.hidden=true;
        weakself.isrefreshing=true;
        //    [self.content_data removeAllObjects];
        // [self.itemListTable reloadData];
        //    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
        //
        //    [reF endRefreshing];
        //
        //    reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"];
        
        weakself.mum.center = weakself.view.center;
        weakself.mum.hidden = YES;
//        [self.mum startAnimating];
        DebugLog(@"reloading...");
        UIAlertView *loadingView = [RAUtils waiting_alert:@"Please Wait" title:@"Loading"];
        
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            DebugLog(@"BEGIN LOAD CART");
            NSDictionary* cart_json = [iSalesNetwork request_Cart:weakself.sortIndex];
            
            dispatch_async(dispatch_get_main_queue(), ^{
                //
//                [self.mum stopAnimating];
                [loadingView dismissWithClickedButtonIndex:0 animated:YES];
                
                //            self.content_data = [cart_json mutableCopy];
                weakself.freejson = [cart_json objectForKey:@"freeGiveaway"];
                weakself.notes = [cart_json valueForKey:@"general_note"];
                weakself.content_arr = [RAUtils dictionary2array:cart_json count_fields:@"count" item_mark:@"item_" items_mark:nil];
                weakself.currentOrderIsMerged = [[cart_json valueForKey:@"is_merged_order"] boolValue];
                [Singleton sharedInstance].currentOrderIsMerged = weakself.currentOrderIsMerged;
                [weakself.itemListTable reloadData];
                weakself.print_url = [cart_json valueForKey:@"cart_print_url"];
                
                
                [weakself checkProductAvailable:weakself.content_arr];

                
                [weakself refresh_total];
                
                int result=[[cart_json valueForKey:@"result"] intValue];
                
                if (weakself.dataOperationQueue.operationCount > 1) {
                    weakself.isrefreshing=false;
                    return;
                }
                
                if(result==2||result==1||result==0)
                {
                    
                    [weakself.edit_select_arr removeAllObjects];
                    
                    weakself.itemListTable.hidden = false;
                    UIApplication * app = [UIApplication sharedApplication];
                    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
                    appDelegate.cart_count =weakself.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
                    weakself.itemListTable.hidden=false;
                    if(weakself.onFinishLoad)
                        weakself.onFinishLoad();
                }
                else
                    if(result==RESULT_NET_ERROR)
                    {
                        weakself.label_net_err.hidden=false;
                        weakself.itemListTable.hidden=true;
                    }
                    else
                    {
                        if(result!=1)
                            [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Loading Cart" controller:weakself] ;
                    }
                
                weakself.isrefreshing=false;
                DebugLog(@"FINISH LOAD CART");
                
            });
        });
    });
    //    [[self navigationController] setNavigationBarHidden:YES animated:NO];
}

- (void) reload_data {
    __weak typeof(self) weakself = self;
    self.currentOrderIsMerged = NO;
    NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
        
        if (weakself) {
            __strong typeof(weakself) strongself = weakself;
            [strongself operation_reload_data];
        }
        
    }];
    
    [self.dataOperationQueue addOperation:operation];
}

-(void)manually_refresh
{
    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
    
    if(self.isrefreshing)
    {
        [reF endRefreshing];
        return;
    }
    
    reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing"];
    [self performSelector:@selector(ReloadData) withObject:nil afterDelay:1];
    //    DebugLog(@"refresh!!!!!!!!");
    
}
-(void) ReloadData
{
    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
    
    [reF endRefreshing];
    
    reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"];
    [self reload_data];
    
    
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.edit_select_arr= [[NSMutableArray alloc] init];
    self.label_net_err.layer.borderColor = [UIColor darkGrayColor].CGColor;
    self.label_net_err.layer.borderWidth = 2.0;
    self.label_net_err.layer.cornerRadius=15;
    self.label_net_err.layer.masksToBounds=true;
    
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(priceTypeChanged:) name:Change_Price_Type_Notification object:nil];
    
    
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(refresh_btn_click:)];
    //            tap.minimumPressDuration = 0.8; //定义按的时间
    [self.label_net_err addGestureRecognizer:tap];
    
    UIRefreshControl *ref = [[UIRefreshControl alloc]init];
    ref.tag = 200 ;
    ref.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"];
    ref.tintColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7];
    //    ref.hidden = true;
    [ref addTarget:self action:@selector(manually_refresh) forControlEvents:UIControlEventValueChanged];
    [self.itemListTable addSubview:ref];
    
    
    self.sortIndex = 0;
    self.currentOrderIsMerged = NO;
    
    self.toolpanel.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.toolpanel.bounds].CGPath;
    self.toolpanel.layer.masksToBounds = false;
    //添加四个边阴影
    
    self.toolpanel.layer.shadowColor = [UIColor blackColor].CGColor;
    self.toolpanel.layer.shadowOffset = CGSizeMake(0, 0);
    self.toolpanel.layer.shadowOpacity = 0.5;
    self.toolpanel.layer.shadowRadius = 2.0;
    
    
    cancelButtonFrame = self.cancelOrderButton.frame;
    
    //  CGRect frame =self.orderInfoTableView.tableHeaderView.frame;
    //    self.orderInfoTableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.orderInfoTableView.bounds.size.width, 0.0001)];
    //    self.orderInfoTableView.tableHeaderView.backgroundColor = [UIColor redColor];
    //    //    self.detailTable.sectionHeaderHeight = 0.0001;
    //    self.orderInfoTableView.sectionFooterHeight = 0.0001;
    // Do any additional setup after loading the view.
}
//-(void)SelectOrder:(NSString *)orderid
//{
////    self.editOrderID.text=orderid;
////    self.btnAddToOrder.enabled = true;
//}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
//- (IBAction)stepperAction:(UIStepper *)sender {
//
//
//}


- (IBAction)onContinueShoppingClick:(id)sender {
    
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    
    [appDelegate switchToPreviousVC];
    
}

- (IBAction)onPlaceOrder:(UIButton *)sender {
    
    
    [self placeOrder];
    
    
}

-(void)placeOrder
{
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if (appDelegate.user_type == USER_ROLE_CUSTOMER) {
        
        
        if (![Singleton sharedInstance].permissions_edit_order) {
            
            return;
        }
        
//        if (!self.available) {
//            
//            [RAUtils message_alert:@"There are some products is not available" title:@"Warning" controller:self];
//            return;
//        }
        
    }
    
//    NSMutableArray* checked = [[NSMutableArray alloc] init];
    
    bool have_free = false;
    
    long count = self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
    
    
    if(count==0)
    {
        [RAUtils message_alert:@"Add some model first." title:@"Cart Is Empty." controller:self] ;
        return;
    }
    for(int i=0;i<count;i++)
    {
        NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
//        bool check = [[item_json valueForKey:@"check"] boolValue];
        NSString* product_id = [item_json valueForKey:@"product_id"];
//        if(check)
//        {
//            [checked addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"cart_item_id"] intValue]]];
//            
//        }
        if(product_id.length==0)
        {
            [RAUtils message_alert:@"Some models in cart does not exist, you must remove them before place order." title:@"No Such Model" controller:self] ;
            return;
        }
        bool is_free = [[item_json valueForKey:@"is_free"]boolValue];
        if(is_free)
            have_free=true;
    }
    //     disable for debug
//    if(checked.count==0)
//    {
//        [RAUtils message_alert:@"You must select at least one model." title:@"Cannot Place Order" controller:self] ;
//        return;
//    }
    
    
    
    //  NSDictionary * freejson = [self.content_data objectForKey:@"freeGiveaway"];
 //   AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    
    
    /*   FREE GIVE AWAY
     int free_count = [[self.freejson valueForKey:@"count"]intValue];
     for(int ic=free_count-1;ic>=0;ic--)
     {
     float compare_price = [[self.freejson valueForKey:[NSString stringWithFormat:@"item_%d",ic]] floatValue];
     if(self.total>=compare_price && !have_free&&appDelegate.can_set_cart_price)
     {
     
     UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Free give away available.", nil) message:[NSString stringWithFormat:@"Order total price more than %.2f, do you want to add free give away item before place order?", compare_price] delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
     alert.tag = ALERT_FREE;
     [alert show];
     return;
     
     }
     }
     
     */
    
    NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
    //   NSString * string = [checked componentsJoinedByString:@","];
    //  [params setValue:string forKey:@"cart2Checkbox"];
    
    
    
    CreateOrderViewController * orderinfoVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"CreateOrderViewController"];
    
    orderinfoVC.disable_dropdown_refresh=true;
    orderinfoVC.url_type = URL_REMOTE;
    orderinfoVC.request_url=URL_CARTDELIVERY;
    
    orderinfoVC.params = params;
    
    orderinfoVC.delegate=self;
    //
    //    if(checked.count==count)
    //    {
    //    orderinfoVC.have_tail = true
    //    }
    
    [self.navigationController pushViewController:orderinfoVC animated:true];
    
    //    UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:orderinfoVC] ;
    //
    //
    //
    //
    //
    //    navi.modalPresentationStyle = UIModalPresentationPageSheet;//有三种状态，自己看看是哪种
    //    [self presentViewController:navi animated:YES completion:^{
    //
    //        DebugLog(@"CreateOrderViewController present.........");
    //
    //        //   self.btop = false;
    //        //  <#code#>
    //    }];
}

//- (IBAction)onCommit:(UIButton *)sender {
//    ;
//}
//- (IBAction)CreateOrder:(id)sender {
//}
//- (IBAction)AddToOrder:(id)sender {
//}
//- (IBAction)ChooseOrder:(id)sender {
//
//    OrderListViewController * orderlistVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"OrderListViewController"];
//  //  orderlistVC.delegate = self;
//    orderlistVC.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态，自己看看是哪种
//    [self presentViewController:orderlistVC animated:YES completion:^{
//
//        DebugLog(@"login.........");
//        //  <#code#>
//    }];
//}

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    //
    //    CommonGridViewController * orderlistVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"OrderListViewController"];
    //      orderlistVC.delegate = self;
    //    orderlistVC.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态，自己看看是哪种
    //    [self presentViewController:orderlistVC animated:YES completion:^{
    //
    //        DebugLog(@"textFieldShouldBeginEditing.........");
    //        //  <#code#>
    //    }];
    return NO;
}



- (IBAction)onDelete:(UIButton *)sender {
    return ;
    NSMutableArray* checked = [[NSMutableArray alloc] init];
    
    
    
    long count = self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
    for(int i=0;i<count;i++)
    {
        NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
        bool check = [[item_json valueForKey:@"check"] boolValue];
        if(check)
        {
            [checked addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"cart_item_id"] intValue]]];
            
        }
    }
    // disable for debug
    if(checked.count==0)
        return;
    
    //    NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
    NSString * string = [checked componentsJoinedByString:@","];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        
        NSDictionary* cart_json = [iSalesNetwork cart_remove:string];
        
        dispatch_async(dispatch_get_main_queue(), ^{
            
            
            
            if([[cart_json valueForKey:@"result"] intValue]==2)
            {
                
                [self reload_data];
            }
            else
            {
                [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
            }
            
            
            
        });
    });
}

-(void)refresh_total
{
    self.total=0;
    
    self.total_carton=0;
    self.total_cuft=0;
    self.total_weight=0;
    self.total_QTY=0;
    self.total_item=0;
    
    long count =self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
    for(int i=0;i<count;i++)
    {
        NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
        
        bool bcheck = [[item_json valueForKey:@"check"]boolValue];
        
        if(bcheck)
        {
            double unitprice = [[item_json valueForKey:@"unit_price"] doubleValue];
            double discount = [[item_json valueForKey:@"discount"] doubleValue];
            
            int count=[[item_json valueForKey:@"count"] intValue];
            
            double totalprice =count*unitprice * (1.0-discount/100.0);
            
            double cuft=[[item_json valueForKey:@"cuft"] doubleValue];
            double weight=[[item_json valueForKey:@"weight"] doubleValue];
            int carton=/*count**/[[item_json valueForKey:@"carton"] intValue];
            
            int item_count=1;
            
            int item_qty=1;
            NSDictionary * bundle_item =[item_json objectForKey:@"combine"];
            
            double dprice=0;
            
            if(bundle_item!=nil)
            {
                //  int citem=0;
                
                int bcount=[[bundle_item valueForKey:@"count"] intValue];
                for(int bc=0;bc<bcount;bc++)
                {
                    NSDictionary * bitem = [bundle_item objectForKey:[NSString stringWithFormat:@"item_%d",bc]];
                    int modulus= [[bitem valueForKey:@"modulus"] intValue];
                    //    citem+= modulus;
                    item_count+=1;
                    item_qty+=modulus;
                    double uprice= [[bitem valueForKey:@"unit_price"]doubleValue];
                    dprice+= uprice*modulus*count;
                    
                }
            }
            totalprice+= dprice;
            
            self.total+=totalprice;
            self.total_cuft+=cuft;
            self.total_carton+=carton;
            self.total_weight+=weight;
            self.total_item+=item_count;
            self.total_QTY+=(item_qty)*count;
            
        }
        
        
        
    }
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    NSString* subtotal = [NSString stringWithFormat:@"$%.2f",self.total];
    NSString* subcuft = [NSString stringWithFormat:@"%.2f ft³",self.total_cuft];
    NSString* subcarton = [NSString stringWithFormat:@"%d",self.total_carton];
    NSString* subweight = [NSString stringWithFormat:@"%.2f lbs",self.total_weight];
    
    
    NSString* subitems = [NSString stringWithFormat:@"%d",self.total_item];
    
    NSString* subqty = [NSString stringWithFormat:@"%d",self.total_QTY];
    
    if(appDelegate.can_see_price&&appDelegate.price_hidden==false)
    {
        
    }
    else
    {
        subtotal=nil;
        
    }
    
    self.labelTotal.text=subtotal;
    self.label_cuft.text=subcuft;
    self.label_carton.text=subcarton;
    self.label_weight.text=subweight;
    self.label_items.text = subitems;
    self.label_qty.text = subqty;
    self.label_notes.text = [self.notes stringByReplacingOccurrencesOfString:@"\n" withString:@" "];
    
}
- (IBAction)onEditGeneralNotes:(id)sender {
    
    UIViewController* parentvc=self;
    
    
    
    
    CartGeneralNotesViewController * vc =[ parentvc.storyboard instantiateViewControllerWithIdentifier:@"CartGeneralNotesViewController"];
    
    
//    NSMutableDictionary * item_json = [self.content_arr[indexPath.row ] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
    
    
    
    
    vc.notes=self.notes;
   
    
    //    vc.delegate = parentvc.self;
    //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态，自己看看是哪种
            vc.onSetValue = ^(NSString* notes){
                self.notes = notes;
                
                [self refresh_total];
            };
    //
    
    UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ;
    
    
    
    
    
    //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
    
    navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态，自己看看是哪种
    [parentvc presentViewController:navi animated:YES completion:^{
        
        //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
        
        DebugLog(@"EditModelPriceViewController present.........");
        
        //   self.btop = false;
        //  <#code#>
    }];
    
}
//- (IBAction)onSelectAll:(UIButton *)sender {
//    
//    
//    NSMutableArray* arr_ids = [[NSMutableArray alloc] init];
//    
//    
//    
//    
//    
//    
//    if([self.btnselect.titleLabel.text isEqualToString:@"Select all"])
//    {
//        
//        long count = self.content_arr.count;// [[self.content_data valueForKey:@"count"] intValue];
//        for(int i=0;i<count;i++)
//        {
//            NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy]; //[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
//            if(![[item_json valueForKey:@"check"] boolValue])
//                [arr_ids addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"cart_item_id"] intValue]]];
//            
//        }
//        [self.btnselect setTitle: @"Deselect all" forState: UIControlStateNormal];
//    }
//    else
//    {
//        long count = self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
//        for(int i=0;i<count;i++)
//        {
//            NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy]; //[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
//            if([[item_json valueForKey:@"check"] boolValue])
//                [arr_ids addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"cart_item_id"] intValue]]];
//            
//        }
//        [self.btnselect setTitle: @"Select all" forState: UIControlStateNormal];
//    }
//    
//    NSString * ids = [arr_ids componentsJoinedByString:@","];
//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//        
//        
//        NSDictionary* check_json = [iSalesNetwork cart_check:ids];
//        
//        dispatch_async(dispatch_get_main_queue(), ^{
//            
//            
//            
//            if([[check_json valueForKey:@"result"] intValue]==2)
//            {
//                
//                long count = self.content_arr.count;
//                for(int i=0;i<count;i++)
//                {
//                    NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy];
//                    if([item_json[@"check"] boolValue])
//                        item_json[@"check"]= @"false";
//                    else
//                        item_json[@"check"]= @"true";
//                    
//                    self.content_arr[i] = item_json;
//                    //[self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%d",i]];
//                }
//                
//                [self reload_container_getdata:false];
//                
//                // [self reload_data];
//            }
//            else
//            {
//                [RAUtils message_alert:[check_json valueForKey:@"err_msg"] title:nil controller:self] ;
//            }
//            
//            
//            
//        });
//    });
//    
//    
//    
//    
//    
//    
//    //  [self refresh_total];
//    //  self.labelTotal.text=[NSString stringWithFormat:@"$%.2f",self.total];
//    //    DebugLog(self.btnselect.titleLabel.text);
//    //    if(self.btnselect.titleLabel.text)
//}
//#pragma mark - MODEL cell delegate
//-(void) returnQTY:(int)qty
//{
//    NSMutableDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
//    
//    int count=[[item_json valueForKey:@"count"] intValue];
//    
//    if(count==qty)
//        return;
//    [item_json setValue:[NSString stringWithFormat:@"%d",qty] forKey:@"count"];
//    double unit_price = [[item_json valueForKey:@"unit_price"] doubleValue];
//    //   double sub_total=[[item_json valueForKey:@"subtotal_price"] doubleValue];
//    [item_json setValue:[NSString stringWithFormat:@"%f",unit_price*qty] forKey:@"subtotal_price"];
//    self.content_arr[indexPath.row]= item_json;
//    //  [self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
//    [self refresh_total];
//    //  self.total+=(unit_price*qty-sub_total);
//    //  self.labelTotal.text=[NSString stringWithFormat:@"$%.2f",self.total];
//    
//    
//}
- (IBAction)OnCancelOrderClicked:(id)sender {
    
    
    UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Cancel Order" message:@"Are you sure to cancel the order in cart ?" preferredStyle:UIAlertControllerStyleAlert];
    //block代码块取代了delegate
    
    
    
    UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
           AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
        UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Cancel Order"];
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            
            NSDictionary* return_json = [iSalesNetwork cancel_Order:nil order_code:appDelegate.order_code];
            
            dispatch_async(dispatch_get_main_queue(), ^{
                [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
                
                
                if([[return_json valueForKey:@"result"] intValue]==2)
                {
                    //if([appDelegate.order_code isEqualToString: [self.content_data[indexPath.row] valueForKey:@"order_code"]])
                    {
                        appDelegate.order_code= nil;
                        //appDelegate.user_type = 0;
                        appDelegate.customerInfo = nil;
                        appDelegate.contact_id = nil;
                        appDelegate.order_customer_id = nil;
                        [appDelegate SetSo:nil];
                        appDelegate.cart_count=0;
                        [appDelegate update_count_mark];
                        
                        
                    }
                    //[RAUtils message_alert:nil title:@"Order Canceled" controller:self] ;
                    //[self ReloadData];
                    
//                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//                    //                        appDelegate.order_code = nil;
//                    
//                    [appDelegate closeOrder];
//                    [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false];
                    [((MainViewController*)appDelegate.main_vc) switchToHome];
                    
//                    if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.submit_order_logout)
//                    {
//                        [((MainViewController*)appDelegate.main_vc) Loginout:false];
//                    }
                }
                else
                {
                    [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Cancel Order" controller:self] ;
                }
                
                
                
                
            });
        });
        
        
    }];
    
    UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
        DebugLog(@"No");
    }];
    [alertControl addAction:actionOne];
    
    [alertControl addAction:alertthree];
    
    //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
    
    
    [self presentViewController:alertControl animated:YES completion:nil];
    
    DebugLog(@"%@",self.edit_select_arr);
    
    


}

#pragma mark - commoneditor controller delegate
-(void) returnValue:(NSMutableDictionary *)value indexPath :(NSIndexPath*) indexPath
{
    //   [self reload_data];
    
    [[self navigationController] setNavigationBarHidden:YES animated:NO];
}
#pragma mark - Table view data source
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    NSMutableDictionary * item_json = [self.content_arr[indexPath.row ] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
    
    NSString* notes =[item_json valueForKey:@"note"];
    if(notes.length>0)
    {
        return 146;
    }
    else
        return 120;
    

}

//- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
//{
//    return 0;
//}
//- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
//{
//    return 0;
//}
//- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
//{
//        UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)];
//    return myView;
//
//}

//- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
//{
//    UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)];
////    myView.backgroundColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7];
////    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 90, 22)];
////    titleLabel.textColor=[UIColor whiteColor];
////    titleLabel.backgroundColor = [UIColor clearColor];
////    if(section==0)
////        titleLabel.text=NSLocalizedString(@"display_items", nil);
////    else
////        titleLabel.text=NSLocalizedString(@"hide_items", nil);
////    [titleLabel sizeToFit];
////    [myView addSubview:titleLabel];
////
//    return myView;
//}
//
//- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
//    if(section==0)
//        return nil;
//    else
//        return @"detail section";
//}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 40;
}
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    
    NSString* value =[DefaultAppearance get_noneappearance_value:@"DefaultTableHeaderView" valuename:@"title_text_color"];
    
    if(value==nil)
        value=@"";
    unsigned long color = strtoul([value UTF8String],0,16);
    DefaultTableHeaderView* myView = [[DefaultTableHeaderView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)];
  //  myView.backgroundColor = UIColorFromRGB(0x996633);
    
    myView.layer.shadowPath =[UIBezierPath bezierPathWithRect:myView.bounds].CGPath;
    
    myView.layer.shadowColor = [UIColor blackColor].CGColor;
    myView.layer.shadowOffset = CGSizeMake(0, 0);
    myView.layer.shadowOpacity = 0.5;
    myView.layer.shadowRadius = 2.0;
    
//    UIButton *sortButton = [UIButton buttonWithType:UIButtonTypeCustom];
//    sortButton.frame = CGRectMake(10, 5.5, (40 - 5.5 * 2), (40 - 5.5 * 2));
//    [sortButton setImage:[UIImage imageNamed:@"check_1_24"] forState:UIControlStateNormal];
//    [sortButton addTarget:self action:@selector(cartSortButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    [myView addSubview:self.sortButton];
    
    UILabel *solabel = [[UILabel alloc] initWithFrame:CGRectMake(130, 5.5, 90, 22)];
    solabel.textColor=UIColorFromRGB(color);
    solabel.backgroundColor = [UIColor clearColor];
    solabel.autoresizingMask=UIViewAutoresizingFlexibleRightMargin;
    solabel.text=NSLocalizedString(@"Description", nil);
    [solabel sizeToFit];
    [myView addSubview:solabel];
    CGFloat x = tableView.bounds.size.width - (768 - 320);
    UILabel *contactlabel = [[UILabel alloc] initWithFrame:CGRectMake(320, 5.5, 90, 22)];
    contactlabel.textColor=UIColorFromRGB(color);
    contactlabel.autoresizingMask=UIViewAutoresizingFlexibleRightMargin;
    contactlabel.backgroundColor = [UIColor clearColor];
    contactlabel.text=NSLocalizedString(@"Unit price", nil);
    [contactlabel sizeToFit];
    [myView addSubview:contactlabel];
    
    x = tableView.bounds.size.width - (768 - 470);
    UILabel *modellabel = [[UILabel alloc] initWithFrame:CGRectMake(470, 5.5, 90, 22)];
    modellabel.textColor=UIColorFromRGB(color);
     modellabel.autoresizingMask=UIViewAutoresizingFlexibleRightMargin;
    modellabel.backgroundColor = [UIColor clearColor];
    modellabel.text=NSLocalizedString(@"Discount/QTY", nil);
    [modellabel sizeToFit];
    [myView addSubview:modellabel];
    x = tableView.bounds.size.width - (768 - 640);
    UILabel *pricelabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 5.5, 90, 22)];
    pricelabel.textColor=UIColorFromRGB(color);
    pricelabel.autoresizingMask=UIViewAutoresizingFlexibleLeftMargin;
    pricelabel.backgroundColor = [UIColor clearColor];
    pricelabel.text=NSLocalizedString(@"Set/Subtotal", nil);
    [pricelabel sizeToFit];
    [myView addSubview:pricelabel];
    
    
    
    
    
    
    
    //
    return myView;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // NSDictionary * item_json = [self.content_data objectForKey:@"items"];
    long count =self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
    return count;
    
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    //    if(tableView==self.itemListTable)
    //    {
    
    //    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    
    
    NSString *CellIdentifier = @"CartItemCell";
    ModelItemCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    NSDictionary * item_json = self.content_arr[indexPath.row];//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
    NSDictionary * combine_json =[item_json objectForKey:@"combine"];
    bool isfree = [[item_json valueForKey:@"is_free"]boolValue];
    NSString* notes = [item_json valueForKey:@"note"];
    BOOL is_out_of_stock = [[item_json valueForKey:@"is_out_of_stock"] boolValue];
    bool noprice =[[item_json valueForKey:@"is_no_price"]boolValue];
    cell.noprice = noprice;
    cell.enable_longpress = true;
    cell.bundle_item=combine_json;
    NSString* img_url = [item_json valueForKey:@"img_url"];
    NSString* description = [item_json valueForKey:@"description"];
    //    NSString* identifier = [item_json valueForKey:@"identifier"];
    //    NSString* attribute = [item_json valueForKey:@"attribute"];
    //    NSString* currency = [item_json valueForKey:@"currency"];
    int count =[[item_json valueForKey:@"count"] intValue];
    
    int stockUom =[[item_json valueForKey:@"stockUom"] intValue];
    
    //    double totalprice =[[item_json valueForKey:@"subtotal_price"] doubleValue];
    
    double unitprice=[[item_json valueForKey:@"unit_price"] doubleValue];
    
    double discount =[[item_json valueForKey:@"discount"] doubleValue];
    
    
    NSString* product_id = [item_json valueForKey:@"product_id"];
    
    // handle no such model
    if(product_id.length==0)
        cell.labelNoSuchModel.hidden=false;
    else
        cell.labelNoSuchModel.hidden=true;
    
    if (appDelegate.user_type == USER_ROLE_CUSTOMER) {
        if (!is_out_of_stock) {
            cell.labelOutOfStock.hidden = YES;
        } else {
            cell.labelOutOfStock.hidden = NO;
        }
    } else {
        cell.labelOutOfStock.hidden = YES;
    }
    
    //    discount = 5.0;
    cell.discount = discount;
    
    
    CGRect frame = cell.frame;
    
    
    if(notes.length>0)
    {
        cell.labelNotes.text = [@"Note: " stringByAppendingString:[notes stringByReplacingOccurrencesOfString:@"\n" withString:@" "]];
        frame.size.height = 146;
    }
    else
    {
        cell.labelNotes.text = nil;
        frame.size.height = 120;
    }
    
  //  cell.frame = frame;
    
    NSString* discountstr=[NSString stringWithFormat:@"%@%% off", [RAUtils FloatFormat:discount]];
    
    if(isfree)
    {
        cell.labelOldPrice.hidden = false;
        cell.labelOldPrice.textColor = [UIColor redColor];
        cell.labelOldPrice.text=@"Free";
        cell.labelOldPrice.hideline = true;
        
        cell.labelDiscount.hidden = true;
    }
    else
    {
        cell.labelOldPrice.textColor = [UIColor blackColor];
        cell.labelOldPrice.hideline = false;
        if(discount==0)
        {
            cell.labelOldPrice.hidden = true;
            cell.labelDiscount.hidden = true;
            
        }
        else
        {
            cell.labelOldPrice.hidden = false;
            cell.labelDiscount.hidden = false;
        }
    }
    cell.onReturnQTY=^(int qty,NSDictionary* ext)
    {
        NSMutableDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
        
//        int count=[[item_json valueForKey:@"count"] intValue];
        
//        if(count==qty)
//            return;
        [item_json setValue:[NSString stringWithFormat:@"%d",qty] forKey:@"count"];
        [item_json setValue:[ext valueForKey:@"cuft"] forKey:@"cuft"];
                [item_json setValue:[ext valueForKey:@"carton"] forKey:@"carton"];
                [item_json setValue:[ext valueForKey:@"weight"] forKey:@"weight"];
        double unit_price = [[item_json valueForKey:@"unit_price"] doubleValue];
        //   double sub_total=[[item_json valueForKey:@"subtotal_price"] doubleValue];
        [item_json setValue:[NSString stringWithFormat:@"%f",unit_price*qty] forKey:@"subtotal_price"];
        self.content_arr[indexPath.row]= item_json;
        //  [self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
        [self refresh_total];
    };
 //   cell.delegate=self;
 //   cell.from=indexPath;
    cell.unit_price = unitprice;
    //    cell.labelAttribute.text = attribute;
    //    cell.labelCurrency.text = currency;
    
    
    NSString* oldprice =[NSString stringWithFormat:@"%.2f",unitprice];
    NSString* newprice = [NSString stringWithFormat:@"%.2f",unitprice* (1.0-discount/100)*count];
    NSString* newunitprice = [NSString stringWithFormat:@"%.2f",unitprice* (1.0-discount/100)];
    if(appDelegate.can_see_price&&appDelegate.price_hidden==false)
    {
        
    }
    else
    {
        oldprice=nil;
        newprice=nil;
        newunitprice=nil;
    }
    
    
    cell.labelDiscount.text = discountstr;
    cell.labelOldPrice.text = oldprice;
    
    cell.labelMasterpack.text =[NSString stringWithFormat:@"Sold in QTY of:%d", stockUom];
    
    cell.labelDescription.text = description;
    //   cell.labelIdentifier.text = identifier;
    
    if(noprice&&unitprice==0.0)
    {
        cell.labelPrice.text = @"No Price";
        
        cell.labelUnitPrice.text = @"No Price";
    }
    else
    {
        cell.labelPrice.text = newprice;
        
        cell.labelUnitPrice.text = newunitprice;
    }
    bool check = [[item_json valueForKey:@"check"] boolValue];
    if(check)
    {
        
        cell.img_checkmark.hidden=false;
        //        [item_json setValue:@"0" forKey:@"check"];
        
    }
    else
    {
        //        [item_json setValue:@"1" forKey:@"check"];
        
        cell.img_checkmark.hidden=true;
    }
    
    NSString* cart_item_id= [item_json valueForKey:@"cart_item_id"];
    cell.cart_id = cart_item_id;
    
    if(/*appDelegate.user_type==USER_ROLE_CUSTOMER*/ true)
        [cell init_Stepper:stockUom max:9999 min:stockUom value:count];
    else
        [cell init_Stepper:1 max:9999 min:1 value:count];
    
    
    [cell set_Count:count];
    
    
    if (![cell.imageName isEqualToString:img_url]) {
        cell.imageName = img_url;
        [cell.btnImage setBackgroundImage:[UIImage imageNamed:@"loading_s"] forState:UIControlStateNormal];
        NSString* file_name=[img_url lastPathComponent];
        NSData* img_data=[iSalesDB load_cached_img:file_name loadFrom:img_url];
        if(img_data!=nil)
        {
            
            UIImage * img =[UIImage imageWithData:img_data];
            [cell.btnImage setBackgroundImage:img forState:UIControlStateNormal];
        }
        else
        {
            
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                
                NSData*  downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url]];
                
                dispatch_async(dispatch_get_main_queue(), ^{
                    
                    
                    
                    if(downloadimg_data!=nil)
                    {
                        
                        [iSalesDB cache_img:downloadimg_data filename:file_name saveTo:img_url];
                        
                        UIImage * img =[UIImage imageWithData:downloadimg_data];
                        [cell.btnImage setBackgroundImage:img forState:UIControlStateNormal];
                    }
                    else
                    {
                        [cell.btnImage setBackgroundImage:[UIImage imageNamed:@"notfound_s"] forState:UIControlStateNormal];
                    }
                    
                });
            });
            
            
        }
    }
    cell.backgroundColor = [UIColor whiteColor];
    
    
    if(self.itemListTable.editing)
    {
        cell.editCount.enabled = false;
        cell.stepper.hidden=true;
    }
    else
    {
        cell.editCount.enabled=true;
        cell.stepper.hidden=false;
        
    }
    return cell;
    //    }
    //    else
    //    {
    //        NSString *CellIdentifier = @"OrderInfoListItem";
    //        UITableViewCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    //        return cell;
    //    }
}


-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(!self.itemListTable.editing)
        return;
    
    NSMutableDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
    
    NSString *cart_item_id=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
    if ([self.edit_select_arr containsObject:cart_item_id])
    {
        [self.edit_select_arr removeObject:cart_item_id];
    }
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    NSMutableDictionary * item_json =[self.content_arr[indexPath.row] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
    if(self.itemListTable.editing)
    {
        
        NSString *cart_item_id=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
        
        if (![self.edit_select_arr containsObject:cart_item_id]) {
            [self.edit_select_arr addObject:cart_item_id];
        }
        
        return;
    }
    
    // no checkmark support anymore for cart
    
    return;
    
//    ModelItemCell* cell = (ModelItemCell*)[tableView cellForRowAtIndexPath:indexPath];
//    
//    
//    cell.selected = false;
//    //    self.dirty = true;
//    
//    
//    bool check = [[item_json valueForKey:@"check"] boolValue];
//    if(check)
//    {
//        [item_json setValue:@"false" forKey:@"check"];
//        cell.img_checkmark.hidden=true;
//        [self.btnselect setTitle: @"Select all" forState: UIControlStateNormal];
//        //        double totalprice =[[item_json valueForKey:@"subtotal_price"] doubleValue];
//        //        self.total-=totalprice;
//    }
//    else
//    {
//        [item_json setValue:@"true" forKey:@"check"];
//        cell.img_checkmark.hidden=false;
//        //        double totalprice =[[item_json valueForKey:@"subtotal_price"] doubleValue];
//        //        self.total+=totalprice;
//    }
//    
//    
//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//        
//        
//        NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
//        
//        NSDictionary* check_json = [iSalesNetwork cart_check:ids];
//        
//        dispatch_async(dispatch_get_main_queue(), ^{
//            
//            
//            
//            if([[check_json valueForKey:@"result"] intValue]==2)
//            {
//                
//                
//                if([item_json[@"check"] boolValue]==false)
//                    item_json[@"check"]= @"false";
//                else
//                    item_json[@"check"]= @"true";
//                
//                self.content_arr[indexPath.row] = item_json;
//                //[self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
//                
//                
//                [self reload_container_getdata:false];
//                
//                
//            }
//            else
//            {
//                [RAUtils message_alert:[check_json valueForKey:@"err_msg"] title:nil controller:self] ;
//            }
//            
//            
//            
//        });
//    });
//    
//    //debug
//    //[self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
//    
//    [self refresh_total];
    //self.labelTotal.text=[NSString stringWithFormat:@"$%.2f",self.total];
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tv editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    if(self.itemListTable.editing)
        return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
    else
        return UITableViewCellEditingStyleDelete;
}

#pragma mark 在滑动手势删除某一行的时候，显示出更多的按钮

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath

{
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    // 添加一个删除按钮
    
    self.indexPath=indexPath;
    
    
    UITableViewRowAction *deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@" Delete " handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
        
        DebugLog(@"delete click");
        
         //[self.itemListTable setEditing:false animated:YES];
        
        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Delete confirm", nil) message:NSLocalizedString(@"Are you sure remove model from cart?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
        alert.tag = ALERT_DEL;
        // alert.
        [alert show];
        
        
        
        
        
        
    }];
    
    deleteRowAction.backgroundColor = UIColorFromRGB(0x336699);
    
    
    UITableViewRowAction *addWatchAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Move To Wish List" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
        
        DebugLog(@"Wishlist click");
        
        
        NSMutableDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
        
        NSString* cart_item_id = [item_json valueForKey:@"cart_item_id"];
        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
        
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//            ModelItemCell* cell=[self.itemListTable cellForRowAtIndexPath:indexPath];
//            [cell cancel_setQTY];
            
            NSDictionary* return_json = [iSalesNetwork move_cart2wish:cart_item_id ];
            
            dispatch_async(dispatch_get_main_queue(), ^{
                
                if([[return_json valueForKey:@"result"] intValue]==2)
                {
                    
                    
                    
                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
                    [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
                    for(int i=0;i<self.content_arr.count;i++)
                    {
                        NSDictionary* obj_json = self.content_arr[i];
                        NSString* _id =[obj_json valueForKey:@"cart_item_id"];
                        if([_id isEqualToString:cart_item_id])
                        {
                            [self.content_arr removeObjectAtIndex:i];
                            [self.itemListTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
                            appDelegate.cart_count--;
                            [appDelegate update_count_mark];
                            
                            
                            [self refresh_total];
                        }
                        
                    }
                    
                    [self.itemListTable reloadData];

                }
                else
                {
                    [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Move To Wish List" controller:self] ;
                }
                
                
                
            });
        });
        
        
        
        
        
    }];
    
    addWatchAction.backgroundColor = UIColorFromRGB(0x339966);
    
    
    // 添加一个编辑按钮
    __weak typeof(self) weakself = self;
    UITableViewRowAction *editRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Edit Price"handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
        
        DebugLog(@"edit click");
        if (appDelegate.user_type == USER_ROLE_CUSTOMER) {
            
            
            if (self.currentOrderIsMerged) { // 合并过的订单不能编辑价格
                
                UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Warning" message:@"Purchase Order Can't Edit Price" preferredStyle:UIAlertControllerStyleAlert];
                
                UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
                    [alert dismissViewControllerAnimated:YES completion:nil];
                }];
                
                [alert addAction:action];
                
                if (weakself) {
                    __strong typeof(weakself) strongself = weakself;
                    [strongself presentViewController:alert animated:YES completion:nil];
                }
                
                return ;
            }
            
            if ([Singleton sharedInstance].npd_shop_price_type == 0) { // 提货价不能编辑价格
                
                UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Warning" message:[NSString stringWithFormat:@"Current Price Type is %@,You Can't Change it",[Singleton sharedInstance].deliveryString] preferredStyle:UIAlertControllerStyleAlert];
                
                UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
                    [alert dismissViewControllerAnimated:YES completion:nil];
                }];
                
                [alert addAction:action];
                
                if (weakself) {
                    __strong typeof(weakself) strongself = weakself;
                    [strongself presentViewController:alert animated:YES completion:nil];
                }
                
                return ;
            }
            
        }
        
        
        UIViewController* parentvc=self;
        
        
        
        
        EditModelPriceViewController * vc =[ parentvc.storyboard instantiateViewControllerWithIdentifier:@"EditModelPriceViewController"];
        
        
        NSMutableDictionary * item_json = [self.content_arr[indexPath.row ] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
        
        
        
        
        vc.discount=[[item_json valueForKey:@"discount"] floatValue];
        vc.price = [[item_json valueForKey:@"unit_price"] floatValue];
        vc.cart_id = [NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
        //    vc.delegate = parentvc.self;
        //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态，自己看看是哪种
        vc.onSetValue = ^(double price,double discount){
            
            bool bmodify=false;
            if(price!= [[item_json valueForKey:@"unit_price"] floatValue])
                bmodify=true;
            
            NSString* notes = [item_json valueForKey:@"note"];
            if(notes.length==0)
                notes=@"";
            if(bmodify)
            {
                if([notes isEqualToString:@""])
                    notes=@"PRICE MODIFIED";

                NSRange range;
                range = [notes rangeOfString:@"PRICE MODIFIED"];
                if (range.location != NSNotFound) {
                    
                }else{
                   notes= [notes stringByAppendingString:@"\nPRICE MODIFIED"];
                }
            }
            
            UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Update Price"];
            
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            
                
                
                NSDictionary* cart_json = nil;
                
                cart_json = [iSalesNetwork cart_setPrice:[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]] price:price discount:discount notes:notes];
                
                dispatch_async(dispatch_get_main_queue(), ^{
                    
                    [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
                    
                    if([[cart_json valueForKey:@"result"] intValue]==2)
                    {
                        [item_json setValue:[NSNumber numberWithDouble:price ] forKey:@"unit_price"];
                        
                        [item_json setValue:[NSNumber numberWithDouble:discount ] forKey:@"discount"];
                         [item_json setValue:notes forKey:@"note"];
                        self.content_arr[indexPath.row ] = item_json;
                        tableView.editing = false;
                        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
                        [self refresh_total];
                    }
                    else
                    {
                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Update Price" controller:self] ;
                    }
                    
                    
                    
                    
                });
            });

            


            
          //  [self reload_data];//[main_vc checklogin:true];
        };
        
        
        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ;
        
        
        
        
        
        //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
        
        navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态，自己看看是哪种
        [parentvc presentViewController:navi animated:YES completion:^{
            
            //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
            
            DebugLog(@"EditModelPriceViewController present.........");
            
            //   self.btop = false;
            //  <#code#>
        }];
        // [self.itemListTable setEditing:false animated:YES];
        //[tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
        
        
    }];
    
    editRowAction.backgroundColor = UIColorFromRGB(0xff9933);
    
    
    //    // 添加一个更多按钮
    //
    //    UITableViewRowAction *moreRowAction = [UITableView RowActionrowActionWithStyle:UITableViewRowActionStyleNormal title:@"更多" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
    //
    //        DebugLog(@点击了更多);
    //
    //
    //        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
    //
    //    }];
    //
    //    moreRowAction.backgroundEffect = [UIBlurEffecteffectWithStyle:UIBlurEffectStyleDark];
    //
    
    // 将设置好的按钮放到数组中返回
    
    
    
    //    UITableViewRowAction *freeRowAction = nil;
    //
    //
    //    NSDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
    //
    //    bool isfree = [[item_json valueForKey:@"is_free"]boolValue];
    //
    //    if(!isfree)
    //    {
    //
    //        freeRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Set Free" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
    //
    //            DebugLog(@"free click");
    //
    //
    //
    //            UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Free give away confirm", nil) message:NSLocalizedString(@"Are you sure make this model free?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
    //            alert.tag = ALERT_SET_FREE;
    //            // alert.
    //            [alert show];
    //        }];
    //    }
    //    else
    //    {
    //
    //        freeRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Not Free" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
    //
    //            UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Restore free model confirm", nil) message:NSLocalizedString(@"Are you sure restore free model?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
    //            alert.tag = ALERT_RESTORE_FREE;
    //            // alert.
    //            [alert show];
    //        }];
    //    }
    //
    //
    //
    //    freeRowAction.backgroundColor = [UIColor lightGrayColor];
    
    UITableViewRowAction *noteRowAction = nil;
    
    
   // NSDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
    
    
    
    
    noteRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Edit note" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
        
        DebugLog(@"item note click");
        
        
        UIViewController* parentvc=self;
        
        
        
        
        ItemNotesViewController * vc =[ parentvc.storyboard instantiateViewControllerWithIdentifier:@"ItemNotesViewController"];
        
        
        NSMutableDictionary * item_json = [self.content_arr[indexPath.row ] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
        
        
        vc.onSaveNote=^(NSString* notes){
            [item_json setValue:notes forKey:@"note"];
            self.content_arr[indexPath.row ] = item_json;
            tableView.editing = false;
                    [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
        };
        
        vc.notes=[item_json valueForKey:@"note"];
        vc.cart_id = [NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
        //    vc.delegate = parentvc.self;
        //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态，自己看看是哪种
//        vc.onSetValue = ^(){
//            [self reload_data];//[main_vc checklogin:true];
//        };
//        
        
        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ;
        
        
        
        
        
        //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
        
        navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态，自己看看是哪种
        [parentvc presentViewController:navi animated:YES completion:^{
            
            //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
            
            DebugLog(@"EditModelPriceViewController present.........");
            
            //   self.btop = false;
            //  <#code#>
        }];
        //    [self.itemListTable setEditing:false animated:YES];
       // [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
        


        
    }];
    
    
    
    noteRowAction.backgroundColor = [UIColor lightGrayColor];


    
    
    
    if(appDelegate.user_type==USER_ROLE_EMPLOYEE)
    {
        NSMutableDictionary * item_json = [self.content_arr[indexPath.row ] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]
        NSString* product_id = [item_json valueForKey:@"product_id"];
        
        int is_rate = [item_json[@"is_rate"] intValue];

        NSMutableArray* arr=[@[] mutableCopy];
        
        if(product_id.length>0)
            [arr addObject:noteRowAction];
        
        [arr addObject:deleteRowAction];
        
        if(product_id.length>0&& is_rate==0)
            [arr addObject:addWatchAction];
        
        if(appDelegate.can_set_cart_price && product_id.length>0&& is_rate==0)
        {
            [arr addObject:editRowAction];
            // [arr addObject:freeRowAction];
        }
        
        
        
        return arr;
        //    return @[deleteRowAction,addWatchAction, editRowAction,freeRowAction];
    } else if (appDelegate.user_type == USER_ROLE_CUSTOMER) {
        return @[deleteRowAction,addWatchAction,editRowAction];
    }
    else
        return @[deleteRowAction,addWatchAction];
    
    
}


- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle  forRowAtIndexPath:(NSIndexPath *)indexPath {
    
    
    //    NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
    //
    //    NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
    //
    //
    //    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    //
    //        NSDictionary* cart_json = [iSalesNetwork cart_remove:ids];
    //
    //        dispatch_async(dispatch_get_main_queue(), ^{
    //
    //
    //
    //            if(cart_json!=nil)
    //            {
    //
    //                [self reload_data];
    //            }
    //
    //        });
    //    });
    
    //    sqlite3* db = [ApexMobileDB get_db];
    //    NSString* sql = [NSString stringWithFormat:@"delete from history where _id=%@",[self.data.pagedata[indexPath.row] valueForKey:@"_id"]];
    //    [ApexMobileDB execSql:sql db:db];
    //    [iSalesDB close_db:db];
    //
    //    [self.data.pagedata removeObjectAtIndex:indexPath.row];
    //
    //    [tableView reloadData];
    
}
#pragma mark - UIAlertViewDelegate
// Called when a button is clicked. The view will be automatically dismissed after this call returns
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    
    if(alertView.tag==ALERT_DEL)
    {
        if(buttonIndex!=alertView.cancelButtonIndex)
        {
           // [self.itemListTable reloadRowsAtIndexPaths:@[self.indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
            NSMutableDictionary * item_json = [self.content_arr[self.indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)self.indexPath.row]] mutableCopy];
            
            NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
            
            
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                
                NSDictionary* cart_json = [iSalesNetwork cart_remove:ids];
                
                dispatch_async(dispatch_get_main_queue(), ^{
                    
                    
                    
                    if([[cart_json valueForKey:@"result"] intValue]==2)
                    {
                        //  AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
                        for(int i=0;i<self.content_arr.count;i++)
                        {
                            NSDictionary* obj_json = self.content_arr[i];
                            NSString* _id =[obj_json valueForKey:@"cart_item_id"];
                            if([_id isEqualToString:ids])
                            {
                                [self.content_arr removeObjectAtIndex:i];
                              //  [self.itemListTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:self.indexPath] withRowAnimation:UITableViewRowAnimationLeft];
                                break;
                                // appDelegate.cart_count--;
                                // [appDelegate update_count_mark];
                            }
                            
                        }
                        [self.itemListTable reloadData];
                        [self refresh_total];
                        //                        [self reload_data];
                    }
                    else
                    {
                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
                    }
                    
                });
            });
            
        }
    }
    else if(alertView.tag==ALERT_FREE)
    {
        if(buttonIndex==alertView.cancelButtonIndex)
        {
            
            NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
            //   NSString * string = [checked componentsJoinedByString:@","];
            //  [params setValue:string forKey:@"cart2Checkbox"];
            
            
            
            CreateOrderViewController * orderinfoVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"CreateOrderViewController"];
            
            orderinfoVC.disable_dropdown_refresh=true;
            orderinfoVC.url_type = URL_REMOTE;
            orderinfoVC.request_url=URL_CARTDELIVERY;
            
            orderinfoVC.params = params;
            
            orderinfoVC.delegate=self;
            
            [self.navigationController pushViewController:orderinfoVC animated:true];
            //            UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:orderinfoVC] ;
            //
            //
            //
            //
            //
            //            navi.modalPresentationStyle = UIModalPresentationPageSheet;//有三种状态，自己看看是哪种
            //            [self presentViewController:navi animated:YES completion:^{
            //
            //                DebugLog(@"CreateOrderViewController present.........");
            //
            //                //   self.btop = false;
            //                //  <#code#>
            //            }];
            
        }
    }
    else if(alertView.tag==ALERT_SET_FREE)
    {
        if(buttonIndex!=alertView.cancelButtonIndex)
        {
            [self.itemListTable reloadRowsAtIndexPaths:@[self.indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
            NSMutableDictionary * item_json = [self.content_arr[self.indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)self.indexPath.row]] mutableCopy];
            
            NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
            
            
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                
                NSDictionary* cart_json = [iSalesNetwork cart_setFree:ids isfree:true];
                
                dispatch_async(dispatch_get_main_queue(), ^{
                    
                    
                    
                    if([[cart_json valueForKey:@"result"] intValue]==2)
                    {
                        [self reload_data];
                    }
                    else
                    {
                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Set Free Model" controller:self] ;
                    }
                    
                });
            });
            
        }
    }
    else if(alertView.tag==ALERT_RESTORE_FREE)
    {
        if(buttonIndex!=alertView.cancelButtonIndex)
        {
            [self.itemListTable reloadRowsAtIndexPaths:@[self.indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
            NSMutableDictionary * item_json = [self.content_arr[self.indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)self.indexPath.row]] mutableCopy];
            
            NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
            
            
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                
                NSDictionary* cart_json = [iSalesNetwork cart_setFree:ids isfree:false];
                
                dispatch_async(dispatch_get_main_queue(), ^{
                    
                    
                    
                    if([[cart_json valueForKey:@"result"] intValue]==2)
                    {
                        [self reload_data];
                    }
                    else
                    {
                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Restore Model Price" controller:self] ;
                    }
                    
                });
            });
            
        }
    }
}

#pragma mark - Support scanner
-(void) onDecodedData:(NSString*) value
{
    int cqty=0;
    
    for(int i=0;i<self.content_arr.count;i++)
    {
        NSDictionary* item= self.content_arr[i];
        if([item[@"model"] isEqualToString:value])
            cqty=[item[@"count"]intValue];
    }
    if(cqty>0)
    {
        
        
        UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:@"QTY: %d of this model already in cart. Continue ?",cqty] message:nil preferredStyle:UIAlertControllerStyleAlert];
        //block代码块取代了delegate
        
        
        
        UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
            [self addtocart:value];
        }];
        
        UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
            DebugLog(@"No");
        }];
        [alertControl addAction:actionOne];
        
        [alertControl addAction:alertthree];
        
        //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
        
        
        [self presentViewController:alertControl animated:YES completion:nil];
        
        
    }
    else
    [self addtocart:value];
    
    
}
//-(void) neworder
//{
//
//    UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Create Order"];
//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//
//        NSDictionary* return_json = [iSalesNetwork new_Order];
//
//        dispatch_async(dispatch_get_main_queue(), ^{
//            [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
//
//
//            if([[return_json valueForKey:@"result"] intValue]==2)
//            {
//                int result=[[return_json valueForKey:@"result"] intValue];
//                if(result==2)
//                {
//                    //successed.
//
//                    NSString* order_code = [return_json valueForKey:@"orderCode"];
//                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//                    appDelegate.order_code = order_code;
//
//
//                    [self addtocart];
//
//
//                    //    [self ReloadData];
//
//
//                    //                    if(self.shopCartBlock!=nil)
//                    //                    {
//                    //                        UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
//                    //
//                    //
//                    //                        CGRect iv_rect = CGRectMake(self.btnaddCart.center.x-50, self.btnaddCart.center.y-50, 100, 100);
//                    //                        UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
//                    //                        iv.image = img;
//                    //                        //                        [self.contentView addSubview:iv];
//                    //                        self.shopCartBlock(iv);
//                    //
//                    //                    }
//
//                }
//            }
//            else
//            {
//                [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Add To Cart" controller:self] ;
//            }
//
//
//
//
//        });
//    });
//}
-(void) addtocart:(NSString*) modelname
{
    
    
    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        
        NSDictionary* return_json = [iSalesNetwork add_toCart_byName: modelname];
        
        dispatch_async(dispatch_get_main_queue(), ^{
            
            
            
            if([[return_json valueForKey:@"result"] intValue]==2)
            {
                NSDictionary* newitem = [return_json objectForKey:@"item_0"];
                NSString* item_id = [newitem valueForKey:@"cart_item_id"];
                //  bool isnew=false;
                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
                //                [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
                for(int i=0;i<self.content_arr.count;i++)
                {
                    NSDictionary* obj_json = self.content_arr[i];
                    NSString* _id =[obj_json valueForKey:@"cart_item_id"];
                    if([_id isEqualToString:item_id])
                    {
                        //                        self.content_arr[i] = newitem;
                        
                        
                        [self.content_arr removeObjectAtIndex:i];
                        
                        break;
                        //                        [self.content_arr removeObjectAtIndex:i];
                        //                        [self.itemListTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
                        //                        appDelegate.cart_count--;
                        //                        [appDelegate update_count_mark];
                    }
                    
                    
                }
                [self.content_arr insertObject:newitem atIndex:0];
                
                [self.itemListTable reloadData];
                [self refresh_total];
                //                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
                
                [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false];
                
                
                
                
                
            }
            else
            {
                
                [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Add To Cart" controller:self] ;
            }
            
            
            
            
        });
    });
    
    
}

#pragma mark - sort button

- (void)cartSortButtonClicked:(UIButton *)sender {
    DebugLog(@"cart sort button clicked");
    
    [self.view addSubview:self.sortItemController.view];
}

- (SortItemViewController *)sortItemController {
    if (!_sortItemController) {
        _sortItemController = [[SortItemViewController alloc] initWithTableOrigin:CGPointMake(20, 50)];
        _sortItemController.sortIndex = self.sortIndex;
        
        __weak typeof(self) weakSelf = self;
        _sortItemController.sortBlock = ^(int sort){
            weakSelf.sortIndex = sort;
            
            [weakSelf reload_data];
            
        };
    }
//    _sortItemController.sortIndex = self.sortIndex;
    
    return _sortItemController;
}

- (SortButton *)sortButton {
    if (!_sortButton) {
        _sortButton = [SortButton sortButtonWithHeight:40];
        _sortButton.autoresizingMask=UIViewAutoresizingFlexibleRightMargin;
        [_sortButton addTarget:self action:@selector(cartSortButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    }
    return _sortButton;
}

- (void)setSortIndex:(int)sortIndex {
    _sortIndex = sortIndex;
    
    NSString *selectedImageName = @"";
    switch (sortIndex) {
        case 0:{
            selectedImageName = @"TX_22";
        }
            break;
        case 1:{
            selectedImageName = @"TS_22";
        }
            break;
        case 2:{
            selectedImageName = @"IX_22";
        }
            break;
        case 3:{
            selectedImageName = @"IS_22";
        }
            break;
        case 4:{
            selectedImageName = @"DX_22";
        }
            break;
            
        default:
            break;
    }
    
    self.sortButton.imageView.image = [UIImage imageNamed:selectedImageName];
    
}

#pragma mark - rotation

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    
    self.sortItemController.view.frame = self.view.bounds;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    self.sortItemController.view.frame = self.view.bounds;
}

#pragma mark - notification action

- (void)priceTypeChanged:(id)notification {
    [self reload_data];
}

#pragma mark - button action

- (IBAction)emailButtonClick:(UIButton *)sender {
    
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    JKMessageBoxController *emailAddrVC = [JKMessageBoxController messageBoxControllerWithTip:@"Please enter email address"];
    emailAddrVC.textFiled.secureTextEntry = NO;
    emailAddrVC.yesButtonTitle = @"send";
    
    __weak typeof(emailAddrVC) weakVC = emailAddrVC;
    __weak typeof(self) weakself = self;
    
    emailAddrVC.textHandler = ^(NSString *text){
        
        // 验证邮箱格式是否正确
        NSString *match = @"^[A-Za-zd]+([-_.][A-Za-zd]+)*@([A-Za-zd]+[-.])+[A-Za-zd]{2,5}$";
        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",match];
        BOOL isEmailAddr = [predicate evaluateWithObject:text];
        if (isEmailAddr) {
            
            // 验证是邮件地址，发送邮件
            [weakVC dismissViewControllerAnimated:YES completion:^{
                
                UIAlertView *waitting_alert = [RAUtils waiting_alert:@"Sending Email" title:@"Waitting"];
                
                dispatch_async(dispatch_get_global_queue(0, 0), ^{
                   
                    NSDictionary *result = [iSalesNetwork quoteOrder:appDelegate.order_code emailAddr:text];
                    DebugLog(@"email cart result: %@",result);
                   dispatch_async(dispatch_get_main_queue(), ^{
                      
                       [waitting_alert dismissWithClickedButtonIndex:0 animated:YES];
                       
                       if ([[result objectForKey:@"result"] integerValue] != RESULT_TRUE) {
                           
                           UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:[NSString stringWithFormat:@"The email send to %@ failed",text] preferredStyle:UIAlertControllerStyleAlert];
                           UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                               
                           }];
                           
                           [errorAlertVC addAction:action];
                           [weakself presentViewController:errorAlertVC animated:YES completion:nil];
                           
                       }else {
                           
                           [RAUtils message_alert:@"Send Email Success" title:@"Message" controller:weakself];
                           
                       }
                       
                   });
                    
                });
                
            }];
            
        } else {
            
            // 非邮件地址，警告
            [weakVC warning:@"Please enter right email address"];
            
        }
        
    };
    
    [self presentViewController:emailAddrVC animated:YES completion:nil];
    
}

- (IBAction)printCartButtonClick:(UIButton *)sender {
    
    PDFViewController *ViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PDFViewController"];
    
    ViewController.url = self.print_url;
    ViewController.canSave = false;
    ViewController.isLocalfile=NO;
    NSString* subject;
    
    NSString* cur_time =[RAUtils current_date];
    subject =@"Cart Print";
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    NSString* customer_email=    [appDelegate.customerInfo valueForKey:@"customer_email"];
    
    
    NSMutableArray* send_to = [[NSMutableArray alloc]init];
    if(customer_email.length>0)
    {
        send_to=[[customer_email componentsSeparatedByString:NSLocalizedString(@";", nil)] mutableCopy];
        
    }
    ViewController.mail_to = send_to;
    
    ViewController.attachment_name = [NSString stringWithFormat:@"NPD_Product_List %@.pdf",cur_time];
    ViewController.mail_subject = subject;
    
    ViewController.hidenavi = false;
    [self.navigationController pushViewController:ViewController animated:YES];
    
}


@end
