package events

import (
	"context"
	"dataapps/commons/config"
	"dataapps/commons/eventbus"
	service "dataapps/internal/service/sqleditor"
	"github.com/tidbcloud/tiinf/monitor/tilog"
	"go.uber.org/zap"
)

// @Time    : 2023/1/17 4:40 PM
// @Author  : lvhongmeng

func RegisterUserSettingsEventHandler(ctx context.Context) error {
	eventHandlerFunc := func(event *eventbus.Event) error {
		return updateUserSettingsEvent(ctx, event)
	}

	err := eventbus.Get().RegisterEventHandleFunc(config.EventTypeRegister, config.Group, RegisterUserSettingEvent{}, eventHandlerFunc)
	if err != nil {
		tilog.Error(ctx, "ERROR:RegisterUserSettingsEventHandler failed!", zap.Error(err))
		return err
	}
	tilog.Info(ctx, "RegisterUserSettingsEventHandler success")
	return nil
}

func updateUserSettingsEvent(ctx context.Context, event *eventbus.Event) error {
	data := event.EventData.(*RegisterUserSettingEvent)
	tilog.Info(ctx, "UpdateUserSettingsEvent ", zap.Any("eventData", data), zap.Any("user", data.Email))

	if data.Channel == true && data.Email != "" {
		userSettings := map[string]interface{}{"chat2query_init": true, "is_privacy_allowed": true, "created_by": data.Email}
		tilog.Info(ctx, "UpdateUserSettingsEvent-update user settings", zap.Any("payload", userSettings), zap.Any("user", data.Email))
		err := service.UpdateUserInfo(userSettings)
		if err != nil {
			tilog.Error(ctx, "ERROR:updateUserSettingsEvent update failed!", zap.Any("user", data.Email))
			return err
		}
	}
	return nil
}
