package org.jebot.handler.impl;

import lombok.extern.slf4j.Slf4j;
import org.jebot.handler.AbstractHandler;
import org.jebot.handler.dto.BotMessage;
import org.jebot.models.jebot.BotGroup;

import java.util.List;

@Slf4j
public class AuthHandler extends AbstractHandler {
    @Override
    public boolean msgHandler(BotMessage botMessage) {

        //查询用户是否在白名单中
        botMessage.setBotUser(handlerManager.getUserRepository().findByUserName(botMessage.getMessage().from().username()));

        //判断是否来自群组消息
        if (botMessage.isGroupMessage()) {
            //查询当前群组是否已绑定
            List<BotGroup> byGroupId = handlerManager.getGroupRepository().findByGroupId((botMessage.getMessage().chat().id()));
            if (byGroupId!=null && !byGroupId.isEmpty()) {
                botMessage.setBotGroup(byGroupId.get(0));
            }
        }

        //如果用户和群组都不在白名单中，返回true
        if (!botMessage.isUserAuthenticated() && !botMessage.isGroupAuthenticated()) {
            log.warn("用户id {},用户名:{} 不在白名单中，无法处理消息", botMessage.getMessage().from().id(), botMessage.getMessage().from().username());
            return true;
        }

        //如果用户未设置用户id，更新用户id
        if (botMessage.isUserAuthenticated() && botMessage.getBotUser().getUserId() == null) {
            handlerManager.getUserRepository().updateUserIdByUserName(botMessage.getMessage().from().id(), botMessage.getMessage().from().username());
        }
        return false;
    }
}
