package com.zhujizheng.IHome.applyfriend.service;

import com.zhujizheng.IHome.applyfriend.dto.PYApplyFriendDTO;
import com.zhujizheng.IHome.applyfriend.vo.PYApplyFriendVO;
import com.zhujizheng.IHome.generator.dao.PYApplyFriend;
import com.zhujizheng.IHome.generator.mapper.PYApplyFriendMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

@Slf4j
@Service
@Transactional(rollbackFor = RuntimeException.class)
public class PYApplyFriendServiceImpl implements PYApplyFriendService {

    @Autowired
    PYApplyFriendMapper applyFriendMapper;

    @Override
    public PYApplyFriendVO applyFriend(PYApplyFriendDTO dto) {
        PYApplyFriend applyFriend = PYApplyFriend.createApplyFriend(dto);
        if (applyFriend == null) {
            return null;
        }
        int result = applyFriendMapper.insertApplyFriend(applyFriend);
        if (result == 0) {
            return null;
        }
        return PYApplyFriendVO.createVO(applyFriend);
    }

    @Override
    public PYApplyFriendVO replyApplyFriend(int applyId) {
        int result = applyFriendMapper.updateApplyFriendStatus(applyId, 2, System.currentTimeMillis());
        if (result == 0) {
            return null;
        }
        PYApplyFriend applyFriend = applyFriendMapper.selectApplyFriend(applyId);
        return PYApplyFriendVO.createVO(applyFriend);
    }

    @Override
    public List<PYApplyFriendVO> getApplyInfo(int userId, long time) {
        List<PYApplyFriend> applyFriends = applyFriendMapper.selectAllAfterTime(userId, time);
        log.info("applyFriendService getApplyInfo: " + applyFriends);
        if (applyFriends != null) {
            List<PYApplyFriendVO> vos = new ArrayList<>();
            for (PYApplyFriend applyFriend : applyFriends) {
                PYApplyFriendVO vo = PYApplyFriendVO.createVO(applyFriend);
                vos.add(vo);
            }
            return vos;
        }
        return null;
    }
}