first commit
This commit is contained in:
64
server/google/googleapi.js
Normal file
64
server/google/googleapi.js
Normal 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
59
server/index.js
Normal 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}`)
|
||||
})
|
||||
})
|
||||
131
server/models/users_model.js
Normal file
131
server/models/users_model.js
Normal 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 };
|
||||
134
server/routes/login_router.js
Normal file
134
server/routes/login_router.js
Normal 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;
|
||||
Reference in New Issue
Block a user