//
//  ForumItemDetailViewController.m
//  Lighting
//
//  Created by 曹云霄 on 2016/12/12.
//  Copyright © 2016年 上海勾芒科技有限公司. All rights reserved.
//

#import "ForumItemDetailViewController.h"
#import "CommentListTableViewCell.h"
#import "PostPhotoManagerViewController.h"
#import "ShareGoodsViewController.h"

@interface ForumItemDetailViewController ()<UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate,TapClickDelegate,ReturnTableviewcellIndexpathdelegate>


@property (nonatomic,strong) ForumReplyResponse *topicReply;

/**
 评论列表
 */
@property (nonatomic,strong) NSMutableArray *commentsArray;

/**
 headerView
 */
@property (weak, nonatomic) IBOutlet UIView *tableViewHeaderView;

/**
 发贴人头像
 */
@property (weak, nonatomic) IBOutlet UIImageView *issuerImageView;

/**
 贴心标题
 */
@property (weak, nonatomic) IBOutlet UILabel *postTitleLabel;

/**
 发帖人姓名、时间
 */
@property (weak, nonatomic) IBOutlet UILabel *issuerNameAndDateLabel;

/**
 分享
 */
@property (weak, nonatomic) IBOutlet UIButton *shareButton;

/**
 删除
 */
@property (weak, nonatomic) IBOutlet UIButton *deleteButton;

/**
 帖子内容
 */
@property (weak, nonatomic) IBOutlet UILabel *contentLabel;


/**
 获取回复列表
 */
@property (nonatomic,strong) ForumReplyCondition *condition;


@end

@implementation ForumItemDetailViewController

#pragma mark - lazy
- (NSMutableArray *)commentsArray
{
    if (!_commentsArray) {
        _commentsArray = [NSMutableArray array];
    }
    return _commentsArray;
}

- (ForumReplyCondition *)condition
{
    if (!_condition) {
        _condition = [[ForumReplyCondition alloc] init];
        DataPage *page = [[DataPage alloc] init];
        page.page = ONE;
        page.rows = KROWS;
        _condition.page = page;
        _condition.topicIdEquals = self.topicDetail.fid;
    }
    return _condition;
}

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

#pragma mark - UI
- (void)uiConfigAction
{
    self.commentView.layer.borderWidth = 1.0f;
    self.commentView.layer.borderColor = RGB(237, 238, 239, 1).CGColor;
    self.commentView.layer.cornerRadius = 4;
    self.commentView.layer.masksToBounds = YES;
    self.forumDetailTableView.tableFooterView = [UIView new];
    BOOL boolValue = ![self.topicDetail.posterId isEqualToString:[Shoppersmanager manager].shoppers.employee.fid];
    self.deleteButton.hidden = boolValue;
}

#pragma mark - 获取回复列表
- (void)getPostDetailAction:(BOOL)isRemove
{
    WS(weakSelf);
    [XBLoadingView showHUDViewWithDefault];
    [HTTP networkRequestWithURL:SERVERREQUESTURL(POSTDETAIL) withRequestType:ZERO withParameter:self.condition withReturnValueBlock:^(id returnValue) {
        
        [XBLoadingView hideHUDViewWithDefault];
        if (RESULT(returnValue)) {
            if (isRemove) {
                [weakSelf.commentsArray removeAllObjects];
            }
            weakSelf.topicReply = [[ForumReplyResponse alloc] initWithDictionary:RESPONSE(returnValue) error:nil];
            [weakSelf.commentsArray addObjectsFromArray:weakSelf.topicReply.forumReplyEntity];
            [weakSelf setUpCommentNumber];
            [weakSelf setUpHeaderView];
            [weakSelf.forumDetailTableView reloadData];
        }else {
            [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)];
        }
    } withFailureBlock:^(NSError *error) {
        [XBLoadingView showHUDViewWithText:error.localizedDescription];
    }];
}

