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

#import "WatchListViewController.h"
#import "iSalesNetwork.h"
#import "ModelItemCell.h"
#import "DetailViewController.h"
#import "LoginViewController.h"
#import "MainViewController.h"

#import "TearSheetParamViewController.h"
#import "EditModelPriceViewController.h"
#import "ContactListViewController.h"
#import "DefaultTableHeaderView.h"
#import "DefaultAppearance.h"
#import "SortItemViewController.h"
#import "SortButton.h"
#import "UIColor+JK_HEX.h"
#import "CartUtils.h"

#define ALERT_DEL 1025
//#import "PDFViewController.h"
@interface WatchListViewController ()

@property (nonatomic,strong) SortItemViewController *sortItemController;
@property (nonatomic,assign) int sortIndex;
@property (nonatomic,strong) SortButton *sortButton;
@property (nonatomic,strong) UILabel *qtyLabel;

@property (nonatomic,strong) NSOperationQueue *dataOperationQueue;

@end

@implementation WatchListViewController

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


-(void) logout
{
    self.content_data = nil;
    }

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}


-(void) reload_container_getdata:(bool) update_data
{
    [super reload_container_getdata:update_data];
    if(update_data)
    [self reload_data];
    else
        [self.itemListTable reloadData];
}
- (IBAction)onAddtoCart:(id)sender {
    [CartUtils add_to_cart:self selectorholder:self selector:@selector(addtocart)];
    return;
    
    UIApplication * app = [UIApplication sharedApplication];
    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
    MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
    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];
            
            
            
            
            if(blogin)
            {
                if(/*appDelegate.user_type==USER_ROLE_EMPLOYEE*/ true)
                {
                    
                    [main_vc checklogin:false];
                    if(appDelegate.can_create_order)
                    {                NSString* msg =@"";
                        if(appDelegate.contact_id.length>0)
                        {
                            msg = [msg stringByAppendingString:@"\n\nCustomer:"];
                            msg = [msg stringByAppendingString:appDelegate.customerInfo[@"customer_name"]];
                            
                        }
                    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Add to cart", nil) message:msg delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Add to pending order", nil),NSLocalizedString(@"Add to new order", nil), nil];
                    
                    
                    
                    // alert.
                    [alert show];
                    }
                    else
                    {
                        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Add to cart", nil) message:NSLocalizedString(@"", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Add to pending order", nil), nil];
                        
                        // alert.
                        [alert show];
                    }
                }
                else
                {
                    [main_vc checklogin:true];
                }
            }
            
            //            self.offset = 0;
            //            [self.content_data removeAllObjects];
            //            [self loadpage];
            //
            //            [[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(@"LoginViewController present.........");
            
            //   self.btop = false;
            //  <#code#>
        }];
    }
    else
    {
        if(/*appDelegate.user_type==USER_ROLE_EMPLOYEE&&/*appDelegate.contact_id==nil&&*/appDelegate.order_code==nil)
        {
            [main_vc checklogin:false];
            if(appDelegate.can_create_order)
            {
                NSString* msg =@"";
                if(appDelegate.contact_id.length>0)
                {
                    msg = [msg stringByAppendingString:@"\n\nCustomer:"];
                    msg = [msg stringByAppendingString:appDelegate.customerInfo[@"customer_name"]];
                    
                }
            UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Add to cart", nil) message:msg delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Add to pending order", nil),NSLocalizedString(@"Add to new order", nil), nil];
            
            // alert.
            [alert show];
            }
            else
            {
                UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Add to cart", nil) message:NSLocalizedString(@"", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Add to pending order", nil), nil];
                
                // alert.
                [alert show];
            }
        }
        else
        {
            
            if(appDelegate.order_code==nil)
                [ self neworder];
            else
                [self addtocart];
            
            
            
        }
    }

}
-(void) addtocart
{
    
    
    NSMutableArray* checked = [[NSMutableArray alloc] init];
    
    NSMutableArray* checked_iid = [[NSMutableArray alloc] init];
    
    int count = [[self.content_data valueForKey:@"count"] intValue];
    for(int i=0;i<count;i++)
    {
        NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
        bool check = [[item_json valueForKey:@"check"] boolValue];
        if(check)
        {
            /*
            if ([[item_json valueForKey:@"available"] isEqualToString:@"In Production"] || [[item_json valueForKey:@"available"] integerValue] == 0) {
                
                [RAUtils message_alert:@"There ars some products is not available" title:@"Warning" controller:self];
                return;
                
            }
             */
            [checked addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"product_id"] intValue]]];
            [checked_iid addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"item_id"] intValue]]];
        }
    }

    if(checked.count==0)
    {
        [RAUtils message_alert:@"You must select at least one model." title:@"Cannot Add to cart." controller:self] ;
        return;
    }
    
    NSString * ids = [checked_iid componentsJoinedByString:@","];
    self.btnAddtoCart.enabled = false;
    
    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        
        NSDictionary* return_json = [iSalesNetwork move_wish2cart:ids];
        
        dispatch_async(dispatch_get_main_queue(), ^{
            
            self.btnAddtoCart.enabled = true;
            
            if([[return_json valueForKey:@"result"] intValue]==2)
            {
//                int result=[[return_json valueForKey:@"result"] intValue];re
//                if(result==2)
//                {
                    //successed.
                    
            //        NSString* order_code = [return_json valueForKey:@"order_code"];
                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//                    appDelegate.order_code = order_code;
//                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//                    appDelegate.order_code = order_code;
                    [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false];
                [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:true];
                    [RAUtils message_alert:nil title:@" Multiple items moved to Cart" controller:self] ;
                    
//                    [self end_select];
                    
                    
                    
//                }
            }
            else
            {
                [self reload_data];
                [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Move To Cart" controller:self] ;
            }
            
            
            
            
        });
    });
}
-(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;
                    appDelegate.order_status = [[return_json valueForKey:@"orderStatus"] intValue];
                    
                    [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] ;
            }
            
            
            
            
        });
    });
}
//- (IBAction)onCreateTearSheet:(id)sender {
//    
//    
//    self.pdf_url= nil;
//    NSMutableArray* checked = [[NSMutableArray alloc] init];
//    
//    NSMutableArray* checked_iid = [[NSMutableArray alloc] init];
//    
//    int count = [[self.content_data valueForKey:@"count"] intValue];
//    for(int i=0;i<count;i++)
//    {
//        NSMutableDictionary * item_json = [[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:@"product_id"] intValue]]];
//            [checked_iid addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"item_id"] intValue]]];
//        }
//    }
//    //     disable for debug
//    if(checked.count==0)
//    {
//        [RAUtils message_alert:@"You must select at least one model." title:@"Cannot Create Portfolio." controller:self] ;
//        return;
//    }
//
//    
//    
//    NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
//    
//       NSString * string = [checked componentsJoinedByString:@","];
//    
//      NSString * string_iid = [checked_iid componentsJoinedByString:@","];
//      [params setValue:string forKey:@"product_ids"];
//    [params setValue:string_iid forKey:@"item_ids"];
//    TearSheetParamViewController * VC =[ self.storyboard instantiateViewControllerWithIdentifier:@"TearSheetParamViewController"];
//    
//    
//    VC.url_type = URL_REMOTE;
//    VC.request_url=URL_DM_PARAMS;
//    
//    VC.params = params;
//    
////    VC.delegate=self;
//    
//    VC.return_url=^(NSString* url,NSString* path, bool remove_item)
//    {
//        self.pdf_url = url;
//        self.path = path;
//        self.remove_item = remove_item;
//    };
////AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//    VC.onDismiss=^(NSString* catelog_name)
//    {
//
//    };
//    
//    //
//    //    if(checked.count==count)
//    //    {
//    //    orderinfoVC.have_tail = true
//    //    }
//    
//    UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:VC] ;
//    
//    
//    
//    
//    
//    navi.modalPresentationStyle = UIModalPresentationPageSheet;//有三种状态，自己看看是哪种
//    [self presentViewController:navi animated:YES completion:^{
//        
//        DebugLog(@"TearSheetParamViewController present.........");
//        
//        //   self.btop = false;
//        //  <#code#>
//    }];
//    
//    [self.btnselect setTitle:@"Select all"];
//
//    
//}

