package com.hmit.kernes.controller;

import com.hmit.kernes.entity.CloudBaseInfoEntity;
import com.hmit.kernes.entity.CloudHonorInfoEntity;
import com.hmit.kernes.service.CloudBaseInfoService;
import com.hmit.kernes.service.CloudHonorInfoService;
import com.hmit.kernes.utils.PageUtils;
import com.hmit.kernes.utils.Query;
import com.hmit.kernes.utils.R;
import com.hmit.kernes.utils.RRException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/cloud/honorinfo")
public class CloudHonorInfoController extends  AbstractController {
    @Autowired
    private CloudHonorInfoService cloudHonorInfoService;
    @Autowired
    private CloudBaseInfoService cloudBaseInfoService;


    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,String type){
        if("user".equals(type)){
            Long id=getUser().getUnionId();
            if(id==null)
                throw  new RRException("暂时查询不到相关记录,请稍后再试,或联系管理员");

            params.put("unionId",id.toString());
        }
        Query query = new Query(params);
        List<CloudHonorInfoEntity> list= cloudHonorInfoService.queryList(query);
        int total=cloudHonorInfoService.queryTotal(query);
        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
        return R.ok().put("page", pageUtil);
    }

    @RequestMapping("/info/{id}")
    //@RequiresPermissions("sys:recommend:info")
    public R info(@PathVariable("") Long id){
       CloudHonorInfoEntity cloudHonorInfoEntity=cloudHonorInfoService.queryObject(id);

        return R.ok().put("honorinfo",cloudHonorInfoEntity);

    }

    @RequestMapping("/save")
    public R save(@RequestBody CloudHonorInfoEntity cloudHonorInfoEntity){
        //数据校验
        cloudHonorInfoEntity.setMakerId(getUserId());
        cloudHonorInfoEntity.setUpdateTime(new Date());
        cloudHonorInfoEntity.setMakerName(getUser().getRealName());
        cloudHonorInfoService.save(cloudHonorInfoEntity);
        return R.ok();
    }

    @RequestMapping("/user/save")
    public R userSave(@RequestBody CloudHonorInfoEntity cloudHonorInfoEntity){
        //数据校验
        cloudHonorInfoEntity=verifyForm(cloudHonorInfoEntity);
        cloudHonorInfoService.save(cloudHonorInfoEntity);
        return R.ok();
    }

    @RequestMapping("/delete")
    //@RequiresPermissions("zhgh:reception:delete")
    public R delete(@RequestBody Long[] ids){

        cloudHonorInfoService.deleteBatch(ids);


        return R.ok();
    }
    @RequestMapping("/update")
    public R update(@RequestBody CloudHonorInfoEntity cloudHonorInfoEntity){

        cloudHonorInfoEntity.setMakerId(getUserId());
        cloudHonorInfoEntity.setUpdateTime(new Date());
        cloudHonorInfoEntity.setMakerName(getUser().getRealName());

        cloudHonorInfoService.update(cloudHonorInfoEntity);

        return R.ok();
    }

    @RequestMapping("/user/update")
    public R userUpdate(@RequestBody CloudHonorInfoEntity cloudHonorInfoEntity){
        //数据校验
        cloudHonorInfoEntity= verifyForm(cloudHonorInfoEntity);

        cloudHonorInfoService.update(cloudHonorInfoEntity);

        return R.ok();
    }
    private CloudHonorInfoEntity  verifyForm( CloudHonorInfoEntity c){
        if(getUserId()!=null){
            CloudBaseInfoEntity cbie=cloudBaseInfoService.queryObject(getUser().getUnionId());
            if(cbie==null){
                throw new RRException("请先填写基本信息!");
            }else{
                c.setUnionId(cbie.getId());
                c.setUnionName(cbie.getLocalUnionName());
            }

        }else{
            throw new RRException("no user id!");
        }
        c.setMakerId(getUserId());
        c.setUpdateTime(new Date());
        c.setMakerName(getUser().getRealName());
        return  c;
    }


}