GroupDetailViewController.m 7.78 KB
//
//  GroupDetailViewController.m
//  LifeLog
//
//  Created by nvtu on 8/13/17.
//  Copyright © 2017 PhongNV. All rights reserved.
//

#import "GroupDetailViewController.h"
#import <SDWebImage/UIImageView+WebCache.h>

#import "Utilities.h"
#import "ServerAPI.h"
#import "SNSRecentTopicTableViewCell.h"

@interface GroupDetailViewController ()

@end

@implementation GroupDetailViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    isMemberList = false;
    //register nib for table view
    [self.tableBase registerNib:[UINib nibWithNibName:@"SNSRecentTopicTableViewCell" bundle:nil] forCellReuseIdentifier:@"RecentTopicCell"];
    if(_curGroup != nil) {
        [self requestGroupDetail];
    }
    // Do any additional setup after loading the view from its nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void) setGroup : (GroupObject *) object {
    _curGroup = object;
}

- (void)setupView {
    if(_curGroup != nil) {
        if(_curGroup.avatar && ![_curGroup.avatar isKindOfClass:[NSNull class]]) {
            [self.imgAva sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:_curGroup.avatar]]];
        }
        [self.lblGrpName setText:_curGroup.name];
        [self.lblGrpGoal setText:_curGroup.goal];
        [self.btJoinGrp setHidden:_curGroup.isJoin];
        NSString *mode = @"";
        if(_curGroup.runMode) {
            mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.running", nil)];
            mode = [mode stringByAppendingString:@"\n"];
        }
        if(_curGroup.walkMode) {
            mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.walking", nil)];
            mode = [mode stringByAppendingString:@"\n"];
        }
        if(_curGroup.bikeMode) {
            mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.bike", nil)];
            mode = [mode stringByAppendingString:@"\n"];
        }
        if(_curGroup.stepMode) {
            mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.step", nil)];
            mode = [mode stringByAppendingString:@"\n"];
        }
        if(_curGroup.beginMode) {
            mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.begin", nil)];
            mode = [mode stringByAppendingString:@"\n"];
        }
        if(_curGroup.gymMode) {
            mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.gym", nil)];
            mode = [mode stringByAppendingString:@"\n"];
        }
        NSRange range = [mode rangeOfString:@"\n" options:NSBackwardsSearch];
        if(range.length > 0) {
            mode = [mode stringByReplacingOccurrencesOfString:@"\n" withString:@"" options:NSBackwardsSearch range:range];
        }
        self.lbbGrpActiveMode.text = mode;
    }
}
#pragma mark IBAction

- (IBAction)clickBack:(id)sender {
    [self.navigationController popViewControllerAnimated:true];
}

- (IBAction)clickSwitch:(AutoTransButton *)sender {
    isMemberList = !isMemberList;
    if(isMemberList) {
        [sender setTitle:NSLocalizedString(@"lifelog.grDetail.bt.viewTweet", nil) forState:UIControlStateNormal];
    }
    else {
        [sender setTitle:NSLocalizedString(@"lifelog.grDetail.bt.viewMem", nil) forState:UIControlStateNormal];
    }
    [sender setUserInteractionEnabled:false];
    [self resetData];
}

- (IBAction)clickJoin:(AutoTransButton *)sender {
    NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
    MBProgressHUD *hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
    [[ServerAPI server] requestJoinGroup:token groupID:_curGroup.groupID CompletionHandler:^(NSError *error){
        GroupDetailViewController __weak *weakSelf = self;
        dispatch_async(dispatch_get_main_queue(), ^{
            [hudView hideAnimated:true];
            if(error == nil) {
                _curGroup.isJoin = true;
                [weakSelf.btJoinGrp setHidden:_curGroup.isJoin];
            }
        });
    }];

}



#pragma mark UITableView Delegate
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    SNSRecentTopicTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RecentTopicCell"];
    if(isMemberList) {
        MemberObject *object = [_curDataList objectAtIndex:indexPath.row];
        if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) {
            [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]];
        }
        else {
            [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]];
        }
        cell.lblUsername.text   = @"";
        cell.lblDateTime.text   = @"";
        cell.lblDes.text        = object.userName;
        cell.lblMode.text       = @"";
        cell.lblDistance.text   = @"";
        cell.lblDuration.text   = @"";
    }
    else {
        TweetObject *object = [_curDataList objectAtIndex:indexPath.row];
        if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) {
            [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]];
        }
        else {
            [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]];
        }
        cell.lblDateTime.text   = [Utilities stringFromDate:object.createDate withFormat:@"YYYY/MM/dd    hh:mm"];
        cell.lblUsername.text   = object.userName;
        cell.lblDes.text        = object.content;
        cell.lblMode.text       = object.mode;
        cell.lblDistance.text   = [NSString stringWithFormat:@"%.0f m", object.distance];
        cell.lblDuration.text   = object.time;
    }
  
    return cell;
}

#pragma mark Private Function

- (void) requestGroupDetail {
    NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
    MBProgressHUD *hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
    [[ServerAPI server] getGroupDetail:token withGroupID:_curGroup.groupID CompletionHandler:^(GroupObject *object, NSError *error) {
        GroupDetailViewController __weak *weakSelf = self;
        [_curGroup updateDate:object];
        dispatch_async(dispatch_get_main_queue(), ^{
            [hudView hideAnimated:true];
            [weakSelf setupView];
            [weakSelf callRequestToUpdateData];
        });
    }];
}

-(void) callRequestToUpdateData {
    [super callRequestToUpdateData];
    
    NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
    MBProgressHUD *hudView = nil;
    if(_curPage == 1 && !self.refreshControl.isRefreshing) {
        hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
    }
    if(isMemberList) {
        [[ServerAPI server] requestMemberList:token groupID:_curGroup.groupID withPage:_curPage CompletionHandler:^(NSArray *array, NSError *error){
            dispatch_async(dispatch_get_main_queue(), ^{
                if(hudView != nil) {
                    [hudView hideAnimated:true];
                }
            });
            GroupDetailViewController __weak *weakSelf = self;
            [weakSelf updateTableData:array error:error];
            [weakSelf.btSwitch setUserInteractionEnabled:true];
        }];
    }
    else {
        [[ServerAPI server] requestTweetsList:token groupID:_curGroup.groupID withPage:_curPage CompletionHandler:^(NSArray *array, NSError *error){
            dispatch_async(dispatch_get_main_queue(), ^{
                if(hudView != nil) {
                    [hudView hideAnimated:true];
                }
            });
            GroupDetailViewController __weak *weakSelf = self;
            [weakSelf updateTableData:array error:error];
            [weakSelf.btSwitch setUserInteractionEnabled:true];
        }];
    }
}

@end