- (void)viewDidLoad
{
    [super viewDidLoad];
    DebugLog(@"%@",NSStringFromCGRect(self.itemListTable.frame));
    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];
    DebugLog(@"%@",NSStringFromCGRect(self.itemListTable.frame));
    
  //  [[UIToolbar appearance] setBackgroundColor: [UIColor whiteColor]];
    
    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;
    
    CGPoint center = self.mum.center;
    self.mum.frame = CGRectMake(0, 0, 100, 100);
    self.mum.center = center;
    self.mum.backgroundColor = [UIColor colorWithHEX:0xA5A5A5 alpha:0.5];
    self.mum.layer.cornerRadius = 5.0f;
    self.mum.layer.masksToBounds = YES;
    
    self.sortIndex = 0;
    
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(refresh_btn_click:)];
    //            tap.minimumPressDuration = 0.8; //定义按的时间
    [self.label_net_err addGestureRecognizer:tap];
   // [self reload_data];
    
}

-(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(reload_data) withObject:nil afterDelay:1];
    //    DebugLog(@"refresh!!!!!!!!");
    
}
- (IBAction)onSelectClick:(id)sender {
    //    self.total=0;
    
    
    if([self.btnselect.title isEqualToString:@"Select all"])
    {
        int count =[[self.content_data valueForKey:@"count"] intValue];
        for(int i=0;i<count;i++)
        {
            NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
            [item_json setValue:@"1" forKey:@"check"];
            
            ModelItemCell* cell=(ModelItemCell*)[self.itemListTable cellForRowAtIndexPath:[NSIndexPath indexPathForItem:i inSection:0]];
            cell.img_checkmark.hidden=false;
            //            double totalprice =[[item_json valueForKey:@"subtotal_price"] doubleValue];
            
            [self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%d",i]];
            
            
        }
        
        [self.btnselect setTitle:@"Deselect all"];
        
        
    }
    else
    {
        int count =[[self.content_data valueForKey:@"count"] intValue];
        for(int i=0;i<count;i++)
        {
            NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)i]] mutableCopy];
            [item_json setValue:@"0" forKey:@"check"];
            
            ModelItemCell* cell=(ModelItemCell*)[self.itemListTable cellForRowAtIndexPath:[NSIndexPath indexPathForItem:i inSection:0]];
            cell.img_checkmark.hidden=true;
            [self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%d",i]];
            
        }
        
        [self.btnselect setTitle:@"Select all"];
        //        self.btnselect.titleLabel.text=@"Select all";
    }
    
}
- (IBAction)onDeleteClick:(id)sender {
    NSMutableArray* checked = [[NSMutableArray alloc] init];
    
    
    
    int count = [[self.content_data valueForKey:@"count"] intValue];
    for(int i=0;i<count;i++)
    {
        NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
        int check = [[item_json valueForKey:@"check"] intValue];
        if(check==1)
        {
            [checked addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"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 watchlist_remove:string];
        
        dispatch_async(dispatch_get_main_queue(), ^{
            
            
            
            if([[cart_json valueForKey:@"result"] intValue]==2)
            {
                [self reload_data];
                
                        [self.btnselect setTitle:@"Select all"];
            }
            else
            {
                [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Remove Model From Wish List" controller:self] ;
            }
            
        });
    });
    
    
}
-(void) viewWillAppear:(BOOL)animated
{
    
    [super viewWillAppear:animated];

    [[self navigationController] setNavigationBarHidden:YES animated:NO];
}

-(void) operation_reload_data
{
    
    if (self.dataOperationQueue.operationCount > 1) {
        return;
    }

    dispatch_async(dispatch_get_main_queue(), ^{
        if(self.isrefreshing)
            return;
//    [self.content_data removeAllObjects];
//    [self.itemListTable reloadData];
        
        self.isrefreshing=true;
        self.label_net_err.hidden=true;
        self.itemListTable.hidden=true;
        
        self.mum.center = self.view.center;
        
        self.mum.hidden = false;
        [self.mum startAnimating];
    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
    
    [reF endRefreshing];
    
    reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"];
    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        
        NSDictionary* cart_json = [iSalesNetwork request_WatchList:self.sortIndex];
        
        dispatch_async(dispatch_get_main_queue(), ^{
            
            [self.mum stopAnimating];
            self.isrefreshing=false;
            if (self.dataOperationQueue.operationCount > 1) {
                return ;
            }
            
            int result=[[cart_json valueForKey:@"result"] intValue];
            self.content_data = [cart_json mutableCopy];
            [self.itemListTable reloadData];
            
            if(result==2||result==1||result==0)
            {
                self.itemListTable.hidden=false;
                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
                appDelegate.wish_count =[[self.content_data valueForKey:@"count"] intValue];
            }
            else
                if(result==RESULT_NET_ERROR)
                {
                    self.label_net_err.hidden=false;
                    self.itemListTable.hidden=true;
                }
            else
            {
                [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Loading Wish list" controller:self] ;
            }
            
            self.isrefreshing=false;
            
        });
    });
        });
}

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


- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
//-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
//{
//
//    [super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
//    
//   
//    
////    [self.itemListTable reloadData];
//  DebugLog(@"%@",NSStringFromCGRect(self.itemListTable.frame));
//    
//    
//}
#pragma mark - Table view data source

//- (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";
//}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{

        return 33;
}

