user.controller.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. const handleError = require('../utils/handleError')
  2. const response = require('../utils/responseHandler')
  3. const userModel = require('../model/user.model')
  4. const { validate } = require('../utils/validation')
  5. const { notifWA2 } = require('../utils/notifFunction')
  6. const axios = require('../utils/axios')
  7. const { addDokumen } = require('../utils/dokumenFunction')
  8. const jwt = require('jsonwebtoken')
  9. exports.addUserPublic = handleError(async (req, res) => {
  10. const { no_laporan, pt_id, nama, email, no_hp, alamat, is_private } = req.body
  11. const isValid = validate(res, req.body, {
  12. no_laporan: 'string',
  13. pt_id: 'string',
  14. nama: 'string',
  15. email: 'email',
  16. no_hp: 'string',
  17. alamat: 'string',
  18. is_private: { type: 'string', enum: ['true', 'false'] },
  19. })
  20. if (!isValid) return
  21. const pt = await axios.get(
  22. `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}`
  23. )
  24. if (pt.length === 0)
  25. return response.error(res, {
  26. message: 'pt_id tidak ditemukan',
  27. })
  28. const foto = req.file
  29. if (!foto) {
  30. return response.error(res, {
  31. message: 'foto harus ada',
  32. })
  33. }
  34. const foto_id = await addDokumen(foto)
  35. const no_verifikasi = Math.floor(Math.random() * 1000000)
  36. const user = await userModel.create({
  37. nama,
  38. email,
  39. no_hp,
  40. alamat,
  41. isPublic: true,
  42. isPrivate: is_private === 'true',
  43. foto: foto_id,
  44. no_verifikasi,
  45. verified: false,
  46. })
  47. await notifWA2('37a9ccba-e1bc-4d02-86e0-3be4c718af2a', { nama, no_hp }, [
  48. { key: '1', value: 'pt', value_text: pt[0].nama },
  49. { key: '3', value: 'no_verifikasi', value_text: no_verifikasi },
  50. { key: '2', value: 'no_laporan', value_text: no_laporan },
  51. ])
  52. const accessToken = jwt.sign(
  53. { _id: user._id, no_laporan },
  54. process.env.SECRET,
  55. {
  56. expiresIn: '5m',
  57. }
  58. )
  59. const data = {
  60. token: `Bearer ${accessToken}`,
  61. }
  62. return response.success(res, {
  63. data: data,
  64. message: 'Berhasil menambah user',
  65. })
  66. })
  67. exports.get = handleError((req, res) => {
  68. const user = req.user
  69. return response.success(res, {
  70. message: 'Berhasil mengambil data user',
  71. data: user,
  72. })
  73. })