package com.miaxis.system.controller.common;

import com.miaxis.common.config.MiaxisConfig;
import com.miaxis.common.constant.Constants;
import com.miaxis.common.core.domain.Response;
import com.miaxis.common.enums.FileUploadTypeEnum;
import com.miaxis.common.exception.CustomException;
import com.miaxis.common.utils.EnumUtils;
import com.miaxis.common.utils.StringUtils;
import com.miaxis.common.utils.file.FileUtils;
import com.qcloud.cos.COSClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 通用请求处理
 *
 * @author miaxis
 */
@RestController
@Api(tags={"【系统-通用请求处理】"})
public class CommonController
{
    private static final Logger log = LoggerFactory.getLogger(CommonController.class);



    /**
     * 本地资源通用下载
     */
    @GetMapping("/common/download/resource")
    public void resourceDownload(
            @ApiParam(name = "name", value = "文件名称")
            @RequestParam(name = "name", required = true) String name,
            HttpServletRequest request,
            HttpServletResponse response) throws Exception
    {
        // 本地资源路径
        String localPath = MiaxisConfig.getProfile();
        // 数据库资源地址
        String downloadPath = localPath + StringUtils.substringAfter(name, Constants.RESOURCE_PREFIX);
        // 下载名称
        String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
        response.setCharacterEncoding("utf-8");
        response.setContentType("multipart/form-data");
        response.setHeader("Content-Disposition",
                "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, downloadName));
        FileUtils.writeBytes(downloadPath, response.getOutputStream());
    }


    private Boolean validateFileSuffix(String originalFilenamefile, FileUploadTypeEnum fileUploadTypeEnum) {
        if (fileUploadTypeEnum == null){
            throw new CustomException("fileType参数不合法");
        }
        if (StringUtils.isEmpty(originalFilenamefile)){
            throw new CustomException("文件名不合法");
        }
        String[] allowSuffixs = fileUploadTypeEnum.getSuffix();
        for(String suffix : allowSuffixs){
            String fileSuffix = "."+suffix;
            if (originalFilenamefile.equals(fileSuffix)){
                return true;
            }
        }
        return false;

    }

    private FileUploadTypeEnum getPathByType(Integer fileType) {
        if (fileType == null){
            throw new CustomException("文件类型不能为空");
        }
        return (FileUploadTypeEnum) EnumUtils.getEnumEntityByCode(FileUploadTypeEnum.class, fileType);

    }

}