#pragma mark - 设置HeaderView
- (void)setUpHeaderView
{
    self.postTitleLabel.text = self.topicDetail.title;
    self.contentLabel.text = self.topicDetail.content;
        //系统管理员
    if (self.topicDetail.backEnd) {
        self.issuerImageView.image = GuideReplaceImage;
        self.issuerNameAndDateLabel.text = [NSString stringWithFormat:@"%@  %@",self.topicDetail.posterRealName,[BaseViewController formateDate:self.topicDetail.postTime]];
    }else {
        //普通用户
        [self.issuerImageView sd_setImageWithURL:[NSURL URLWithString:self.topicDetail.posterPicture] placeholderImage:CoustomerReplaceImage];
        self.issuerNameAndDateLabel.text = [NSString stringWithFormat:@"%@:  %@  %@",self.topicDetail.posterPosition,self.topicDetail.posterRealName,[BaseViewController formateDate:self.topicDetail.postTime]];
    }
    //图片
    PostPhotoManagerViewController *photoManager = [[[self class] getLearningCenterStoryboardClass] instantiateViewControllerWithIdentifier:@"PostPhotoManagerViewController"];
    [self addChildViewController:photoManager];
    NSMutableArray *array = [NSMutableArray array];
    for (TOAttachmentEntity *entity in self.topicDetail.attachments) {
        [array addObject:entity.fileUrl];
    }
    CGFloat attachment = [self calculateImageHeight];
    photoManager.imageArray = array;
    [self.tableViewHeaderView addSubview:photoManager.view];
    self.tableViewHeaderView.height = attachment + self.topicDetail.contentHeight + self.contentLabel.top + 10;
    photoManager.view.frame = CGRectMake(self.contentLabel.left, self.topicDetail.contentHeight+10+self.contentLabel.top, self.contentLabel.width, attachment);
    self.forumDetailTableView.tableHeaderView = self.tableViewHeaderView;
}

#pragma mark - 设置评论个数
- (void)setUpCommentNumber
{
    self.commentNumberLabel.text = [NSString stringWithFormat:@"已有%ld条评论",(unsigned long)self.commentsArray.count];
    self.praiseButton.selected = !self.topicDetail.canLike;
}

#pragma mark - <UITableViewDelegate,UITableViewDataSource>
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CommentListTableViewCell *commentCell = [tableView dequeueReusableCellWithIdentifier:@"CommentListTableViewCell" forIndexPath:indexPath];
    commentCell.bestView.delegate = self;
    commentCell.indexPath = indexPath;
    commentCell.replyEntity = self.commentsArray[indexPath.row];
    BOOL boolValue = ([self.topicDetail.posterId isEqualToString:[Shoppersmanager manager].shoppers.employee.fid] && [self.category.name isEqualToString:OPPLE_ASK]);
    commentCell.optionButton.hidden = !boolValue;
    return commentCell;
}

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

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CustomTOForumReplyEntity *replyEntity = self.commentsArray[indexPath.row];
    //68为上边距   10为下边距
    return replyEntity.replyContentHeight + 68 + 10;
}

- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    CommentListTableViewCell *commentCell = (CommentListTableViewCell *)cell;
    commentCell.bestView.width = ZERO;
    commentCell.bestView.x = commentCell.optionButton.x;
}

#pragma mark - 计算选中图片显示所需高度
- (CGFloat)calculateImageHeight
{
    //默认每行显示3张图片
    CGFloat height = (ScreenWidth-60-2*10)/3.0;
    CGFloat interval = 10;
    CGFloat allHeight = 0;
    NSInteger number = self.topicDetail.attachments.count/3;
    if (self.topicDetail.attachments.count == 0) {
        return allHeight;
    }else if (self.topicDetail.attachments.count < 3) {
        return height;
    }else if (self.topicDetail.attachments.count %3 == 0) {
        allHeight = number*height + (number-1)*interval;
    }else if (number) {
        allHeight = (number+1)*height + number*interval;
    }
    return allHeight;
}

#pragma mark - 确认回复
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if ([[self class] isBlankString:textField.text]) {
        [XBLoadingView showHUDViewWithText:@"评论内容不能为空"];
    }else {
        [self replyPostRequest];
    }
    return YES;
}

#pragma mark - 回复帖子
- (void)replyPostRequest
{
    [self.view endEditing:YES];
    TOForumReplyEntity *reply = [[TOForumReplyEntity alloc] init];
    reply.topicId = self.topicDetail.fid;
    reply.replyContent = self.commentInputTextFieldView.text;
    reply.replyerName = [Shoppersmanager manager].shoppers.employee.userName;
    reply.replyerRealName = [Shoppersmanager manager].shoppers.employee.realName;
    reply.replyerPosition = [Shoppersmanager manager].shoppers.employee.positionsName;
    reply.replyTime = [[self class] getTimeby:0];
    reply.replyerId = [Shoppersmanager manager].shoppers.employee.fid;
    [XBLoadingView showHUDViewWithDefault];
    WS(weakSelf);
    [HTTP networkRequestWithURL:SERVERREQUESTURL(REPLYPOST) withRequestType:ZERO withParameter:reply withReturnValueBlock:^(id returnValue) {
        
        [XBLoadingView hideHUDViewWithDefault];
        if (RESULT(returnValue)) {
            weakSelf.commentInputTextFieldView.text = nil;
            [XBLoadingView showHUDViewWithSuccessText:@"评论成功" completeBlock:^{
                if (weakSelf.refreshBlock) {
                    weakSelf.refreshBlock(ONE,Comment,weakSelf.indexPath);
                }
                [weakSelf getPostDetailAction:YES];
            }];
        }else {
            [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)];
        }
        
    } withFailureBlock:^(NSError *error) {
        [XBLoadingView showHUDViewWithText:error.localizedDescription];
    }];
}

