From 6c221bad0aa016f47d8a801d3465f24e7a212dd9 Mon Sep 17 00:00:00 2001 From: kicap1992 Date: Tue, 28 Jun 2022 01:40:03 +0800 Subject: [PATCH] added pengiriman_detail api --- server/models/pengirim_model.js | 13 +++- server/routes/kurir_router.js | 120 ++++++++++++++++++++++++++++--- server/routes/pengirim_router.js | 3 + 3 files changed, 127 insertions(+), 9 deletions(-) diff --git a/server/models/pengirim_model.js b/server/models/pengirim_model.js index 9e0fdf1..b44898a 100644 --- a/server/models/pengirim_model.js +++ b/server/models/pengirim_model.js @@ -44,7 +44,7 @@ const pengirimanBarangSchema = new mongoose.Schema({ type: String, default: 'Dalam Pengesahan Kurir', }, - biaya : { + biaya: { biaya_minimal: { type: Number, required: true, @@ -66,6 +66,17 @@ const pengirimanBarangSchema = new mongoose.Schema({ type: mongoose.Schema.Types.ObjectId, ref: 'tb_pengirim' }, + history: [new mongoose.Schema({ + waktu: { + type: Date, + default: Date.now, + }, + status_pengiriman: { + type: String, + } + }, { + _id: false, + })], created_at: { type: Date, default: Date.now diff --git a/server/routes/kurir_router.js b/server/routes/kurir_router.js index 7c6c980..f13e043 100644 --- a/server/routes/kurir_router.js +++ b/server/routes/kurir_router.js @@ -3,7 +3,7 @@ const router = express.Router(); const md5 = require('md5'); const { pengaturanPengirimanModel } = require('../models/kurir_model'); -const { kurirModel, loginUserModel , pengirimModel} = require('../models/users_model'); +const { kurirModel, loginUserModel, pengirimModel } = require('../models/users_model'); const { pengirimanBarangModel } = require('../models/pengirim_model'); let googlenya = require('../google/googleapi.js'); @@ -93,17 +93,22 @@ router.get('/pengaturan', cek_user_kurir, async (req, res) => { }) // create '/pengiriman_kurir_dalam_pengesahan' get route -router.get('/pengiriman_kurir_dalam_pengesahan', async (req, res) => { +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' - }).select(' -kurir -__v ').populate({ - path: 'pengirim', - select: '-__v -created_at -updated_at -status' + // status = 'Dalam Pengesahan Kurir' or 'Disahkan Kurir' + $or: [ + { status_pengiriman: 'Dalam Pengesahan Kurir' }, + { status_pengiriman: 'Disahkan Kurir' }, + { status_pengiriman: 'Mengambil Paket Pengiriman Dari Pengirim' } + ] + }).select(' -kurir -__v ').sort({ status_pengiriman: -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 }); @@ -112,13 +117,112 @@ router.get('/pengiriman_kurir_dalam_pengesahan', async (req, res) => { }) +// 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', async (req, res) => { +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 }); + } +}) + + module.exports = router; diff --git a/server/routes/pengirim_router.js b/server/routes/pengirim_router.js index 2418d5d..01f246c 100644 --- a/server/routes/pengirim_router.js +++ b/server/routes/pengirim_router.js @@ -157,6 +157,9 @@ router.post('/pengiriman_barang', cek_user_pengirim, async (req, res) => { biaya: biaya, kurir: id_kurir, pengirim: id, + history:{ + status_pengiriman : "Dalam Pengesahan Kurir" + } }); console.log(data_created._id, "ini data pengiriman barang")