added pengirim and maps api

This commit is contained in:
kicap1992
2022-05-26 06:18:34 +08:00
parent 73ea1fe511
commit daa648e4df
11 changed files with 333 additions and 4 deletions

4
.babelrc Normal file
View File

@ -0,0 +1,4 @@
{
"presets": ["next/babel"],
"plugins": []
}

View File

@ -1,3 +1,3 @@
{
"extends": "next/core-web-vitals"
}
"extends": ["next/babel","next/core-web-vitals"]
}

57
package-lock.json generated
View File

@ -13,6 +13,7 @@
"express": "^4.17.3",
"express-form-data": "^2.0.17",
"googleapis": "^100.0.0",
"md5": "^2.3.0",
"mongoose": "^6.2.11",
"next": "12.1.5",
"nodemon": "^2.0.15",
@ -976,6 +977,14 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/charenc": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
"integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
"engines": {
"node": "*"
}
},
"node_modules/chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@ -1194,6 +1203,14 @@
"node": ">= 8"
}
},
"node_modules/crypt": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
"integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
"engines": {
"node": "*"
}
},
"node_modules/crypto-random-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
@ -2686,6 +2703,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"node_modules/is-callable": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
@ -3157,6 +3179,16 @@
"semver": "bin/semver.js"
}
},
"node_modules/md5": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
"dependencies": {
"charenc": "0.0.2",
"crypt": "0.0.2",
"is-buffer": "~1.1.6"
}
},
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@ -5595,6 +5627,11 @@
"supports-color": "^7.1.0"
}
},
"charenc": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
"integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA=="
},
"chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@ -5759,6 +5796,11 @@
"which": "^2.0.1"
}
},
"crypt": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
"integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
},
"crypto-random-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
@ -6912,6 +6954,11 @@
"has-tostringtag": "^1.0.0"
}
},
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-callable": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
@ -7257,6 +7304,16 @@
}
}
},
"md5": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
"requires": {
"charenc": "0.0.2",
"crypt": "0.0.2",
"is-buffer": "~1.1.6"
}
},
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",

View File

@ -15,6 +15,7 @@
"express": "^4.17.3",
"express-form-data": "^2.0.17",
"googleapis": "^100.0.0",
"md5": "^2.3.0",
"mongoose": "^6.2.11",
"next": "12.1.5",
"nodemon": "^2.0.15",

View File

@ -1,5 +1,6 @@
const express = require('express')
const next = require('next')
require("dotenv").config();
const mongoose = require('mongoose');
const formData = require('express-form-data');
@ -37,9 +38,15 @@ app.prepare().then(() => {
// import routes
const login_router = require('./routes/login_router');
const kurir_router = require('./routes/kurir_router');
const pengirim_router = require('./routes/pengirim_router');
const peta_router = require('./routes/peta_router');
// use routes
server.use('/api/login', login_router);
server.use('/api/kurir', kurir_router);
server.use('/api/pengirim', pengirim_router);
server.use('/api/peta', peta_router);
// connect to mongodb
mongoose.connect(process.env.DB_CONNECTION, { useNewUrlParser: true, useUnifiedTopology: true, family: 4})
@ -55,6 +62,10 @@ app.prepare().then(() => {
return res.status(200).send({ status : true, message : 'connected to api'})
});
server.use('/api',(req, res, next) => {
res.status(404).send('404 not found');
});
server.all('*', (req, res) => {
return handle(req, res)
})
@ -72,10 +83,10 @@ app.prepare().then(() => {
console.log(`> Ready on http://localhost:${port}`)
})
https.createServer (options, server).listen(3002, (err) => {
https.createServer (options, server).listen(3003, (err) => {
if (err) throw err
// console.log(`ini dia ${process.env.DB_CONNECTION}`)
console.log(`> Ready on https://localhost:${3002}`)
console.log(`> Ready on https://localhost:${3003}`)
})
})

View File

@ -0,0 +1,32 @@
const mongoose = require('mongoose');
const pengaturanPengirimanSchema = new mongoose.Schema({
id_kurir: {
type: mongoose.Schema.Types.ObjectId,
required: true,
},
biaya_minimal: {
type: Number,
required: true,
},
biaya_maksimal: {
type: Number,
required: true,
},
biaya_per_kilo: {
type: Number,
required: true,
},
created_at: {
type: Date,
default: Date.now
},
updated_at: {
type: Date,
default: Date.now
}
})
const pengaturanPengirimanModel = mongoose.model('tb_pengaturan_pengiriman', pengaturanPengirimanSchema , 'tb_pengaturan_pengiriman');
module.exports = {pengaturanPengirimanModel};

View File

@ -0,0 +1,27 @@
const mongoose = require('mongoose');
const petaKecamatanSchema = new mongoose.Schema({
kecamatan : {
type: String,
},
polygon:{
type: Array,
}
})
const petaKelurahanDesaSchema = new mongoose.Schema({
kecamatan_id: {
type: mongoose.Schema.Types.ObjectId,
},
kelurahan_desa: {
type: String,
},
polygon:{
type: Array,
}
})
const petaKecamatanModel = mongoose.model('tb_kecamatan', petaKecamatanSchema , 'tb_kecamatan');
const petaKelurahanDesaModel = mongoose.model('tb_kelurahan_desa', petaKelurahanDesaSchema , 'tb_kelurahan_desa');
module.exports = {petaKecamatanModel, petaKelurahanDesaModel};

View File

@ -0,0 +1,80 @@
const express = require('express');
const router = express.Router();
const md5 = require('md5');
const { pengaturanPengirimanModel } = require('../models/kurir_model');
const { kurirModel, loginUserModel } = require('../models/users_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({
id_kurir: req.query.id
});
let message, datanya;
if (cek_data) {
datanya = await pengaturanPengirimanModel.findOneAndUpdate({
id_kurir: req.query.id,
}, {
biaya_minimal: minimal_biaya_pengiriman,
biaya_maksimal: maksimal_biaya_pengiriman,
biaya_per_kilo: biaya_per_kilo,
updated_at: new Date()
})
message = 'Pengaturan pengiriman berhasil diubah';
} else {
datanya = new pengaturanPengirimanModel({
id_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();
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) => {
// console.log('masuk get pengaturan');
const cek_data = await pengaturanPengirimanModel.findOne({
id_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 });
})
module.exports = router;

View File

@ -0,0 +1,37 @@
const express = require('express');
const router = express.Router();
const {pengirimModel, loginUserModel} = require('../models/users_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_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({
username: req.query.username,
password: req.query.password,
role: 'pengirim'
})
if (!cek_login) return res.status(401).send({ message: 'Not Authorized' });
const cek_pengirim = await pengirimModel.findOne({
_id: req.query.id
})
if (!cek_pengirim) return res.status(401).send({ message: 'Not Authorized' });
next()
}
// create get route
router.get('/', cek_user_pengirim, async (req, res) => {
console.log("sini router get pengirim");
res.status(200).send({ message: 'connected to pengirim' })
})
module.exports = router;

