165 lines
5.1 KiB
JavaScript
165 lines
5.1 KiB
JavaScript
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; |