/*
 * Author: wangjian
 * 生成controller
 */
package com.tofly.base.controller;

import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.tofly.base.entity.Projectinfo;
import com.tofly.base.service.ProjectinfoService;
import com.tofly.common.core.constant.CommonConstants;
import com.tofly.common.core.entity.ResultRespone;
import com.tofly.common.core.util.FtpUtil;
import com.tofly.common.core.util.StringUtil;
import com.tofly.common.log.annotation.ToFlyAppLog;
import com.tofly.common.oauth.util.SecurityUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 项目基本信息表
 *
 * @author wangjian
 * @date Tue Mar 24 00:00:00 CST 2020
 */
@RestController
@RequestMapping("/projectinfo")
@Api(tags="项目基本信息表接口")
public class ProjectinfoController {

    @Value("${user.logo}")
    private String logoPath;

    @Autowired
    private   ProjectinfoService projectinfoService;

    /**
    * 分页查询
    * @param page 分页对象
    * @param projectinfo 项目基本信息表
    * @return
    */
//    @GetMapping("/page" )
//    @ApiOperation(value = "分页查询")
//    public ResultRespone getProjectinfoPage(Page page, @ModelAttribute Projectinfo projectinfo) {
//      return ResultRespone.success(projectinfoService.page(page, Wrappers.query(projectinfo)));
//    }


    /**
     * 通过id查询项目基本信息表
     * @param id id
     * @return ResultRespone
     */
//    @GetMapping("/{id}" )
//    @ApiOperation(value = "通过ID查询")
//    @ApiImplicitParams({
//            @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "Long")
//    })
//    public ResultRespone getById(@PathVariable("id" ) Long id) {
//      return ResultRespone.success(projectinfoService.getById(id));
//    }


    /**
     * 查询项目基本信息表
     * @return ResultRespone
     */
    @GetMapping("/get" )
    @ApiOperation(value = "查询基本信息")
    public ResultRespone get() {
        return ResultRespone.success(projectinfoService.getOne(Wrappers.query()));
    }

    /**
     * 新增项目基本信息表
     * @param projectinfo 项目基本信息表
     * @return ResultRespone
     */
    @ToFlyAppLog(title="新增项目基本信息表" )
    @ApiOperation(value = "新增项目基本信息表")
    @PostMapping
    public ResultRespone save(MultipartFile file, Projectinfo projectinfo) {

        List<Projectinfo> list =  projectinfoService.list();
        if(list.size()>0){
            return ResultRespone.failed("项目的基本信息已存在，不能新增，只能修改");
        }
//        if(checkAuth()){
//            return ResultRespone.failed("必须是超级管理员才能操作");
//        }

        if(file!=null){
            String filename = logoPath+ IdWorker.getIdStr()+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
            boolean b= FtpUtil.uploadFile2Ftp(file,filename);
            if(b){
                projectinfo.setProjectLogo(filename);
            }else{
                return ResultRespone.failed("上传到FTP失败");
            }
        }
      return ResultRespone.success(projectinfoService.save(projectinfo));
    }

    /**
     * 修改项目基本信息表
     * @param projectinfo 项目基本信息表
     * @return ResultRespone
     */
    @ToFlyAppLog(title="修改项目基本信息表" )
    @ApiOperation(value = "修改项目基本信息表")
    @PutMapping
    public ResultRespone updateById(MultipartFile file, Projectinfo projectinfo) {
//        if(checkAuth()){
//            return ResultRespone.failed("必须是超级管理员才能操作");
//        }

        if(file!=null){
            String filename = logoPath+ IdWorker.getIdStr()+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
            boolean b= FtpUtil.uploadFile2Ftp(file,filename);
            if(b){
                //查找以前的FTP并删除
                Projectinfo oldprojectinfo=projectinfoService.getOne(Wrappers.query());
                //如果logo不为空，需要清空以前的logo
                if(!StringUtil.isEmpty(oldprojectinfo.getProjectLogo())){
                    FtpUtil.deleteFile(oldprojectinfo.getProjectLogo());
                }
                projectinfo.setProjectLogo(filename);
            }else{
                return ResultRespone.failed("上传到FTP失败");
            }
        }
      return ResultRespone.success(projectinfoService.updateById(projectinfo));
    }

    private boolean checkAuth(){
        return !CommonConstants.SUPER_ADMIN_ULEVEL.equals(SecurityUtils.getUser().getUserLevel());
    }

    /**
     * 通过id删除项目基本信息表
     * @param id id
     * @return ResultRespone
     */
//    @ToFlyAppLog(title="通过id删除项目基本信息表" )
//    @ApiOperation(value = "通过ID删除项目基本信息表")
//    @ApiImplicitParams({
//            @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "Long")
//    })
//    @DeleteMapping("/{id}" )
//    public ResultRespone removeById(@PathVariable Long id) {
//      return ResultRespone.success(projectinfoService.removeById(id));
//    }
}