View File

@ -0,0 +1,56 @@
const express = require('express');
const router = express.Router();
const { petaKecamatanModel, petaKelurahanDesaModel } = require('../models/peta_model');
// create get route
router.get('/', async (req, res) => {
console.log("sini router get peta");
res.status(200).send({ message: 'connected to peta' })
})
// create '/kecamatan' get route
router.get('/kecamatan', async (req, res) => {
try {
// const nama = req.query.nama;
let data;
// if (nama == null) {
// data = await petaKecamatanModel.find({});
// }else
data = await petaKecamatanModel.findOne({
kecamatan: "Enrekang"
});
console.log("sini cari kecamatan");
res.status(200).send({ data: data });
} catch (error) {
console.log(error, " ini error di peta kecamatan");
res.status(500).send({ message: 'Internal Server Error' });
}
})
// create '/kelurahan_desa' get route
router.get('/kelurahan_desa', async (req, res) => {
try {
const kelurahan_desa = req.query.kelurahan_desa;
let data;
if(kelurahan_desa != null && kelurahan_desa != ""){
data = await petaKelurahanDesaModel.findOne({
kelurahan_desa: kelurahan_desa
});
}else{
// exclude polygon
data = await petaKelurahanDesaModel.find().select('-polygon');
}
console.log("sini cari kelurahan_desa");
res.status(200).send({ data: data });
} catch (error) {
console.log(error, " ini error di peta kelurahan desa");
res.status(500).send({ message: 'Internal Server Error' });
}
})
module.exports = router;

View File

@ -455,6 +455,11 @@
"ansi-styles" "^4.1.0"
"supports-color" "^7.1.0"
"charenc@0.0.2":
"integrity" "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA=="
"resolved" "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz"
"version" "0.0.2"
"chokidar@^3.5.2":
"integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw=="
"resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
@ -571,6 +576,11 @@
"shebang-command" "^2.0.0"
"which" "^2.0.1"
"crypt@0.0.2":
"integrity" "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
"resolved" "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz"
"version" "0.0.2"
"crypto-random-string@^2.0.0":
"integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="
"resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz"
@ -1532,6 +1542,11 @@
"call-bind" "^1.0.2"
"has-tostringtag" "^1.0.0"
"is-buffer@~1.1.6":
"integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz"
"version" "1.1.6"
"is-callable@^1.1.4", "is-callable@^1.2.4":
"integrity" "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w=="
"resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz"
@ -1829,6 +1844,15 @@
dependencies:
"semver" "^6.0.0"
"md5@^2.3.0":
"integrity" "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g=="
"resolved" "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz"
"version" "2.3.0"
dependencies:
"charenc" "0.0.2"
"crypt" "0.0.2"
"is-buffer" "~1.1.6"
"media-typer@0.3.0":
"integrity" "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
"resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"