//
//  SaleInputHistoryViewController.m
//  RealEstateManagement
//
//  Created by Javen on 2016/10/12.
//  Copyright © 2016年 上海勾芒信息科技. All rights reserved.
//

#import "CalculateHelper.h"
#import "HistoryTopView.h"
#import "MMViewController.h"
#import "SaleInputHistoryViewController.h"
#import "SaleInputHistory.h"
@interface SaleInputHistoryViewController ()
@property (weak, nonatomic) IBOutlet HistoryTopView *topView;
@property (nonatomic, strong) MMViewController *sheetVC;
@property (nonatomic, strong) UIImageView *imageNoData;
@property (nonatomic, strong) NSMutableArray *arrData;

@end

@implementation SaleInputHistoryViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"历史查询";
    WS(weakSelf);
    [self.topView setBlockQuery:^{
        [weakSelf httpHistoryData];
    }];
    [self updateUI];
    [self configNoDataPic];
    // Do any additional setup after loading the view.
}

- (void)viewDidLayoutSubviews
{
    self.imageNoData.frame = CGRectMake(0, self.topView.bottom + 20, 150, 150);
    self.imageNoData.centerX = self.view.centerX;
    self.imageNoData.centerY = self.sheetVC.view.centerY + self.topView.bottom;
}
- (void)updateUI {
    if (self.contract == nil) {
        self.topView.labelShopName.text = @"请选择合同";
        return;
    }
    self.topView.labelShopName.text = self.contract.name;
}

- (void)httpHistoryData
{
    NSString *startDate = [NSString stringWithFormat:@"%@ 00:00:00", self.topView.startDate.text];
    NSString *endDate = [NSString stringWithFormat:@"%@ 00:00:00", self.topView.endDate.text];
    NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:self.contract.uuid, @"contract", [NSDictionary dictionaryWithObjectsAndKeys:startDate, @"beginDate", endDate, @"endDate", nil], @"dateRange", nil];
    [MBProgressHUD j_loading];
    WS(weakSelf);
    [ZJHttpManager POST:@"salesinput/getSalesTotal" parameters:params complete:^(id responseObject, NSError *error) {
        [MBProgressHUD j_hideLoadingView];
        if (kIsResponse) {
            [weakSelf configDataArray:responseObject[@"data"]];
        } else {
            kFalseHttpTips;
        }
    }];
    
    
}

- (void)configNoDataPic
{
    if (self.contract == nil) {
        self.sheetVC.view.hidden = YES;
        self.imageNoData.hidden = NO;
    }

    if (self.arrData.count > 0) {
        self.sheetVC.view.hidden = NO;
        self.imageNoData.hidden = YES;
    } else {
        self.sheetVC.view.hidden = YES;
        self.imageNoData.hidden = NO;
    }
}

/**
 *  跳转选择商铺界面
 */
- (IBAction)actionChooseShop:(UIButton *)sender
{
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"选择合同" message:nil preferredStyle:(UIAlertControllerStyleAlert)];
    
    for (UserInfo_contracts *contract in AppGlobal.user.contracts) {
        UIAlertAction *action = [UIAlertAction actionWithTitle:contract.name style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            self.contract = [HMSaleInputDetail_contract modelWithDic:contract.toDictionary];
            self.topView.labelShopName.text = contract.name;
        }];
        [alert addAction:action];
    }
    
    UIAlertAction *action = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
    [alert addAction:action];
    
    [self.navigationController presentViewController:alert animated:YES completion:nil];
}

