package org

import (
	"context"

	"github.com/tidbcloud/account/thirdparty/account"
	"github.com/tidbcloud/tiinf/monitor/tilog"
	"go.uber.org/zap"

	usersvc "github.com/tidbcloud/account/internel/svc/user"

	"github.com/tidbcloud/account/central/utils"

	accountpb "github.com/tidbcloud/account/idl/pbgen/proto/account"
	"github.com/tidbcloud/account/idl/pbgen/proto/central"
)

func (s *OrgController) GetExpWhiteList(ctx context.Context, req *central.GetExpWhiteListReq) (*central.GetExpWhiteListResp, error) {
	bm := utils.Begin(ctx, "GetExpWhiteList")
	defer bm.OnExit(ctx)
	user, err := usersvc.GetUserFromContext(ctx)
	if err != nil {
		return nil, err
	}

	accountReq := &accountpb.ListHitFeatureFlagNamesReq{
		OrgId: req.OrgId,
		Email: user.Email,
	}
	tilog.Info(ctx, "GetExpWhiteList ListHitFeatureFlagNames request", zap.Any("req", accountReq))
	accountRsp, err := account.GetHandler().ListHitFeatureFlagNames(ctx, accountReq)
	tilog.Info(ctx, "GetExpWhiteList ListHitFeatureFlagNames response", zap.Any("rsp", accountRsp), zap.Any("err", err))
	if err != nil {
		return nil, err
	}

	return &central.GetExpWhiteListResp{
		ExpNames: accountRsp.FlagNames,
	}, nil
}