-(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);
    
    NSString *sectionTitle = @"Wish List";
    
    DefaultTableHeaderView* myView = [[DefaultTableHeaderView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 33)];

//    UIButton *sortButton = [UIButton buttonWithType:UIButtonTypeCustom];
//    sortButton.frame = CGRectMake(20, 5.5, (33 - 5.5 * 2), (33 - 5.5 * 2));
//    [sortButton setImage:[UIImage imageNamed:@"check_1_24"] forState:UIControlStateNormal];
//    [sortButton addTarget:self action:@selector(wishlistSortButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
//    [myView addSubview:sortButton];
    [myView addSubview:self.sortButton];
    
    
    UILabel *titlelabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 5.5, tableView.bounds.size.width, 22)];
    titlelabel.textColor=UIColorFromRGB(color);
    titlelabel.textAlignment=NSTextAlignmentCenter;
    titlelabel.autoresizingMask=UIViewAutoresizingFlexibleWidth;
    
    titlelabel.text=sectionTitle;
    titlelabel.center = myView.center;
    
    myView.autoresizesSubviews=true;
    
    [myView addSubview:titlelabel];
    
    
   
    [myView addSubview:self.qtyLabel];
    
    return myView;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // NSDictionary * item_json = [self.content_data objectForKey:@"items"];
    int count =[[self.content_data valueForKey:@"count"] intValue];
    return count;
    
}
- (IBAction)imgbtnClicked:(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_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
    
    NSString* product_id = [item_json valueForKey:@"product_id"];
    
    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];
    
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //    if(tableView==self.itemListTable)
    //    {
    NSString *CellIdentifier = @"WatchListItemCell";
    ModelItemCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    NSDictionary * item_json = [self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
    
    NSString* img_url = [item_json valueForKey:@"img"];
    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];
    NSString* price =[item_json valueForKey:@"tear_sheet_price"];
    //    cell.labelAttribute.text = attribute;
    //    cell.labelCurrency.text = currency;
    cell.labelDescription.text = description;
    //    cell.labelIdentifier.text = identifier;
    cell.labelPrice.text = price;
    //    cell.editCount.text =[NSString stringWithFormat:@"%d",count];
    
    //    NSDictionary* val_json =[cadedate_json objectForKey:[NSString stringWithFormat:@"val_%d",i]];
    int check = [[item_json valueForKey:@"check"] intValue];
    if(check==1)
        cell.img_checkmark.hidden=false;
    else
        cell.img_checkmark.hidden=true;
    
    //    UIImageView* iv =cell.btnImage.imageView;
    [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];
        //  cell.btnImage.imageView.image = img;
    }
    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];// [UIColor whiteColor];;
    
    int qty = [item_json[@"cart_count"] integerValue];
    cell.qty_Label.text = [NSString stringWithFormat:@"QTY: %d",qty];
    
    return cell;
    
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    ModelItemCell* cell = (ModelItemCell*)[tableView cellForRowAtIndexPath:indexPath];

    
    cell.selected = false;
    //    self.dirty = true;
    
    NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
    int check = [[item_json valueForKey:@"check"] intValue];
    if(check==1)
    {
        [item_json setValue:@"0" forKey:@"check"];
        cell.img_checkmark.hidden=true;
        [self.btnselect setTitle: @"Select all"];
    }
    else
    {
        [item_json setValue:@"1" forKey:@"check"];
        cell.img_checkmark.hidden=false;
    }
    [self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
    
    
    
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tv editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    return UITableViewCellEditingStyleDelete;
}



