selectboxHandler.cls 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  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. // MESSAGE 'Selectbox für' cField_Name.
  198. ccompany = oJsonIdent:GetCharacter('company') NO-ERROR.
  199. cuser_name = oJsonIdent:GetCharacter('user_name') NO-ERROR.
  200. ctable_name = oJsonIdent:GetCharacter('file_name') NO-ERROR.
  201. ilanguage_id = oJsonIdent:GetInteger ('language_id') NO-ERROR.
  202. cFileName = ENTRY(1, cField_Name, '_').
  203. cReplace = cFileName + '_'.
  204. cField_Name = REPLACE(cField_Name, cReplace, '').
  205. IF cField_Name = 'country_code' THEN
  206. DO:
  207. getSelectBoxCountry (
  208. INPUT iLanguage_id ,
  209. INPUT cFileName ,
  210. OUTPUT oJsonBoxEval
  211. ).
  212. oJsonBox = oJsonBoxEval.
  213. RETURN.
  214. END.
  215. IF cField_Name = 'salutation_code' THEN
  216. DO:
  217. getSelectBoxSalutation (
  218. INPUT iLanguage_id ,
  219. INPUT cFileName ,
  220. OUTPUT oJsonBoxEval
  221. ).
  222. oJsonBox = oJsonBoxEval.
  223. RETURN.
  224. END.
  225. //
  226. httParam = BUFFER ttParam:HANDLE.
  227. httParamBuff = TEMP-TABLE ttParam:DEFAULT-BUFFER-HANDLE.
  228. //
  229. // Felder der Temptable initial füllen
  230. //
  231. EMPTY TEMP-TABLE ttParam.
  232. EMPTY TEMP-TABLE ttSelect.
  233. CREATE ttParam.
  234. ASSIGN
  235. ttParam.company = ccompany
  236. ttParam.user_name = 'admin'
  237. ttParam.table_name = 'table'
  238. ttParam.field_name = cField_Name
  239. ttParam.language_id = iLanguage_id
  240. .
  241. //
  242. CREATE QUERY hQuery.
  243. hBuffer = BUFFER selections:HANDLE.
  244. hQuery:SET-BUFFERS(hBuffer).
  245. DO ii = 1 TO 4:
  246. // IF hQuery:QUERY-OPEN () THEN hQuery:QUERY-CLOSE ().
  247. FIND FIRST ttParam.
  248. cWhere = ''.
  249. cWhere = cWhere + SUBSTITUTE('WHERE selections.company = &1 AND selections.user_name = &2 ', QUOTER(ttParam.company) , QUOTER(ttParam.user_name) ).
  250. cWhere = cWhere + SUBSTITUTE('AND selections.table_name = &1 AND selections.field_name = &2 ', QUOTER(ttParam.table_name), QUOTER(ttParam.field_name)).
  251. cWhere = cWhere + SUBSTITUTE('AND selections.language_id = &1 ', ttParam.language_id).
  252. cWhere = 'FOR EACH selections NO-LOCK ' + cWhere.
  253. // MESSAGE 'cWhere = ' cWhere.
  254. hQuery:QUERY-PREPARE(cWhere).
  255. hQuery:QUERY-OPEN ().
  256. hQuery:GET-FIRST () NO-ERROR.
  257. DO WHILE NOT hQuery:QUERY-OFF-END:
  258. CREATE ttSelect.
  259. ASSIGN
  260. ttSelect.ind = ii
  261. ttSelect.cvalue = hBuffer::field_value
  262. ttSelect.cLabel = hBuffer::field_show
  263. .
  264. hQuery:GET-NEXT () NO-ERROR.
  265. END.
  266. CASE ii:
  267. WHEN 1 THEN
  268. DO:
  269. ASSIGN
  270. ttParam.table_name = cFileName.
  271. END.
  272. WHEN 2 THEN
  273. DO:
  274. IF cuser_name = 'admin' THEN LEAVE.
  275. ASSIGN
  276. ttParam.user_name = cuser_name
  277. ttParam.table_name = 'table'.
  278. END.
  279. WHEN 3 THEN
  280. DO:
  281. ASSIGN
  282. ttParam.user_name = cuser_name
  283. ttParam.table_name = cFileName.
  284. END.
  285. END CASE.
  286. END.
  287. FOR EACH ttSelect
  288. BREAK
  289. BY ttSelect.cValue
  290. BY ttSelect.ind:
  291. IF LAST-OF ( ttSelect.cValue) THEN NEXT.
  292. DELETE ttSelect.
  293. END.
  294. httSelectBuff = TEMP-TABLE ttSelect:DEFAULT-BUFFER-HANDLE.
  295. httSelectBuff:SERIALIZE-NAME = 'cFileName'.
  296. oJsonBox = NEW JsonArray().
  297. httSelectBuff:WRITE-JSON('JsonArray', oJsonBox).
  298. /* DEFINE VARIABLE cLogFile AS CHARACTER NO-UNDO. */
  299. /* */
  300. /* cLogFile = SUBSTITUTE('C:\Temp\Select_&1.json', cField_Name).*/
  301. /* oJsonBox:WriteFile(cLogFile, TRUE). */
  302. RETURN.
  303. END METHOD.
  304. /*------------------------------------------------------------------------------
  305. Purpose:
  306. Notes:
  307. ------------------------------------------------------------------------------*/
  308. METHOD PUBLIC VOID getSelectBoxSalutation(
  309. INPUT iLanguage_Id AS INTEGER ,
  310. INPUT cFile_Name AS CHARACTER ,
  311. OUTPUT oJsonBoxEval AS JsonArray
  312. ):
  313. DEFINE VARIABLE cttBufferName AS CHARACTER NO-UNDO.
  314. DEFINE VARIABLE httSelect AS HANDLE NO-UNDO.
  315. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  316. cttBufferName = SUBSTITUTE('&1_salutation_code', cFile_Name).
  317. CREATE TEMP-TABLE httSelect.
  318. httSelect:ADD-NEW-FIELD('value', 'character' ).
  319. httSelect:ADD-NEW-FIELD('label', 'character' ).
  320. httSelect:TEMP-TABLE-PREPARE (cttBufferName).
  321. httBuffer = httSelect:DEFAULT-BUFFER-HANDLE.
  322. FOR EACH salutations NO-LOCK
  323. WHERE salutations.language_id = iLanguage_id:
  324. httBuffer:BUFFER-CREATE ().
  325. ASSIGN
  326. httBuffer:BUFFER-FIELD('value'):BUFFER-VALUE = salutations.salutation_code.
  327. httBuffer:BUFFER-FIELD('label'):BUFFER-VALUE = salutations.salutation_display.
  328. END.
  329. /* httBuffer:SERIALIZE-NAME = 'cFileName'.*/
  330. oJsonBoxEval = NEW JsonArray().
  331. httBuffer:WRITE-JSON('JsonArray', oJsonBoxEval).
  332. RETURN.
  333. END METHOD.
  334. /*------------------------------------------------------------------------------
  335. Purpose:
  336. Notes:
  337. ------------------------------------------------------------------------------*/
  338. METHOD PUBLIC HANDLE getUserRoleSelect(
  339. INPUT ipccompany AS CHARACTER
  340. ):
  341. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  342. CREATE BUFFER httBuffer.
  343. httBuffer:ADD-NEW-FIELD ('value', 'CHARACTER').
  344. httBuffer:ADD-NEW-FIELD ('label', 'CHARACTER').
  345. httBuffer:TEMP-TABLE-PREPARE ('users_role').
  346. httBuffer:BUFFER-CREATE().
  347. ASSIGN
  348. httBuffer:BUFFER-FIELD('value'):buffer-value = 'admin'
  349. httBuffer:BUFFER-FIELD('label'):buffer-value = 'admin'.
  350. httBuffer:BUFFER-CREATE().
  351. ASSIGN
  352. httBuffer:BUFFER-FIELD('value'):buffer-value = 'user'
  353. httBuffer:BUFFER-FIELD('label'):buffer-value = 'Benutzer'.
  354. RETURN httBuffer.
  355. END METHOD.
  356. /*------------------------------------------------------------------------------
  357. Purpose:
  358. Notes:
  359. ------------------------------------------------------------------------------*/
  360. METHOD PUBLIC LOGICAL getVariableSelectBoxes(
  361. INPUT oJsonIdent AS JsonObject,
  362. OUTPUT oJsonSelectBoxes AS JsonObject
  363. ):
  364. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO INIT FALSE.
  365. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  366. DEFINE VARIABLE cCompany AS CHARACTER NO-UNDO.
  367. DEFINE VARIABLE cFormId AS CHARACTER NO-UNDO.
  368. DEFINE VARIABLE cFormUser AS CHARACTER NO-UNDO.
  369. DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
  370. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  371. DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
  372. cCompany = oJsonIdent:GetCharacter('company').
  373. cFormId = oJsonIdent:GetCharacter('formId').
  374. cFormUser = oJsonIdent:GetCharacter('formUser').
  375. oJsonSelectBoxes = NEW JsonObject().
  376. FOR EACH selectboxfields NO-LOCK
  377. WHERE selectboxfields.company = ccompany
  378. AND selectboxfields.program = cformId
  379. AND selectboxfields.user_name = cFormUser
  380. AND selectboxfields.boxfields <> '':
  381. DO ii = 1 TO NUM-ENTRIES(selectboxfields.boxfields, ';'):
  382. cFieldName = ENTRY(ii, selectboxfields.boxfields, ';').
  383. cFileName = ENTRY(1, cFieldName, '_').
  384. getSelectBoxData(
  385. INPUT oJsonIdent,
  386. INPUT cFieldName,
  387. OUTPUT oJsonBox
  388. ).
  389. // oJsonBox:WriteFile('C:\TEMP\JsonBox.json', TRUE).
  390. oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
  391. oJsonSelectBoxes:WriteFile(SUBSTITUTE('C:\TEMP\&1_JsonSelectBoxes.json', cFieldName), TRUE).
  392. END.
  393. END.
  394. lRetVal = TRUE.
  395. RETURN lRetVal.
  396. END METHOD.
  397. /*------------------------------------------------------------------------------
  398. Purpose:
  399. Notes:
  400. ------------------------------------------------------------------------------*/
  401. DESTRUCTOR PUBLIC selectboxHandler ( ):
  402. // MESSAGE 'Destructor selectboxHandler '.
  403. END DESTRUCTOR.
  404. END CLASS.