selectboxHandler.cls 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502
  1. /*------------------------------------------------------------------------
  2. File : queryHandler
  3. Purpose :
  4. Syntax :
  5. Description :
  6. Author(s) : walter.riechsteiner
  7. Created : Wed Jul 10 18:09:37 CEST 2024
  8. Notes :
  9. ----------------------------------------------------------------------*/
  10. USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
  11. USING OpenEdge.Net.HTTP.IHttpRequest FROM PROPATH.
  12. USING System.Drawing.CharacterRange FROM ASSEMBLY.
  13. USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
  14. CLASS utilities.selectboxHandler:
  15. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  16. DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
  17. DEFINE TEMP-TABLE ttSelect
  18. FIELD ind AS INTEGER SERIALIZE-HIDDEN
  19. FIELD cValue AS CHARACTER SERIALIZE-NAME 'value'
  20. FIELD cLabel AS CHARACTER SERIALIZE-NAME 'label'.
  21. DEFINE VARIABLE httSelect AS HANDLE NO-UNDO.
  22. DEFINE VARIABLE httSelectBuff AS HANDLE NO-UNDO.
  23. DEFINE TEMP-TABLE ttParam
  24. FIELD company AS CHARACTER
  25. FIELD user_name AS CHARACTER
  26. FIELD table_name AS CHARACTER
  27. FIELD field_name AS CHARACTER
  28. FIELD language_id AS INTEGER
  29. FIELD field_value AS CHARACTER.
  30. DEFINE VARIABLE httParam AS HANDLE NO-UNDO.
  31. DEFINE VARIABLE httParamBuff AS HANDLE NO-UNDO.
  32. /*------------------------------------------------------------------------------
  33. Purpose:
  34. Notes:
  35. ------------------------------------------------------------------------------*/
  36. METHOD PUBLIC HANDLE getSelboxCompany(
  37. INPUT cFileName AS CHARACTER
  38. ):
  39. DEFINE VARIABLE cttBufferName AS CHARACTER NO-UNDO.
  40. DEFINE VARIABLE httSelect AS HANDLE NO-UNDO.
  41. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  42. cttBufferName = SUBSTITUTE('&1_company', cFileName).
  43. CREATE TEMP-TABLE httSelect.
  44. httSelect:ADD-NEW-FIELD('value', 'character').
  45. httSelect:ADD-NEW-FIELD('label', 'character').
  46. httSelect:TEMP-TABLE-PREPARE (cttBufferName).
  47. httBuffer = httSelect:DEFAULT-BUFFER-HANDLE.
  48. FOR EACH companies NO-LOCK
  49. WHERE companies.active :
  50. httBuffer:BUFFER-CREATE ().
  51. ASSIGN
  52. httBuffer:BUFFER-FIELD('value'):BUFFER-VALUE = companies.company
  53. httBuffer:BUFFER-FIELD('label'):BUFFER-VALUE = companies.company_name.
  54. END.
  55. RETURN httBuffer.
  56. END METHOD.
  57. /*------------------------------------------------------------------------------
  58. Purpose:
  59. Notes:
  60. ------------------------------------------------------------------------------*/
  61. METHOD PUBLIC HANDLE getSelboxLanguage(
  62. INPUT cFileName AS CHARACTER
  63. ):
  64. DEFINE VARIABLE cttBufferName AS CHARACTER NO-UNDO.
  65. DEFINE VARIABLE httSelect AS HANDLE NO-UNDO.
  66. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  67. cttBufferName = SUBSTITUTE('&1_language_id', cFileName).
  68. CREATE TEMP-TABLE httSelect.
  69. httSelect:ADD-NEW-FIELD('value', 'integer' ).
  70. httSelect:ADD-NEW-FIELD('label', 'character' ).
  71. httSelect:TEMP-TABLE-PREPARE ('cttBufferName').
  72. httBuffer = httSelect:DEFAULT-BUFFER-HANDLE.
  73. FOR EACH languages NO-LOCK:
  74. httBuffer:BUFFER-CREATE ().
  75. ASSIGN
  76. httBuffer:BUFFER-FIELD('value'):BUFFER-VALUE = languages.language_id
  77. httBuffer:BUFFER-FIELD('label'):BUFFER-VALUE = languages.language_name.
  78. END.
  79. RETURN httBuffer.
  80. END METHOD.
  81. /*------------------------------------------------------------------------------
  82. Purpose:
  83. Notes:
  84. ------------------------------------------------------------------------------*/
  85. METHOD PUBLIC HANDLE getSelboxTables(
  86. INPUT cFileName AS CHARACTER
  87. ):
  88. DEFINE VARIABLE cttBufferName AS CHARACTER NO-UNDO.
  89. DEFINE VARIABLE httSelect AS HANDLE NO-UNDO.
  90. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  91. cttBufferName = SUBSTITUTE('&1_table_name', cFileName).
  92. CREATE TEMP-TABLE httSelect.
  93. httSelect:ADD-NEW-FIELD('value', 'character' ).
  94. httSelect:ADD-NEW-FIELD('label', 'character' ).
  95. httSelect:TEMP-TABLE-PREPARE (cttBufferName).
  96. httBuffer = httSelect:DEFAULT-BUFFER-HANDLE.
  97. httBuffer:BUFFER-CREATE ().
  98. ASSIGN
  99. httBuffer:BUFFER-FIELD('value'):BUFFER-VALUE = 'table'
  100. httBuffer:BUFFER-FIELD('label'):BUFFER-VALUE = 'Default-Value (table)'.
  101. FOR EACH Ge_MIS._File NO-LOCK
  102. WHERE NOT Ge_MIS._File._File-Name BEGINS '_'
  103. AND NOT Ge_MIS._File._File-Name BEGINS 'SYS':
  104. httBuffer:BUFFER-CREATE ().
  105. ASSIGN
  106. httBuffer:BUFFER-FIELD('value'):BUFFER-VALUE = Ge_MIS._File._File-Name
  107. httBuffer:BUFFER-FIELD('label'):BUFFER-VALUE = Ge_MIS._File._File-Name.
  108. END.
  109. FOR EACH FRAMEWORK._File NO-LOCK
  110. WHERE NOT FRAMEWORK._File._File-Name BEGINS '_'
  111. AND NOT FRAMEWORK._File._File-Name BEGINS 'SYS':
  112. httBuffer:BUFFER-CREATE ().
  113. ASSIGN
  114. httBuffer:BUFFER-FIELD('value'):BUFFER-VALUE = FRAMEWORK._File._File-Name
  115. httBuffer:BUFFER-FIELD('label'):BUFFER-VALUE = FRAMEWORK._File._File-Name.
  116. END.
  117. RETURN httBuffer.
  118. END METHOD.
  119. /*------------------------------------------------------------------------------
  120. Purpose:
  121. Notes:
  122. ------------------------------------------------------------------------------*/
  123. METHOD PUBLIC HANDLE getSelboxUsers(
  124. INPUT cFileName AS CHARACTER
  125. ):
  126. DEFINE VARIABLE cttBufferName AS CHARACTER NO-UNDO.
  127. DEFINE VARIABLE httSelect AS HANDLE NO-UNDO.
  128. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  129. cttBufferName = SUBSTITUTE('&1_user_name', cFileName).
  130. CREATE TEMP-TABLE httSelect.
  131. httSelect:ADD-NEW-FIELD('value', 'character' ).
  132. httSelect:ADD-NEW-FIELD('label', 'character' ).
  133. httSelect:TEMP-TABLE-PREPARE (cttBufferName).
  134. httBuffer = httSelect:DEFAULT-BUFFER-HANDLE.
  135. FOR EACH users NO-LOCK:
  136. httBuffer:BUFFER-CREATE ().
  137. ASSIGN
  138. httBuffer:BUFFER-FIELD('value'):BUFFER-VALUE = users.user_name
  139. httBuffer:BUFFER-FIELD('label'):BUFFER-VALUE = users.display_name.
  140. END.
  141. RETURN httBuffer.
  142. END METHOD.
  143. /*------------------------------------------------------------------------------
  144. Purpose:
  145. Notes:
  146. ------------------------------------------------------------------------------*/
  147. METHOD PUBLIC VOID getSelectBoxCountry(
  148. INPUT iLanguage_Id AS INTEGER ,
  149. INPUT cFile_Name AS CHARACTER ,
  150. OUTPUT oJsonBoxEval AS JsonArray
  151. ):
  152. DEFINE VARIABLE cttBufferName AS CHARACTER NO-UNDO.
  153. DEFINE VARIABLE httSelect AS HANDLE NO-UNDO.
  154. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  155. cttBufferName = SUBSTITUTE('&1_country_code', cFile_Name).
  156. CREATE TEMP-TABLE httSelect.
  157. httSelect:ADD-NEW-FIELD('value', 'character' ).
  158. httSelect:ADD-NEW-FIELD('label', 'character' ).
  159. httSelect:TEMP-TABLE-PREPARE (cttBufferName).
  160. httBuffer = httSelect:DEFAULT-BUFFER-HANDLE.
  161. FOR EACH countries NO-LOCK
  162. WHERE countries.language_id = iLanguage_id:
  163. httBuffer:BUFFER-CREATE ().
  164. ASSIGN
  165. httBuffer:BUFFER-FIELD('value'):BUFFER-VALUE = countries.country_code
  166. httBuffer:BUFFER-FIELD('label'):BUFFER-VALUE = countries.country_name.
  167. END.
  168. /* httBuffer:SERIALIZE-NAME = 'cFileName'.*/
  169. oJsonBoxEval = NEW JsonArray().
  170. httBuffer:WRITE-JSON('JsonArray', oJsonBoxEval).
  171. RETURN.
  172. END METHOD.
  173. /*------------------------------------------------------------------------------
  174. Purpose:
  175. Notes:
  176. ------------------------------------------------------------------------------*/
  177. METHOD PUBLIC VOID getSelectBoxData(
  178. INPUT oJsonIdent AS JsonObject,
  179. INPUT cField_Name AS CHARACTER,
  180. OUTPUT oJsonBox AS JsonArray
  181. ):
  182. DEFINE VARIABLE httParam AS HANDLE NO-UNDO.
  183. DEFINE VARIABLE httParamBuff AS HANDLE NO-UNDO.
  184. DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
  185. DEFINE VARIABLE httSelect AS HANDLE NO-UNDO.
  186. DEFINE VARIABLE httSelectBuff AS HANDLE NO-UNDO.
  187. DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
  188. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  189. DEFINE VARIABLE cReplace AS CHARACTER NO-UNDO.
  190. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  191. DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
  192. DEFINE VARIABLE ccompany AS CHARACTER NO-UNDO.
  193. DEFINE VARIABLE cuser_name AS CHARACTER NO-UNDO.
  194. DEFINE VARIABLE ilanguage_id AS INTEGER NO-UNDO.
  195. DEFINE VARIABLE ctable_name AS CHARACTER NO-UNDO.
  196. DEFINE VARIABLE oJsonBoxEval AS JsonArray NO-UNDO.
  197. ccompany = oJsonIdent:GetCharacter('company') NO-ERROR.
  198. cuser_name = oJsonIdent:GetCharacter('user_name') NO-ERROR.
  199. ctable_name = oJsonIdent:GetCharacter('file_name') NO-ERROR.
  200. ilanguage_id = oJsonIdent:GetInteger ('language_id') NO-ERROR.
  201. cFileName = ENTRY(1, cField_Name, '_').
  202. cReplace = cFileName + '_'.
  203. cField_Name = REPLACE(cField_Name, cReplace, '').
  204. IF cField_Name = 'country_code' THEN
  205. DO:
  206. getSelectBoxCountry (
  207. INPUT iLanguage_id ,
  208. INPUT cFileName ,
  209. OUTPUT oJsonBoxEval
  210. ).
  211. oJsonBox = oJsonBoxEval.
  212. RETURN.
  213. END.
  214. IF cField_Name = 'salutation_code' THEN
  215. DO:
  216. getSelectBoxSalutation (
  217. INPUT iLanguage_id ,
  218. INPUT cFileName ,
  219. OUTPUT oJsonBoxEval
  220. ).
  221. oJsonBox = oJsonBoxEval.
  222. RETURN.
  223. END.
  224. //
  225. httParam = BUFFER ttParam:HANDLE.
  226. httParamBuff = TEMP-TABLE ttParam:DEFAULT-BUFFER-HANDLE.
  227. //
  228. // Felder der Temptable initial füllen
  229. //
  230. EMPTY TEMP-TABLE ttParam.
  231. EMPTY TEMP-TABLE ttSelect.
  232. CREATE ttParam.
  233. ASSIGN
  234. ttParam.company = ccompany
  235. ttParam.user_name = 'admin'
  236. ttParam.table_name = 'table'
  237. ttParam.field_name = cField_Name
  238. ttParam.language_id = iLanguage_id
  239. .
  240. //
  241. CREATE QUERY hQuery.
  242. hBuffer = BUFFER selections:HANDLE.
  243. hQuery:SET-BUFFERS(hBuffer).
  244. DO ii = 1 TO 4:
  245. // IF hQuery:QUERY-OPEN () THEN hQuery:QUERY-CLOSE ().
  246. FIND FIRST ttParam.
  247. cWhere = ''.
  248. cWhere = cWhere + SUBSTITUTE('WHERE selections.company = &1 AND selections.user_name = &2 ', QUOTER(ttParam.company) , QUOTER(ttParam.user_name) ).
  249. cWhere = cWhere + SUBSTITUTE('AND selections.table_name = &1 AND selections.field_name = &2 ', QUOTER(ttParam.table_name), QUOTER(ttParam.field_name)).
  250. cWhere = cWhere + SUBSTITUTE('AND selections.language_id = &1 ', ttParam.language_id).
  251. cWhere = 'FOR EACH selections NO-LOCK ' + cWhere.
  252. hQuery:QUERY-PREPARE(cWhere).
  253. hQuery:QUERY-OPEN ().
  254. hQuery:GET-FIRST () NO-ERROR.
  255. DO WHILE NOT hQuery:QUERY-OFF-END:
  256. CREATE ttSelect.
  257. ASSIGN
  258. ttSelect.ind = ii
  259. ttSelect.cvalue = hBuffer::field_value
  260. ttSelect.cLabel = hBuffer::field_show
  261. .
  262. hQuery:GET-NEXT () NO-ERROR.
  263. END.
  264. CASE ii:
  265. WHEN 1 THEN
  266. DO:
  267. ASSIGN
  268. ttParam.table_name = cFileName.
  269. END.
  270. WHEN 2 THEN
  271. DO:
  272. IF cuser_name = 'admin' THEN LEAVE.
  273. ASSIGN
  274. ttParam.user_name = cuser_name
  275. ttParam.table_name = 'table'.
  276. END.
  277. WHEN 3 THEN
  278. DO:
  279. ASSIGN
  280. ttParam.user_name = cuser_name
  281. ttParam.table_name = cFileName.
  282. END.
  283. END CASE.
  284. END.
  285. FOR EACH ttSelect
  286. BREAK
  287. BY ttSelect.cValue
  288. BY ttSelect.ind:
  289. IF LAST-OF ( ttSelect.cValue) THEN NEXT.
  290. DELETE ttSelect.
  291. END.
  292. httSelectBuff = TEMP-TABLE ttSelect:DEFAULT-BUFFER-HANDLE.
  293. httSelectBuff:SERIALIZE-NAME = 'cFileName'.
  294. oJsonBox = NEW JsonArray().
  295. httSelectBuff:WRITE-JSON('JsonArray', oJsonBox).
  296. RETURN.
  297. END METHOD.
  298. /*------------------------------------------------------------------------------
  299. Purpose:
  300. Notes:
  301. ------------------------------------------------------------------------------*/
  302. METHOD PUBLIC VOID getSelectBoxSalutation(
  303. INPUT iLanguage_Id AS INTEGER ,
  304. INPUT cFile_Name AS CHARACTER ,
  305. OUTPUT oJsonBoxEval AS JsonArray
  306. ):
  307. DEFINE VARIABLE cttBufferName AS CHARACTER NO-UNDO.
  308. DEFINE VARIABLE httSelect AS HANDLE NO-UNDO.
  309. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  310. cttBufferName = SUBSTITUTE('&1_salutation_code', cFile_Name).
  311. CREATE TEMP-TABLE httSelect.
  312. httSelect:ADD-NEW-FIELD('value', 'character' ).
  313. httSelect:ADD-NEW-FIELD('label', 'character' ).
  314. httSelect:TEMP-TABLE-PREPARE (cttBufferName).
  315. httBuffer = httSelect:DEFAULT-BUFFER-HANDLE.
  316. FOR EACH salutations NO-LOCK
  317. WHERE salutations.language_id = iLanguage_id:
  318. httBuffer:BUFFER-CREATE ().
  319. ASSIGN
  320. httBuffer:BUFFER-FIELD('value'):BUFFER-VALUE = salutations.salutation_code.
  321. httBuffer:BUFFER-FIELD('label'):BUFFER-VALUE = salutations.salutation_display.
  322. END.
  323. /* httBuffer:SERIALIZE-NAME = 'cFileName'.*/
  324. oJsonBoxEval = NEW JsonArray().
  325. httBuffer:WRITE-JSON('JsonArray', oJsonBoxEval).
  326. RETURN.
  327. END METHOD.
  328. /*------------------------------------------------------------------------------
  329. Purpose:
  330. Notes:
  331. ------------------------------------------------------------------------------*/
  332. METHOD PUBLIC HANDLE getUserRoleSelect(
  333. INPUT ipccompany AS CHARACTER
  334. ):
  335. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  336. CREATE BUFFER httBuffer.
  337. httBuffer:ADD-NEW-FIELD ('value', 'CHARACTER').
  338. httBuffer:ADD-NEW-FIELD ('label', 'CHARACTER').
  339. httBuffer:TEMP-TABLE-PREPARE ('users_role').
  340. httBuffer:BUFFER-CREATE().
  341. ASSIGN
  342. httBuffer:BUFFER-FIELD('value'):buffer-value = 'admin'
  343. httBuffer:BUFFER-FIELD('label'):buffer-value = 'admin'.
  344. httBuffer:BUFFER-CREATE().
  345. ASSIGN
  346. httBuffer:BUFFER-FIELD('value'):buffer-value = 'user'
  347. httBuffer:BUFFER-FIELD('label'):buffer-value = 'Benutzer'.
  348. RETURN httBuffer.
  349. END METHOD.
  350. /*------------------------------------------------------------------------------
  351. Purpose:
  352. Notes:
  353. ------------------------------------------------------------------------------*/
  354. METHOD PUBLIC LOGICAL getVariableSelectBoxes(
  355. INPUT oJsonIdent AS JsonObject,
  356. OUTPUT oJsonSelectBoxes AS JsonObject
  357. ):
  358. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO INIT FALSE.
  359. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  360. DEFINE VARIABLE cCompany AS CHARACTER NO-UNDO.
  361. DEFINE VARIABLE cFormId AS CHARACTER NO-UNDO.
  362. DEFINE VARIABLE cFormUser AS CHARACTER NO-UNDO.
  363. DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
  364. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  365. DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
  366. cCompany = oJsonIdent:GetCharacter('company').
  367. cFormId = oJsonIdent:GetCharacter('formId').
  368. cFormUser = oJsonIdent:GetCharacter('formUser').
  369. oJsonSelectBoxes = NEW JsonObject().
  370. FOR EACH selectboxfields NO-LOCK
  371. WHERE selectboxfields.company = ccompany
  372. AND selectboxfields.program = cformId
  373. AND selectboxfields.user_name = cFormUser
  374. AND selectboxfields.boxfields <> '':
  375. DO ii = 1 TO NUM-ENTRIES(selectboxfields.boxfields, ';'):
  376. cFieldName = ENTRY(ii, selectboxfields.boxfields, ';').
  377. cFileName = ENTRY(1, cFieldName, '_').
  378. getSelectBoxData(
  379. INPUT oJsonIdent,
  380. INPUT cFieldName,
  381. OUTPUT oJsonBox
  382. ).
  383. // oJsonBox:WriteFile('C:\TEMP\JsonBox.json', TRUE).
  384. oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
  385. // oJsonSelectBoxes:WriteFile(SUBSTITUTE('C:\TEMP\&1_JsonSelectBoxes.json', cFieldName), TRUE).
  386. END.
  387. END.
  388. lRetVal = TRUE.
  389. RETURN lRetVal.
  390. END METHOD.
  391. /*------------------------------------------------------------------------------
  392. Purpose:
  393. Notes:
  394. ------------------------------------------------------------------------------*/
  395. DESTRUCTOR PUBLIC selectboxHandler ( ):
  396. // MESSAGE 'Destructor selectboxHandler '.
  397. END DESTRUCTOR.
  398. END CLASS.