//
//  PortfolioEditQTYViewController.m
//  iSales-NPD
//
//  Created by Ray on 3/18/16.
//  Copyright © 2016 United Software Applications, Inc. All rights reserved.
//

#import "PortfolioEditQTYViewController.h"
#import "iSalesNetwork.h"
#define INTNUMBERS @"0123456789\n"
#define NUMBERS @"0123456789.\n"
@interface PortfolioEditQTYViewController ()

@property (nonatomic,assign) int checkedCount;
@property (strong, nonatomic) IBOutlet UIButton *saveButton;


@end

@implementation PortfolioEditQTYViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.edgesForExtendedLayout = UIRectEdgeNone;
    self.checkedCount = 0;
    self.saveButton.hidden = YES;
    [self addObserver:self forKeyPath:@"checkedCount" options:NSKeyValueObservingOptionNew context:nil];
    
    self.tv_linenote.delegate = self;
     self.tv_linenote.text=self.linenotes ;
    if(self.qty>=0)
    {
    self.editQTY.text = [NSString stringWithFormat:@"%d",self.qty];
    }
    else if(self.qty_p>=0)
    {
        self.editQTY.text= [NSString stringWithFormat:@"%.2f",self.qty_p];
        [self.switchQTY setOn: true];
    }
    [self requestqty];
    
    DebugLog(@"price:%f",self.price);
    self.editPrice.text = [NSString stringWithFormat:@"%.2f", self.price ];
    
    
    self.editDiscount.text = [NSString stringWithFormat:@"%@", [RAUtils FloatFormat:self.discount] ];
    
    self.labelNewPrice.text = [NSString stringWithFormat:@"%.2f",self.price* (1.0-self.discount/100)];
//    if(self.arr_fashion_ids.count != 1)
//    {
        self.editQTY.enabled = NO;
        self.editPrice.enabled = NO;
        self.editDiscount.enabled = NO;
        self.tv_linenote.editable = NO;
        
    self.label_multiItems.text = [NSString stringWithFormat:@"%d items selected",self.ids_count ? self.ids_count :  self.arr_fashion_ids.count];//ids_count多选情况有值，而self.arr_fashion_ids在单选情况才不为空

    
        self.editPrice.enabled = false;
//        self.editPrice.text = nil;
    if (self.arr_fashion_ids.count != 1) {
        self.buttonRefresh.hidden = true;
        self.labelQueryQTY.hidden = true;
        self.label_multiItems.hidden = false;
    } else {
        self.buttonRefresh.hidden = false;
        self.labelQueryQTY.hidden = false;
        self.label_multiItems.hidden = true;
    }
        
        self.labelNewPrice.hidden = true;
        self.labelpriceafter.hidden = true;
//    }
    
    
    
    self.tv_linenote.layer.backgroundColor = [[UIColor clearColor] CGColor];
    
    self.tv_linenote.layer.borderColor = [[UIColor lightGrayColor] CGColor];
    
    self.tv_linenote.layer.borderWidth = 0.5;
    
    self.tv_linenote.layer.cornerRadius = 8.0f;
    
    [self.tv_linenote.layer setMasksToBounds:YES];
    
//    if(self.hide_discount)
//    {
//        self.editDiscount.hidden=true;
//        self.labelDiscount.hidden=true;
//        self.labelCalPrice.text = @"New price:";
//        
//        
//        
//    }
    
    // Do any additional setup after loading the view.
}
- (IBAction)onRefreshClick:(id)sender {
    [self requestqty];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
-(void) requestqty
{
    
    if(self.arr_fashion_ids.count!=1)
        return;
    self.buttonRefresh.enabled=false;
    self.labelQueryQTY.text = @"Query current QTY...";
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        
        NSDictionary* detail_json = [iSalesNetwork request_model_qty:self.arr_fashion_ids[0]];
        
        dispatch_async(dispatch_get_main_queue(), ^{
            self.buttonRefresh.enabled=true;
//            NSDictionary* imgsection = [detail_json objectForKey:@"img_section"];
            //          AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
            
            if([[detail_json valueForKey:@"result"] intValue]==2)
            {
                
                NSString* qty = [detail_json valueForKey:@"quantity_available"];
                self.labelQueryQTY.text = [NSString stringWithFormat:@"Current Available QTY: %@",qty];
               // self.detailTable.hidden = false;
                
                
            }
            else

                {
                    self.labelQueryQTY.text=@"Tap Refresh to query current QTY";
                    [RAUtils message_alert:[detail_json valueForKey:@"err_msg"] title:@"Request Available QTY"/*@"Loading Model Detail Failed."*/ controller:self] ;
                }
            
           
            
        });
    });
}
- (IBAction)QTYPercentageValueChanged:(id)sender {
    UISwitch * switchqty =(UISwitch*)sender;
    if(switchqty.isOn)
    {
        if([self.editQTY.text intValue]>100)
            self.editQTY.text=@"100";
        
        
        self.labelQTYTitle.text = @"Available QTY %";
        self.editQTY.placeholder =@"Percentage";
    }
    else
    {
        self.editQTY.text=[NSString stringWithFormat:@"%d",[self.editQTY.text intValue]];
        
        self.labelQTYTitle.text = @"Available QTY";
        self.editQTY.placeholder =@"QTY";
    }
}


