//
//  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) NSMutableArray *messageArray;

@end

@implementation MessageViewController

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    self.navigationController.fd_fullscreenPopGestureRecognizer.enabled = NO;
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    }
    [self.tableView.mj_header beginRefreshing];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    self.navigationController.fd_fullscreenPopGestureRecognizer.enabled = YES;
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    }
}


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

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

#pragma mark -上、下拉回调
- (void)loadWebDataSource
{
    WS(weakSelf);
    if (self.pullPageIndex == ONE) {
        [self.messageArray removeAllObjects];
    }
    self.messageModel.page.page = self.pullPageIndex;
    [self getAllMessageDatasCompleted:^(NoticeResponse *result) {
        if (weakSelf.pullPageIndex >= result.totalpages) {
            [weakSelf endRefresh:EndRefreshNotData];
        }else {
            [weakSelf endRefresh:EndRefreshDefault];
        }
    }];
}

#pragma mark -获取数据
- (void)getAllMessageDatasCompleted:(void(^)(NoticeResponse *result))completed
{
    WS(weakSelf);
   [HTTP networkRequestWithURL:SERVERREQUESTURL(MESSAGELIST) withRequestType:0 withParameter:self.messageModel withReturnValueBlock:^(id returnValue) {
       if (RESULT(returnValue)) {
           NoticeResponse *resultModel = [[NoticeResponse alloc] initWithDictionary:RESPONSE(returnValue) error:nil];
           completed(resultModel);
           [weakSelf.messageArray addObjectsFromArray:resultModel.noticeEntity];
           [weakSelf.tableView reloadData];
       }else {
           [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)];
       }
       
   } withFailureBlock:^(NSError *error) {
       [weakSelf endRefresh:EndRefreshDefault];
       [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.tableView cellForRowAtIndexPath:indexPath] withIndexPath:indexPath];
            [weakSelf.tableView 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) {
        ShowAlertView(@"提示", @"是否设置为已读", @[@"确认",@"取消"], UIAlertControllerStyleAlert, ^(NSInteger index) {
            if (index == ONE) {
                return;
            }
            TONoticeEntity *entity = weakSelf.messageArray[indexPath.row];
            [weakSelf readedMessage:entity.fid withIndexPath:indexPath];
        });
    }
}

- (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.order = sender.selected?SORTDIRECTION_ASC:SORTDIRECTION_DESC;
    [self.tableView.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;
        _messageModel.sort = @"createDate";
        _messageModel.order = SORTDIRECTION_DESC;
        _messageModel.page = page;
        _messageModel.employeeId = [Shoppersmanager manager].shoppers.employee.fid;
    }
    return _messageModel;
}

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

@end
