//
//  CommonHomeVC.m
//  smartRhino
//
//  Created by niuzhen on 2020/4/28.
//  Copyright © 2020 tederen. All rights reserved.
//

#import "CommonHomeVC.h"
#import "CommonListCell.h"
#import "MyTDGroupView.h"
#import "GHRefreshCollectionView.h"
#import "CommonBarCell.h"
#import "CommonBarModel.h"
#import "CommonWorkVC.h"
#import "CommonToolVC.h"
#import "MyFavoriteVC.h"
#import "CommonNoteVC.h"
#import "ChatMsgListCell.h"
#import "ChatMsgCollectionCell.h"
#import "MoveViewController.h"

@interface CommonHomeVC ()<UITableViewDelegate,UITableViewDataSource,UICollectionViewDelegate,UICollectionViewDataSource>
@property (weak, nonatomic) IBOutlet UIView             *NavBar;
@property (strong, nonatomic)  UIView                   *HeadView;
@property (strong, nonatomic)  UITableView              *tableView;
@property (strong, nonatomic) MyTDGroupView             *SearchView;
@property (strong, nonatomic) GHRefreshCollectionView   *collectionView;
@property (strong, nonatomic) NSMutableArray            *collectionDataSource;
@property (strong, nonatomic) NSMutableArray            *dataArray;
@property (nonatomic,assign) NSInteger currentPage;
@property (nonatomic,assign) NSInteger totalPage;
@end

