﻿// Copyright 2013-2022 AFI,Inc. All rights reserved

using System;
using UnityEngine;
using BackEnd;
using LitJson;

public class FriendGroup : BaseGroup {
    public override string GetGroupName() {
        return "친구 기능";
    }

    public override void SetSubFunctionButton() {
        UIManager.Instance.AddSubFunction("친구 목록 조회", GetFriendList);
        UIManager.Instance.AddSubFunction("친구 요청", RequestFriend);
        UIManager.Instance.AddSubFunction("친구 요청 보낸 리스트 조회", GetSentRequestList);
        UIManager.Instance.AddSubFunction("친구 요청 받은 리스트 조회", GetReceivedRequestList);
        UIManager.Instance.AddSubFunction("보낸 친구 요청 취소", RevokeSentRequest);
        UIManager.Instance.AddSubFunction("받은 친구 요청 수락", AcceptFriend);
        UIManager.Instance.AddSubFunction("받은 친구 요청 거절", RejectFriend);
        UIManager.Instance.AddSubFunction("친구 삭제", BreakFriend);

    }

    private void GetFriendList() {
        requestUI.AddInputField("불러올 갯수", 10);
        requestUI.AddInputField("시작 지점", 0);

        requestUI.SetExecuteButtonAction( () => {
            var limit = InputParseByInt(0, 0);
            var offset = InputParseByInt(1, 0);

            var bro = Backend.Friend.GetFriendList(limit, offset);
            ShowResultData(bro);
        }); 
    }
    
    private void RequestFriend() {
        requestUI.AddInputField("유저 inDate");

        requestUI.SetExecuteButtonAction( () => {

            var gamerInDate = InputParseByString(0, 0);

            var bro = Backend.Friend.RequestFriend(gamerInDate);
            ShowResultData(bro);
        }); 
    }
    
    private void GetSentRequestList() {
        requestUI.AddInputField("불러올 갯수", 10);
        requestUI.AddInputField("시작 지점", 0);

        requestUI.SetExecuteButtonAction( () => {
            var limit = InputParseByInt(0, 0);
            var offset = InputParseByInt(1, 0);

            var bro = Backend.Friend.GetSentRequestList(limit, offset);
            ShowResultData(bro);
        }); 
    }
    
    private void GetReceivedRequestList() {
        requestUI.AddInputField("불러올 갯수", 10);
        requestUI.AddInputField("시작 지점", 0);

        requestUI.SetExecuteButtonAction( () => {
            var limit = InputParseByInt(0, 0);
            var offset = InputParseByInt(1, 0);

            var bro = Backend.Friend.GetReceivedRequestList(limit, offset);
            ShowResultData(bro);
        }); 
    }
    
    private void RevokeSentRequest() {
        requestUI.AddInputField("유저 inDate");

        requestUI.SetExecuteButtonAction( () => {

            var gamerInDate = InputParseByString(0, 0);

            var bro = Backend.Friend.RevokeSentRequest(gamerInDate);
            ShowResultData(bro);
        }); 
    }
    
    private void AcceptFriend() {
        requestUI.AddInputField("유저 inDate");

        requestUI.SetExecuteButtonAction( () => {

            var gamerInDate = InputParseByString(0, 0);

            var bro = Backend.Friend.AcceptFriend(gamerInDate);
            ShowResultData(bro);
        }); 
    }
    
    private void RejectFriend() {
        requestUI.AddInputField("유저 inDate");

        requestUI.SetExecuteButtonAction( () => {

            var gamerInDate = InputParseByString(0, 0);

            var bro = Backend.Friend.RejectFriend(gamerInDate);
            ShowResultData(bro);
        }); 
    }
    
    private void BreakFriend() {
        requestUI.AddInputField("유저 inDate");

        requestUI.SetExecuteButtonAction( () => {

            var gamerInDate = InputParseByString(0, 0);

            var bro = Backend.Friend.BreakFriend(gamerInDate);
            ShowResultData(bro);
        }); 
    }
}