| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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,
- })
- })
|