// // PBCommentsController.m // IphoneBIMe // // Created by zjf on 2018/8/23. // Copyright © 2018年 ProBIM. All rights reserved. // #import "PBCommentsController.h" #import "PBProjectModel.h" #import "PBIssueDetailModel.h" #import "PBDocModel.h" #import "PBCommentsModel.h" #import "PBPreviewDocViewController.h" #import "PBAddCommentsController.h" #import "PBNetworkModel.h" #import "PBPromptView.h" #import "PBPublishCommentCell.h" #import "PBIssueListModel.h" #import "PBCommentsCell.h" #import "PBImageCommentsCell.h" static NSString *const CommentsCellID = @"CommentsCellID"; static NSString *const ImageCommentsCellID = @"ImageCommentsCellID"; @interface PBCommentsController () @property (nonatomic, strong) PBPromptView *promptView; @property (nonatomic, strong) NSMutableArray *commentM; @end @implementation PBCommentsController - (void)viewDidLoad { [super viewDidLoad]; if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.f) { self.edgesForExtendedLayout = UIRectEdgeNone; self.navigationController.interactivePopGestureRecognizer.enabled = YES; self.navigationController.interactivePopGestureRecognizer.delegate = self; } [self setupNav]; [self setTableView]; } - (void)setupNav { if (self.commentM.count == 0) { self.title = @"评论"; }else { self.title = [NSString stringWithFormat:@"评论(%zd)",self.commentM.count]; } PBBackNavItem *backNav = [PBBackNavItem backNacItem]; backNav.title = @" "; [backNav addTarget:self action:@selector(backItemAction) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *backNavItem = [[UIBarButtonItem alloc] initWithCustomView:backNav]; self.navigationItem.leftBarButtonItem = backNavItem; UIBarButtonItem *addCommentsItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Issue_list_add"] style:UIBarButtonItemStylePlain target:self action:@selector(commentsAction)]; self.navigationItem.rightBarButtonItem = addCommentsItem; } - (void)backItemAction { self.issueDetailModel.comments = self.commentM.copy; if (self.CommentsCountBlock) { self.CommentsCountBlock(self.issueDetailModel.comments.count); } [self.navigationController popViewControllerAnimated:YES]; } - (void)commentsAction { PBAddCommentsController *addCommentsVC = [[PBAddCommentsController alloc] init]; addCommentsVC.projectModel = self.projectModel; addCommentsVC.issueListModel = self.issueListModel; addCommentsVC.issueDetailModel = self.issueDetailModel; addCommentsVC.SaveCommentsBlock = ^(NSDictionary *commentsDic) { [self.commentM insertObject:commentsDic atIndex:0]; self.title = [NSString stringWithFormat:@"评论(%zd)",self.commentM.count]; self.promptView.hidden = YES; [self.tableView reloadData]; }; [self.navigationController pushViewController:addCommentsVC animated:YES]; } - (void)loadCommentsList { // [YJProgressHUD showProgress:@"" inView:self.view]; // [[PBNetworkTools sharedTools] RequestGetIssueCommentsByIdWithIssueId:self.issueListModel.IssueId andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) { // if (error) { // NSLog(@"%@",error); // [YJProgressHUD showMessage:@"加载评论失败" inView:self.view]; // return; // } // NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; // PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str]; // if (networkModel.Ret == 1) { // NSArray *comments = networkModel.Data; // self.issueDetailModel.comments = comments; // self.title = [NSString stringWithFormat:@"评论(%zd)",self.issueDetailModel.comments.count]; // if (comments.count == 0) { // [YJProgressHUD hide]; // self.promptView.hidden = NO; // return; // }else { // self.promptView.hidden = YES; // } // NSMutableArray *commentsM = [[NSMutableArray alloc] init]; // for (NSDictionary *obj in comments) { // PBCommentsModel *commentsModel = [PBCommentsModel yy_modelWithDictionary:obj]; // [commentsM addObject:commentsModel]; // } // self.commentM = commentsM; // [YJProgressHUD hide]; // [self.tableView reloadData]; // }else { // [YJProgressHUD showMessage:@"加载评论失败" inView:self.view]; // } // }]; } - (void)setTableView { [self.tableView registerClass:[PBCommentsCell class] forCellReuseIdentifier:CommentsCellID]; [self.tableView registerClass:[PBImageCommentsCell class] forCellReuseIdentifier:ImageCommentsCellID]; self.tableView.estimatedRowHeight = 80.f; self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; [self.tableView addSubview:self.promptView]; if (self.commentM.count == 0) { self.promptView.hidden = NO; }else { self.promptView.hidden = YES; } } #pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.commentM.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { PBCommentsModel *commentsModel = [PBCommentsModel yy_modelWithDictionary:self.commentM[indexPath.row]]; if ([commentsModel.contenttype isEqualToString:@"text"]) { PBCommentsCell *cell = [tableView dequeueReusableCellWithIdentifier:CommentsCellID forIndexPath:indexPath]; cell.commentsModel = commentsModel; cell.deleteCommentsBlock = ^{ [self creatAlertControllerWithDeleteAndData:commentsModel andIndex:indexPath]; }; [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; return cell; }else { PBImageCommentsCell *cell = [tableView dequeueReusableCellWithIdentifier:ImageCommentsCellID forIndexPath:indexPath]; cell.projectModel = self.projectModel; cell.commentsModel = commentsModel; cell.deleteCommentsBlock = ^{ [self creatAlertControllerWithDeleteAndData:commentsModel andIndex:indexPath]; }; [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; return cell; } } - (void)creatAlertControllerWithDeleteAndData:(PBCommentsModel *)commentsModel andIndex:(NSIndexPath *)indexPath { NSLog(@"fenzu:%zd-row:%zd",indexPath.section, indexPath.row); UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"提示" message:@"您确定要删除这条评论吗?" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]; UIAlertAction *determineAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { [self deleteCommentsWith:commentsModel andIndexPath:indexPath]; }]; [alertVC addAction:cancelAction]; [alertVC addAction:determineAction]; [self presentViewController:alertVC animated:YES completion:nil]; } - (void)deleteCommentsWith:(PBCommentsModel *)commentsModel andIndexPath:(NSIndexPath *)indexPath { [YJProgressHUD showProgress:@"" inView:self.view]; [[PBNetworkTools sharedTools] RequestDeleteMessageWithMessageID:commentsModel.issue_talkid andIssueID:commentsModel.issueid andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) { if (error) { [YJProgressHUD showMessage:@"删除评论失败" inView:self.view]; return; } NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str]; if (networkModel.Ret == 1) { [YJProgressHUD hide]; [self.commentM removeObjectAtIndex:indexPath.row]; // [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; [self.tableView reloadData]; if (self.commentM.count == 0) { self.title = @"评论"; self.promptView.hidden = NO; }else { self.title = [NSString stringWithFormat:@"评论(%zd)",self.commentM.count]; self.promptView.hidden = YES; } }else { [YJProgressHUD showMessage:networkModel.Msg inView:self.view]; } }]; } #pragma mark - Set方法 - (void)setProjectModel:(PBProjectModel *)projectModel { _projectModel = projectModel; } - (void)setIssueDetailModel:(PBIssueDetailModel *)issueDetailModel { _issueDetailModel = issueDetailModel; self.commentM = issueDetailModel.comments.mutableCopy; } #pragma mark - 懒加载 - (PBPromptView *)promptView { if (_promptView == nil) { _promptView = [[PBPromptView alloc] initWithFrame:self.tableView.bounds]; _promptView.imageV.image = [UIImage imageNamed:@"Issue_list_empty"]; _promptView.textL.text = @"暂无评论点击右上角加号新增评论"; // NSMutableAttributedString *noteStr = [[NSMutableAttributedString alloc] initWithString:_promptView.textL.text]; // NSRange redRange = NSMakeRange([[noteStr string] rangeOfString:@"加号"].location, [[noteStr string] rangeOfString:@"加号"].length); // //需要设置的位置 // [noteStr addAttribute:NSForegroundColorAttributeName value:IndicatedColor range:redRange]; // //设置颜色 // [_promptView.textL setAttributedText:noteStr]; } return _promptView; } /* // Override to support conditional editing of the table view. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the specified item to be editable. return YES; } */ /* // Override to support editing the table view. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; } else if (editingStyle == UITableViewCellEditingStyleInsert) { // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view } } */ /* // Override to support rearranging the table view. - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { } */ /* // Override to support conditional rearranging of the table view. - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the item to be re-orderable. return YES; } */ /* #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. } */ @end