pddikti.service.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. const axios = require('../../utils/axios')
  2. const coba = require('../../utils/coba')
  3. const qs = require('qs')
  4. const { PRODUCTION } = require('../../utils/constanta')
  5. /**
  6. *
  7. * @param id
  8. * @param query
  9. * @returns {Promise<*>}
  10. */
  11. exports.getPT = (id, query = {}) => {
  12. let token
  13. let url = 'https://api.kemdiktisaintek.go.id:8243/pddikti/1.2/pt'
  14. if (coba.decrypt(process.env.CXQSB) === PRODUCTION) {
  15. url = 'https://api.kemdiktisaintek.go.id:8445/pddikti/1.2/pt'
  16. token = coba.decrypt(process.env.BEAT2)
  17. }
  18. const { search, pembina } = query
  19. if (id) url += '/' + id
  20. if (Object.keys(query).length) {
  21. url += '?'
  22. const parseUrl = []
  23. if (search) parseUrl.push(`q=${search}`)
  24. if (pembina) parseUrl.push(`pembina=${pembina}`)
  25. url += parseUrl.join('&')
  26. }
  27. return axios.get(url, token)
  28. }
  29. /**
  30. *
  31. * @param id
  32. * @param query
  33. * @returns {Promise<*>}
  34. */
  35. exports.getPembina = (id, query = {}) => {
  36. let token
  37. let url = 'https://api.kemdiktisaintek.go.id:8243/pddikti/1.2/lembaga-non-sp'
  38. if (coba.decrypt(process.env.CXQSB) === PRODUCTION) {
  39. url = 'https://api.kemdiktisaintek.go.id:8445/pddikti/1.2/lembaga-non-sp'
  40. token = coba.decrypt(process.env.BEAT2)
  41. }
  42. const { search } = query
  43. if (Object.keys(query).length) {
  44. url += '?'
  45. const parseURL = []
  46. if (search) parseURL.push(`q=${search}`)
  47. url += parseURL.join('&')
  48. }
  49. return axios.get(url, token)
  50. }
  51. const loginDev = ({ username, password }) =>
  52. new Promise((resolve) => {
  53. const data = [
  54. {
  55. id: '28DB23AE-2976-47E0-9410-241A11EE1F88',
  56. username: 'rizqevo@outlook.com',
  57. password: 'kmnjhbvg',
  58. peran: [
  59. {
  60. peran: {
  61. id: 2027,
  62. },
  63. },
  64. ],
  65. },
  66. {
  67. id: '52D3FB82-1578-498E-9C09-3AE13E4DBC61',
  68. username: 'sugiyanto@gmail.com',
  69. password: 'qwerty',
  70. peran: [
  71. {
  72. peran: {
  73. id: 2024,
  74. },
  75. },
  76. ],
  77. },
  78. {
  79. id: '447C71BC-37F8-4D14-94AD-548E6B19400F',
  80. username: 'sugiyanti@gmail.com',
  81. password: 'asdfgh',
  82. peran: [
  83. {
  84. peran: {
  85. id: 2025,
  86. },
  87. },
  88. ],
  89. },
  90. {
  91. id: '03B042F2-68EA-44AD-BA07-3E0B4E07F7E8',
  92. username: 'satyagama@gmail.com',
  93. password: 'zxcvbn',
  94. peran: [
  95. {
  96. peran: {
  97. id: 2026,
  98. },
  99. },
  100. ],
  101. },
  102. ]
  103. const user = data.find(
  104. (e) => e.username === username && e.password === password
  105. )
  106. if (user) {
  107. resolve(user)
  108. } else {
  109. resolve({
  110. code: 400,
  111. message: 'Username atau password salah',
  112. })
  113. }
  114. })
  115. /**
  116. *
  117. * @param username
  118. * @param password
  119. * @returns {Promise<*>}
  120. */
  121. exports.login = ({ username, password }) => {
  122. let token
  123. const domain = 'api.kemdiktisaintek.go.id'
  124. let url = `https://${domain}:8243/manakses/2.0/auth`
  125. if (coba.decrypt(process.env.CXQSB) === PRODUCTION) {
  126. url = `https://${domain}:8445/manakses/2.0/auth`
  127. token = coba.decrypt(process.env.AFA1T)
  128. } else {
  129. // return loginDev({ username, password })
  130. }
  131. return axios.post(
  132. url,
  133. qs.stringify({
  134. username,
  135. password,
  136. }),
  137. token,
  138. {
  139. 'Content-Type': 'application/x-www-form-urlencoded',
  140. }
  141. )
  142. }
  143. /**
  144. *
  145. * @param ptKode
  146. * @param noSanksi
  147. * @param fromDate
  148. * @param pelanggaran
  149. * @param terimaSanksi
  150. * @returns {Promise<*>}
  151. */
  152. exports.updatePDDIKTI = ({
  153. ptKode,
  154. noSanksi,
  155. fromDate,
  156. levelSanksi,
  157. terimaSanksi,
  158. }) => {
  159. let token
  160. let url = `https://api.kemdiktisaintek.go.id:8243/pddikti/1.2/pt/${ptKode}/sanksi`
  161. if (coba.decrypt(process.env.CXQSB) === PRODUCTION) {
  162. url = `https://api.kemdiktisaintek.go.id:8445/pddikti/1.2/pt/${ptKode}/sanksi`
  163. token = coba.decrypt(process.env.BEAT2)
  164. }
  165. return axios.post(
  166. url,
  167. {
  168. noSanksi: noSanksi,
  169. tmtBerlaku: fromDate,
  170. tstBerlaku: terimaSanksi,
  171. idJenisSanksi: levelSanksi,
  172. alasan: 'Penetapan sanksi',
  173. },
  174. token
  175. )
  176. }
  177. /**
  178. *
  179. * @param templateId
  180. * @param data
  181. * @param contacts
  182. * @param buttons
  183. * @returns {Promise<*>}
  184. */
  185. exports.whatsapp = (templateId, contacts, data, buttons = []) => {
  186. let token
  187. let url = 'https://api.kemdiktisaintek.go.id:8243/qontak/1.0/send'
  188. if (coba.decrypt(process.env.CXQSB) === PRODUCTION) {
  189. url = 'https://api.kemdiktisaintek.go.id:8445/qontak/1.0/send'
  190. token = coba.decrypt(process.env.R3AOP)
  191. }
  192. return axios.post(
  193. url,
  194. {
  195. templateId,
  196. contacts,
  197. body: data,
  198. buttons: buttons.map((e, index) => ({ ...e, index })),
  199. },
  200. token
  201. )
  202. }