package com.scaffolding.sophia.admin.biz.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.scaffolding.sophia.admin.api.entity.dto.CompanySearchDto;
import com.scaffolding.sophia.admin.api.entity.dto.DeptDto;
import com.scaffolding.sophia.admin.api.entity.vo.DeptVo;
import com.scaffolding.sophia.admin.biz.service.DeptService;
import com.scaffolding.sophia.common.base.support.ApiResponse;
import com.scaffolding.sophia.common.base.support.BaseController;
import com.scaffolding.sophia.common.log.annotation.SysLog;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author: LHL
 * @ProjectName: sophia_scaffolding
 * @Package: com.scaffolding.sophia.admin.biz.controller
 * @ClassName: CompanyController
 * @Date: 2019/11/22 13:50
 * @Description:
 * @Version: 1.0
 */
@RestController
@RequestMapping("/company")
@Api(tags = "公司管理")
public class CompanyController extends BaseController {

    @Autowired
    private DeptService deptService;


    @GetMapping("/web")
    @ApiOperation("查询公司列表")
    public ApiResponse companyList(@ModelAttribute CompanySearchDto params) {
        // Map<String, Object> params = getParams();
        return success(deptService.queryCompanyList(params));
    }
    
    @GetMapping("/web/select/list")
    @ApiOperation(value = "查询公司下拉框-后端管理公司管理", notes = "查询公司管理-后端管理公司管理")
    public ApiResponse getCompanySelectList(){
        return success(deptService.queryCompanySelectList());
    }
    
    @GetMapping(value = "/web/info/{id}")
    @ApiOperation(value = "获取公司")
    public ApiResponse getCompany(@ApiParam(value = "公司id",required = true)@PathVariable String id){
        if(StringUtils.isBlank(id)){
            return fail("id不能为空");
        }
        DeptVo deptVo = deptService.queryDeptById(id);
        if (null == deptVo){
            return fail("未查找到该公司");
        }else{
            return success(deptVo);
        }
    }


    @SysLog("新增公司")
    @PostMapping("/web/add")
    @ApiOperation("新增公司")
    public ApiResponse addCompany(@RequestBody DeptDto deptDto){
        if (deptService.addOrUpdateCompany(deptDto)){
            return success("保存成功");
        }else {
            return fail("保存失败");
        }
    }

    @SysLog("修改公司")
    @PutMapping("/web/update")
    @ApiOperation("修改公司")
    public ApiResponse updateCompany(@RequestBody DeptDto deptDto){
        if (deptService.addOrUpdateCompany(deptDto)){
            return success("修改成功");
        }else {
            return fail("修改失败");
        }
    }

    @SysLog("删除公司")
    @DeleteMapping("/web/del/{id}")
    @ApiOperation("删除公司")
    public ApiResponse deleteCompany(@PathVariable String id){
        if (deptService.deleteDept(id)){
            return success("删除成功");
        }else {
            return fail("删除失败");
        }
    }


    @SysLog("批量删除公司")
    @DeleteMapping("/web/batchDel")
    @ApiOperation("批量删除公司")
    public ApiResponse deleteBatchCompany(@RequestBody String ids){
        if (StringUtils.isBlank(ids)) {
            return fail("参数不能为空");
        }
        List<String> idList = JSON.parseArray(((JSONArray) JSON.parseObject(ids).get("ids")).toJSONString(), String.class);

        if (deptService.deleteBatchDept(idList)){
            return success("批量删除成功");
        }else {
            return fail("批量删除失败");
        }
    }


}