isWorkingImpl.cls 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. /*------------------------------------------------------------------------
  2. File : adresse_dict
  3. Purpose :
  4. Syntax :
  5. Description :
  6. Author(s) : walter.riechsteiner
  7. Created : Thu Jun 26 13:56:20 CEST 2025
  8. Notes :
  9. ----------------------------------------------------------------------*/
  10. BLOCK-LEVEL ON ERROR UNDO, THROW.
  11. USING OpenEdge.Core.String FROM PROPATH.
  12. USING OpenEdge.Net.HTTP.IHttpResponse FROM PROPATH.
  13. USING OpenEdge.Net.HTTP.StatusCodeEnum FROM PROPATH.
  14. USING OpenEdge.Web.IWebRequest FROM PROPATH.
  15. USING OpenEdge.Web.WebHandler FROM PROPATH.
  16. USING OpenEdge.Web.WebResponseWriter FROM PROPATH.
  17. USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
  18. USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
  19. USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
  20. USING src.ch.adprime.gemis.ErrorMessage FROM PROPATH.
  21. CLASS isWorkingImpl INHERITS WebHandler:
  22. DEFINE TEMP-TABLE tFileDIct
  23. SERIALIZE-NAME 'fields'
  24. FIELD cName AS CHARACTER SERIALIZE-NAME 'name'
  25. FIELD cType AS CHARACTER SERIALIZE-NAME 'type'
  26. FIELD iLaenge AS INTEGER SERIALIZE-NAME 'width'
  27. .
  28. /*------------------------------------------------------------------------------
  29. Purpose:
  30. Notes:
  31. ------------------------------------------------------------------------------*/
  32. METHOD OVERRIDE PROTECTED INTEGER HandleGet (INPUT poRequest AS IWebRequest ):
  33. DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
  34. DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
  35. DEFINE VARIABLE oError AS ErrorMessage NO-UNDO.
  36. DEFINE VARIABLE oBody AS String NO-UNDO.
  37. DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
  38. DEFINE VARIABLE lDebug AS LOGICAL NO-UNDO.
  39. DEFINE VARIABLE cDefautlCharSet AS CHARACTER NO-UNDO INIT 'UTF-8'.
  40. DEFINE VARIABLE cCorralationID AS CHARACTER NO-UNDO.
  41. DEFINE VARIABLE cContent-Type AS CHARACTER NO-UNDO.
  42. DEFINE VARIABLE htFileDIct AS HANDLE NO-UNDO.
  43. DEFINE VARIABLE oJsonArray AS JsonArray NO-UNDO.
  44. DEFINE VARIABLE lcJsonInhalt AS LONGCHAR NO-UNDO.
  45. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  46. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  47. DEFINE VARIABLE cFelder AS CHARACTER NO-UNDO.
  48. /* cFileName = poRequest:URI:GetQueryValue("File"). */
  49. /* MESSAGE 'File-Name = ' cFileName. */
  50. /* */
  51. /* FIND FIRST AnaDat._File NO-LOCK */
  52. /* WHERE AnaDat._File._File-Name = cFileName NO-ERROR. */
  53. /* FOR EACH AnaDat._Field OF AnaDat._File: */
  54. /* CREATE tFileDIct. */
  55. /* ASSIGN */
  56. /* tFileDIct.cName = AnaDat._Field._Field-Name */
  57. /* tFileDIct.cType = REPLACE(AnaDat._Field._Data-Type, '-', '_')*/
  58. /* tFileDIct.iLaenge = 10. */
  59. /* CASE AnaDat._Field._Data-Type: */
  60. /* WHEN 'logical' THEN */
  61. /* tFileDIct.cType = 'checkbox'. */
  62. /* WHEN 'character' THEN */
  63. /* tFileDIct.cType = 'text'. */
  64. /* WHEN 'integer' THEN */
  65. /* tFileDIct.cType = 'number'. */
  66. /* WHEN 'logical' THEN */
  67. /* tFileDIct.cType = 'checkbox'. */
  68. /* END CASE. */
  69. /* END. */
  70. /* htFileDIct = TEMP-TABLE tFileDIct:DEFAULT-BUFFER-HANDLE. */
  71. /* */
  72. cContent-Type = "plain/text".
  73. oError = NEW ErrorMessage().
  74. oError:lDebug = lDebug.
  75. /* oJsonResponse = NEW JsonObject(). */
  76. /* htFileDict:WRITE-JSON('JsonObject', oJsonResponse).*/
  77. /* */
  78. /* oJsonResponse:WRITE(lcJsonInhalt, FALSE). */
  79. /* ii = INDEX(lcJsonInhalt, '['). */
  80. /* lcJsonInhalt = SUBSTRING(lcJsonInhalt, ii). */
  81. /* */
  82. /* ii = R-INDEX(lcJsonInhalt, ']'). */
  83. /* lcJsonInhalt = SUBSTRING(lcJsonInhalt, 01, ii).*/
  84. MESSAGE "GetHandler".
  85. // oBody = NEW String(oJsonResponse:GetJsonText()).
  86. oBody = NEW String('GET OK').
  87. WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse).
  88. // oResponse:SetHeader(HttpHeaderBuilder:Build(cHeaderCorralationID):Value(cCorralationID):Header).
  89. oWriter = NEW WebResponseWriter(oResponse).
  90. oWriter:Open().
  91. oWriter:Close().
  92. RETURN 0.
  93. CATCH e AS Progress.Lang.Error:
  94. END CATCH.
  95. FINALLY:
  96. END FINALLY.
  97. END METHOD.
  98. METHOD OVERRIDE PROTECTED INTEGER HandlePost(INPUT poRequest AS IWebRequest):
  99. DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
  100. DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
  101. DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
  102. DEFINE VARIABLE lcJsonString AS LONGCHAR NO-UNDO.
  103. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  104. DEFINE VARIABLE hbttMandant AS HANDLE NO-UNDO.
  105. DEFINE VARIABLE cGetHtml AS CHARACTER NO-UNDO.
  106. DEFINE VARIABLE lcHTML AS LONGCHAR NO-UNDO.
  107. DEFINE VARIABLE cDatei AS CHARACTER NO-UNDO.
  108. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  109. DEFINE VARIABLE lAdmin AS LOGICAL NO-UNDO.
  110. DEFINE VARIABLE oInput AS JsonObject NO-UNDO.
  111. MESSAGE "Entering HandlePost" VIEW-AS ALERT-BOX.
  112. /* lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR. */
  113. /* oJsonData:WRITE(lcJsonString, FALSE). */
  114. /* // */
  115. /* // Input-Daten (Steuersatz) aus JsonObject lesen und in ttInput füllen */
  116. /* // */
  117. /* EMPTY TEMP-TABLE ttInput . */
  118. /* hbttInput = TEMP-TABLE ttInput:DEFAULT-BUFFER-HANDLE. */
  119. /* oInput = NEW JsonObject(). */
  120. /* oInput = oJsonData:GetJsonObject('ttInput'). */
  121. /* lRetVal = hbttInput:READ-JSON ('JsonObject', oInput). */
  122. /* */
  123. /* FIND FIRST ttInput. */
  124. /* cAktion = ttInput.action. */
  125. /* */
  126. /* outilitiesHandler = NEW utilitiesHandler(). */
  127. /* */
  128. /* DO WHILE lRetVal: */
  129. /* hbttInput = TEMP-TABLE ttInput :DEFAULT-BUFFER-HANDLE. */
  130. /* hbttMandant = TEMP-TABLE ttMandant :DEFAULT-BUFFER-HANDLE. */
  131. /* */
  132. /* MESSAGE 'Inputdaten gelesen mit returncode ' lRetVal. */
  133. /* IF NOT lRetVal THEN LEAVE. */
  134. /* */
  135. /* FIND FIRST ttInput. */
  136. /* */
  137. /* IF ttInput.action = 'first' THEN */
  138. /* DO: */
  139. /* EMPTY TEMP-TABLE ttMandant. */
  140. /* FOR EACH Mandant NO-LOCK */
  141. /* WHERE Mandant.Zustand = TRUE: */
  142. /* CREATE ttMandant. */
  143. /* ASSIGN */
  144. /* ttMandant.Mandant = Mandant.Firma */
  145. /* ttMandant.Bezeichnung = Mandant.Name. */
  146. /* /* ttMandant.choose = (IF Mandant = '2000' THEN '1' ELSE '0').*/ */
  147. /* END. */
  148. /* */
  149. /* oJsonData = NEW JsonObject(). */
  150. /* hbttMandant:WRITE-JSON('JsonObject', oJsonData). */
  151. /* oJsonData:WRITE(lcJsonString, TRUE). */
  152. /* END. */
  153. /* */
  154. /* IF ttInput.action = 'anmelden' THEN */
  155. /* DO: */
  156. /* oJsonData:WRITE(lcJsonString, FALSE). */
  157. /* */
  158. /* FIND FIRST ttInput. */
  159. /* */
  160. /* IF INDEX(ttInput.benutzer, '_Admin') > 0 THEN */
  161. /* DO: */
  162. /* ttInput.benutzer = REPLACE(ttInput.benutzer, '_Admin', ''). */
  163. /* lAdmin = TRUE. */
  164. /* END. */
  165. /* */
  166. /* IF NOT lAdmin THEN */
  167. /* DO: */
  168. /* FIND Benutzer NO-LOCK */
  169. /* WHERE Benutzer.Firma = ttInput.mandant */
  170. /* AND Benutzer.Benutzer = ttInput.benutzer */
  171. /* AND Benutzer.Kennwort = ttInput.password NO-ERROR. */
  172. /* END. */
  173. /* ELSE */
  174. /* DO: */
  175. /* FIND FIRST Benutzer NO-LOCK */
  176. /* WHERE Benutzer.Firma = ttInput.mandant */
  177. /* AND Benutzer.Benutzer = ttInput.benutzer NO-ERROR. */
  178. /* END. */
  179. /* IF NOT AVAILABLE (Benutzer) THEN */
  180. /* DO: */
  181. /* outilitiesHandler:getErrorMessage(INPUT '1990', INPUT 1, INPUT '', OUTPUT lcJsonString).*/
  182. /* */
  183. /* oResponse = NEW OpenEdge.Web.WebResponse(). */
  184. /* oResponse:StatusCode = INTEGER(StatusCodeEnum:OK). */
  185. /* oResponse:ContentType = "application/json;charset=utf-8". */
  186. /* oWriter = NEW WebResponseWriter(oResponse). */
  187. /* oWriter:Open(). */
  188. /* MESSAGE 'lcString Rückgabe: ' + STRING(lcJsonString) VIEW-AS ALERT-BOX. */
  189. /* oWriter:Write(lcJsonString). */
  190. /* oWriter:Close(). */
  191. /* RETURN -1. */
  192. /* END. */
  193. /* */
  194. /* ttInput.action = 'return'. */
  195. /* ttInput.link = 'gemis_start.html'. */
  196. /* ttInput.sprcd = STRING(Benutzer.Sprcd). */
  197. /* */
  198. /* lcJsonString = ''. */
  199. /* DO ii = 1 TO hbttInput:NUM-FIELDS: */
  200. /* lcJsonString = lcJsonString */
  201. /* + (IF lcJsonString = '' THEN '' ELSE ', ') */
  202. /* + QUOTER(hbttInput:BUFFER-FIELD(ii):NAME) */
  203. /* + ': ' */
  204. /* + QUOTER(hbttInput:BUFFER-FIELD(ii):BUFFER-VALUE). */
  205. /* END. */
  206. /* lcJsonString = CHR(123) + lcJsonString + chr(125). */
  207. /* MESSAGE 'Return-Daten nach füllen aus ttInput ' STRING(lcJsonString). */
  208. /* END. */
  209. /* LEAVE. */
  210. /* END. */
  211. oResponse = NEW OpenEdge.Web.WebResponse().
  212. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
  213. oResponse:ContentType = "plain/text;charset=utf-8".
  214. oWriter = NEW WebResponseWriter(oResponse).
  215. oWriter:Open().
  216. MESSAGE 'POST is working' + STRING(lcJsonString) VIEW-AS ALERT-BOX.
  217. oWriter:Write('POST is working').
  218. oWriter:Close().
  219. MESSAGE "Exiting HandlePost" VIEW-AS ALERT-BOX.
  220. CATCH e AS Progress.Lang.Error:
  221. MESSAGE "Exception occurred: " + e:GetMessage(1) VIEW-AS ALERT-BOX ERROR BUTTONS OK.
  222. RETURN -1.
  223. END CATCH.
  224. END METHOD.
  225. METHOD OVERRIDE PROTECTED INTEGER HandleNotAllowedMethod(INPUT poRequest AS IWebRequest):
  226. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  227. MESSAGE "HandleNotAllowedMethod called" VIEW-AS ALERT-BOX.
  228. RETURN result.
  229. END METHOD.
  230. METHOD OVERRIDE PROTECTED INTEGER HandleNotImplemented(INPUT poRequest AS IWebRequest):
  231. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  232. MESSAGE "HandleNotImplemented called" VIEW-AS ALERT-BOX.
  233. RETURN result.
  234. END METHOD.
  235. END CLASS.