58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
require("dotenv").config(); // load .env
|
|
const express = require("express");
|
|
const admin = require("firebase-admin");
|
|
const cors = require("cors");
|
|
|
|
const app = express();
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
|
|
// Parsing JSON dari env
|
|
const serviceAccount = JSON.parse(process.env.FIREBASE_CONFIG);
|
|
|
|
// Inisialisasi Firebase Admin
|
|
admin.initializeApp({
|
|
credential: admin.credential.cert(serviceAccount)
|
|
});
|
|
|
|
const db = admin.firestore();
|
|
|
|
// Format tanggal
|
|
function formatTanggalUTC(timeString) {
|
|
const date = new Date(timeString);
|
|
const tgl = String(date.getUTCDate()).padStart(2, "0");
|
|
const bln = String(date.getUTCMonth() + 1).padStart(2, "0");
|
|
const thn = date.getUTCFullYear();
|
|
const jam = String(date.getUTCHours()).padStart(2, "0");
|
|
const menit = String(date.getUTCMinutes()).padStart(2, "0");
|
|
return `${tgl}/${bln}/${thn} . ${jam}:${menit}`;
|
|
}
|
|
|
|
// Endpoint kirim data
|
|
app.post("/api/kirim-data", async (req, res) => {
|
|
try {
|
|
const { uid, activity, time } = req.body;
|
|
if (!uid || !activity || !time) {
|
|
return res.status(400).json({ success: false, message: "Data tidak lengkap" });
|
|
}
|
|
|
|
const formattedTime = formatTanggalUTC(time);
|
|
|
|
await db.collection("history_parkir").add({
|
|
uid,
|
|
activity,
|
|
time: formattedTime
|
|
});
|
|
|
|
return res.status(200).json({ success: true, message: "Data berhasil dikirim ke Firestore" });
|
|
} catch (error) {
|
|
console.error(error);
|
|
res.status(500).json({ success: false, message: error.message });
|
|
}
|
|
});
|
|
|
|
const PORT = 3000;
|
|
app.listen(PORT, () => {
|
|
console.log(`🚀 Server is running on port ${PORT}`);
|
|
});
|