package cn.timer.api.controller.zpgl;

import cn.timer.api.bean.clazz.SysRegion;
import cn.timer.api.bean.zpgl.ZpglGzdd;
import cn.timer.api.bean.zpgl.ZpglZj;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.controller.zpgl.sevice.ZpglService;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.transaction.Transactional;
import java.util.List;

/**
 * 招聘管理
 *
 * @author wuqingjun
 * @email 284718418@qq.com
 * @date 2022-03-18 15:14:40
 */
@Api(tags = "招聘管理")
@Transactional(rollbackOn = Exception.class)
@RestController
@RequestMapping(value = "/zpgl", produces = {"application/json"})
public class ZpglGzddController {

    @Autowired
    private ZpglService zpglService;

    /**
     * 招聘-工作地点
     *
     * @param
     * @return
     */
    @GetMapping(value = "/gzdd")
    @ApiOperation(value = "1.工作地点字典", httpMethod = "GET", notes = "工作地点字典")
    @ApiOperationSupport(order = 1)
    public Result<Object> fail(@CurrentUser UserBean userBean) {
        try {
            QueryWrapper<ZpglGzdd> queryWrapper = new QueryWrapper<>();
            queryWrapper.lambda().eq(ZpglGzdd::getDeleteFlag, 0).eq(ZpglGzdd::getOrgCode, userBean.getOrgCode());
            List<ZpglGzdd> zpglGzdd = ZpglGzdd.builder().build().selectList(queryWrapper);
            zpglGzdd.forEach(zg -> {
                zg.setGzddName(zg.getProvince()+"/"+zg.getCity()+"/"+zg.getDistrict()+"/"+zg.getGzddName());
            });
            return ResultUtil.data(zpglGzdd, "查询成功");
        } catch (Exception e) {
            e.printStackTrace();
            throw new CustomException("招聘-工作地点失败");
        }
    }

    /**
     * 招聘-添加职级
     *
     * @param
     * @return
     */
    @PostMapping(value = "/gzdd/save")
    @ApiOperation(value = "2.招聘-添加工作地点", httpMethod = "POST", notes = "招聘-添加工作地点")
    @ApiOperationSupport(order = 2)
    public Result<Object> save(@CurrentUser UserBean userBean, @RequestBody ZpglGzdd zpglGzdd) {
        try {
            if(StringUtils.isEmpty(zpglGzdd.getDistrictId()) || zpglGzdd.getDistrictId().length() <= 0){
                return ResultUtil.error();
            }
            SysRegion district = zpglService.getSysRegion(Integer.parseInt(zpglGzdd.getDistrictId()));
            if (district != null) {
                zpglGzdd.setDistrict(district.getRegionName());
                SysRegion city = zpglService.getSysRegion(district.getRegionCode());
                zpglGzdd.setCity(city.getRegionName());
                zpglGzdd.setCityId(city.getKeyId().toString());
                SysRegion province = zpglService.getSysRegion(city.getRegionCode());
                zpglGzdd.setProvinceId(province.getKeyId().toString());
                zpglGzdd.setProvince(province.getRegionName());
            }
            zpglGzdd.setCreateUserId(userBean.getEmpNum());
            zpglGzdd.setUpdateUserId(userBean.getEmpNum());
            zpglGzdd.setOrgCode(userBean.getOrgCode());
            return zpglGzdd.insert() ? ResultUtil.success() : ResultUtil.error();
        } catch (Exception e) {
            e.printStackTrace();
            throw new CustomException("招聘-添加职级失败");
        }
    }
}