package feishuapi

import "fmt"

type BaseResult struct {
	Code int    `json:"code"`
	Msg  string `json:"msg"`
}

func (ret *BaseResult) BizError() error {
	if ret.Code == 0 {
		return nil
	}
	return fmt.Errorf("got biz error, code: %d, msg: %s", ret.Code, ret.Msg)
}

type FetchTenantAccessTokenParam struct {
	AppID     string `json:"app_id"`
	AppSecret string `json:"app_secret"`
}

type FetchTenantAccessTokenData struct {
	*BaseResult
	TenantAccessToken string `json:"tenant_access_token"`
	Expire            int    `json:"expire"`
}

type BatchGetUserIDParam struct {
	Emails []string `json:"emails"`
}

type BatchGetUserIDData struct {
	UserList []struct {
		UserID string `json:"user_id"`
		Email  string `json:"email,omitempty"`
		Mobile string `json:"mobile,omitempty"`
	} `json:"user_list"`
}

type BatchGetUserIDResult struct {
	*BaseResult
	Data *BatchGetUserIDData `json:"data"`
}

type UserStatus struct {
	IsFrozen    bool `json:"is_frozen"`
	IsResigned  bool `json:"is_resigned"`
	IsActivated bool `json:"is_activated"`
	IsExited    bool `json:"is_exited"`
	IsUnjoin    bool `json:"is_unjoin"`
}

type UserInfo struct {
	Status UserStatus `json:"status"`
}

type GetUserInfoData struct {
	User UserInfo `json:"user"`
}

type GetUserInfoResult struct {
	*BaseResult
	Data *GetUserInfoData `json:"data"`
}

func (data *GetUserInfoData) IsResigned() bool {
	return data.User.Status.IsResigned
}
