Initial commit
This commit is contained in:
165
controllers/DummyController.js
Normal file
165
controllers/DummyController.js
Normal file
@ -0,0 +1,165 @@
|
||||
const moment = require('moment');
|
||||
const Validator = require('validatorjs');
|
||||
const Helper = require('../library/LibHelper');
|
||||
const DummyModels = require('../models/DummyModels');
|
||||
const response = require('../config/response');
|
||||
const LibMail = require('../library/LibMail');
|
||||
|
||||
Validator.useLang('en');
|
||||
|
||||
class DummyController {
|
||||
|
||||
async logging(req, res) {
|
||||
let apiRes = {}
|
||||
const now = moment().unix();
|
||||
try {
|
||||
apiRes.meta = response[201].meta;
|
||||
|
||||
const insLog = {
|
||||
ip: req.ip,
|
||||
ips: JSON.stringify([...req.ips]),
|
||||
// protocol: req.protocol || null,
|
||||
method: req.method,
|
||||
path: req.path,
|
||||
headers: JSON.stringify({ ...req.headers }),
|
||||
params: JSON.stringify({ ...req.params }),
|
||||
request: JSON.stringify({ ...req.query, ...req.body }),
|
||||
cookies: JSON.stringify({ ...req.cookies }),
|
||||
xhr: req.xhr,
|
||||
response: JSON.stringify(apiRes),
|
||||
crt: now,
|
||||
};
|
||||
await DummyModels.create(insLog);
|
||||
|
||||
return res.status(201).json(apiRes);
|
||||
} catch (e) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[500]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + e.message);
|
||||
|
||||
const insLog = {
|
||||
method: req.method,
|
||||
response: JSON.stringify(apiRes),
|
||||
crt: now,
|
||||
};
|
||||
await DummyModels.create(insLog);
|
||||
|
||||
return res.status(500).json(apiRes);
|
||||
}
|
||||
}
|
||||
|
||||
async distance(req, res) {
|
||||
let apiRes = {};
|
||||
try {
|
||||
const now = moment().unix();
|
||||
|
||||
const { latFrom, lngFrom, latTo, lngTo } = req.query;
|
||||
|
||||
// input validation
|
||||
const input = {
|
||||
latFrom: latFrom,
|
||||
lngFrom: lngFrom,
|
||||
latTo: latTo,
|
||||
lngTo: lngTo,
|
||||
};
|
||||
const rulesInput = {
|
||||
latFrom: 'required|string|max:25',
|
||||
lngFrom: 'required|string|max:25',
|
||||
latTo: 'required|string|max:25',
|
||||
lngTo: 'required|string|max:25',
|
||||
};
|
||||
const isInputValid = new Validator(input, rulesInput);
|
||||
if (isInputValid.fails()) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[422]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + Object.values(isInputValid.errors.all())[0][0]); // get first message
|
||||
return res.status(200).json(apiRes);
|
||||
}
|
||||
|
||||
const respData = {};
|
||||
// round up with precisions digits => 4 == (10000)
|
||||
// reference: https://stackoverflow.com/questions/11832914/how-to-round-to-at-most-2-decimal-places-if-necessary
|
||||
// const precisionDigits = 10000;
|
||||
|
||||
// distance == miles
|
||||
// const distance = Helper.haversineGreatCircleDistance(latFrom, lngFrom, latTo, lngTo, Helper.EARTH_RADIUS_MILES);
|
||||
// respData.distance_km = Helper.milesToKm(distance);
|
||||
// respData.distance_miles = Helper.milesToMiles(distance);
|
||||
// respData.distance_meters = Helper.milesToMeters(distance);
|
||||
|
||||
// distance == km
|
||||
const distance = Helper.haversineGreatCircleDistance(latFrom, lngFrom, latTo, lngTo, Helper.EARTH_RADIUS_KM);
|
||||
respData.distance_km = Helper.kmToKm(distance);
|
||||
respData.distance_miles = Helper.kmToMiles(distance);
|
||||
respData.distance_meters = Helper.kmToMeters(distance);
|
||||
|
||||
// distance == meters
|
||||
// const distance = Helper.haversineGreatCircleDistance(latFrom, lngFrom, latTo, lngTo, Helper.EARTH_RADIUS_M);
|
||||
// respData.distance_km = Helper.metersToKm(distance);
|
||||
// respData.distance_miles = Helper.metersToMiles(distance);
|
||||
// respData.distance_meters = Helper.metersToMeters(distance);
|
||||
|
||||
// success response
|
||||
apiRes = JSON.parse(JSON.stringify(response[200]));
|
||||
apiRes.meta.message = 'success get distance';
|
||||
apiRes.data = respData;
|
||||
return res.status(200).json(apiRes);
|
||||
} catch (e) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[500]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + e.message);
|
||||
return res.status(500).json(apiRes);
|
||||
}
|
||||
}
|
||||
|
||||
async sendEmail(req, res) {
|
||||
let apiRes = {};
|
||||
try {
|
||||
const now = moment().unix();
|
||||
|
||||
const { subject, to } = req.body;
|
||||
|
||||
// input validation
|
||||
const input = {
|
||||
subject,
|
||||
to
|
||||
};
|
||||
const rulesInput = {
|
||||
subject: 'required|string|max:125',
|
||||
to: 'required|string|max:255',
|
||||
};
|
||||
const isInputValid = new Validator(input, rulesInput);
|
||||
if (isInputValid.fails()) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[422]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + Object.values(isInputValid.errors.all())[0][0]); // get first message
|
||||
return res.status(200).json(apiRes);
|
||||
}
|
||||
|
||||
const mailData = {
|
||||
pic_name: 'Rafif Mulia',
|
||||
pic_mail: 'rafifrest@gmail.com',
|
||||
z_name: 'REST-01',
|
||||
z_type_name: 'Warehousing',
|
||||
z_workflow_name: 'Parking',
|
||||
shiptocode: '12330',
|
||||
z_fulladdress: 'Jl. Perdagangan No.101, RT.4/RW.7, Bintaro, Kec. Pesanggrahan, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12330',
|
||||
v_nopol: 'B 3633 EVV',
|
||||
da_name: 'Chienghou Zou',
|
||||
da_phone: '+62 8128 8789 878',
|
||||
};
|
||||
const resp = await LibMail.sendVhcSpawnZoneMail(subject, to, mailData);
|
||||
|
||||
// success response
|
||||
apiRes = JSON.parse(JSON.stringify(response[200]));
|
||||
apiRes.meta.message = 'success send email';
|
||||
apiRes.data = resp;
|
||||
return res.status(200).json(apiRes);
|
||||
} catch (e) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[500]));
|
||||
apiRes.meta.message += Helper.setErrMsg(': ' + e.message);
|
||||
return res.status(500).json(apiRes);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const object = new DummyController();
|
||||
|
||||
module.exports = object;
|
||||
Reference in New Issue
Block a user