//
//  KGKakaoInvitation.h
//  KakaoGame SDK
//
//  Created by Eric.j on 2018. 11. 15..
//  Copyright (c) 2018. Kakaogames Corp. All rights reserved.
//

#import <KakaoGame/KGObject.h>
#import <KakaoGame/KGKakaoProfile.h>

/**
 * @brief KGKakaoInvitation클래스는 신규 카카오톡 친구 초대 이벤트를 다룬다.
 */
@interface KGKakaoInvitation : NSObject

/**
 * @brief 진행중인 이벤트 목록을 조회한다.
 *
 * @param completionHandler 완료 핸들러 [error:조회 결과][invitationEvents:진행중인 이벤트 목록(KGKakaoEvent) 목록].
 */
+ (void)loadEventsWithCompletionHandler:(void(^)(NSError *error, NSArray *invitationEvents))completionHandler;

/**
 * @brief 나를 초대한 플레이어 목록을 조회한다.
 *
 * @param eventId 이벤트 아이디.
 * @param completionHandler 완료 핸들러 [error:조회 결과][invitationSenders:나를 초대한 플레이어(KGPlayer) 목록].
 */
+ (void)loadSendersWithEventId:(int)eventId completionHandler:(void(^)(NSError *error, NSArray *invitationSenders))completionHandler;

/**
 * @brief 내가 초대한 친구의 목록을 조회한다.
 *
 * @param eventId 이벤트 아이디.
 * @param completionHandler 완료 핸들러 [error:조회 결과][joiners:내가 초대한 친구(KGPlayer) 목록 - 탈퇴자 포함 앱 가입자][invitees:내가 초대한 친구(KGKakaoProfile) 목록 - 앱 미가입자].
 */
+ (void)loadReceiversWithEventId:(int)eventId completionHandler:(void(^)(NSError *error, NSArray *joiners, NSArray* invitees))completionHandler;

/**
 * @brief 나를 초대한 플레이어의 명 수를 조회한다.
 *
 * @param eventId 이벤트 아이디.
 * @param completionHandler 완료 핸들러 [error:조회 결과][count:나를 초대한 플레이어의 명 수].
 */
+ (void)loadSendersCountWithEventId:(int)eventId completionHandler:(void(^)(NSError *error, int count))completionHandler;

/**
 * @brief 내가 초대한 친구의 명 수를 조회한다.
 *
 * @param eventId 이벤트 아이디.
 * @param completionHandler 완료 핸들러 [error:조회 결과][totalReceiversCount:내가 초대한 친구 전체 명 수][joinersCount:내가 초대한 친구중 탈퇴자 포함 앱 가입자 명 수].
 */
+ (void)loadReceiversCountWithEventId:(int)eventId completionHandler:(void(^)(NSError *error, int totalReceiversCount, int joinersCount))completionHandler;

/**
 * @brief 현재 앱을 플레이한 적이 없는 카카오 친구들의 프로필 정보 목록을 조회한다.
 *
 * @param recommendLimit 최대 추천 친구 수.
 * @param offset 조회할 오프셋. 0부터 시작.
 * @param limit 한번에 가져올 최대 갯수.
 * @param completionHandler 완료 핸들러 [error:조회 결과][totalCount:플레이한 적이 없는 IDP 친구 수][kakaoProfiles:프로필 정보(KGKakaoProfile) 목록].
 */
+ (void)loadInvitableFriendProfilesWithRecommendLimit:(int)recommendLimit
											   offset:(int)offset
												limit:(int)limit
									completionHandler:(void(^)(NSError *error, int totalCount, NSArray *kakaoProfiles))completionHandler;

/**
 * @brief 카카오톡 초대 메시지를 전송한다.
 *
 * @param eventId 이벤트 아이디.
 * @param kakaoProfile 메시지를 수신할 카카오 프로필.
 * @param templateId 메시지 템플릿 아이디.
 * @param argumentDic 기타 데이터 딕셔너리.
 * @param completionHandler 완료 핸들러 [error:전송 결과].
 */
+ (void)sendInviteMessageWithEventId:(int)eventId
						kakaoProfile:(KGKakaoProfile *)kakaoProfile
						  templateId:(NSString *)templateId
						 argumentDic:(NSDictionary *)argumentDic
				   completionHandler:(void (^)(NSError *error))completionHandler;

@end
