| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901 |
- /*------------------------------------------------------------------------
- File : adressenImpl
- 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.
- USING utilities.utilitiesHandler FROM PROPATH.
- CLASS adressenImpl INHERITS WebHandler:
-
- DEFINE VARIABLE outilitiesHandler AS utilitiesHandler NO-UNDO.
-
- { ttInput.i }
-
- DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
- DEFINE VARIABLE httBrowserKo AS HANDLE NO-UNDO.
- DEFINE VARIABLE httBrowserze AS HANDLE NO-UNDO.
- DEFINE VARIABLE httViewerKo AS HANDLE NO-UNDO.
- DEFINE VARIABLE httViewerZe AS HANDLE NO-UNDO.
- DEFINE VARIABLE httBrowser AS HANDLE NO-UNDO.
- DEFINE VARIABLE hbttDBTabelle AS HANDLE NO-UNDO.
- DEFINE VARIABLE httDBTabelle AS HANDLE NO-UNDO.
- DEFINE VARIABLE hqDBTabelle AS HANDLE NO-UNDO.
- DEFINE VARIABLE hbDBTabelle AS HANDLE NO-UNDO.
-
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
- DEFINE VARIABLE cInhalt AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE iAnzRec AS INTEGER NO-UNDO.
- DEFINE VARIABLE cAktion AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cUpdateAktion AS CHARACTER NO-UNDO
- INIT 'add,update,copy'.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LONGCHAR addDatenFromJson( ):
-
- DEFINE VARIABLE rRecid AS RECID NO-UNDO.
- DEFINE VARIABLE cResult AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cMessage AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE iAnzahl AS INTEGER NO-UNDO.
- DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cIndexFields AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE cDataType AS CHARACTER NO-UNDO.
- DEFINE VARIABLE hFeld AS HANDLE NO-UNDO.
- DEFINE VARIABLE cWert AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
-
- iAnzRec = 0.
- rRecid = INT64(hbttInput::ident).
- cTabelle = hbttInput::tabelle.
-
- CREATE BUFFER hbDBTabelle FOR TABLE cTabelle.
- hbttDBTabelle:FIND-FIRST ().
-
- cIndexFields = outilitiesHandler:getPrimaryIndexFields(cTabelle).
-
- cWhere = ''.
- DO ii = 1 TO NUM-ENTRIES(cIndexFields, ','):
- cFeld = ENTRY(ii, cIndexFields, ',').
- hFeld = hbDBTabelle:BUFFER-FIELD (cFeld).
- cWert = hbttDBTabelle:BUFFER-FIELD(cFeld):BUFFER-VALUE(0).
- cDataType = hFeld:DATA-TYPE.
- CASE cDataType:
- WHEN 'character' THEN
- cWert = QUOTER(cWert).
- END CASE.
- cWhere = cWhere
- + (IF cWhere = '' THEN 'WHERE ' ELSE 'AND ')
- + SUBSTITUTE('&1.&3 = &2 ', cTabelle, cWert, cFeld ).
- END.
- lRetVal = hbDBTabelle:FIND-UNIQUE (cWhere, INTEGER(NO-LOCK) ) NO-ERROR.
-
- IF lRetVal THEN
- DO:
- outilitiesHandler:getErrorMessage(
- INPUT '9',
- INPUT INTEGER(hbttInput::sprcd),
- INPUT hbttDBTabelle::Geb_Cd,
- OUTPUT cMessage
- ).
- IF cMessage <> '' THEN
- DO:
- RETURN cMessage.
- END.
- END.
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
- hbDBTabelle:BUFFER-CREATE().
- hbDBTabelle:BUFFER-COPY(hbttDBTabelle).
- hbttInput::ident = TRIM(STRING(hbDBTabelle:RECID,'>>>>>>>>9')).
- rRecid = hbDBTabelle:RECID.
- httBrowserKo::rRecid.
- hbDBTabelle:BUFFER-RELEASE().
- LEAVE.
- END.
- iAnzahl = 0.
- CREATE QUERY hqDBTabelle.
- hqDBTabelle:SET-BUFFERS (hbDBTabelle).
- cWhere = SUBSTITUTE('FOR EACH &1 NO-LOCK WHERE &1.Firma = &2 ', cTabelle, QUOTER(hbttInput::mandant)).
- hqDBTabelle:QUERY-PREPARE (cWhere).
- hqDBTabelle:QUERY-OPEN().
- hqDBTabelle:GET-FIRST() NO-ERROR.
- DO WHILE NOT hqDBTabelle:QUERY-OFF-END:
- iAnzahl = iAnzahl + 1.
- IF hbDBTabelle:RECID = rRecid THEN LEAVE.
- hqDBTabelle:GET-NEXT () NO-ERROR.
- END.
-
- DELETE OBJECT hbDBTabelle NO-ERROR.
- DELETE OBJECT hqDBTabelle NO-ERROR.
- httBrowserKo::actualpage = (iAnzahl - (iAnzahl MOD httBrowserKo::pagesize)) / httBrowserKo::pagesize.
- IF httBrowserKo::actualpage < 1 THEN httBrowserKo::actualpage = 0.
-
- outilitiesHandler:updateBrowserKo(INPUT httBrowserKo).
- cAktion = 'next'.
- createNextResponse().
- cMessage = ''.
- RETURN cMessage.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LONGCHAR copyDatenFromJson( ):
-
- DEFINE VARIABLE rRecid AS RECID NO-UNDO.
- DEFINE VARIABLE cResult AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cMessage AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE iAnzahl AS INTEGER NO-UNDO.
- DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
- cAktion = 'add'.
-
- cMessage = addDatenFromJson().
- RETURN cMessage.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID createLastResponse( ):
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
-
- outilitiesHandler:createQuery(
- INPUT hbttInput,
- INPUT httBrowserKo,
- OUTPUT hqDBTabelle,
- OUTPUT hbDBTabelle
- ).
-
- outilitiesHandler:createTemptableBrowser(
- INPUT hbttInput,
- INPUT httBrowserKo,
- OUTPUT httBrowser
- ).
- iAnzRec = outilitiesHandler:fillBrowserTT (
- INPUT httBrowserKo,
- INPUT hqDBTabelle,
- INPUT hbttInput,
- INPUT-OUTPUT httBrowser
- ).
-
- httBrowserKo::actualpage = httBrowserKo::actualpage + 1.
- outilitiesHandler:updateBrowserKo( INPUT httBrowserKo ).
-
- RETURN.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID createNextResponse( ):
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
-
- outilitiesHandler:createQuery(
- INPUT hbttInput,
- INPUT httBrowserKo,
- OUTPUT hqDBTabelle,
- OUTPUT hbDBTabelle
- ).
-
- outilitiesHandler:createTemptableBrowser(
- INPUT hbttInput,
- INPUT httBrowserKo,
- OUTPUT httBrowser
- ).
- DO WHILE TRUE:
- iAnzRec = outilitiesHandler:fillBrowserTT (
- INPUT httBrowserKo,
- INPUT hqDBTabelle,
- INPUT hbttInput,
- INPUT-OUTPUT httBrowser
- ).
- IF iAnzRec = 0 AND httBrowserKo::actualpage > 0 THEN
- DO:
- httBrowserKo::actualpage = httBrowserKo::actualpage - 1.
- NEXT.
- END.
- LEAVE.
- END.
-
- httBrowserKo::actualpage = httBrowserKo::actualpage + 1.
- outilitiesHandler:updateBrowserKo( INPUT httBrowserKo ).
-
- RETURN.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID createPrevResponse( ):
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
-
- httBrowserKo::actualpage = httBrowserKo::actualpage - 2.
- IF (httBrowserKo::actualpage < 0) THEN httBrowserKo::actualpage = 0.
-
- outilitiesHandler:createQuery(
- INPUT hbttInput,
- INPUT httBrowserKo,
- OUTPUT hqDBTabelle,
- OUTPUT hbDBTabelle
- ).
-
- outilitiesHandler:createTemptableBrowser(
- INPUT hbttInput,
- INPUT httBrowserKo,
- OUTPUT httBrowser
- ).
- iAnzRec = outilitiesHandler:fillBrowserTT (
- INPUT httBrowserKo,
- INPUT hqDBTabelle,
- INPUT hbttInput,
- INPUT-OUTPUT httBrowser
- ).
-
- httBrowserKo::actualpage = httBrowserKo::actualpage + 1.
- outilitiesHandler:updateBrowserKo( INPUT httBrowserKo ).
-
- RETURN.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID createSameResponse( ):
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE cTitle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cHeader AS CHARACTER NO-UNDO.
-
- cTitle = outilitiesHandler:getTitle(
- INPUT hbttInput
- ).
- MESSAGE 'Titel = ' cTitle.
- cHeader = outilitiesHandler:getHeader(
- INPUT hbttInput
- ).
- MESSAGE 'Header = ' cHeader.
- ASSIGN
- hbttInput::params = SUBSTITUTE('Title=&1;Header=&2':U, cTitle, cHeader).
-
- outilitiesHandler:createQuery(
- INPUT hbttInput,
- INPUT httBrowserKo,
- OUTPUT hqDBTabelle,
- OUTPUT hbDBTabelle
- ).
- httBrowserKo::actualpage = httBrowserKo::actualpage - 1.
- outilitiesHandler:updateBrowserKo( INPUT httBrowserKo ).
-
- outilitiesHandler:createTemptableBrowser(
- INPUT hbttInput,
- INPUT httBrowserKo,
- OUTPUT httBrowser
- ).
- DO WHILE TRUE:
- iAnzRec = outilitiesHandler:fillBrowserTT (
- INPUT httBrowserKo,
- INPUT hqDBTabelle,
- INPUT hbttInput,
- INPUT-OUTPUT httBrowser
- ).
- IF iAnzRec = 0 AND httBrowserKo::actualpage > 0 THEN
- DO:
- httBrowserKo::actualpage = httBrowserKo::actualpage - 1.
- NEXT.
- END.
- LEAVE.
- END.
-
- httBrowserKo::actualpage = httBrowserKo::actualpage + 1.
- outilitiesHandler:updateBrowserKo( INPUT httBrowserKo ).
-
- RETURN.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID createSearchResponse( ):
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
-
- // FIND FIRST ttInput.
- /* lRetVal = outilitiesHandler:getBrowserKopf(*/
- /* INPUT hbttInput, */
- /* OUTPUT httBrowserKo */
- /* ). */
- /* */
- httBrowserKo::actualpage = 0.
-
- outilitiesHandler:createSearchQuery(
- INPUT hbttInput,
- INPUT httBrowserKo,
- OUTPUT hqDBTabelle,
- OUTPUT hbDBtabelle
- ).
-
- outilitiesHandler:createTemptableBrowser(
- INPUT hbttInput,
- INPUT httBrowserKo,
- OUTPUT httBrowser
- ).
- iAnzRec = outilitiesHandler:fillBrowserTT (
- INPUT httBrowserKo,
- INPUT hqDBtabelle,
- INPUT hbttInput,
- INPUT-OUTPUT httBrowser
- ).
-
- httBrowserKo::actualpage = httBrowserKo::actualpage = 0.
- outilitiesHandler:updateBrowserKo( INPUT httBrowserKo ).
-
- RETURN.
-
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID createSelectResponse( ):
-
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE hViewer_ze AS HANDLE NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE cInhalt AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
- DEFINE VARIABLE rRecid AS RECID NO-UNDO.
-
- iAnzRec = 0.
- hViewer_ze = BUFFER viewer_ze:HANDLE.
- rRecid = INT64(hbttInput::ident).
-
- outilitiesHandler:startViewerKopf (
- INPUT hbttInput,
- OUTPUT httViewerKo
- ).
- outilitiesHandler:createTemptableViewer(
- INPUT hbttInput,
- INPUT httViewerKo,
- OUTPUT httDBTabelle
- ).
-
- cWhere = SUBSTITUTE('WHERE RECID(&1) = &2 ', hbttInput::tabelle, INT64(hbttInput::ident) ).
- hbDBTabelle:FIND-UNIQUE(cWhere, INTEGER(NO-LOCK)) NO-ERROR.
- httDBTabelle:EMPTY-TEMP-TABLE().
- httDBTabelle:BUFFER-CREATE().
- httDBTabelle:BUFFER-COPY(hbDBtabelle).
- httDBTabelle::ident = TRIM(STRING(hbDBTabelle:RECID,'>>>>>>>>9')).
-
- iAnzRec = iAnzRec + 1.
-
- MESSAGE 'Start getField' httDBTabelle:NUM-FIELDS.
-
- DO ii = 1 TO httDBTabelle:NUM-FIELDS:
- FIND FIRST viewer_ze NO-LOCK
- WHERE viewer_ze.mandant = hbttInput::mandant
- AND viewer_ze.benutzer = hbttInput::benutzer
- AND viewer_ze.program = hbttInput::programm
- AND viewer_ze.tabelle = hbttInput::tabelle
- AND viewer_ze.feld = httDBTabelle:BUFFER-FIELD(ii):NAME
- AND viewer_ze.addFieldTabelle <> '' NO-ERROR.
- IF NOT AVAILABLE viewer_ze THEN NEXT.
- lRetVal = outilitiesHandler:getField(
- INPUT hbttInput,
- INPUT viewer_ze.addFieldTabelle,
- INPUT viewer_ze.addFieldField,
- INPUT viewer_ze.addFieldKeyFields,
- INPUT viewer_ze.addFieldKeyValues,
- INPUT httDBTabelle,
- OUTPUT cInhalt
- ).
- httDBTabelle:BUFFER-FIELD(ii):BUFFER-VALUE(0) = cInhalt.
- MESSAGE httDBTabelle:BUFFER-FIELD(ii):NAME httDBTabelle:BUFFER-FIELD(ii):BUFFER-VALUE(0).
- END.
-
- httBrowserKo::lastrecid = httDBTabelle::ident.
- outilitiesHandler:updateBrowserKo(INPUT httBrowserKo).
-
- RETURN.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID createSortResponse( ):
-
- DEFINE VARIABLE cSortfeld AS CHARACTER NO-UNDO INIT ''.
- DEFINE VARIABLE cRichtung AS CHARACTER NO-UNDO INIT ''.
- DEFINE VARIABLE cJsonFeld AS LONGCHAR NO-UNDO INIT ''.
-
- DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
- DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
-
- FIND FIRST ttInput.
-
- cJsonFeld = CHR(123) + SUBSTITUTE(' "&1" : "&1" ', hbttInput::SORT) + CHR(125).
-
- outilitiesHandler:createTemptableBrowser(
- INPUT hbttInput ,
- INPUT httBrowserKo ,
- OUTPUT httBrowser
- ).
-
- MESSAGE 'cJsonFeld = ' STRING(cJsonFeld).
- httBrowser:READ-JSON('LONGCHAR', cJsonFeld, 'EMPTY').
-
- CREATE QUERY hQuery.
- hQuery:SET-BUFFERS(httBrowser).
- hQuery:QUERY-PREPARE ('FOR EACH ttBrowser NO-LOCK').
- hQuery:QUERY-OPEN ().
- hQuery:GET-FIRST ().
- DO i1 = 1 TO httBrowser:NUM-FIELDS:
- IF httBrowser:BUFFER-FIELD(i1):BUFFER-VALUE(0) = '' THEN NEXT.
- cSortfeld = httBrowser:BUFFER-FIELD(i1):NAME.
- LEAVE.
- END.
- hQuery:QUERY-CLOSE ().
- DELETE OBJECT hQuery.
-
- MESSAGE 'Sortfeld = ' cSortfeld.
-
- outilitiesHandler:setSortField(
- INPUT cSortfeld ,
- INPUT-OUTPUT httBrowserKo
- ).
-
- MESSAGE 'Sortierung neu' cSortfeld '->' httBrowserKo::sortfeld.
-
- cAktion = 'start'.
- createStartResponse().
-
- RETURN.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID createStartResponse( ):
-
- DEFINE VARIABLE lcString AS LONGCHAR NO-UNDO.
-
- DEFINE VARIABLE cTitle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cHeader AS CHARACTER NO-UNDO.
- iAnzRec = 0.
-
- cTitle = outilitiesHandler:getTitle(
- INPUT hbttInput
- ).
- MESSAGE 'Titel = ' cTitle.
- cHeader = outilitiesHandler:getHeader(
- INPUT hbttInput
- ).
- MESSAGE 'Header = ' cHeader.
- ASSIGN
- hbttInput::params = SUBSTITUTE('Title=&1;Header=&2':U, cTitle, cHeader).
-
- outilitiesHandler:startBrowserKopf (
- INPUT hbttInput,
- OUTPUT httBrowserKo
- ).
- outilitiesHandler:createQuery(
- INPUT hbttInput,
- INPUT httBrowserKo,
- OUTPUT hqDBTabelle,
- OUTPUT hbDBTabelle
- ).
-
- outilitiesHandler:createTemptableBrowser(
- INPUT hbttInput,
- INPUT httBrowserKo,
- OUTPUT httBrowser
- ).
-
- iAnzRec = outilitiesHandler:fillBrowserTT (
- INPUT httBrowserKo,
- INPUT hqDBTabelle,
- INPUT hbttInput,
- INPUT-OUTPUT httBrowser
- ).
-
- httBrowserKo::actualpage = 1.
- outilitiesHandler:updateBrowserKo( INPUT httBrowserKo ).
-
- RETURN.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC VOID deleteDatenFromJson( ):
- DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE rRecid AS RECID NO-UNDO.
- DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
-
- iAnzRec = 0.
- rRecid = INT64(hbttInput::ident).
- cTabelle = hbttInput::tabelle.
-
- CREATE BUFFER hbDBTabelle FOR TABLE cTabelle.
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
- cWhere = SUBSTITUTE('WHERE RECID(&1) = &2 ', cTabelle, rRecid).
- hbDBTabelle:FIND-UNIQUE (cWhere, INTEGER(EXCLUSIVE-LOCK) ) NO-ERROR.
- hbDBTabelle:BUFFER-DELETE ().
- hbDBTabelle:BUFFER-RELEASE ().
- hbDBTabelle:GET-PREV ().
- rRecid = (IF hbDBTabelle:AVAILABLE THEN hbDBTabelle:RECID ELSE ? ).
- LEAVE.
- END.
-
- DELETE OBJECT hbDBTabelle NO-ERROR.
- httDBTabelle:EMPTY-TEMP-TABLE().
- IF rRecid = ? THEN
- DO:
- hbttInput::ident = ''.
- cAktion = 'first'.
- END.
- ELSE
- DO:
- hbttInput::ident = TRIM(STRING(rRecid,'>>>>>>>>9')).
- cAktion = 'next'.
- END.
- httBrowserKo::actualpage = httBrowserKo::actualpage - 1.
- IF httBrowserKo::actualpage < 0 THEN httBrowserKo::actualpage = 0.
- httBrowserKo::lastrecid = rRecid.
- outilitiesHandler:updateBrowserKo(INPUT httBrowserKo).
- createNextResponse().
- RETURN.
- 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 lcJsonString AS LONGCHAR NO-UNDO.
-
- DEFINE VARIABLE oJsonArray AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonDataset AS JsonObject NO-UNDO.
- DEFINE VARIABLE oInput AS JsonObject NO-UNDO.
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE iRetVal AS INTEGER NO-UNDO.
- DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
- DEFINE VARIABLE cGetHtml AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lcHTML AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-
- lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
- MESSAGE 'getJsonFromRequest = ' lRetVal.
-
- oJsonData:WRITE(lcJsonString, FALSE).
- MESSAGE 'ganzer eingangsstring = ' STRING(lcJsonString).
- //
- // Input-Daten (Steuersatz) aus JsonObject lesen und in ttInput füllen
- //
- EMPTY TEMP-TABLE ttInput .
- hbttInput = TEMP-TABLE ttInput:DEFAULT-BUFFER-HANDLE.
- oInput = NEW JsonObject().
- oInput = oJsonData:GetJsonObject('ttInput').
- lRetVal = hbttInput:READ-JSON ('JsonObject', oInput).
-
- FIND FIRST ttInput.
- cAktion = ttInput.action.
-
- CREATE TEMP-TABLE httDBTabelle.
- CREATE BUFFER hbDBTabelle FOR TABLE ttInput.tabelle.
- httDBTabelle:CREATE-LIKE (hbDBTabelle).
- httDBTabelle:ADD-NEW-FIELD ('ident', 'character').
- httDBTabelle:TEMP-TABLE-PREPARE(ttInput.tabelle).
- hbttDBTabelle = httDBTabelle:DEFAULT-BUFFER-HANDLE.
-
- httDBTabelle:EMPTY-TEMP-TABLE ().
-
- outilitiesHandler = NEW utilitiesHandler ().
- DO WHILE lRetVal:
- MESSAGE 'Temptable-Name = ' httDBTabelle:NAME.
- IF LOOKUP(cAktion, cUpdateAktion, ',') > 0 THEN
- DO:
- lRetVal = outilitiesHandler:readInputDatenFromJson(
- INPUT oJsonData,
- INPUT hbttInput,
- INPUT-OUTPUT hbttDBTabelle
- ).
- hbttDBTabelle:FIND-FIRST ().
- IF NOT lRetVal THEN LEAVE.
- END.
-
- lRetVal = outilitiesHandler:getBrowserKopf(
- INPUT hbttInput,
- OUTPUT httBrowserKo
- ).
- IF cAktion = 'same' THEN ttInput.ident = TRIM(STRING(httBrowserKo::lastrecid,'>>>>>>>>9')).
-
- CASE cAktion:
- WHEN 'start' THEN createStartResponse ( ).
- WHEN 'same' THEN createSameResponse ( ).
- WHEN 'first' THEN createStartResponse ( ).
- WHEN 'last' THEN createLastResponse ( ).
- WHEN 'next' THEN createNextResponse ( ).
- WHEN 'prev' THEN createPrevResponse ( ).
- WHEN 'select' THEN createSelectResponse( ).
- WHEN 'search' THEN createSearchResponse( ).
- WHEN 'sort' THEN createSortResponse ( ).
- WHEN 'update' THEN updateDatenFromJson ( ).
- WHEN 'delete' THEN deleteDatenFromJson ( ).
-
- WHEN 'copy' THEN
- DO:
- lcJsonString = copyDatenFromJson ( ).
- IF lcJsonString <> '' THEN
- DO:
- lRetVal = FALSE.
- LEAVE.
- END.
- END.
- WHEN 'add' THEN
- DO:
- lcJsonString = addDatenFromJson ( ).
- IF lcJsonString <> '' THEN
- DO:
- lRetVal = FALSE.
- LEAVE.
- END.
- END.
-
- END CASE.
-
- MESSAGE 'Anzahl gelesene Adress-Record = ' iAnzRec.
-
- hbttDBTabelle:FIND-FIRST () NO-ERROR.
- FIND FIRST ttInput.
-
- /* IF NOT AVAILABLE ttBrowser AND */
- /* NOT AVAILABLE ttKGebinde THEN LEAVE. */
- IF iAnzRec = 0 THEN
- DO:
- lRetVal = FALSE.
- LEAVE.
- END.
-
- httBuffer = (IF cAktion = 'select' THEN httDBTabelle ELSE httBrowser).
-
- oJsonArray = NEW JsonArray().
-
- oJsonData = NEW JsonObject().
- hbttInput:WRITE-JSON('JsonObject', oJsonData).
- oJsonArray:Add(oJsonData).
-
- oJsonData = NEW JsonObject().
- httBuffer:WRITE-JSON('JsonObject', oJsonData).
- oJsonArray:Add(oJsonData).
-
- oJsonArray:WRITE(lcJsonString, FALSE).
- MESSAGE 'JsonArray = ' STRING(lcJsonString).
- MESSAGE 'lcString Rückgabe: ' + STRING(lcJsonString).
- oResponse = NEW OpenEdge.Web.WebResponse().
- oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
- oResponse:ContentType = "application/json;charset=utf-8".
- oWriter = NEW WebResponseWriter(oResponse).
-
- oWriter:Open().
- oWriter:Write(lcJsonString).
- oWriter:Close().
-
- LEAVE.
- END.
-
- IF NOT lRetVal THEN
- DO:
- 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().
- END.
- DELETE OBJECT httDBTabelle NO-ERROR.
- DELETE OBJECT hbDBTabelle NO-ERROR.
- 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.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LOGICAL updateDatenFromJson( ):
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE rRecid AS RECID NO-UNDO.
- DEFINE VARIABLE cResult AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
- DEFINE VARIABLE iAnzahl AS INTEGER NO-UNDO.
- DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
-
- iAnzRec = 0.
- rRecid = INT64(hbttInput::ident).
- cTabelle = hbttInput::tabelle.
-
- CREATE BUFFER hbDBTabelle FOR TABLE cTabelle.
- cWhere = SUBSTITUTE('WHERE RECID(&1) = &2 ', hbttInput::tabelle, rRecid).
- hbDBTabelle:FIND-UNIQUE (cWhere, INTEGER(NO-LOCK) ) NO-ERROR.
- hbttDBTabelle:FIND-FIRST ().
- lRetVal = hbDBTabelle:BUFFER-COMPARE(hbttDBTabelle).
- REPEAT TRANSACTION WHILE NOT lRetVal ON ERROR UNDO, LEAVE:
- cWhere = SUBSTITUTE('WHERE RECID(&1) = &2 ', hbttInput::tabelle, rRecid).
- hbDBTabelle:FIND-UNIQUE (cWhere, INTEGER(EXCLUSIVE-LOCK) ) NO-ERROR.
- DO i1 = 1 TO hbDBTabelle:NUM-FIELDS:
- cFeld = hbDBTabelle:BUFFER-FIELD(i1):NAME.
- hFeld = hbttDBTabelle:BUFFER-FIELD(cFeld) NO-ERROR.
- IF hFeld:BUFFER-VALUE(0) = hbDBTabelle:BUFFER-FIELD(i1):BUFFER-VALUE(0) THEN NEXT.
- hbDBTabelle:BUFFER-FIELD(i1):BUFFER-VALUE(0) = hFeld:BUFFER-VALUE(0).
- END.
- hbDBTabelle:BUFFER-RELEASE ().
- LEAVE.
- END.
- DELETE OBJECT hqDBTabelle NO-ERROR.
- CREATE QUERY hqDBTabelle.
- cWhere = SUBSTITUTE('FOR EACH &1 WHERE &1.Firma = &2 NO-LOCK ', cTabelle, QUOTER(hbttInput::mandant)).
- hqDBTabelle:SET-BUFFERS(hbDBTabelle).
- hqDBTabelle:QUERY-PREPARE(cWhere).
- hqDBTabelle:QUERY-OPEN().
- hqDBTabelle:GET-FIRST() NO-ERROR.
- iAnzahl = 0.
- DO WHILE NOT hqDBTabelle:QUERY-OFF-END:
- iAnzahl = iAnzahl + 1.
- IF hbDBTabelle:RECID = rRecid THEN LEAVE.
- hqDBTabelle:GET-NEXT () NO-ERROR.
- END.
-
- DELETE OBJECT hbDBTabelle NO-ERROR.
- DELETE OBJECT hqDBTabelle NO-ERROR.
- httBrowserKo::actualpage = (iAnzahl - (iAnzahl MOD httBrowserKo::pagesize)) / httBrowserKo::pagesize.
- IF httBrowserKo::actualpage < 1 THEN httBrowserKo::actualpage = 0.
- httDBTabelle:EMPTY-TEMP-TABLE ().
- hbttInput::ident = TRIM(STRING(rRecid,'>>>>>>>>9')).
- cAktion = 'next'.
- IF (iAnzahl MOD httBrowserKo::pagesize) = 0 THEN httBrowserKo::actualpage = httBrowserKo::actualpage - 1.
- httBrowserKo::lastrecid = INT64(ttInput.ident).
- outilitiesHandler:updateBrowserKo(INPUT httBrowserKo).
- createNextResponse().
- lRetVal = TRUE.
- RETURN lRetVal.
- 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.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- DESTRUCTOR PUBLIC adressenImpl ( ):
-
- DELETE OBJECT outilitiesHandler NO-ERROR.
-
- MESSAGE 'DESTRUCTOR adressenImpl'.
- END DESTRUCTOR.
- END CLASS.
|