//#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
//{
//    
//
//
//}
- (BOOL)isPureFloat:(NSString*)string{
    NSScanner* scan = [NSScanner scannerWithString:string];
    float val;
    return[scan scanFloat:&val] && [scan isAtEnd];
}

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

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

{
    
    // 添加一个删除按钮
    
    self.indexPath=indexPath;
    
    UITableViewRowAction *deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Delete" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
        
        DebugLog(@"delete click");
        
        
        
        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Delete confirm", nil) message:NSLocalizedString(@"Are you sure remove model from wishlist?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
        alert.tag = ALERT_DEL;
        // alert.
        [alert show];
        
        
        
        
        
        
    }];
    deleteRowAction.backgroundColor = UIColorFromRGB(0x336699);
    
    // 添加一个编辑按钮
    
//    UITableViewRowAction *editRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"  Edit   "handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
//        
//        DebugLog(@"edit click");
//        
//        
//        
//        UIViewController* parentvc=self;
//        
//        
//        
//        
//        EditModelPriceViewController * vc =[ parentvc.storyboard instantiateViewControllerWithIdentifier:@"EditModelPriceViewController"];
//        
//        
//        NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
//        
//        
//        
//        vc.set_watch_list=true;
//        vc.discount=[[item_json valueForKey:@"discount"] floatValue];
//        vc.price = [[item_json valueForKey:@"tear_sheet_price"] floatValue];
//        vc.cart_id = [NSString stringWithFormat:@"%d",[[item_json valueForKey:@"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#>
//        }];
//        
//        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
//        
//        
//    }];
//    editRowAction.backgroundColor = UIColorFromRGB(0xff9933);
    
    

    
    
    
    
    
    
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user_type==USER_ROLE_EMPLOYEE)
        
        return @[deleteRowAction];
    
    else
        return @[deleteRowAction];
    
    
}


- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle  forRowAtIndexPath:(NSIndexPath *)indexPath {
    
   
    
}
#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
{
    UIApplication * app = [UIApplication sharedApplication];
    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
    //    if(alertView.tag==1234)
    //    {
    //
    //        // availability warring;
    //
    //
    //        if(buttonIndex!=alertView.cancelButtonIndex)
    //        {
    //            if(appDelegate.order_code==nil)
    //            {
    //                [self neworder];
    //            }
    //            else
    //            {
    //                [self addtocart];
    //            }
    //        }
    //        return;
    //    }
    //   int count=[self.quantity_text.text intValue];
    
    
    
    if(alertView.tag==ALERT_DEL)
    {
        if(buttonIndex!=alertView.cancelButtonIndex)
        {
            [self.itemListTable reloadRowsAtIndexPaths:@[self.indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
            NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)self.indexPath.row]] mutableCopy];
            
            NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"item_id"] intValue]];
            
            
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                
                NSDictionary* cart_json = [iSalesNetwork watchlist_remove:ids];
                
                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] ;
                    }
                    
                });
            });
            
        }
        return;
    }
    
    MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
    if(buttonIndex==alertView.cancelButtonIndex)
    {
        
        
        
    }
    else if(buttonIndex==1)
    {
        //open exist
        
        OrderListViewController* ovc =[ self.storyboard instantiateViewControllerWithIdentifier:@"OrderListViewController"];
        ovc.showNavibar = true;
        ovc.selectOrder = ^(NSMutableDictionary* order_detail){
            if(appDelegate.order_code==nil)
            {
                [self neworder];
            }
            else
            {
                [self addtocart];
                [main_vc checklogin:true];
                
            }
            
        };
        ovc.init_style = OL_OPEN;
        ovc.onCancel = ^(){
            
            [main_vc checklogin:true];
            
        };
        
        [self.navigationController pushViewController:ovc animated:true];
    }
    else
    {
        //create new;
        
        if(appDelegate.customerInfo==nil)// select contact if current contact not exist
        {
            ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
            cvc.showNavibar = true;
            cvc.contact_type = @"Sales_Order_Customer";
            cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
                
                appDelegate.contact_id=[value valueForKey:@"customer_cid"];
                appDelegate.customerInfo = value;
                
                
                if(appDelegate.order_code==nil)
                    [self neworder];
                
             //   [main_vc checklogin:true];
                //            [self handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
                
                //
                //                if(self.returnValue)
                //                    self.returnValue(value);
            };
            
            cvc.onCancel = ^(){
                
                [RAUtils message_alert:@"Cannot create order without cursomer infomation." title:@"" controller:self];
                
                
                
            };
            cvc.onReset = ^(){
                [main_vc checklogin:true];
            };
            
            [self.navigationController pushViewController:cvc animated:true];
        }
        else
        {
            [self neworder];
        }
        
    }
}

#pragma mark - sort button

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


- (SortItemViewController *)sortItemController {
    if (!_sortItemController) {
        _sortItemController = [[SortItemViewController alloc] initWithTableOrigin:CGPointMake(40, 40)];
        _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:33];
        
        [_sortButton addTarget:self action:@selector(wishlistSortButtonClicked:) 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];
    
}

- (UILabel *)qtyLabel {
    if (!_qtyLabel) {
        _qtyLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.itemListTable.bounds.size.width - 200, 5.5, 40, 22)];
        _qtyLabel.text = @"QTY";
        _qtyLabel.textAlignment = NSTextAlignmentCenter;
        _qtyLabel.autoresizingMask=UIViewAutoresizingFlexibleWidth;
    }
    return _qtyLabel;
}

#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;
    self.qtyLabel.frame = CGRectMake(self.itemListTable.bounds.size.width - 200, 5.5, 40, 22);

}

@end