- (void)configDataArray:(NSArray *)arr
{
    NSMutableArray *arrData = [NSMutableArray array];
    self.arrData = arrData;
    for (NSDictionary *dict in arr) {
        SaleInputHistory *model = [SaleInputHistory modelWithDic:dict];
        [arrData addObject:model];
    }

    NSMutableArray *totalData = [NSMutableArray array];
    //第一行的数据
    NSMutableArray *data = [NSMutableArray array];
    /**
     *  支付方式
     */
    NSMutableArray *payments = [NSMutableArray array];
    [data addObject:@"日期"];
    [data addObject:@"金额（元）"];
    for (SaleInputHistory *model in arrData) {
        for (NSInteger i = 0; i < model.details.count; i++) {
            SaleInputHistory_details *payment = model.details[i];
            if (![data containsObject:payment.payment.name]) {
                [data addObject:payment.payment.name];
                [payments addObject:payment.payment.name];
            }
        }
    }
//    [data addObject:@"附件"];
    [totalData addObject:data];

    //把所有支付金额分类归纳
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    for (SaleInputHistory *model in arrData) {
        for (SaleInputHistory_details *payment in model.details) {
            NSMutableArray *array = [dict objectForKey:payment.payment.name];
            if (array) {
                [array addObject:payment.total];
            } else {
                NSMutableArray *array = [NSMutableArray array];
                [array addObject:payment.total];
                [dict setObject:array forKey:payment.payment.name];
            }
        }
    }

    //中间的数据
    for (NSInteger i = 0; i < arrData.count; i++) {
        SaleInputHistory *historyModel = arrData[i];
        NSMutableArray *arrCenter = [NSMutableArray array];
        [arrCenter addObject:historyModel.date];
        [arrCenter addObject:[NSString stringWithFormat:@"%.2f", historyModel.total.doubleValue]];
        for (NSInteger j = 0; j < payments.count; j++) {
            NSString *paymentName = payments[j];
            BOOL isHas = NO;
            for (SaleInputHistory_details *payment in historyModel.details) {
                if ([paymentName isEqualToString:payment.payment.name]) {
                    [arrCenter addObject:[CalculateHelper getMoneyStringFrom:payment.total]];
                    isHas = YES;
                }
            }

            if (!isHas) {
                [arrCenter addObject:@"0.00"];
            }
        }
//        [arrCenter addObject:@"查看附件"];
        [totalData addObject:arrCenter];
    }

    //最后一行的数据
    NSMutableArray *bottomRow = [NSMutableArray array];
    [bottomRow addObject:@"总计"];
    NSDecimalNumber *total = [NSDecimalNumber decimalNumberWithString:@"0"];
    for (SaleInputHistory *model in arrData) {
        total = [CalculateHelper add:total num2:model.total];
    }
    [bottomRow addObject:[CalculateHelper getMoneyStringFrom:total]];

    for (NSInteger i = 0; i < payments.count; i++) {
        NSString *paymentName = payments[i];
        NSMutableArray *arrPaymentNumber = [dict objectForKey:paymentName];
        NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:@"0"];
        for (NSNumber *obj in arrPaymentNumber) {
            number = [CalculateHelper add:number num2:obj];
        }
        [bottomRow addObject:[CalculateHelper getMoneyStringFrom:number]];
    }

//    [bottomRow addObject:@"附件"];

    NSInteger totalRowCount = totalData.count;
    if (totalRowCount < 9) {
        for (NSInteger i = totalRowCount; i < 9; i++) {
            NSMutableArray *arr = [NSMutableArray array];
            for (NSString *str in bottomRow) {
                [arr addObject:@""];
            }
            [totalData addObject:arr];
        }
    }
    [totalData addObject:bottomRow];

    self.sheetVC.tableData = totalData;
    [self.sheetVC reloadData];
    [self configNoDataPic];
}

- (UIImageView *)imageNoData
{
    if (!_imageNoData) {
        _imageNoData = [[UIImageView alloc] init];
        _imageNoData.center = self.view.center;
        _imageNoData.contentMode = UIViewContentModeScaleAspectFit;
        _imageNoData.image = [UIImage imageNamed:@"list_nodata"];
        [self.view addSubview:_imageNoData];
    }
    return _imageNoData;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
#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.
    if ([segue.identifier isEqualToString:@"MMViewController"]) {
        self.sheetVC = segue.destinationViewController;
    }
}

/*
*/

@end