- (IBAction)onSaveClick:(id)sender {
    
    for (id view in self.view.subviews) {
        [view resignFirstResponder];
    }
    
//    if([self.editDiscount.text floatValue]>100.0)
//    {
//        //        UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @"Discount error" message:@"Discount must less than 100" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
//        //
//        //
//        //        [alert show];
//        
//        [RAUtils alert_view:@"Fields with * mark cannot be empty." title:@"Some Requried Fields Are Missing."];
//        
//        self.editDiscount.text=@"0";
//        
//        return;
//    }
//    
//    
//    [self update_newprice];
    
    
    if([self.editDiscount.text floatValue]>100.0)
    {
        //        UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @"Discount error" message:@"Discount must less than 100" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        //
        //
        //        [alert show];
        
        [RAUtils alert_view:@"Percentage must less than 100." title:@"Input Error"];
        
        self.editDiscount.text=@"0";
        
        return;
    }
    if([self.editQTY.text floatValue]>100.0 && self.switchQTY.isOn)
    {
        //        UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @"Discount error" message:@"Discount must less than 100" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        //
        //
        //        [alert show];
        
        [RAUtils alert_view:@"Percentage must less than 100." title:@"Input Error"];
        
        self.editDiscount.text=@"0";
        
        return;
    }
    
    
    [self update_newprice];
    
    bool qtypercentage = self.switchQTY.isOn;
    
    
    if (!self.qtyCheckButton.selected) {
        self.qty = -INT32_MAX;
        self.qty_p = -MAXFLOAT;
    }
    
    if(self.editQTY.text.length==0)
    {
        self.qty=-INT32_MAX;
        self.qty_p=-MAXFLOAT;
    } else if(qtypercentage) {
        if (self.qtyCheckButton.selected) {
            self.qty_p=[self.editQTY.text floatValue];
            self.qty=-INT32_MAX;
        }
    } else {
        if (self.qtyCheckButton.selected) {
            self.qty=[self.editQTY.text intValue];
            self.qty_p=-MAXFLOAT;
        }
    }
    
    if (!self.priceCheckButton.selected) {
        self.price = -MAXFLOAT;
    }
    
    if (!self.discountCheckButton.selected) {
        self.discount = -MAXFLOAT;
    }
    
    if (!self.lineNoteCheckButton.selected) {
        self.linenotes = nil;
    }

    [self dismissViewControllerAnimated:NO
                             completion:^{
                                 if(self.onSetValue)
                                     self.onSetValue(self.qty, self.qty_p,self.price,self.discount, self.linenotes);
                             }];
}
- (IBAction)onCloseClicked:(id)sender {
    [self dismissViewControllerAnimated:NO
                             completion:^{
                                 
                                 
                             }];
}
/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/
#pragma mark textView delegate
- (void)textViewDidEndEditing:(UITextView *)textView
{
     [self update_newprice];
}
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    int lenth = 20;
   return (lenth>textView.text.length||[text isEqualToString:@""]);
   
}


