From 0f8229d8ec5250bdee6df01085c09fd5d918609c Mon Sep 17 00:00:00 2001 From: kicap1992 Date: Sun, 26 Jun 2022 00:47:48 +0800 Subject: [PATCH] added some endpoint --- server/index.js | 16 ++++- server/models/pengirim_model.js | 46 +++++++++++--- server/routes/kurir_router.js | 51 ++++++++++++---- server/routes/login_router.js | 20 +++---- server/routes/pengirim_router.js | 100 +++++++++++++++++++++---------- 5 files changed, 170 insertions(+), 63 deletions(-) diff --git a/server/index.js b/server/index.js index 1d33ac2..1eb8c60 100644 --- a/server/index.js +++ b/server/index.js @@ -92,12 +92,22 @@ app.prepare().then(() => { io1.on('connection', (socket) => { console.log('socket connected'); socket.on('coba2', (_) => { - console.log(_.toString() +" ini di dia"); - io1.emit('coba1', { - data: 'coba2' + console.log(_ , " ini di dia coba2"); + io1.emit('percobaan1', { + data: 'percobaan1', + message:"ini terkirim ke user" }) }); + + socket.on('pengiriman_create', (_) => { + console.log(_ ," ini dia pengiriman_create"); + + io1.emit('pengiriman_create'+_.id_pengirim, { + message: 'Pengiriman Baru Untuk Anda', + id_pengiriman : _.id_pengiriman, + }) + }) }) // io2.on('connection', (socket) => { diff --git a/server/models/pengirim_model.js b/server/models/pengirim_model.js index ffed5ab..9e0fdf1 100644 --- a/server/models/pengirim_model.js +++ b/server/models/pengirim_model.js @@ -14,27 +14,55 @@ const pengirimanBarangSchema = new mongoose.Schema({ required: true, }, kordinat_pengiriman: { - lat :{ + lat: { type: String, required: true, }, - lng :{ + lng: { + type: String, + required: true, + }, + kelurahan_desa: { + type: String, + required: true, + }, + }, + kordinat_permulaan: { + lat: { + type: String, + required: true, + }, + lng: { type: String, required: true, } }, - kelurahan_desa: { - type: String, - required: true, - }, foto_pengiriman: { type: String }, + status_pengiriman: { + type: String, + default: 'Dalam Pengesahan Kurir', + }, + biaya : { + biaya_minimal: { + type: Number, + required: true, + }, + biaya_maksimal: { + type: Number, + required: true, + }, + biaya_per_kilo: { + type: Number, + required: true, + } + }, kurir: { type: mongoose.Schema.Types.ObjectId, ref: 'tb_kurir' }, - pengirim : { + pengirim: { type: mongoose.Schema.Types.ObjectId, ref: 'tb_pengirim' }, @@ -49,6 +77,6 @@ const pengirimanBarangSchema = new mongoose.Schema({ }) -const pengirimanBarangModel = mongoose.model('tb_pengiriman_barang', pengirimanBarangSchema , 'tb_pengiriman_barang'); +const pengirimanBarangModel = mongoose.model('tb_pengiriman_barang', pengirimanBarangSchema, 'tb_pengiriman_barang'); -module.exports = {pengirimanBarangModel}; \ No newline at end of file +module.exports = { pengirimanBarangModel }; \ No newline at end of file diff --git a/server/routes/kurir_router.js b/server/routes/kurir_router.js index 0414cf8..7c6c980 100644 --- a/server/routes/kurir_router.js +++ b/server/routes/kurir_router.js @@ -3,7 +3,8 @@ const router = express.Router(); const md5 = require('md5'); const { pengaturanPengirimanModel } = require('../models/kurir_model'); -const { kurirModel, loginUserModel } = require('../models/users_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; @@ -42,22 +43,22 @@ router.post('/pengaturan', cek_user_kurir, async (req, res) => { 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() + 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, + kurir: req.query.id, biaya_minimal: minimal_biaya_pengiriman, biaya_maksimal: maksimal_biaya_pengiriman, biaya_per_kilo, @@ -67,12 +68,12 @@ router.post('/pengaturan', cek_user_kurir, async (req, res) => { 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"); } @@ -82,14 +83,42 @@ router.post('/pengaturan', cek_user_kurir, async (req, res) => { // create '/pengaturan' get route router.get('/pengaturan', cek_user_kurir, async (req, res) => { -// router.get('/pengaturan', 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}); + 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', 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' + + }); + res.status(200).send({ message: 'Data berhasil ditemukan', data: cek_data }); + } catch (error) { + res.status(500).send({ message: 'Internal Server Error', data: null }); + } + + +}) + +// create '/pengirim' get route +router.get('/pengirim', 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 }); +}) + module.exports = router; diff --git a/server/routes/login_router.js b/server/routes/login_router.js index 9eaf419..3e4cffc 100644 --- a/server/routes/login_router.js +++ b/server/routes/login_router.js @@ -57,7 +57,7 @@ router.get('/', async (req, res) => { return; } - console.log(user); + // console.log(user); res.status(200).send({ status: true, @@ -108,8 +108,8 @@ router.post('/daftar1', async (req, res) => { // check if data.no_telp is exists let isExist2 = await kurirModel.findOne({ no_telp: data.no_telp }); - console.log(isExist2) - console.log("ini untuk no telpon") + // console.log(isExist2) + // console.log("ini untuk no telpon") if (isExist2) { let message = (isExist2.status == 'Evaluasi') ? 'No Telpon ini telah terdaftar sebelumnya dan sekarang dalam evaluasi tim kami.\n Jika anda pemilik no telpon ini, Tim kami akan mengirim ke email yang anda daftarkan sebelumnya untuk konfirmasi pendaftaran' : 'No Telpon Sudah Terdaftar dan sudah diaktifkan'; res.status(400).send({ @@ -122,8 +122,8 @@ router.post('/daftar1', async (req, res) => { // check if data.email is exists let isExist3 = await kurirModel.findOne({ email: data.email }); - console.log(isExist3) - console.log("ini untuk email") + // console.log(isExist3) + // console.log("ini untuk email") if (isExist3) { let message = (isExist3.status == 'Evaluasi') ? 'Email ini telah terdaftar sebelumnya dan sekarang dalam evaluasi tim kami.\nTim kami akan mengirim ke email ini yang anda daftarkan sebelumnya untuk konfirmasi pendaftaran' : 'Email Sudah Terdaftar dan sudah diaktifkan'; res.status(400).send({ @@ -146,15 +146,15 @@ router.post('/daftar1', async (req, res) => { res.send({ status: true, message: 'Anda akan mendapat notifikasi di email anda dan juga no telpon jika admin menyetujui ataupun membatalkan pendaftaran anda' }); - console.log(data) + // console.log(data) let new_kurir = new kurirModel(data); let new_login = new loginUserModel(data); new_login._idnya = new_kurir._id; await new_kurir.save(); await new_login.save(); - console.log(new_kurir) - console.log(new_login) + // console.log(new_kurir) + // console.log(new_login) // add photo_url to new_kurir @@ -247,13 +247,13 @@ router.post('/daftar1', async (req, res) => { new_pengirim.photo_url = `https://drive.google.com/uc?export=view&id=${await id_photo}` - console.log(new_pengirim) + // console.log(new_pengirim) let new_login = new loginUserModel(data); // push new_pengirim._id to new_login._idnya new_login._idnya = new_pengirim._id; - console.log(new_login); + // console.log(new_login); await new_pengirim.save(); await new_login.save(); diff --git a/server/routes/pengirim_router.js b/server/routes/pengirim_router.js index b8eb6df..2418d5d 100644 --- a/server/routes/pengirim_router.js +++ b/server/routes/pengirim_router.js @@ -6,7 +6,7 @@ const { pengirimModel, kurirModel, loginUserModel } = require('../models/users_m const { pengaturanPengirimanModel } = require('../models/kurir_model'); -const {pengirimanBarangModel} = require('../models/pengirim_model'); +const { pengirimanBarangModel } = require('../models/pengirim_model'); let googlenya = require('../google/googleapi.js'); @@ -17,6 +17,9 @@ const ktp_holding_kurir_folder_id = process.env.KTP_HOLDING_KURIR_FOLDER_ID; const kenderaan_kurir_folder_id = process.env.KENDERAAN_KURIR_FOLDER_ID; const foto_barangan_pengiriman_folder_id = process.env.FOTO_BARANG_PENGIRIMAN_ID; +const io = require("socket.io-client"); +const socket = io("http://localhost:3001/"); + async function cek_user_pengirim(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({ @@ -45,7 +48,7 @@ router.get('/kurir', async (req, res) => { try { const data = await kurirModel.find({ status: 'Aktif' - }).select('-email -created_at -updated_at -__v -ktp_url -alamat').populate( + }).select(' -created_at -updated_at -__v -ktp_url -alamat').populate( { path: 'pengaturan_pengiriman', } @@ -120,54 +123,69 @@ router.get('/kurir/filter/', cek_user_pengirim, async (req, res) => { }) // create '/pengiriman_barang' post route -router.post('/pengiriman_barang', async (req, res) => { +router.post('/pengiriman_barang', cek_user_pengirim, async (req, res) => { const id = req.query.id; - const id_kurir = req.body.id_kurir; - const nama_penerima = req.body.nama_penerima; - const no_telpon_penerima = req.body.no_telpon_penerima; - const alamat_penerima = req.body.alamat_penerima; - const lat_lokasi_pengiriman = req.body.lat_lokasi_pengiriman; - const long_lokasi_pengiriman = req.body.long_lokasi_pengiriman; - const kelurahan_desa = req.body.kelurahan_desa; - const foto_pengiriman = req.files.foto_pengiriman; - + const data = (req.body.data != null && req.body.data != '') ? JSON.parse(req.body.data) : null; - const data = await pengirimanBarangModel.create({ + const id_kurir = data.id_kurir; + const nama_penerima = data.nama_penerima; + const no_telpon_penerima = data.no_telpon_penerima; + const alamat_penerima = data.alamat_penerima; + const lokasi_pengiriman = data.lokasi_pengiriman; + const kelurahan_desa_pengiriman = data.kelurahan_desa_pengiriman; + const lokasi_permulaan = data.lokasi_permulaan; + const biaya = data.biaya; + + const foto_pengiriman = req.files.foto_pengiriman; + + + // console.log(id , id_kurir , nama_penerima , no_telpon_penerima , alamat_penerima , lokasi_pengiriman[0] , kelurahan_desa_pengiriman , lokasi_permulaan[1] , ":ini datanya"); + + const data_created = await pengirimanBarangModel.create({ nama_penerima: nama_penerima, no_telpon_penerima: no_telpon_penerima, - alamat_penerima : alamat_penerima, + alamat_penerima: alamat_penerima, kordinat_pengiriman: { - lat: lat_lokasi_pengiriman, - lng: long_lokasi_pengiriman + lat: lokasi_pengiriman[0], + lng: lokasi_pengiriman[1], + kelurahan_desa: kelurahan_desa_pengiriman, }, - kelurahan_desa: kelurahan_desa, - // foto_pengiriman: "ini url foto", - kurir : id_kurir, - pengirim : id, + kordinat_permulaan: { + lat: lokasi_permulaan[0], + lng: lokasi_permulaan[1], + }, + biaya: biaya, + kurir: id_kurir, + pengirim: id, }); - // console.log(data._id , "ini data pengiriman barang") - + console.log(data_created._id, "ini data pengiriman barang") + await pengirimModel.findByIdAndUpdate(id, { $push: { - pengiriman_barang: data._id + pengiriman_barang: data_created._id } }) await kurirModel.findByIdAndUpdate(id_kurir, { $push: { - pengiriman_barang: data._id + pengiriman_barang: data_created._id } }) - res.status(200).send({ message: 'connected to pengiriman_barang' }) + res.status(200).send({ message: 'Berhasil menambahkan pengiriman barang' }); - let id_photo = googlenya.uploadFile(data._id+".jpg", foto_pengiriman.path,foto_barangan_pengiriman_folder_id,"ini photo barang kiriman"); + let id_photo = googlenya.uploadFile(data_created._id + ".jpg", foto_pengiriman.path, foto_barangan_pengiriman_folder_id, "ini photo barang kiriman"); const photo_url = `https://drive.google.com/uc?export=view&id=${await id_photo}` - await pengirimanBarangModel.findByIdAndUpdate(data._id, { + await pengirimanBarangModel.findByIdAndUpdate(data_created._id, { foto_pengiriman: photo_url }) + socket.emit('pengiriman_create', { + id_pengiriman: data_created._id, + id_pengirim: id, + }) + // const idnya= "62940077b44339ec97fe519e" // const id_pengirim = '6260ba6b7b7d7a951d03d285' @@ -186,12 +204,34 @@ router.post('/pengiriman_barang', async (req, res) => { // pengiriman_barang: idnya // } // }) - - + + // console.log(id , id_kurir, nama_penerima, no_telpon_penerima, alamat_penerima, lat_lokasi_pengiriman, long_lokasi_pengiriman, kelurahan_desa, foto_pengiriman , "ini data yang dikirim"); - + +}) + +// create '/log_kiriman' get route +// router.get('/log_kiriman', cek_user_pengirim, async (req, res) => { +router.get('/log_kiriman', async (req, res) => { + const id = req.query.id; + const data = await pengirimanBarangModel.find({ + pengirim: id, + }).select('-pengirim -__v').populate({ + path: 'kurir', + select: '-email -created_at -updated_at -__v -ktp_url -alamat -pengiriman_barang -ktp_holding_url -nik', + }) + res.status(200).send({ data: data }); +}) + +// create '/coba2' get route +router.get('/coba2', async (req, res) => { + console.log("sini berlaku coba2 notif") + socket.emit('coba2', { + data: 'coba2' + }) + res.status(200).send({ message: 'coba2' }); }) module.exports = router; \ No newline at end of file