summaryrefslogtreecommitdiff
path: root/pages/api/po/createContractFile.ts
blob: b74c95f28b86a362a9a1844b720576c170f331de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
export const config = {
  api: {
    bodyParser: true, // ✅ 이게 false면 안 됨!
  },
};

import type { NextApiRequest, NextApiResponse } from "next";
import { downloadContractFile } from "@/lib/docuSign/docuSignFns";
import path from "path";
import fs from "fs";

export default async function handler(
  req: NextApiRequest,
  res: NextApiResponse
) {
  if (req.method !== "POST") {
    return res.status(405).end();
  }

  try {
    const { envelopeId, fileName, filePath } = req.body;

    if (!envelopeId) {
      return res
        .status(500)
        .json({ success: false, message: "Not use envelopeId" });
    }

    const docuSignStart = await downloadContractFile(envelopeId);

    const { result, buffer, error } = docuSignStart;

    if (result && buffer) {
      const cleanedPath = filePath.replace(/^\/+/, "");
      const dirPath = path.resolve(process.cwd(), "public", cleanedPath); // 예: 'contracts/185/signatures'
      const fullFilePath = path.join(dirPath, fileName); // 예: 'contracts/185/signatures/xxx.pdf'

      if (!fs.existsSync(dirPath)) {
        fs.mkdirSync(dirPath, { recursive: true });
      }

      fs.writeFileSync(fullFilePath, buffer);
      return res.status(200).json({
        success: result,
      });
    }

    return res.status(200).json({
      success: result,
      message: error?.message,
    });
  } catch (error: any) {
    res
      .status(500)
      .json({ success: false, message: error?.message || "Unknown error" });
  }
}