#pragma mark textField delegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    
    //    int tag = textField.tag;
    //
    //    int len = textField.text.length;
    //
    //    if(textField.tag==2&&textField.text.length>=2 && string.length>0)
    //        return false;
    
    if(textField.text.length==0 && [string isEqualToString:@"."])
        return false;
    
    //    DebugLog(@"text:%@",textField.text);
    //
    //
    //
    //
    //
    //    UITableViewCell *cell = (UITableViewCell *) textField.superview.superview;
    //
    //    NSIndexPath *   indexPath = [self.editorTable indexPathForCell:cell];
    //    //            DebugLog(@"shouldchangeedit %d_%d",indexPath.section,indexPath.row);
    //    NSDictionary* item_json =((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row];
    //
    //    NSString* required = [item_json valueForKey:@"required"];
    //
    //    if([required isEqualToString:@"true"] && string.length==0 && (textField.text.length<=1|| textField.text==nil))
    //    {
    //        CALayer *layer = [cell.contentView layer];
    //        //            layer.borderColor = [[UIColor redColor] CGColor];
    //        //            layer.borderWidth = 1.0;
    //
    //        layer.shadowColor = [UIColor redColor].CGColor;
    //        layer.shadowOffset = CGSizeMake(0, 0);
    //        layer.shadowOpacity = 1;
    //        layer.shadowRadius = 2.0;
    //    }
    //    else
    //    {
    //        CALayer *layer = [cell.contentView layer];
    //        //            layer.borderColor = [[UIColor redColor] CGColor];
    //        //            layer.borderWidth = 1.0;
    //
    //        layer.shadowColor = [UIColor clearColor].CGColor;
    //        layer.shadowOffset = CGSizeMake(0, 0);
    //        layer.shadowOpacity = 1;
    //        layer.shadowRadius = 2.0;
    //    }
    //
    //
    //    NSString* keyboard = [item_json valueForKey:@"keyboard"];
    //    if(![keyboard isEqualToString:@"number"])
    //        return TRUE;
    NSCharacterSet *cs;
    if(textField.tag==199&& ! self.switchQTY.isOn)
    {
        
        cs = [[NSCharacterSet characterSetWithCharactersInString:INTNUMBERS]invertedSet];
    }
    else
    cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];
    //
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""];
    
    BOOL canChange = [string isEqualToString:filtered];
    //
    //
    //
    //
    return canChange;
    //    return true;
}
-(void) update_newprice
{
    
//    if (!self.priceCheckButton.selected) {
//        self.price = -MAXFLOAT;
//    }
//    else
        self.price = [self.editPrice.text doubleValue];
    
//    if (!self.discountCheckButton.selected) {
//        self.discount = -MAXFLOAT;
//    }
//    else
        self.discount = [self.editDiscount.text doubleValue];
    
    
    
    
    
    self.labelNewPrice.text = [NSString stringWithFormat:@"%.2f",self.price* (1.0-self.discount/100)];
    
    self.linenotes = self.tv_linenote.text;
    
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
    
    
    
    if(textField.tag==2 || (textField.tag==199&& self.switchQTY.isOn))
    {
        if(textField.text.length==0)
            textField.text=@"0";
        
        if([textField.text floatValue]>100.0)
        {
            //            UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @"Discount error" message:@"Discount must less than 100" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
            //            //        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error!" message:@"User&Password can not be empty!" delegate:nil cancelButtonTitle:NSLocalizedString(@"ok", nil) , nil];
            //            [alert show];
            
            
            
            [RAUtils alert_view:@"Percentage must less than 100." title:@"Input Error."];
            textField.text=@"0";
        }
    }
    else
    {
        if(textField.tag==199)
        {
            int i = [textField.text intValue];
            textField.text=[NSString stringWithFormat:@"%d",i];
        }
        else
        {
        float f = [textField.text floatValue];
        textField.text=[NSString stringWithFormat:@"%.2f",f];
        }
    }
    
    [self update_newprice];
    
    //    UITableViewCell *cell = (UITableViewCell *) textField.superview.superview;
    //    NSIndexPath *   indexPath = [self.editorTable indexPathForCell:cell];
    //
    //
    //    NSMutableDictionary* section_json=nil;
    //
    //
    //    //    DebugLog(@"endedit %d_%d",indexPath.section,indexPath.row);
    //    NSMutableDictionary* item_json =[((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row] mutableCopy];
    //
    //
    //    [item_json setValue:@"true" forKey:@"dirty"];
    //    [item_json setValue:textField.text forKey:@"value"];
    //    section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy];
    //    int count=0;
    //
    //    count=[[section_json valueForKey:@"count"] intValue];
    //
    //    for(int i=0;i<count;i++)
    //    {
    //        NSDictionary * olditem=[section_json objectForKey:[NSString stringWithFormat:@"item_%d",i ]];
    //        if([[olditem valueForKey:@"name"] isEqualToString:[item_json valueForKey:@"name" ]])
    //            [section_json setObject:item_json  forKey:[NSString stringWithFormat:@"item_%d",i ]];
    //        
    //        
    //    }
    //    
    //    [self.content_data_download setObject:section_json forKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]];
}

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    //
    //    self.lastedit = textField;
}



