const handleError = require('../utils/handleError') const response = require('../utils/responseHandler') const userModel = require('../model/user.model') const { validate } = require('../utils/validation') const { notifWA2 } = require('../utils/notifFunction') const axios = require('../utils/axios') const { addDokumen } = require('../utils/dokumenFunction') const jwt = require('jsonwebtoken') const { TEMPLATE_VERIFIKASI } = require('../utils/constanta') exports.addUserPublic = handleError(async (req, res) => { const { no_laporan, pt_id, nama, email, no_hp, alamat, is_private, isVerify } = req.body const isValid = validate(res, req.body, { no_laporan: 'string', pt_id: 'string', // nama: 'string', // email: 'email', // no_hp: 'string', // alamat: 'string', is_private: { type: 'string', enum: ['true', 'false'] }, }) if (!isValid) return const pt = await axios.get( `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}` ) if (pt.length === 0) return response.error(res, { message: 'pt_id tidak ditemukan', }) let foto_id = null const foto = req.file if (foto) { foto_id = await addDokumen(foto) } let no_hp2 = null let no_verifikasi = null if (no_hp) { no_hp2 = no_hp.substring(0, 1) === '0' ? '62' + no_hp.substring(1) : no_hp no_verifikasi = Math.floor(Math.random() * 1000000) } let level = 1 if ( no_laporan && pt_id && nama && email && no_hp && alamat && is_private && foto_id ) { level = 3 } const user = await userModel.create({ nama, email, no_hp, alamat, isPublic: true, isPrivate: is_private === 'true', foto: foto_id, no_verifikasi, verified: false, }) let notif = null if (isVerify !== 'false' && no_hp) { notif = await notifWA2( TEMPLATE_VERIFIKASI, { nama: nama || 'rahasia', no_hp: no_hp2 }, [ { key: '1', value: 'pt', value_text: pt[0].nama }, { key: '3', value: 'no_verifikasi', value_text: no_verifikasi }, { key: '2', value: 'no_laporan', value_text: no_laporan }, ] ) } const accessToken = jwt.sign( { _id: user._id, no_laporan, level, }, process.env.SECRET, { expiresIn: '30m', } ) data = { token: `Bearer ${accessToken}`, } if (notif) data.no_hp = no_hp && notif[0].status == 'success' ? true : false return response.success(res, { data, message: 'Berhasil menambah user', }) }) exports.get = handleError((req, res) => { const user = req.user return response.success(res, { message: 'Berhasil mengambil data user', data: user, }) })