using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Repository.BackendRepository.Interface;
using Repository.FrontendRepository.Interface;
using System;
using System.IO;

namespace FrontendWebApi.ApiControllers
{
    public class FileController : MyBaseApiController<GraphManageController>
    {
        private readonly IBackendRepository backendRepository;
        private readonly IFrontendRepository frontendRepository;

        private string graphManageFileSaveAsPath = "";
        private string operationFileSaveAsPath = "";
        

        public FileController(IBackendRepository backendRepository, IFrontendRepository frontendRepository)
        {
            this.backendRepository = backendRepository;
            this.frontendRepository = frontendRepository;
            graphManageFileSaveAsPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "upload", "graph_manage");
            operationFileSaveAsPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "upload", "operation");
        }
        public bool Download([FromQuery]string type , string savename, string oriname)
        {
            var path = "";
            if (type == "graph")
            {
                path = Path.Combine(graphManageFileSaveAsPath, savename);
            }
            else if (type == "operation") 
            {
                path = Path.Combine(operationFileSaveAsPath, savename);
            }

            if (System.IO.File.Exists(path) && path != "")
            {
                try
                {
                    FileInfo xpath_file = new FileInfo(path);  //要 using System.IO;

                    // 將傳入的檔名以 FileInfo 來進行解析(只以字串無法做)
                    HttpContext.Response.Clear(); //清除buffer
                    HttpContext.Response.ContentType = "application/octet-stream";
                    // 檔案類型還有下列幾種"application/pdf"、"application/vnd.ms-excel"、"text/xml"、"text/HTML"、"image/JPEG"、"image/GIF"
                    HttpContext.Response.Headers.Add("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(oriname, System.Text.Encoding.UTF8));
                    // 考慮 utf-8 檔名問題,以 out_file 設定另存的檔名
                    HttpContext.Response.Headers.Add("Content-Length", xpath_file.Length.ToString()); //表頭加入檔案大小
                    HttpContext.Response.SendFileAsync(xpath_file.FullName);

                    return true;

                }
                catch (Exception)
                { return false; }

            }
            else
                return false;
        }
    }
}