//
//  WFCCCreateGroupNotificationContent.m
//  WFChatClient
//
//  Created by heavyrain on 2017/9/19.
//  Copyright © 2017年 WildFireChat. All rights reserved.
//

#import "WFCCGroupMemberMutedNotificationContent.h"
#import "WFCCIMService.h"
#import "WFCCNetworkService.h"
#import "Common.h"

@implementation WFCCGroupMemberMutedNotificationContent
- (WFCCMessagePayload *)encode {
    WFCCMessagePayload *payload = [super encode];
    payload.contentType = [self.class getContentType];
    
    NSMutableDictionary *dataDict = [NSMutableDictionary dictionary];
    if (self.operatorId) {
        [dataDict setObject:self.operatorId forKey:@"o"];
    }
    if (self.type) {
        [dataDict setObject:self.type forKey:@"n"];
    }
    
    if (self.groupId) {
        [dataDict setObject:self.groupId forKey:@"g"];
    }
    
    
    if (self.memberIds) {
        [dataDict setObject:self.memberIds forKey:@"ms"];
    }
    payload.binaryContent = [NSJSONSerialization dataWithJSONObject:dataDict
                                                                           options:kNilOptions
                                                                             error:nil];
    
    return payload;
}

- (void)decode:(WFCCMessagePayload *)payload {
    [super decode:payload];
    NSError *__error = nil;
    NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:payload.binaryContent
                                                               options:kNilOptions
                                                                 error:&__error];
    if (!__error) {
        self.operatorId = dictionary[@"o"];
        self.type = dictionary[@"n"];
        self.groupId = dictionary[@"g"];
        self.memberIds = dictionary[@"ms"];
    }
}

+ (int)getContentType {
    return MESSAGE_CONTENT_TYPE_MUTE_MEMBER;
}

+ (int)getContentFlags {
    return WFCCPersistFlag_PERSIST;
}



+ (void)load {
    [[WFCCIMService sharedWFCIMService] registerMessageContent:self];
}

- (NSString *)digest:(WFCCMessage *)message {
    return [self formatNotification:message];
}

- (NSString *)formatNotification:(WFCCMessage *)message {
    NSString *from;
    NSString *targets;
    if ([[WFCCNetworkService sharedInstance].userId isEqualToString:self.operatorId]) {
        from = @"你";
    } else {
        WFCCUserInfo *fromUserInfo = [[WFCCIMService sharedWFCIMService] getUserInfo:self.operatorId inGroup:self.groupId refresh:NO];
        if (fromUserInfo.friendAlias.length > 0) {
            from = fromUserInfo.friendAlias;
        } else if(fromUserInfo.groupAlias.length > 0) {
            from = fromUserInfo.groupAlias;
        } else if (fromUserInfo.displayName.length > 0) {
            from = fromUserInfo.displayName;
        } else {
            from = [NSString stringWithFormat:@"用户<%@>", self.operatorId];
        }
    }
    
    for (NSString *memberId in self.memberIds) {
        NSString *target;
        if ([[WFCCNetworkService sharedInstance].userId isEqualToString:memberId]) {
            target = @"你";
        } else {
            WFCCUserInfo *memberUserInfo = [[WFCCIMService sharedWFCIMService] getUserInfo:memberId inGroup:self.groupId refresh:NO];
            if (memberUserInfo.friendAlias.length > 0) {
                target = memberUserInfo.friendAlias;
            } else if(memberUserInfo.groupAlias.length > 0) {
                target = memberUserInfo.groupAlias;
            } else if (memberUserInfo.displayName.length > 0) {
                target = memberUserInfo.displayName;
            } else {
                target = [NSString stringWithFormat:@"用户<%@>", memberId];
            }
        }
        if (!targets) {
            targets = target;
        } else {
            targets = [NSString stringWithFormat:@"%@,%@", targets, target];
        }
    }
    
    if ([self.type isEqualToString:@"1"]) {
        return [NSString stringWithFormat:@"%@ 禁言了 %@", from, targets];
    } else {
        return [NSString stringWithFormat:@"%@ 取消禁言了 %@", from, targets];
    }
}
@end
