first commit

This commit is contained in:
kicap1992
2022-04-15 13:59:42 +08:00
commit d82096d5e5
18 changed files with 12056 additions and 0 deletions

View File

@ -0,0 +1,64 @@
const fs = require('fs');
const { google } = require('googleapis');
// folder id
// const pengirim_folder_id = process.env.PENGIRIM_FOLDER_ID;
module.exports = {
uploadFile : async function uploadFile(fileName, filePath,folderId, message) {
try {
const auth = await new google.auth.GoogleAuth({
keyFile: './server/googlekey.json',
scopes: ['https://www.googleapis.com/auth/drive']
})
const drive = google.drive({ version: 'v3', auth });
const fileMetadata = {
name: fileName ,
parents: [folderId]
};
const media = {
mimeType: 'image/jpeg',
body: fs.createReadStream(filePath) // file path
};
// check if file exist
const file = await drive.files.list({
q: `name = '${fileName}' and '${folderId}' in parents`
});
let response
if (file.data.files.length > 0) {
// delete file
await drive.files.delete({
fileId: file.data.files[0].id
})
// upload file
response = await drive.files.create({
resource: fileMetadata,
media: media,
fields: 'id'
})
} else {
// upload file
response = await drive.files.create({
resource: fileMetadata,
media: media,
fields: 'id'
})
}
// console.log(filePath)
// console.log('ini berjalan '+fileName)
console.log(message)
return response.data.id;
} catch (error) {
console.log('ini error')
return error;
}
}
}

59
server/index.js Normal file
View File

@ -0,0 +1,59 @@
const express = require('express')
const next = require('next')
const mongoose = require('mongoose');
const formData = require('express-form-data');
const cors = require('cors');
const port = parseInt(process.env.PORT) || 3001
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
// require('../dotenv/config')
app.prepare().then(() => {
const server = express()
// middleware
server.use(formData.parse());
server.use(express.json());
server.use(express.urlencoded({ extended: true }));
server.options('*', cors());
server.use(cors());
// import routes
const login_router = require('./routes/login_router');
// use routes
server.use('/login', login_router);
// connect to mongodb
mongoose.connect(process.env.DB_CONNECTION, { useNewUrlParser: true, useUnifiedTopology: true, family: 4})
let db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('connected to mongodb');
})
server.get('/api/shows', (req, res) => {
return res.end('Hello World')
});
server.all('*', (req, res) => {
return handle(req, res)
})
server.listen(port, (err) => {
if (err) throw err
// console.log(`ini dia ${process.env.DB_CONNECTION}`)
console.log(`> Ready on http://localhost:${port}`)
})
})

View File

@ -0,0 +1,131 @@
// create mongoose schema
const mongoose = require('mongoose');
const pengirimSchema = new mongoose.Schema({
email: {
type: String,
required: true,
unique: true
},
no_telp: {
type: String,
required: true,
length: [9, 13],
unique: true
},
nama: {
type: String,
required: true
},
alamat: {
type: String,
required: true
},
photo_url: {
type: String,
// required: true
},
created_at: {
type: Date,
default: Date.now
},
updated_at: {
type: Date,
default: Date.now
}
});
const kurirSchema = new mongoose.Schema({
nik : {
type: String,
required: true,
unique: true,
length: [16, 16]
},
nama: {
type: String,
required: true
},
email: {
type: String,
required: true,
unique: true
},
no_telp: {
type: String,
required: true,
length: [9, 13],
unique: true
},
alamat: {
type: String,
required: true
},
no_kenderaan:{
type: String,
required: true,
},
status : {
type: String,
required: true,
default: 'Evaluasi'
},
photo_url: {
type: String,
// required: true
},
kenderaan_url:{
type: String,
// required: true
},
ktp_url:{
type: String,
// required: true
},
ktp_holding_url:{
type: String,
// required: true
},
created_at: {
type: Date,
default: Date.now
},
updated_at: {
type: Date,
default: Date.now
},
});
const loginUserSchema = new mongoose.Schema({
username: {
type: String,
required: true,
},
password: {
type: String,
required: true,
},
role: {
type: String,
required: true,
},
_idnya :{
type: mongoose.Schema.Types.ObjectId,
required: true,
},
created_at: {
type: Date,
default: Date.now
},
updated_at: {
type: Date,
default: Date.now
}
});
const pengirimModel = mongoose.model('tb_pengirim', pengirimSchema, 'tb_pengirim');
const kurirModel = mongoose.model('tb_kurir', kurirSchema, 'tb_kurir');
const loginUserModel = mongoose.model('tb_login', loginUserSchema, 'tb_login');
module.exports = { pengirimModel, kurirModel, loginUserModel };

