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

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

public class UPostGroup : BaseGroup {
    public override string GetGroupName() {
        return "우편 기능";
    }

    public override void SetSubFunctionButton() {
        UIManager.Instance.AddSubFunction("우편 목록 조회", GetPostList);
        UIManager.Instance.AddSubFunction("우편 개별 수령", ReceivePostItem);
        UIManager.Instance.AddSubFunction("우편 모두 수령", ReceivePostItemAll);
        UIManager.Instance.AddSubFunction("유저 우편 발송", SendUserPost);
        UIManager.Instance.AddSubFunction("유저 우편 삭제", DeleteUserPost);
    }

    private void GetPostList() {
        requestUI.AddInputField("PostType\n(Admin,Rank,User,Coupon)", "Admin");
        requestUI.AddInputField("불러올 갯수", 10);

        requestUI.SetExecuteButtonAction( () => {
            var postType = InputParseByEnum<PostType>(0, 0);
            var limit = InputParseByInt(1, 0);


            var bro = Backend.UPost.GetPostList(postType, limit);
            ShowResultData(bro);
        }); 
    }
    
    private void ReceivePostItem() {
        requestUI.AddInputField("PostType\n(Admin,Rank,User,Coupon)", "Admin");
        requestUI.AddInputField("우편 inDate");

        requestUI.SetExecuteButtonAction( () => {
            var postType = InputParseByEnum<PostType>(0, 0);
            var postInDate = InputParseByString(1, 0);

            var bro = Backend.UPost.ReceivePostItem((PostType)postType, postInDate);
            ShowResultData(bro);
        }); 
    }
    
    private void ReceivePostItemAll() {
        requestUI.AddInputField("PostType\n(Admin,Rank,User,Coupon)", "Admin");

        requestUI.SetExecuteButtonAction( () => {
            var postType = InputParseByEnum<PostType>(0, 0);

            var bro = Backend.UPost.ReceivePostItemAll((PostType)postType);
            ShowResultData(bro);
        }); 
    }

    private void SendUserPost() {
        requestUI.AddInputField("대상 유저 inDate");
        requestUI.AddInputField("제목");
        requestUI.AddInputField("내용");
        requestUI.AddInputField(new string[]{"테이블 명", "컬럼 명"});
        requestUI.AddInputField("데이터 inDate");


        requestUI.SetExecuteButtonAction( () => {
            var gamerInDate = InputParseByString(0, 0);
            var title = InputParseByString(1, 0);
            var content = InputParseByString(2, 0);
            var tableName = InputParseByString(3, 0);
            var columnName = InputParseByString(3, 1);
            var rowInDate = InputParseByString(4, 0);


            PostItem postItem = new PostItem {
                Title = title,
                Content = content,
                TableName = tableName,
                RowInDate = rowInDate,
                Column = columnName
            };

            var bro = Backend.UPost.SendUserPost(gamerInDate, postItem);
            ShowResultData(bro);
        });
    }
    
    private void DeleteUserPost() {
        requestUI.AddInputField("우편 inDate");

        requestUI.SetExecuteButtonAction( () => {

            var postInDate = InputParseByString(0, 0);

            var bro = Backend.UPost.DeleteUserPost(postInDate);
            ShowResultData(bro);
        }); 
    }
}