const handleError = require('../../utils/v1/handleError') const response = require('../../utils/responseHandler') const userModel = require('../../model/user.model') const { validate } = require('../../utils/v1/validation') const { addDokumen } = require('../../utils/dokumenFunction') const jwt = require('jsonwebtoken') const { TEMPLATE_VERIFIKASI, TRUE, FALSE } = require('../../utils/constanta') const pddiktiService = require('../../services/v2/pddikti.service') 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', is_private: { type: 'string', enum: [TRUE, FALSE] }, }) if (!isValid) return const pt = await pddiktiService.getPT(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) { pddiktiService.whatsapp( 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 }, ] ).catch() } const accessToken = jwt.sign( { _id: user._id, no_laporan, level, }, process.env.SRU51, { expiresIn: '30m', } ) data = { token: `Bearer ${accessToken}`, } 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, }) })