| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- /*------------------------------------------------------------------------
- File : getAdresseByKnrImpl
- Purpose :
- Syntax :
- Description :
- Author(s) : walter.riechsteiner
- Created : Wed May 29 21:02:53 CEST 2024
- Notes :
- ----------------------------------------------------------------------*/
- BLOCK-LEVEL ON ERROR UNDO, THROW.
- USING OpenEdge.Net.HTTP.IHttpResponse FROM PROPATH.
- USING OpenEdge.Net.HTTP.StatusCodeEnum FROM PROPATH.
- USING OpenEdge.Web.IWebRequest FROM PROPATH.
- USING OpenEdge.Web.WebHandler FROM PROPATH.
- USING OpenEdge.Web.WebResponseWriter FROM PROPATH.
- USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
- USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
- USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
- CLASS getAdresseByKnrImpl INHERITS WebHandler:
- { adressen/ttadresse.i }
- METHOD PUBLIC LOGICAL createJsonStructur(INPUT iphBuffer AS HANDLE, OUTPUT lcStruktur AS LONGCHAR):
- DEFINE VARIABLE i AS INTEGER NO-UNDO.
- DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
- DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
- MESSAGE "Entering createJsonStructur" VIEW-AS ALERT-BOX.
- lcStruktur = CHR(123) + CHR(10) + ' "fields": [' + CHR(10).
- DO i = 1 TO iphBuffer:NUM-FIELDS:
- hFeld = iphBuffer:BUFFER-FIELD(i).
- IF hFeld:EXTENT > 0 THEN NEXT.
- cZeile = SUBSTITUTE(' &5"name": "&1", "type": "&2", "label": "&3", "value": "&4" &6',
- hFeld:NAME, "text", (IF hFeld:LABEL <> "" THEN hFeld:LABEL ELSE hFeld:NAME), hFeld:BUFFER-VALUE, CHR(123), CHR(125)).
- lcStruktur = lcStruktur + cZeile.
- IF i <> iphBuffer:NUM-FIELDS THEN lcStruktur = lcStruktur + ','.
- lcStruktur = lcStruktur + CHR(10).
- END.
- lcStruktur = lcStruktur + ' ]' + CHR(10) + CHR(125) + CHR(10).
- MESSAGE "Exiting createJsonStructur" VIEW-AS ALERT-BOX.
- RETURN TRUE.
- END METHOD.
- METHOD OVERRIDE PROTECTED INTEGER HandlePost(INPUT poRequest AS IWebRequest):
- DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
- DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
- DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
- DEFINE VARIABLE ipCompanyID AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ipCustomerID AS INTEGER NO-UNDO.
- DEFINE VARIABLE lcJsonString AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE httAdresse AS HANDLE NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE cSearchType AS CHARACTER NO-UNDO INITIAL "Knr".
- DEFINE VARIABLE cWortIndex AS CHARACTER NO-UNDO.
- DEFINE VARIABLE iPage AS INTEGER NO-UNDO INITIAL 1.
- DEFINE VARIABLE iPageSize AS INTEGER NO-UNDO INITIAL 10.
- DEFINE VARIABLE cGetHtml AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lcHTML AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE cDatei AS CHARACTER NO-UNDO.
- MESSAGE "Entering HandlePost" VIEW-AS ALERT-BOX.
-
- lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
- MESSAGE 'getJsonFromRequest = ' lRetVal.
- IF lRetVal THEN
- DO:
- cGetHtml = oJsonData:GetCharacter("gethtml") NO-ERROR.
- ipCompanyID = oJsonData:GetCharacter("companyID") NO-ERROR.
- ipCustomerID = oJsonData:GetInteger("customerID") NO-ERROR.
- cSearchType = oJsonData:GetCharacter("searchType") NO-ERROR.
- cWortIndex = oJsonData:GetCharacter("WortIndex") NO-ERROR.
- iPage = oJsonData:GetInteger("page") NO-ERROR.
- iPageSize = oJsonData:GetInteger("pageSize") NO-ERROR.
-
- MESSAGE 'gethtml = ' cGetHtml ' companyID = ' ipCompanyID ' customerID = ' ipCustomerID ' SearchType = ' cSearchType ' WortIndex = ' cWortIndex ' page = ' iPage ' pageSize = ' iPageSize.
- IF cGetHtml = 'gethtml' THEN
- DO:
- cDatei = 'html/adressen.html'.
- cDatei = SEARCH(cDatei).
- MESSAGE cDatei.
-
- COPY-LOB FILE 'C:\Entwicklung\Ge_MIS\pasoeGEMIS\webapps\ADRESSEN\WEB-INF\openedge\html/adressen.html' TO lcHTML.
- oResponse = NEW OpenEdge.Web.WebResponse().
- oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
- oResponse:ContentType = "text/html;charset=utf-8".
- oWriter = NEW WebResponseWriter(oResponse).
- oWriter:Open().
- MESSAGE 'lcString Rückgabe: ' + STRING(lchtml) VIEW-AS ALERT-BOX.
- oWriter:Write(lcHTML).
- oWriter:Close().
- RETURN 200.
- END.
-
- IF cSearchType = "name" THEN
- DO:
- RETURN getAdressenByWortIndex(poRequest, cWortIndex, ipCompanyID, iPage, iPageSize).
- END.
-
- EMPTY TEMP-TABLE ttAdresse.
- FIND Adresse NO-LOCK
- WHERE Adresse.Firma = ipCompanyID
- AND Adresse.Knr = ipCustomerID NO-ERROR.
- IF AVAILABLE Adresse THEN
- DO:
- CREATE ttAdresse.
- BUFFER-COPY Adresse TO ttAdresse.
- MESSAGE 'Address found and copied to ttAdresse' VIEW-AS ALERT-BOX.
- END.
- ELSE
- DO:
- MESSAGE 'Address not found' VIEW-AS ALERT-BOX.
- END.
- httAdresse = TEMP-TABLE ttAdresse:DEFAULT-BUFFER-HANDLE.
- oJsonData = NEW JsonObject().
- httAdresse:WRITE-JSON('JsonObject', oJsonData).
- oJsonData:WRITE(lcJsonString, TRUE).
- END.
- ELSE
- DO:
- MESSAGE 'Fehler beim Abrufen der Daten' VIEW-AS ALERT-BOX.
- END.
- oResponse = NEW OpenEdge.Web.WebResponse().
- oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
- oResponse:ContentType = "application/json;charset=utf-8".
- oWriter = NEW WebResponseWriter(oResponse).
- oWriter:Open().
- MESSAGE 'lcString Rückgabe: ' + STRING(lcJsonString) VIEW-AS ALERT-BOX.
- oWriter:Write(lcJsonString).
- oWriter:Close().
- MESSAGE "Exiting HandlePost" VIEW-AS ALERT-BOX.
- CATCH e AS Progress.Lang.Error:
- MESSAGE "Exception occurred: " + e:GetMessage(1) VIEW-AS ALERT-BOX ERROR BUTTONS OK.
- RETURN -1.
- END CATCH.
- END METHOD.
- METHOD PUBLIC INTEGER getSuggestions(INPUT poRequest AS IWebRequest):
- DEFINE VARIABLE cWortIndex AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cParams AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cParam AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cWert AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE oJsonArray AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonObject AS JsonObject NO-UNDO.
- DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
- DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- MESSAGE "Entering getSuggestions" VIEW-AS ALERT-BOX.
- lRetVal = WebHandlerUtilities:getAllKeysFromHeader(INPUT poRequest, OUTPUT cParams) NO-ERROR.
- MESSAGE 'getAllKeysFromHeader = ' lRetVal VIEW-AS ALERT-BOX.
- DO ii = 1 TO NUM-ENTRIES(cParams, '&'):
- cParam = ENTRY(ii, cParams, '&').
- cFeld = ENTRY(1, cParam, '=').
- cWert = ENTRY(2, cParam, '=').
- MESSAGE 'Parameter: ' cFeld ' = ' cWert VIEW-AS ALERT-BOX.
- CASE cFeld:
- WHEN 'WortIndex' THEN
- cWortIndex = cWert.
- END CASE.
- END.
- EMPTY TEMP-TABLE ttAdresse.
- FOR EACH Adresse NO-LOCK
- WHERE Adresse.WortIndex BEGINS cWortIndex:
- CREATE ttAdresse.
- BUFFER-COPY Adresse TO ttAdresse.
- END.
- oJsonArray = NEW JsonArray().
- FOR EACH ttAdresse NO-LOCK:
- oJsonObject = NEW JsonObject().
- oJsonObject:Add("Knr", ttAdresse.Knr).
- oJsonObject:Add("Anzeig_br", ttAdresse.Anzeig_br).
- oJsonArray:Add(oJsonObject).
- END.
- oResponse = NEW OpenEdge.Web.WebResponse().
- oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
- oResponse:ContentType = "application/json;charset=utf-8".
- DEFINE VARIABLE lcString AS LONGCHAR NO-UNDO.
- oJsonArray:WRITE(lcString, FALSE).
- COPY-LOB lcString TO FILE 'C:\TEMP\Json.txt'.
- oWriter = NEW WebResponseWriter(oResponse).
- oWriter:Open().
- /* oWriter:Write(oJsonArray:ToString()).*/
- MESSAGE 'lcString Rückgabe: ' + STRING(lcString) VIEW-AS ALERT-BOX.
- oWriter:Write(lcString).
- oWriter:Close().
- MESSAGE "Exiting getSuggestions" VIEW-AS ALERT-BOX.
- RETURN 0.
- END METHOD.
- METHOD PUBLIC INTEGER getAdressenByWortIndex(INPUT poRequest AS IWebRequest, cWortIndex AS CHARACTER, cCompanyID AS CHARACTER, iPage AS INTEGER, iPageSize AS INTEGER):
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE oJsonArray AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonObject AS JsonObject NO-UNDO.
- DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
- DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
- DEFINE VARIABLE iOffset AS INTEGER NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- MESSAGE "Entering getAdressenByWortIndex" VIEW-AS ALERT-BOX.
- iOffset = (iPage - 1) * iPageSize.
- EMPTY TEMP-TABLE ttAdresse.
-
- cWortIndex = ENTRY(1, cWortIndex, ' ').
- FOR EACH Adresse NO-LOCK
- WHERE INDEX(Adresse.WortIndex, cWortIndex) > 0
- AND Adresse.Firma = cCompanyID
- BY Adresse.Knr:
- CREATE ttAdresse.
- BUFFER-COPY Adresse TO ttAdresse.
- END.
- oJsonArray = NEW JsonArray().
- FOR EACH ttAdresse NO-LOCK:
- oJsonObject = NEW JsonObject().
- oJsonObject:Add("Knr", ttAdresse.Knr).
- oJsonObject:Add("Anzeig_br", ttAdresse.Anzeig_br).
- oJsonArray:Add(oJsonObject).
- END.
- oResponse = NEW OpenEdge.Web.WebResponse().
- oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
- oResponse:ContentType = "application/json;charset=utf-8".
- DEFINE VARIABLE lcString AS LONGCHAR NO-UNDO.
- oJsonArray:WRITE(lcString, FALSE).
- lcString = CHR(123) + ' "ttAdresse" : ' + lcString + CHR(125).
- COPY-LOB lcString TO FILE 'C:\TEMP\Json.txt'.
- oWriter = NEW WebResponseWriter(oResponse).
- oWriter:Open().
- /* oWriter:Write(oJsonArray:ToString()).*/
- MESSAGE 'lcString Rückgabe: ' + STRING(lcString) VIEW-AS ALERT-BOX.
- oWriter:Write(lcString).
- oWriter:Close().
- MESSAGE "Exiting getAdressenByWortIndex" VIEW-AS ALERT-BOX.
- RETURN 0.
- END METHOD.
- /* Methode zum Entfernen von Teilen des Strings außerhalb der eckigen Klammern */
- METHOD PUBLIC CHARACTER TrimBracketsFromLongChar(INPUT inputLongChar AS LONGCHAR):
- DEFINE VARIABLE startPosition AS INTEGER NO-UNDO.
- DEFINE VARIABLE endPosition AS INTEGER NO-UNDO.
- DEFINE VARIABLE resultString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE inputString AS CHARACTER NO-UNDO.
- /* Konvertiere LONGCHAR zu CHARACTER, da INDEX und R-INDEX mit CHARACTER arbeiten */
- inputString = STRING(inputLongChar).
- /* Finde die Position des ersten "[" */
- startPosition = INDEX(inputString, "[").
- /* Finde die Position des letzten "]" */
- endPosition = R-INDEX(inputString, "]").
- /* Überprüfe, ob beide Klammern gefunden wurden */
- IF startPosition > 0 AND endPosition > 0 AND endPosition > startPosition THEN
- DO:
- /* Extrahiere den String zwischen den Klammern */
- resultString = SUBSTRING(inputString, startPosition + 1, endPosition - startPosition - 1).
- END.
- ELSE
- DO:
- /* Wenn keine oder nur eine Klammer gefunden wurde, gib den ursprünglichen String zurück */
- resultString = inputString.
- END.
- RETURN resultString.
- END METHOD.
- METHOD OVERRIDE PROTECTED INTEGER HandleNotAllowedMethod(INPUT poRequest AS IWebRequest):
- DEFINE VARIABLE result AS INTEGER NO-UNDO.
- MESSAGE "HandleNotAllowedMethod called" VIEW-AS ALERT-BOX.
- RETURN result.
- END METHOD.
- METHOD OVERRIDE PROTECTED INTEGER HandleNotImplemented(INPUT poRequest AS IWebRequest):
- DEFINE VARIABLE result AS INTEGER NO-UNDO.
- MESSAGE "HandleNotImplemented called" VIEW-AS ALERT-BOX.
- RETURN result.
- END METHOD.
- END CLASS.
|