@implementation CommonHomeVC
- (UIView *)HeadView
{
    if (!_HeadView) {
        _HeadView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 46)];
        _HeadView.backgroundColor = [UIColor whiteColor];
    }
    return _HeadView;
}
//- (void)setTableRefresh
//{
//    WS(weakSelf);
//    self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
//        [weakSelf headRefresh];
//    }];
//    self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
//        [weakSelf footerRefresh];
//    }];
//    [self.tableView.mj_header beginRefreshing];
//}
//- (void)headRefresh{
//    self.currentPage = 1;
//    self.totalPage = 1;
//    [self.dataArray removeAllObjects];
//    [self getDataList];
//}
//- (void)footerRefresh{
//    self.currentPage += 1;
//    if (self.totalPage == self.dataArray.count) {
//        self.currentPage --;
//        [self.tableView.mj_footer resetNoMoreData];
//        return ;
//    }
//    [self getDataList];
//}
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self getDataList];
}
- (void)viewDidLoad {
    [super viewDidLoad];
//    [self setTableRefresh];
    self.fd_prefersNavigationBarHidden = YES;
    self.view.backgroundColor = UIColorHex(0xffffff);
    self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    [self.HeadView addSubview:self.SearchView];
    [self.SearchView  mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.mas_offset(5);
        make.left.right.mas_equalTo(self.HeadView);
        make.height.mas_offset(36);
    }];
    [self.view addSubview:self.tableView];
    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.right.mas_equalTo(self.view);
        make.top.mas_equalTo(self.NavBar.mas_bottom);
        if (@available(iOS 11.0, *)) {
            make.bottom.equalTo(self.view.mas_safeAreaLayoutGuideBottom);
        } else {
            make.bottom.equalTo(self.view.mas_bottom);
        }
    }];
    self.tableView.tableHeaderView = self.HeadView;
    
    [self setBarData];
    [self.SearchView.button setAction:^{
        NSLog(@"点击搜索");
    }];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    self.tableView.backgroundColor = [UIColor clearColor];
}
- (void)getDataList {
    WS(weakSelf);
    SHOWLOADING
    [self.dataArray removeAllObjects];
    [[HttpManager sharedHttpManager] POSTUrl:Host(API_Collection_List) parameters:@{@"FolderId":@(0),@"Page":@(1),@"PerPage":@(99999999),@"VisitUserId":@(0)} responseStyle:JOSN success:^(id  _Nonnull responseObject) {
         REMOVESHOW
        MyFavoriteModel *listModel = [[MyFavoriteModel alloc] initWithDictionary:responseObject error:nil];
        weakSelf.totalPage = listModel.Total;
        [weakSelf.dataArray addObjectsFromArray:listModel.Items];
        for (MyFavoriteSubModel *model in weakSelf.dataArray) {
            if (model.CollectionType == CollectModel_Text) {
                model.CollectionType = CollectModel_Aritle;
            }
            if (model.CollectionType == CollectModel_meet) {
                model.CollectionType = CollectModel_meetMian;
            }
        }
        [weakSelf changeMessageStatusWithNumber:weakSelf.dataArray.count];
        dispatch_async(dispatch_get_main_queue(), ^{
            [weakSelf.tableView reloadData];
        });
    } failure:^(NSError * _Nonnull error) {
        REMOVESHOW
    }];
}
- (BOOL)hidesBottomBarWhenPushed{
    return NO;
}
#pragma mark - UITableViewDelegate
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    switch (section) {
        case 0:{
            return 1;
        }break;
        default:{
            return self.dataArray.count;
        }break;
    }
}


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    switch (indexPath.section) {
        case 0:{
            return 74.f;
        }break;
        default:{
            return UITableViewAutomaticDimension;
        }break;
    }
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    switch (section) {
        case 0:{
            return 0.f;
        }break;
        default:{
            return 36.f;
        }break;
    }
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    switch (section) {
        case 0:{
            UIView * view = [UIView new];
            return view;
        }break;
        default:{
            UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 36)];
            view.backgroundColor = UIColorHex(0xF5F5F5);
            UILabel * label = [UILabel new];
            label.font = [UIFont systemFontOfSize:14];
            label.textColor = UIColorHex(0x888888);
            label.text = @"最新收藏";
            [view addSubview:label];
            [label mas_makeConstraints:^(MASConstraintMaker *make) {
                make.left.mas_offset(15);
                make.centerY.mas_equalTo(view);
            }];
            return view;
        }break;
    }
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    switch (indexPath.section) {
        case 0:
        {
            ChatMsgListCell *cell = [ChatMsgListCell configCell1:tableView indexPath:indexPath];
            [cell.cell1ContentBgView addSubview:self.collectionView];
            self.collectionView.frame = CGRectMake(0, 0, SCREEN_WIDTH, cell.cell1ContentBgView.height);
            [self.collectionView reloadData];
            return cell;
        }
            break;
        default:
        {
            CommonListCell *cell = [CommonListCell configCell1:tableView indexPath:indexPath];
            MyFavoriteSubModel * model = [self.dataArray objectAtIndex:indexPath.row];
            [cell setCell1Data:model];
            return cell;
        }
            break;
    }
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}
#pragma mark - load
- (UITableView *)tableView
{
    if (!_tableView) {
        _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    }
    return _tableView;
}
- (MyTDGroupView *)SearchView
{
    if (!_SearchView) {
        _SearchView = [[MyTDGroupView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 36)];
    }
    return _SearchView;
}
-(NSMutableArray *)dataArray{
    if(!_dataArray){
        _dataArray = [[NSMutableArray alloc] init];
    }
    return _dataArray;
}
-(NSMutableArray *)collectionDataSource{
    if(!_collectionDataSource){
        _collectionDataSource = [[NSMutableArray alloc] init];
    }
    return _collectionDataSource;
}
- (GHRefreshCollectionView *)collectionView {
    if (!_collectionView) {
        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
        layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
        layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
        _collectionView = [[GHRefreshCollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
        _collectionView.delegate = self;
        _collectionView.dataSource = self;
        _collectionView.showsHorizontalScrollIndicator = NO;
        [_collectionView registerNib:[UINib nibWithNibName:@"ChatMsgCollectionCell" bundle:nil] forCellWithReuseIdentifier:@"ChatMsgCollectionCell"];
        _collectionView.backgroundColor = [UIColor whiteColor];
    }
    return _collectionView;
}
#pragma mark UICollectionView
- (NSInteger)numberOfSectionsInCollectionView:(GHRefreshCollectionView *)collectionView{
    return 1;
}

/**********************************************************************/
#pragma mark -UICollectionViewDataSource
/**********************************************************************/
- (NSInteger)collectionView:(GHRefreshCollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return self.collectionDataSource.count;
}

- (UICollectionViewCell *)collectionView:(GHRefreshCollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    MoreAppInfoModel *bean = [self.collectionDataSource objectAtIndex:indexPath.item];
    ChatMsgCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ChatMsgCollectionCell" forIndexPath:indexPath];
    cell.cell0IconImg.image = [UIImage imageNamed:bean.imgName];
    cell.cell0TitleLabel.text = bean.title;
    cell.imagH.constant = 25.f;
    cell.imagW.constant = 25.f;
    cell.titleConstant.constant = 8.f;
    switch (indexPath.item) {
        case 0:
        {
            cell.cell0ReadNumLabel.hidden = YES;
            NSString * count = @"0";
            cell.cell0ReadNumLabel.text = count;
            UILabel * label = [UILabel new];
            label.font = [UIFont systemFontOfSize:12];
            label.text = count;
            CGFloat width = [label sizeThatFits:CGSizeMake(SCREEN_WIDTH, 16)].width;
            if ((width + 5) < 16) {
                cell.constant.constant = 16;
            }else{
                cell.constant.constant = width + 8;
            }
        }
            break;
        case 1:
        {
            cell.cell0ReadNumLabel.hidden = YES;
            NSString * count = @"0";
            cell.cell0ReadNumLabel.text = count;
            UILabel * label = [UILabel new];
            label.font = [UIFont systemFontOfSize:12];
            label.text = count;
            CGFloat width = [label sizeThatFits:CGSizeMake(SCREEN_WIDTH, 16)].width;
            if ((width + 5) < 16) {
                cell.constant.constant = 16;
            }else{
                cell.constant.constant = width + 8;
            }
        }
            break;
        case 2:
        {
            cell.cell0ReadNumLabel.hidden = YES;
            NSString * count = @"0";
            cell.cell0ReadNumLabel.text = count;
            UILabel * label = [UILabel new];
            label.font = [UIFont systemFontOfSize:12];
            label.text = count;
            CGFloat width = [label sizeThatFits:CGSizeMake(SCREEN_WIDTH, 16)].width;
            if ((width + 5) < 16) {
                cell.constant.constant = 16;
            }else{
                cell.constant.constant = width + 8;
            }
        }
            break;
        case 3:
        {
            cell.cell0ReadNumLabel.hidden = YES;
            NSString * count = @"0";
            cell.cell0ReadNumLabel.text = count;
            UILabel * label = [UILabel new];
            label.font = [UIFont systemFontOfSize:12];
            label.text = count;
            CGFloat width = [label sizeThatFits:CGSizeMake(SCREEN_WIDTH, 16)].width;
            if ((width + 5) < 16) {
                cell.constant.constant = 16;
            }else{
                cell.constant.constant = width + 8;
            }
        }
            break;
        default:
        {
            cell.cell0ReadNumLabel.hidden = YES ;
        }
            break;
    }
    cell.cell0MengCengView.hidden = YES;
    return cell;
}

/****************************************************/
#pragma mark --UICollectionViewDelegateFlowLayout
/****************************************************/
- (CGSize)collectionView:(GHRefreshCollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat width = (SCREEN_WIDTH - 20) / self.collectionDataSource.count;
    CGFloat height = 80;
    return CGSizeMake(width, height);
}

-(UIEdgeInsets)collectionView:(GHRefreshCollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
    CGFloat W = 10;
    return UIEdgeInsetsMake(0,W,0,W);
}

- (CGFloat)collectionView:(GHRefreshCollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{
    return 0;
}

- (CGFloat)collectionView:(GHRefreshCollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{
    return 0;
}


- (void)collectionView:(GHRefreshCollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
    [collectionView deselectItemAtIndexPath:indexPath animated:YES];
    switch (indexPath.item) {
        case 0:
        {
            MyFavoriteVC *vc = [MyFavoriteVC initMyFavoriteVC];
            vc.listType = MyFavoriteListLevelTypeA;
            vc.FolderId = 0;
            vc.operationStateEnum = OperationStateEnum0;
            vc.myTitle = @"我的收藏";
            vc.hidesBottomBarWhenPushed = YES;
            [self.navigationController pushViewController:vc animated:YES];
        }
            break;
        case 1:
        {
            CommonNoteVC * vc = [CommonNoteVC initCommonNoteVC];
            vc.hidesBottomBarWhenPushed = YES;
            [self.navigationController pushViewController:vc animated:YES];
        }
            break;
        case 2:
        {
            CommonToolVC * vc = [CommonToolVC initCommonToolVC];
            vc.hidesBottomBarWhenPushed = YES;
            [self.navigationController pushViewController:vc animated:YES];
        }
            break;
        default:
        {
            CommonWorkVC * vc = [CommonWorkVC initCommonWorkVC];
            vc.hidesBottomBarWhenPushed = YES;
            [self.navigationController pushViewController:vc animated:YES];
        }
            break;
    }
}
- (void)setBarData
{
    [self.collectionDataSource removeAllObjects];
    NSArray * titleArray = @[@"收藏",@"笔记",@"工具箱",@"工作台"];
    NSArray * imageArray = @[@"Common_collect",@"Common_note",@"Common_gjxiang",@"Common_gztai"];
    for (NSInteger i = 0; i < titleArray.count; i ++) {
        MoreAppInfoModel * model = [[MoreAppInfoModel alloc] init];
        model.title = titleArray[i];
        model.imgName = imageArray[i];
        [self.collectionDataSource addObject:model];
    }
}

#pragma Mark 左滑按钮 iOS8以上
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos){
    if (indexPath.section == 0) {
        UISwipeActionsConfiguration *actions = [UISwipeActionsConfiguration configurationWithActions:@[]];
        actions.performsFirstActionWithFullSwipe = NO;
        return actions;
    }else{
        WEAKSELF
        MyFavoriteSubModel * model = [self.dataArray objectAtIndex:indexPath.row];
        UIContextualAction *action1 = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:@"转发" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
            [tableView setEditing:NO animated:YES];

        }];
        action1.backgroundColor = UIColorHex(#FF923A);
        UIContextualAction *action2 = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:model.IsTop ? @"取消置顶" :@"置顶" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
            [weakSelf topFind:model];
    
        }];
        action2.backgroundColor = UIColorHex(#9BA9CB);
        UIContextualAction *action3 = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:@"移动" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
            [weakSelf launchMoveVC:@[@(model.Id)].mutableCopy];
        }];
        action3.backgroundColor = UIColorHex(#589AF1);

        UIContextualAction *action4 = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:@"删除" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
            [tableView setEditing:NO animated:YES];
            UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:nil message:@"确认删除" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *ok = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
                [weakSelf.tableView reloadData];
            }];
            [ok setValue:k9 forKey:@"_titleTextColor"];
            UIAlertAction *noOk = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                [weakSelf deleteFind:@[model].mutableCopy indexPath:indexPath];
            }];
            [alertVC addAction:ok];
            [alertVC addAction:noOk];
            completionHandler(YES);
            [weakSelf presentViewController:alertVC animated:YES completion:nil];
        }];
        action4.backgroundColor = UIColorHex(#F64A33);
        UISwipeActionsConfiguration *actions = [UISwipeActionsConfiguration configurationWithActions:@[action4,action3,action2,action1]];
        actions.performsFirstActionWithFullSwipe = NO;
        return actions;
    }
}
- (void)topFind:(MyFavoriteSubModel*)findModel{
    WEAKSELF
    [[HttpManager sharedHttpManager] PUTUrl:[NSString stringWithFormat:@"%@%@%ld",BaseUrl,API_APP_Collection_Top,(long)findModel.MiddleId] parameters:@{} success:^(id  _Nonnull responseObject) {
        [weakSelf getDataList];
    } failure:^(NSError * _Nonnull error) {
        SHOWERROR([ZYCTool handerResultData:error]);
    }];
}
- (void)deleteFind:(NSMutableArray<MyFavoriteSubModel *>*)findModelArray indexPath:(NSIndexPath *)indexPath{
    NSMutableArray *MiddleIds = [NSMutableArray array];
    
    for (MyFavoriteSubModel *model in findModelArray) {
        [MiddleIds addObject:@(model.Id)];
    }
    NSMutableDictionary *dic = [[NSMutableDictionary alloc]init];
    [dic setValue:MiddleIds forKey:@"MiddleIds"];
    [dic setValue:@(3) forKey:@"FolderType"];
    
    WS(weakSelf);
    UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:nil message:@"确认删除" preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *ok = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        dispatch_async(dispatch_get_main_queue(), ^{
            [weakSelf.tableView reloadData];
        });
    }];
    [ok setValue:k9 forKey:@"_titleTextColor"];
    UIAlertAction *noOk = [UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        [[HttpManager sharedHttpManager] POSTUrl:Host(API_Find_DeleteRecord) parameters:dic responseStyle:DATA success:^(id  _Nonnull responseObject) {
            [weakSelf getDataList];
        } failure:^(NSError * _Nonnull error) {
            SHOWERROR([ZYCTool handerResultData:error]);
        }];
    }];
    [alertVC addAction:ok];
    [alertVC addAction:noOk];
    [self presentViewController:alertVC animated:YES completion:nil];
}
- (void)launchMoveVC:(NSMutableArray<NSNumber*>*)selectIDArray{
    MoveViewController * vc = [MoveViewController initMoveViewController];
    vc.TypeId = CreateCollectionType;
    vc.collectType = CollectHanderType_Move;
    vc.ParentId = 0;
    vc.FolderIds = selectIDArray;
    vc.titleStr = @"移动";
    [self.navigationController pushViewController:vc animated:YES];
}
@end