View File

@ -0,0 +1,134 @@
//create express router
const express = require('express');
const router = express.Router();
const { pengirimModel, 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;
// crate get
router.get('/', async (req, res) => {
console.log(await googlenya.uploadFile('hehehehhe'))
res.send('sini dia');
})
//create get for daftar
router.post('/daftar', async (req, res) => {
try {
// console.log(req)
role = req.body.role;
let responsenya;
if (role == 'pengirim') {
// console.log("ini untuk pengirim");
// cek if req.body.no_telp is exist on database return true or false
let isExist = await pengirimModel.findOne({ no_telp: req.body.no_telp });
if (isExist) {
res.status(400).send({ message: 'No Telpon Sudah Terdaftar' });
return;
}
// check if req.body.email is exist on database return true or false
let isExistEmail = await pengirimModel.findOne({ email: req.body.email });
if (isExistEmail) {
res.status(400).send({ message: 'Email Sudah Terdaftar' });
return;
}
let new_pengirim = new pengirimModel(req.body);
// add photo_url to pengirim
// check if files.photo exist
if (req.files.photo) {
let id_photo = await googlenya.uploadFile(new_pengirim._id + ".jpg", req.files.photo.path, pengirim_folder_id ,"ini photo pengirim");
new_pengirim.photo_url = `https://drive.google.com/uc?export=view&id=${id_photo}`;
}
// console.log(new_pengirim);
// console.log(pengirim_folder_id)
await new_pengirim.save();
responsenya = new_pengirim;
} else if (role == 'kurir') {
// check if req.body.nik is exists
let isExist = await kurirModel.findOne({ nik: req.body.nik });
if (isExist) {
res.status(400).send({
status: false,
message: 'NIK Sudah Terdaftar'
});
return;
}
// check if req.body.no_telp is exists
let isExist2 = await kurirModel.findOne({ no_telp: req.body.no_telp });
if (isExist2) {
res.status(400).send({
status: false,
message: 'No Telpon Sudah Terdaftar'
});
return;
}
// check if req.body.email is exists
let isExist3 = await kurirModel.findOne({ email: req.body.email });
if (isExist3) {
res.status(400).send({
status: false,
message: 'Email Sudah Terdaftar'
});
return;
}
// check if req.files.photo and req.files.ktp_photo and req.files.ktp_holding_photo and req.files.kenderaan_photo exist
if (!req.files.photo || !req.files.ktp_photo || !req.files.ktp_holding_photo || !req.files.kenderaan_photo) {
res.status(400).send({
status: false,
message: 'File tidak boleh kosong'
});
return;
}
let new_kurir = new kurirModel(req.body);
// add photo_url to new_kurir
let id_photo = googlenya.uploadFile(new_kurir._id + ".jpg", req.files.photo.path, kurir_folder_id, "ini photo kurir");
// add ktp_url to new_kurir
let id_ktp = googlenya.uploadFile("ktp_"+new_kurir._id + ".jpg", req.files.ktp_photo.path, ktp_kurir_folder_id, "ini ktp kurir");
// add ktp_holding_url to new_kurir
let id_ktp_holding = googlenya.uploadFile("ktp_holding_"+new_kurir._id + ".jpg", req.files.ktp_holding_photo.path, ktp_holding_kurir_folder_id, "ini ktp holding kurir");
// add kenderaan_url to kurir
let id_kenderaan = googlenya.uploadFile("kenderaan_"+new_kurir._id + ".jpg", req.files.kenderaan_photo.path, kenderaan_kurir_folder_id, "ini kenderaan kurir");
new_kurir.photo_url = `https://drive.google.com/uc?export=view&id=${await id_photo}`
new_kurir.ktp_url = `https://drive.google.com/uc?export=view&id=${await id_ktp}`
new_kurir.ktp_holding_url = `https://drive.google.com/uc?export=view&id=${await id_ktp_holding}`
new_kurir.kenderaan_url = `https://drive.google.com/uc?export=view&id=${await id_kenderaan}`
console.log(new_kurir)
await new_kurir.save();
responsenya = new_kurir;
}
res.send({ status: true, data: responsenya });
} catch (error) {
res.status(500).send({ status: false, data: error });
}
// res.send('sini untuk daftar');
})
module.exports = router;