Files
kurir_server_admin/server/routes/kurir_router.js
2022-07-01 05:01:59 +08:00

268 lines
8.6 KiB
JavaScript

const express = require('express');
const router = express.Router();
const md5 = require('md5');
const { pengaturanPengirimanModel } = require('../models/kurir_model');
const { kurirModel, loginUserModel, pengirimModel } = require('../models/users_model');
const { pengirimanBarangModel } = require('../models/pengirim_model');
let googlenya = require('../google/googleapi.js');
const pengirim_folder_id = process.env.PENGIRIM_FOLDER_ID;
const kurir_folder_id = process.env.KURIR_FOLDER_ID;
const ktp_kurir_folder_id = process.env.KTP_KURIR_FOLDER_ID;
const ktp_holding_kurir_folder_id = process.env.KTP_HOLDING_KURIR_FOLDER_ID;
const kenderaan_kurir_folder_id = process.env.KENDERAAN_KURIR_FOLDER_ID;
async function cek_user_kurir(req, res, next) {
if (req.query.username == null && req.query.password == null && req.query.id == null) return res.status(401).send({ message: 'Not Authorized' });
const cek_login = await loginUserModel.findOne({
username: req.query.username,
password: req.query.password,
role: 'kurir'
})
if (!cek_login) return res.status(401).send({ message: 'Not Authorized' });
const cek_kurir = await kurirModel.findOne({
_id: req.query.id
})
if (!cek_kurir) return res.status(401).send({ message: 'Not Authorized' });
next()
}
// create '/pengaturan' post route
router.post('/pengaturan', cek_user_kurir, async (req, res) => {
console.log('masuk post pengaturan');
const minimal_biaya_pengiriman = req.body.minimal_biaya_pengiriman;
const maksimal_biaya_pengiriman = req.body.maksimal_biaya_pengiriman;
const biaya_per_kilo = req.body.biaya_per_kilo;
const cek_data = await pengaturanPengirimanModel.findOne({
kurir: req.query.id
});
let message, datanya;
if (cek_data) {
datanya = await pengaturanPengirimanModel.findOneAndUpdate({
kurir: req.query.id,
}, {
biaya_minimal: minimal_biaya_pengiriman,
biaya_maksimal: maksimal_biaya_pengiriman,
biaya_per_kilo: biaya_per_kilo,
updated_at: new Date()
})
await kurirModel.findOneAndUpdate({
_id: req.query.id
}, {
pengaturan_pengiriman: datanya._id
})
message = 'Pengaturan pengiriman berhasil diubah';
} else {
datanya = new pengaturanPengirimanModel({
kurir: req.query.id,
biaya_minimal: minimal_biaya_pengiriman,
biaya_maksimal: maksimal_biaya_pengiriman,
biaya_per_kilo,
created_at: new Date(),
updated_at: new Date()
});
await datanya.save();
await kurirModel.findOneAndUpdate({
_id: req.query.id
}, {
pengaturan_pengiriman: datanya._id
})
// save to pengaturanPengirimanModel reference to kurirModel
message = 'Pengaturan biaya pengiriman berhasil dibuat';
console.log("data baru");
}
res.status(200).send({ message: message, data: datanya });
})
// create '/pengaturan' get route
router.get('/pengaturan', cek_user_kurir, async (req, res) => {
// router.get('/pengaturan', async (req, res) => {
console.log('masuk get pengaturan');
const cek_data = await pengaturanPengirimanModel.findOne({
kurir: req.query.id
});
if (!cek_data) return res.status(200).send({ message: 'Pengaturan tidak ditemukan', data: null });
res.status(200).send({ message: 'Pengaturan pengiriman berhasil ditemukan', data: cek_data });
})
// create '/pengiriman_kurir_dalam_pengesahan' get route
router.get('/pengiriman_kurir_dalam_pengesahan', cek_user_kurir, async (req, res) => {
try {
console.log('masuk get pengiriman_kurir_dalam_pengesahan');
const cek_data = await pengirimanBarangModel.find({
kurir: req.query.id,
// status = 'Dalam Pengesahan Kurir' or 'Disahkan Kurir'
$or: [
{ status_pengiriman: 'Dalam Pengesahan Kurir' },
{ status_pengiriman: 'Disahkan Kurir' },
{ status_pengiriman: 'Mengambil Paket Pengiriman Dari Pengirim' },
{ status_pengiriman: 'Menghantar Paket Pengiriman Ke Penerima' },
]
}).select(' -kurir -__v ').sort({ updated_at: -1 }).populate({
path: 'pengirim',
select: '-__v -created_at -updated_at -status'
});
res.status(200).send({ message: 'Data berhasil ditemukan', data: cek_data });
} catch (error) {
res.status(500).send({ message: 'Internal Server Error', data: null });
}
})
// create '/pengiriman_completed' get route
router.get('/pengiriman_completed', cek_user_kurir, async (req, res) => {
try {
// console.log('masuk get pengiriman_completed');
const cek_data = await pengirimanBarangModel.find({
kurir: req.query.id,
// status = 'Dalam Pengesahan Kurir' or 'Disahkan Kurir'
$or: [
{ status_pengiriman: 'Paket Diterima Oleh Penerima' },
]
}).select(' -kurir -__v ').sort({ updated_at: -1 }).populate({
path: 'pengirim',
select: '-__v -created_at -updated_at -status'
});
res.status(200).send({ message: 'Data berhasil ditemukan', data: cek_data });
} catch (error) {
res.status(500).send({ message: 'Internal Server Error', data: null });
}
})
// create 'sahkan_pengiriman' post route
router.post('/sahkan_pengiriman', cek_user_kurir, async (req, res) => {
try {
const id_pengiriman = req.body.id_pengiriman;
const cek_data = await pengirimanBarangModel.findOne({
_id: id_pengiriman,
kurir: req.query.id
});
if (!cek_data) return res.status(400).send({ message: 'Data tidak ditemukan', data: null });
const cek_pengiriman = await pengirimanBarangModel.findOneAndUpdate({
_id: id_pengiriman,
kurir: req.query.id
}
, {
status_pengiriman: 'Disahkan Kurir',
// push to history
$push: {
history: {
status_pengiriman: 'Disahkan Kurir',
}
},
updated_at: new Date()
}
, { new: true }
);
// console.log(cek_pengiriman);
res.status(200).send({ message: 'Pengiriman berhasil disahkan', data: cek_pengiriman });
} catch (error) {
res.status(500).send({ message: 'Internal Server Error', data: null });
}
})
// create '/pengirim' get route
router.get('/pengirim', cek_user_kurir, async (req, res) => {
// console.log('masuk get pengirim');
// get all pengirim
const cek_data = await pengirimModel.find().select('-__v -created_at -updated_at');
res.status(200).send({ message: 'Data berhasil ditemukan', data: cek_data });
})
// create '/detail_pengiriman' get route
router.get('/detail_pengiriman', cek_user_kurir, async (req, res) => {
try{
id_pengiriman = req.query.id_pengiriman;
// console.log('masuk get detail_pengiriman');
const cek_data = await pengirimanBarangModel.findOne({
_id: id_pengiriman,
kurir: req.query.id
}).select(' -kurir -__v -pengirim').populate({
path: 'pengirim',
select: '-__v -created_at -updated_at -status'
});
if (!cek_data) return res.status(400).send({ message: 'Data tidak ditemukan', data: null });
res.status(200).send({ message: 'Data berhasil ditemukan', data: cek_data });
} catch (error) {
res.status(500).send({ message: 'Internal Server Error', data: null });
}
})
// create 'mengambil_paket_pengiriman' post route
router.post('/mengambil_paket_pengiriman', cek_user_kurir, async (req, res) => {
try {
const id_pengiriman = req.body.id_pengiriman;
const cek_data = await pengirimanBarangModel.findOne({
_id: id_pengiriman,
kurir: req.query.id
});
if (!cek_data) return res.status(400).send({ message: 'Data tidak ditemukan', data: null });
const cek_pengiriman = await pengirimanBarangModel.findOneAndUpdate({
_id: id_pengiriman,
kurir: req.query.id
}
, {
status_pengiriman: 'Mengambil Paket Pengiriman Dari Pengirim',
// push to history
$push: {
history: {
status_pengiriman: 'Mengambil Paket Pengiriman Dari Pengirim',
}
},
updated_at: new Date()
}
, { new: true }
);
// console.log(cek_pengiriman);
res.status(200).send({ message: 'Pengiriman berhasil disahkan', data: cek_pengiriman });
} catch (error) {
res.status(500).send({ message: 'Internal Server Error', data: null });
}
})
// create 'profil' get route
router.get('/profil_kurir', cek_user_kurir, async (req, res) => {
console.log("ini cek profilnya");
try {
const cek_data = await kurirModel.findOne({
_id: req.query.id
}).select('-__v -created_at -updated_at -pengaturan_pengiriman -pengiriman_barang');
res.status(200).send({ message: 'Data berhasil ditemukan', data: cek_data });
} catch (error) {
res.status(500).send({ message: 'Internal Server Error', data: null });
}
// res.status(200).send({ message: 'Data berhasil ditemukan'});
})
module.exports = router;