first commit
This commit is contained in:
127
routes/admin_router.ts
Normal file → Executable file
127
routes/admin_router.ts
Normal file → Executable file
@ -1,10 +1,135 @@
|
||||
// create admin router
|
||||
import express from 'express';
|
||||
import type { Request, Response } from 'express';
|
||||
import type { UploadedFile } from 'express-fileupload';
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
import KurirModel from '../models/kurir_model';
|
||||
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.get('/', (req: Request, res: Response) => {
|
||||
res.send('Admin Home');
|
||||
res.sendFile(__dirname + '/admin_ui/index.html');
|
||||
});
|
||||
|
||||
router.get('/kurir', (req: Request, res: Response) => {
|
||||
res.sendFile(__dirname + '/admin_ui/kurir.html');
|
||||
})
|
||||
|
||||
router.get('/kurir/data', (req: Request, res: Response) => {
|
||||
KurirModel.find().then((data) => {
|
||||
res.json(data);
|
||||
});
|
||||
})
|
||||
|
||||
router.get('/kurir/gambar/:no_telpon/:jenis', (req: Request, res: Response) => {
|
||||
const { no_telpon, jenis } = req.params;
|
||||
if (!no_telpon) {
|
||||
res.status(400).json({ error: 'No Telpon is required.' });
|
||||
return
|
||||
}
|
||||
KurirModel.findOne({ no_telpon }).then((data) => {
|
||||
// if data not found
|
||||
if (!data) {
|
||||
res.status(404).json({ error: 'Kurir not found.' });
|
||||
return
|
||||
}
|
||||
// Define file paths
|
||||
const motorGambar = path.join(__dirname, '../images/'+ jenis +'/'+data.gambar_motor);
|
||||
const kurirGambar = path.join(__dirname, '../images/kurir/'+data.gambar_kurir);
|
||||
|
||||
if(jenis == 'motor') {
|
||||
res.sendFile(motorGambar);
|
||||
} else {
|
||||
res.sendFile(kurirGambar);
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
router.get('/kurir/:no_telpon', (req: Request, res: Response) => {
|
||||
const { no_telpon } = req.params;
|
||||
if (!no_telpon) {
|
||||
res.status(400).json({ error: 'No Telpon is required.' });
|
||||
return
|
||||
}
|
||||
|
||||
KurirModel.findOne({ no_telpon }).then((data) => {
|
||||
// if data not found
|
||||
if (!data) {
|
||||
res.status(404).json({ error: 'Kurir not found.' });
|
||||
return
|
||||
}
|
||||
res.json(data);
|
||||
|
||||
});
|
||||
})
|
||||
|
||||
router.post('/kurir', async (req: Request, res: Response) => {
|
||||
try {
|
||||
const { dd_motor, nama, no_telpon, jenis_kelamin } = req.body;
|
||||
const { gambar_kurir, gambar_motor } = req.files as {
|
||||
gambar_kurir: UploadedFile;
|
||||
gambar_motor: UploadedFile;
|
||||
};
|
||||
|
||||
// Check if kurir already exists by no_telpon or dd_motor
|
||||
const existing = await KurirModel.findOne({
|
||||
$or: [{ no_telpon }, { dd_motor }],
|
||||
});
|
||||
|
||||
if (existing) {
|
||||
// await new Promise((resolve) => setTimeout(resolve, 2000));
|
||||
res.status(400).json({
|
||||
error: 'Nomor telepon atau motor sudah terdaftar.',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const random_5_char = Math.random().toString(36).substring(2, 7);
|
||||
|
||||
|
||||
// Define file paths
|
||||
const kurirDir = path.join(__dirname, '../images/kurir');
|
||||
const motorDir = path.join(__dirname, '../images/motor');
|
||||
const kurirPath = path.join(kurirDir, `${no_telpon}_kurir_${random_5_char}.jpg`);
|
||||
const motorPath = path.join(motorDir, `${no_telpon}_motor_${random_5_char}.jpg`);
|
||||
|
||||
// Ensure dirs exist
|
||||
fs.mkdirSync(kurirDir, { recursive: true });
|
||||
fs.mkdirSync(motorDir, { recursive: true });
|
||||
|
||||
// Move files
|
||||
await gambar_kurir.mv(kurirPath);
|
||||
await gambar_motor.mv(motorPath);
|
||||
|
||||
// Save to MongoDB
|
||||
const newKurir = new KurirModel({
|
||||
dd_motor,
|
||||
nama,
|
||||
no_telpon,
|
||||
jenis_kelamin,
|
||||
gambar_kurir: `${no_telpon}_kurir_${random_5_char}.jpg`,
|
||||
gambar_motor: `${no_telpon}_motor_${random_5_char}.jpg`,
|
||||
});
|
||||
|
||||
await newKurir.save();
|
||||
// await 2 sec
|
||||
// await new Promise((resolve) => setTimeout(resolve, 2000));
|
||||
|
||||
res.status(201).json({ message: 'Kurir berhasil ditambahkan.' });
|
||||
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
res.status(500).json({ error: 'Terjadi kesalahan server.' });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
router.get('/login', (req: Request, res: Response) => {
|
||||
res.sendFile(__dirname + '/admin_ui/login.html');
|
||||
});
|
||||
|
||||
|
||||
export default router;
|
Reference in New Issue
Block a user