const express = require("express");
const mysql = require("mysql");
const bodyParser = require("body-parser");
var cors = require("cors");
const app = express();
const port = process.env.PORT || 8081;
const fs = require("fs");
app.use(cors());
app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', 'https://overheadrevamped.netlify.app');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
  next();
});

// const db = mysql.createConnection({
//     //   host: 'localhost',
//     //   user: 'familyin_ashish',
//     //   password: 'Ashish@123',
//     //   database: 'familyin_flipflops'
//     host: "localhost",
//     user: "root",
//     password: "",
//     database: "overhead",
// });

let db;
const createdbConnection = () => {
    db = mysql.createConnection({
        host: "localhost",
        user: "familpps_Athar",
        password: "<qGgZbwJbY*3",
        database: "familpps_family_industries",
    });
};

app.use(bodyParser.json({ limit: "50mb" }));
app.use(bodyParser.urlencoded({ limit: "50mb", extended: true }));
app.use(express.json());

app.post("/api/save", (req, res) => {
    const data = req.body;
    const { canvasuri, name } = data;
    const filePath = __dirname + `/canvas/${name + Date.now()}.png`;

    // Remove the header from the dataUrl
    const base64Data = canvasuri.replace(/^data:image\/png;base64,/, "");
    fs.writeFile(filePath, base64Data, "base64", (err) => {
        if (err) {
            console.error(err);
            res.sendStatus(500);
        } else {
            const sql = `INSERT INTO user_data (name, size, canvasuri) VALUES (?, ?, ?)`;
            const values = [data.name, data.size, filePath];

            db.query(sql, values, (err, result) => {
                if (err) {
                    throw err;
                }
                // console.log('Data inserted:', result);
                res.send("Data inserted successfully");
            });
        }
    });
});

app.post("/api/saveworkspace", (req, res) => {
    const data = req.body;
    // const { canvasJSON, width ,height,templateId} = data;

    createdbConnection();
    db.connect((errdb) => {
        if (errdb) {
            throw errdb;
        } else {
            const str = data.templateid;
            const exist = str.slice(0, 5);
            let sql;
            if (exist == "exist") {
                const repstr = str.replace("exist", "");

                sql = `UPDATE export_templates SET template_json =?, width=?, height=? WHERE template_id = '${repstr}' ;`;
            } else {
                sql = `INSERT INTO export_templates (template_json, width, height,template_id) VALUES (?, ?, ?,?)`;
            }

            const values = [
                data.canvasjson,
                data.width,
                data.height,
                data.templateid,
            ];

            db.query(sql, values, (err, result) => {
                if (err) {
                    throw err;
                }
                // console.log('Data inserted:', result);
                res.send("Data inserted successfully");
            });
        }
    });
});

app.get("/api/fetchequipments", (req, res) => {
    createdbConnection();
    db.connect((errdb) => {
        if (errdb) {
            throw errdb;
        } else {
            const query = "SELECT * FROM equipment_list";

            db.query(query, (err, result) => {
                if (err) {
                    throw err;
                } else {
                    res.status(200).json(result);
                }
            });
        }
    });
});

app.post("/api/fetchworkspace", (req, res) => {
    const data = req.body;
    createdbConnection();
    db.connect((errdb) => {
        if (errdb) {
            throw errdb;
        } else {
            // console.log(data.templateid);
            const query = `SELECT * FROM export_templates WHERE template_id = '${data.templateid}' ;`;

            db.query(query, (err, result) => {
                if (err) {
                    throw err;
                } else {
                    res.status(200).json(result);
                }
            });
        }
    });
});
app.get("/", (req, res) => {
    res.send("hello");
});

app.listen(port, () => {
    console.log(`Server listening on port ${port}`);
});