//
//#pragma mark textField delegate
//- (BOOL)textFieldShouldReturn:(UITextField *)textField {
//    [textField resignFirstResponder];
//    return NO;
//}
//-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
//    
//
//    
//    if(textField.text.length==0 && [string isEqualToString:@"."])
//        return false;
//    
//      NSCharacterSet *cs;
//    cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];
//    //
//    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""];
//    
//    BOOL canChange = [string isEqualToString:filtered];
//    //
//    //
//    //
//    //
//    return canChange;
//    //    return true;
//}

//- (void)textFieldDidEndEditing:(UITextField *)textField
//{
//    
////    if(textField.tag==2)
////    {
////        if(textField.text.length==0)
////            textField.text=@"0";
////        
////        if([textField.text floatValue]>100.0)
////        {
////            //            UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @"Discount error" message:@"Discount must less than 100" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
////            //            //        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error!" message:@"User&Password can not be empty!" delegate:nil cancelButtonTitle:NSLocalizedString(@"ok", nil) , nil];
////            //            [alert show];
////            
////            
////            
////            [RAUtils alert_view:@"Discount must less than 100." title:@"Input Error."];
////            textField.text=@"0";
////        }
////    }
////    else
////    {
////        float f = [textField.text floatValue];
////        textField.text=[NSString stringWithFormat:@"%.2f",f];
////    }
////    
////    [self update_newprice];
//    
//    //    UITableViewCell *cell = (UITableViewCell *) textField.superview.superview;
//    //    NSIndexPath *   indexPath = [self.editorTable indexPathForCell:cell];
//    //
//    //
//    //    NSMutableDictionary* section_json=nil;
//    //
//    //
//    //    //    DebugLog(@"endedit %d_%d",indexPath.section,indexPath.row);
//    //    NSMutableDictionary* item_json =[((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row] mutableCopy];
//    //
//    //
//    //    [item_json setValue:@"true" forKey:@"dirty"];
//    //    [item_json setValue:textField.text forKey:@"value"];
//    //    section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy];
//    //    int count=0;
//    //
//    //    count=[[section_json valueForKey:@"count"] intValue];
//    //
//    //    for(int i=0;i<count;i++)
//    //    {
//    //        NSDictionary * olditem=[section_json objectForKey:[NSString stringWithFormat:@"item_%d",i ]];
//    //        if([[olditem valueForKey:@"name"] isEqualToString:[item_json valueForKey:@"name" ]])
//    //            [section_json setObject:item_json  forKey:[NSString stringWithFormat:@"item_%d",i ]];
//    //        
//    //        
//    //    }
//    //    
//    //    [self.content_data_download setObject:section_json forKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]];
//}
//
//- (void)textFieldDidBeginEditing:(UITextField *)textField
//{
//    //
//    //    self.lastedit = textField;
//}

#pragma mark Jack

- (IBAction)qtyCheckButtonClicked:(UIButton *)sender {
    sender.selected = !sender.selected;

    self.editQTY.enabled = sender.selected;
    
    if (sender.selected) {
        self.checkedCount++;
    } else {
        self.checkedCount--;
    }
    
}

- (IBAction)priceCheckButtonClicked:(id)sender {
    if ([sender isKindOfClass:[UIButton class]]) {
        UIButton *btn = (UIButton *)sender;
        btn.selected = !btn.selected;
        
        self.editPrice.enabled = btn.selected;
        
        if (btn.selected) {
            self.checkedCount++;
        } else {
            self.checkedCount--;
        }
    }
}

- (IBAction)dicountCheckButtonClicked:(UIButton *)sender {
    sender.selected = !sender.selected;
    
    self.editDiscount.enabled = sender.selected;
    if (sender.selected) {
        self.checkedCount++;
    } else {
        self.checkedCount--;
    }

}
- (IBAction)lineNoteCheckButtonClicked:(UIButton *)sender {
    sender.selected = !sender.selected;
    
    self.tv_linenote.editable = sender.selected;
    if (sender.selected) {
        self.checkedCount++;
    } else {
        self.checkedCount--;
    }

}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
    if ([keyPath isEqualToString:@"checkedCount"]) {
        
        self.saveButton.hidden = self.checkedCount == 0;
        
    }
}

-(void)dealloc {
    [self removeObserver:self forKeyPath:@"checkedCount"];
}

@end