#pragma mark -删除
- (IBAction)deleteButtonClickAction:(UIButton *)sender {
    [self delecteClickPostAction];
}

#pragma mark -分享
- (IBAction)shareButtonClickAction:(UIButton *)sender {
    [self sharePostClickAction];
}

#pragma mark - 删除帖子
- (void)delecteClickPostAction
{
    ShowDefaultAlertView(self, nil, @"确认删除此贴吗？", UIAlertControllerStyleAlert, ^{
        [XBLoadingView showHUDViewWithDefault];
        WS(weakSelf);
        [HTTP networkWithDictionaryRequestWithURL:[NSString stringWithFormat:SERVERREQUESTURL(DELETEPOST),self.topicDetail.fid] withRequestType:NetworkRequestWithDELETE withParameter:nil withReturnValueBlock:^(id returnValue) {
            [XBLoadingView hideHUDViewWithDefault];
            if (RESULT(returnValue)) {
                [XBLoadingView showHUDViewWithSuccessText:@"删除成功" completeBlock:^{
                    if (weakSelf.delectBlock) {
                        weakSelf.delectBlock(weakSelf.topicDetail.fid);
                    }
                    [weakSelf.navigationController popViewControllerAnimated:YES];
                }];
            }else {
                [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)];
            }
            
        } withFailureBlock:^(NSError *error) {
            [XBLoadingView hideHUDViewWithDefault];
            [XBLoadingView showHUDViewWithText:error.localizedDescription];
        }];
    }, nil);
}

#pragma mark -分享帖子
- (void)sharePostClickAction
{
    ShareGoodsViewController *shareController = [[ShareGoodsViewController alloc]init];
    shareController.type = SHARE_INVITATION;
    shareController.shareID = self.topicDetail.fid;
    shareController.shareImage = [UIImage imageNamed:@"Icon-83.5"];
    [self popoverPresentationController:shareController withPreferredContentSize:CGSizeMake(290, 120) withBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:self.shareButton]];
}


#pragma mark - <TapClickDelegate>
#pragma mark -最佳回复
- (void)tapClickAction:(BOOL)isBest withReplyId:(NSString *)replyId withIndexPath:(NSIndexPath *)indexPath
{
    WS(weakSelf);
    [XBLoadingView showHUDViewWithDefault];
    [HTTP networkWithDictionaryRequestWithURL:[NSString stringWithFormat:SERVERREQUESTURL(BASEREPLY),self.topicDetail.fid,replyId,isBest?@"true":@"false"] withRequestType:ONE withParameter:nil withReturnValueBlock:^(id returnValue) {
        [XBLoadingView hideHUDViewWithDefault];
        if (RESULT(returnValue)) {
            [weakSelf getPostDetailAction:YES];
        }else {
            [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)];
        }
        
    } withFailureBlock:^(NSError *error) {
        [XBLoadingView showHUDViewWithText:error.localizedDescription];
    }];
}

#pragma mark - 点赞
- (IBAction)praiseButtonClickAction:(UIButton *)sender {
    
    [XBLoadingView showHUDViewWithDefault];
    NSString *url = [NSString stringWithFormat:SERVERREQUESTURL(PRAISE),self.topicDetail.fid,!sender.selected?@"true":@"false"];
    WS(weakSelf);
    [HTTP networkWithDictionaryRequestWithURL:url withRequestType:ONE withParameter:nil withReturnValueBlock:^(id returnValue) {
        [XBLoadingView hideHUDViewWithDefault];
        if (RESULT(returnValue)) {
            sender.selected = !sender.selected;
            //刷新列表
            if (weakSelf.refreshBlock) {
                weakSelf.refreshBlock(sender.selected?ONE:-ONE,Praise,weakSelf.indexPath);
            }
        }else {
            [XBLoadingView showHUDViewWithText:MESSAGE(returnValue)];
        }
        
    } withFailureBlock:^(NSError *error) {
        [XBLoadingView showHUDViewWithText:error.localizedDescription];
    }];
}


@end
