//
//  MessageViewController.m
//  Lighting
//
//  Created by 曹云霄 on 2017/2/16.
//  Copyright © 2017年 上海勾芒科技有限公司. All rights reserved.
//

#import "MessageViewController.h"
#import "MessageTableViewCell.h"
#import "UITableView+FDTemplateLayoutCell.h"

@interface MessageViewController ()<UITableViewDelegate,UITableViewDataSource>


/**
 查询对象
 */
@property (nonatomic,strong) NoticeCondition *messageModel;

/**
 结果对象
 */
@property (nonatomic,strong) NoticeResponse *resultModel;

/**
 数据源
 */
@property (nonatomic,strong) NSMutableArray *messageArray;

@end

@implementation MessageViewController

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self.meesageTableView.mj_header beginRefreshing];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self uiConfigAction];
    [self setUpRefreshAction];
}

#pragma mark -UI
- (void)uiConfigAction
{
    self.meesageTableView.tableFooterView = [UIView new];
    [self.timeOrderButton addTarget:self action:@selector(timeOrderClickAction:) forControlEvents:UIControlEventTouchUpInside];
}

#pragma mark - Refresh
- (void)setUpRefreshAction
{
    WS(weakSelf);
    MjRefreshHeaderCustom *headerRefresh = [MjRefreshHeaderCustom headerWithRefreshingBlock:^{
        [weakSelf.meesageTableView.mj_footer resetNoMoreData];
        weakSelf.messageModel.page.page = ONE;
        [weakSelf getAllMessageDatas:YES];
    }];
    headerRefresh.stateLabel.hidden = YES;
    headerRefresh.lastUpdatedTimeLabel.hidden = YES;
    self.meesageTableView.mj_header = headerRefresh;
    MJRefreshAutoNormalFooter *footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
        
        if (++ weakSelf.messageModel.page.page > weakSelf.resultModel.totalpages) {
            [weakSelf.meesageTableView.mj_footer endRefreshingWithNoMoreData];
        }else{
            [weakSelf getAllMessageDatas:NO];
        }
    }];
    footer.automaticallyHidden = YES;
    self.meesageTableView.mj_footer = footer;
}

#pragma mark -获取数据
- (void)getAllMessageDatas:(BOOL)isRemove
{
    WS(weakSelf);
    [XBLoadingView showHUDViewWithDefault];
   [HTTP networkRequestWithURL:SERVERREQUESTURL(MESSAGELIST) withRequestType:0 withParameter:self.messageModel withReturnValueBlock:^(id returnValue) {
       
       [XBLoadingView hideHUDViewWithDefault];
       [weakSelf endRefreshingForTableView:weakSelf.meesageTableView];
       if (RESULT(returnValue)) {
           if (isRemove) {
               [weakSelf.messageArray removeAllObjects];
           }
           weakSelf.resultModel = [[NoticeResponse alloc] initWithDictionary:returnValue[@"data"] error:nil];
           [weakSelf.messageArray addObjectsFromArray:weakSelf.resultModel.noticeEntity];
           [weakSelf.meesageTableView reloadData];
       }
       
   } withFailureBlock:^(NSError *error) {
       [XBLoadingView showHUDViewWithText:error.localizedDescription];
   }];
}

#pragma mark -设为已读
- (void)readedMessage:(NSString *)messageId withIndexPath:(NSIndexPath *)indexPath
{
    WS(weakSelf);
    [XBLoadingView showHUDViewWithDefault];
    [HTTP networkRequestWithURL:[NSString stringWithFormat:SERVERREQUESTURL(MESSAGE_READ),messageId,[Shoppersmanager manager].Shoppers.employee.fid] withRequestType:0 withParameter:nil withReturnValueBlock:^(id returnValue) {
        
        [XBLoadingView hideHUDViewWithDefault];
        if (RESULT(returnValue)) {
            TONoticeEntity *entity = weakSelf.messageArray[indexPath.row];
            entity.readed = YES;
            [weakSelf cornerMarkIsShow];
            [weakSelf configCell:[weakSelf.meesageTableView cellForRowAtIndexPath:indexPath] withIndexPath:indexPath];
            [weakSelf.meesageTableView reloadData];
        }
        
    } withFailureBlock:^(NSError *error) {
        [XBLoadingView showHUDViewWithText:error.localizedDescription];
    }];
}

#pragma mark -UITableViewDataSource
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MessageTableViewCell *messageCell = [tableView dequeueReusableCellWithIdentifier:@"MessageTableViewCell" forIndexPath:indexPath];
    [self configCell:messageCell withIndexPath:indexPath];
    return messageCell;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.messageArray.count;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    WS(weakSelf);
    TONoticeEntity *entity = self.messageArray[indexPath.row];
    if (!entity.readed) {
        ShowDefaultAlertView(self, nil, @"是否设置为已读", UIAlertControllerStyleActionSheet, ^{
            TONoticeEntity *entity = weakSelf.messageArray[indexPath.row];
            [weakSelf readedMessage:entity.fid withIndexPath:indexPath];
        }, nil);
    }
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    return [tableView fd_heightForCellWithIdentifier:@"MessageTableViewCell" cacheByIndexPath:indexPath configuration:^(id cell) {
        [self configCell:cell withIndexPath:indexPath];
    }];
}


#pragma mark -cell赋值
- (void)configCell:(MessageTableViewCell *)cell withIndexPath:(NSIndexPath *)indexPath
{
    TONoticeEntity *entity = self.messageArray[indexPath.row];
    cell.isReadedImageView.hidden = entity.readed;
    cell.messageLabel.text = entity.message;
    cell.releaseTimeLabel.text = entity.createDate;
}

#pragma mark --设置已读,未读个数减一
- (void)cornerMarkIsShow
{
    [Notification postNotificationName:MESSAGE_COUNT object:@1];
}


#pragma mark -时间排序
- (void)timeOrderClickAction:(UIButton *)sender
{
    sender.selected = !sender.selected;
    self.messageModel.page.order = sender.selected?SORTDIRECTION_DESC:SORTDIRECTION_ASC;
    [self.meesageTableView.mj_header beginRefreshing];
}

#pragma mark -lazy
- (NoticeCondition *)messageModel
{
    if (!_messageModel) {
        _messageModel = [[NoticeCondition alloc] init];
        DataPage *page = [[DataPage alloc] init];
        page.page = ZERO;
        page.rows = KROWS;
        page.sort = SORTDIRECTION_DESC;
        _messageModel.page = page;
        
        _messageModel.employeeId = [Shoppersmanager manager].Shoppers.employee.fid;
    }
    return _messageModel;
}

- (NSMutableArray *)messageArray
{
    if (!_messageArray) {
        _messageArray = [NSMutableArray array];
    }
    return _messageArray;
}

@end