package com.zhujizheng.IHome.daymatter.service;

import com.github.binarywang.java.emoji.EmojiConverter;
import com.zhujizheng.IHome.daymatter.dto.PYDayMatterPushDTO;
import com.zhujizheng.IHome.daymatter.dto.PYDayMatterUpdateDTO;
import com.zhujizheng.IHome.daymatter.vo.PYDayMatterVO;
import com.zhujizheng.IHome.generator.dao.PYDayMatter;
import com.zhujizheng.IHome.generator.mapper.PYDayMatterMapper;
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;
import java.util.concurrent.atomic.AtomicReference;

/**
 * Created with IntelliJ IDEA
 * <p>
 * Author: yons
 * Date: 2019/06/04
 * Time: 22:38
 * Description:
 * Copyright © 2019年 com.zhujizheng. All rights reserved.
 */
@Service
@Transactional(rollbackFor = RuntimeException.class)
public class PYDayMatterServiceImpl implements PYDayMatterService {

    @Autowired
    private PYDayMatterMapper dayMatterMapper;

    @Override
    public PYDayMatterVO pushDayMatterWithDTO(PYDayMatterPushDTO pushDTO) {
        System.out.println("pushDTO = " + pushDTO);
        if (pushDTO == null) {
            return null;
        }
        PYDayMatter dayMatter = PYDayMatter.createDayMatterWithDTO(pushDTO);
        int result = dayMatterMapper.insertDayMatter(dayMatter);
        if (result == 0) {
            System.out.println("插入生日信息失败");
            return null;
        }
        PYDayMatterVO dayMatterVO = PYDayMatterVO.createVOWithDayMatter(dayMatter);
        return dayMatterVO;
    }

    @Override
    public List<PYDayMatterVO> pullDayMatterVOByUserId(int userId) {
        System.out.println("userId = " + userId);
        List<PYDayMatter> dayMatterList = dayMatterMapper.selectDayMattersByUserId(userId);
        List<PYDayMatterVO> voList = new ArrayList<>();
        for (PYDayMatter dayMatter : dayMatterList) {
            PYDayMatterVO vo = PYDayMatterVO.createVOWithDayMatter(dayMatter);
            voList.add(vo);
        }
        System.out.println("voList = " + voList);
        return voList;
    }

    @Override
    public PYDayMatterVO updateDayMatterWithDTO(PYDayMatterUpdateDTO updateDTO) {
        System.out.println("updateDTO = " + updateDTO);
        if (updateDTO == null) {
            return null;
        }
        AtomicReference<String> nameAlias = new AtomicReference<>("");
        if (updateDTO.getName() != null) {
            nameAlias.set(EmojiConverter.getInstance().toAlias(updateDTO.getName()));
        }
        AtomicReference<String> remarkAlias = new AtomicReference<>("");
        if (updateDTO.getRemark() != null) {
            remarkAlias.set(EmojiConverter.getInstance().toAlias(updateDTO.getRemark()));
        }

        int result = dayMatterMapper.updateDayMatter(updateDTO.getDayMatterId(), updateDTO.getIconUrl(), updateDTO.getOrientation(), nameAlias.get(), remarkAlias.get(), updateDTO.getBirthday(), updateDTO.getType(), updateDTO.getNeedAlert());
        if (result == 0) {
            System.out.println("修改生日信息失败");
            return null;
        } else {
            PYDayMatter dayMatter = dayMatterMapper.selectDayMatterById(updateDTO.getDayMatterId());
            PYDayMatterVO vo = PYDayMatterVO.createVOWithDayMatter(dayMatter);
            return vo;
        }
    }

    @Override
    public int deleteDayMatterById(int dayMatterId) {
        int result = dayMatterMapper.deleteDayMatterById(dayMatterId);
        if (result == 0) {
            System.out.println("删除生日信息失败");
        }
        return result;
    }
}