package com.mortals.xhx.module.bussinesscard.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.util.DataUtil;
import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.module.company.model.CompanyEntity;
import com.mortals.xhx.module.company.service.CompanyService;
import com.mortals.xhx.module.position.model.PositionEntity;
import com.mortals.xhx.module.position.service.PositionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.bussinesscard.dao.BussinesscardDao;
import com.mortals.xhx.module.bussinesscard.model.BussinesscardEntity;
import com.mortals.xhx.module.bussinesscard.service.BussinesscardService;
import lombok.extern.slf4j.Slf4j;
/**
* BussinesscardService
* 名片基本信息 service实现
*
* @author zxfei
* @date 2023-10-10
*/
@Service("bussinesscardService")
@Slf4j
public class BussinesscardServiceImpl extends AbstractCRUDServiceImpl<BussinesscardDao, BussinesscardEntity, Long> implements BussinesscardService {

    @Autowired
    private CompanyService companyService;
    @Autowired
    private PositionService positionService;

    @Override
    protected void saveBefore(BussinesscardEntity entity, Context context) throws AppException {
        super.saveBefore(entity, context);
        checkBussinesscard(entity, context);
    }

    @Override
    protected void updateBefore(BussinesscardEntity entity, Context context) throws AppException {
        super.saveBefore(entity, context);
        checkBussinesscard(entity, context);
    }

    private void checkBussinesscard(BussinesscardEntity entity, Context context)throws AppException {
        if(entity.getCompanyId()!=null){
            CompanyEntity companyEntity = companyService.get(entity.getCompanyId());
            if(companyEntity!=null){
                entity.setCompanyAdress(companyEntity.getBusinessAdress());
                entity.setCompanyName(companyEntity.getCompanyName());
            }
        }
        if(StringUtils.isEmpty(entity.getSetting())){
            JSONObject setting = new JSONObject();
            setting.put("photoPath",true);
            setting.put("companyName",true);
            setting.put("positionName",true);
            setting.put("phoneNumber",true);
            setting.put("email",true);
            setting.put("companyAdress",true);
            setting.put("companyIntro",true);
            setting.put("companyProduct",true);
            entity.setSetting(setting.toJSONString());
        }
        if(entity.getPositionId()!=null){
            PositionEntity positionEntity = positionService.get(entity.getPositionId());
            if(positionEntity!=null){
                entity.setPositionName(positionEntity.getPositionName());
            }
        }
    }

}