user.controller.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. const handleError = require('../../utils/v1/handleError')
  2. const response = require('../../utils/responseHandler')
  3. const userModel = require('../../model/user.model')
  4. const { validate } = require('../../utils/v1/validation')
  5. const { addDokumen } = require('../../utils/dokumenFunction')
  6. const jwt = require('jsonwebtoken')
  7. const { TEMPLATE_VERIFIKASI, TRUE, FALSE } = require('../../utils/constanta')
  8. const pddiktiService = require('../../services/v2/pddikti.service')
  9. exports.addUserPublic = handleError(async (req, res) => {
  10. const { no_laporan, pt_id, nama, email, no_hp, alamat, is_private, isVerify } = req.body
  11. const isValid = validate(res, req.body, {
  12. no_laporan: 'string',
  13. pt_id: 'string',
  14. is_private: { type: 'string', enum: [TRUE, FALSE] },
  15. })
  16. if (!isValid) return
  17. const pt = await pddiktiService.getPT(pt_id)
  18. if (pt.length === 0)
  19. return response.error(res, {
  20. message: 'pt_id tidak ditemukan',
  21. })
  22. let foto_id = null
  23. const foto = req.file
  24. if (foto) {
  25. foto_id = await addDokumen(foto)
  26. }
  27. let no_hp2 = null
  28. let no_verifikasi = null
  29. if (no_hp) {
  30. no_hp2 = no_hp.substring(0, 1) === '0' ? '62' + no_hp.substring(1) : no_hp
  31. no_verifikasi = Math.floor(Math.random() * 1000000)
  32. }
  33. let level = 1
  34. if (
  35. no_laporan &&
  36. pt_id &&
  37. nama &&
  38. email &&
  39. no_hp &&
  40. alamat &&
  41. is_private &&
  42. foto_id
  43. ) {
  44. level = 3
  45. }
  46. const user = await userModel.create({
  47. nama,
  48. email,
  49. no_hp,
  50. alamat,
  51. isPublic: true,
  52. isPrivate: is_private === TRUE,
  53. foto: foto_id,
  54. no_verifikasi,
  55. verified: false,
  56. })
  57. let notif = null
  58. if (isVerify !== FALSE && no_hp) {
  59. pddiktiService.whatsapp(
  60. TEMPLATE_VERIFIKASI,
  61. [{ nama: nama || 'rahasia', no_hp: no_hp2 }],
  62. [
  63. { key: '1', value: 'pt', value_text: pt[0].nama },
  64. { key: '3', value: 'no_verifikasi', value_text: no_verifikasi },
  65. { key: '2', value: 'no_laporan', value_text: no_laporan },
  66. ]
  67. ).catch()
  68. }
  69. const accessToken = jwt.sign(
  70. {
  71. _id: user._id,
  72. no_laporan,
  73. level,
  74. },
  75. process.env.SRU51,
  76. {
  77. expiresIn: '30m',
  78. }
  79. )
  80. data = {
  81. token: `Bearer ${accessToken}`,
  82. }
  83. return response.success(res, {
  84. data,
  85. message: 'Berhasil menambah user',
  86. })
  87. })
  88. exports.get = handleError((req, res) => {
  89. const user = req.user
  90. return response.success(res, {
  91. message: 'Berhasil mengambil data user',
  92. data: user,
  93. })
  94. })