| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010 |
-
- /*------------------------------------------------------------------------
- File : adresse_dict
- Purpose :
- Syntax :
- Description :
- Author(s) : walter.riechsteiner
- Created : Thu Jun 26 13:56:20 CEST 2025
- Notes :
- ----------------------------------------------------------------------*/
-
- BLOCK-LEVEL ON ERROR UNDO, THROW.
- USING OpenEdge.Core.String FROM PROPATH.
- 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 Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
- USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
- USING utilities.utilitiesHandler FROM PROPATH.
- USING Progress.Json.ObjectModel.JsonDataType FROM PROPATH.
- USING System.Windows.Forms.HtmlDocument FROM ASSEMBLY.
- CLASS admin.formdesignerImpl INHERITS WebHandler:
- DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
- DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
- DEFINE VARIABLE oBody AS String NO-UNDO.
-
- DEFINE VARIABLE ccompany AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cuser_name AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cAnzeigeName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ilanguage_id AS INTEGER NO-UNDO.
- DEFINE VARIABLE cSessionToken AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFunction AS CHARACTER NO-UNDO.
-
- DEFINE VARIABLE outilitiesHandler AS utilitiesHandler NO-UNDO.
-
- DEFINE TEMP-TABLE tcompanies
- SERIALIZE-NAME 'companies'
- FIELD company AS CHARACTER SERIALIZE-NAME 'company'
- FIELD company_Name AS CHARACTER SERIALIZE-NAME 'company_name'
- FIELD lselected AS LOGICAL SERIALIZE-NAME 'selected'
- .
- DEFINE VARIABLE htcompanies AS HANDLE NO-UNDO.
-
- DEFINE TEMP-TABLE tusers
- FIELD user_name AS CHARACTER
- FIELD display_name AS CHARACTER
- .
- DEFINE VARIABLE htusers AS HANDLE NO-UNDO.
-
- DEFINE TEMP-TABLE tlanguages
- FIELD language_id AS INTEGER
- FIELD language_name AS CHAR
- .
- DEFINE VARIABLE htlanguages AS HANDLE NO-UNDO.
-
- DEFINE TEMP-TABLE tFileDict
- SERIALIZE-NAME 'fields'
- FIELD cId AS CHARACTER SERIALIZE-NAME 'id'
- FIELD cName AS CHARACTER SERIALIZE-NAME 'fieldName'
- FIELD cLabel AS CHARACTER SERIALIZE-NAME 'label'
- FIELD cType AS CHARACTER SERIALIZE-NAME 'type'
- FIELD cDisplayType AS CHARACTER SERIALIZE-NAME 'displayType'
- FIELD cInputMode AS CHARACTER SERIALIZE-NAME 'inputMode'
- FIELD lshowSpinner AS LOGICAL SERIALIZE-NAME 'showSpinner'
- FIELD cFormat AS CHARACTER SERIALIZE-NAME 'format'
- FIELD iMaxLength AS INTEGER SERIALIZE-NAME 'maxLength'
- FIELD iDecimals AS INTEGER SERIALIZE-NAME 'decimalPlaces'
- FIELD leditable AS LOGICAL SERIALIZE-NAME 'editable'
- FIELD lhidden AS LOGICAL SERIALIZE-NAME 'hidden'
- FIELD cAusrichtung AS CHARACTER SERIALIZE-NAME 'align'
- .
-
- DEFINE TEMP-TABLE tConfig
- SERIALIZE-NAME 'existingConfigs'
- FIELD cId AS CHARACTER SERIALIZE-NAME 'id'
- FIELD cFormTitle AS CHARACTER SERIALIZE-NAME 'formTitle'
- FIELD cFormId AS CHARACTER SERIALIZE-NAME 'formId'
- FIELD cCreated AS CHARACTER SERIALIZE-NAME 'created'
- .
- DEFINE DATASET dsResponse
- SERIALIZE-NAME 'dsResponse'
- FOR tFileDict, tConfig.
- DEFINE VARIABLE hdsResponse AS HANDLE NO-UNDO.
-
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LOGICAL createTemptable(
- INPUT ipoJsonFields AS JsonArray,
- OUTPUT ophtTable AS HANDLE ,
- OUTPUT ophBuffer AS HANDLE
- ):
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE iType AS INTEGER NO-UNDO.
- DEFINE VARIABLE cType AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cField AS CHARACTER NO-UNDO.
- DEFINE VARIABLE hField AS HANDLE NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE iExtent AS INTEGER NO-UNDO.
- DEFINE VARIABLE iNumber AS INTEGER NO-UNDO.
- DEFINE VARIABLE cFieldAttributes AS CHARACTER NO-UNDO EXTENT.
- DEFINE VARIABLE cFieldAttribute AS CHARACTER NO-UNDO.
- DEFINE VARIABLE oJsonField AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonAttr AS JsonObject NO-UNDO.
- DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cAddFields AS CHARACTER NO-UNDO
- INIT 'id,fieldName,label,type,maxLength,format,decimalPlaces,widthInChars,source,align,selectOptionsType'.
- DEFINE VARIABLE cAddedFields AS CHARACTER NO-UNDO.
- CREATE TEMP-TABLE ophtTable.
- cAddedFields = ''.
- DO i1 = 1 TO ipoJsonFields:LENGTH:
- oJsonField = NEW JsonObject().
- oJsonField = ipoJsonFields:GetJsonObject(i1).
- EXTENT(cFieldAttributes) = ?.
- cFieldAttributes = oJsonField:getNames() NO-ERROR.
- iExtent = EXTENT(cFieldAttributes).
- DO ii = 1 TO iExtent:
- cField = cFieldAttributes[ii].
- IF cField = '' THEN NEXT.
- IF LOOKUP(cField, cAddFields , ',') = 0 THEN NEXT.
- IF LOOKUP(cField, cAddedFields, ',') > 0 THEN NEXT.
- iType = oJsonField:getType(cField).
- CASE iType:
- WHEN 1 THEN
- cType = 'character'.
- WHEN 2 THEN
- cType = 'integer'.
- WHEN 3 THEN
- cType = 'logical'.
- // 4 JsonDataType:OBJECT JSON Object
- // 5 JsonDataType:ARRAY JSON Array
- // 6 JsonDataType:NULL Null
- OTHERWISE
- DO:
- MESSAGE cField 'otherwise' iType.
- cType = 'character'.
- END.
- END CASE.
-
- cAddedFields = cAddedFields
- + (IF cAddedFields = '' THEN '' ELSE ',')
- + cField.
- ophtTable:ADD-NEW-FIELD(cField, cType) NO-ERROR.
- IF outilitiesHandler:evaluateErrorStatus(ERROR-STATUS:HANDLE) THEN NEXT.
- END.
- END.
- ophtTable:TEMP-TABLE-PREPARE('ttTemp').
- ophBuffer = ophtTable:DEFAULT-BUFFER-HANDLE.
- DO i1 = 1 TO ipoJsonFields:LENGTH:
- oJsonField = NEW JsonObject().
- oJsonField = ipoJsonFields:GetJsonObject(i1) NO-ERROR.
- IF outilitiesHandler:evaluateErrorStatus(ERROR-STATUS:HANDLE) THEN NEXT.
-
- cValue = oJsonField:GetCharacter('id') NO-ERROR.
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
- ophBuffer:BUFFER-CREATE().
- iExtent = NUM-ENTRIES(cAddedFields, ',').
-
- DO ii = 1 TO iExtent:
- cField = ENTRY(ii, cAddedFields, ',').
- IF NOT oJsonField:Has(cField) THEN NEXT.
-
- hField = ophBuffer:BUFFER-FIELD(cField) NO-ERROR.
- IF outilitiesHandler:evaluateErrorStatus(ERROR-STATUS:HANDLE) THEN NEXT.
- IF oJsonField:IsNull(cField) THEN
- DO:
- MESSAGE 'NULLWERT'.
- hField:BUFFER-VALUE = ?.
- NEXT.
- END.
- // cValue = oJsonField:GetCharacter(cField).
- CASE hField:DATA-TYPE:
- WHEN 'character' THEN
- hField:BUFFER-VALUE = oJsonField:GetCharacter(cField) NO-ERROR.
- WHEN 'integer' THEN
- hField:BUFFER-VALUE = oJsonField:GetInteger(cField) NO-ERROR.
- WHEN 'logical' THEN
- hField:BUFFER-VALUE = STRING(oJsonField:GetLogical(cField)) NO-ERROR.
- END CASE.
- IF hField:BUFFER-VALUE = ? THEN hField:BUFFER-VALUE = ''.
- END.
- LEAVE.
- END.
- END.
-
- // DELETE OBJECT oJsonField NO-ERROR.
- lRetVal = TRUE.
- RETURN lRetVal.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD PUBLIC LOGICAL fillFileDict(
- INPUT oJsonIdent AS JsonObject
- ):
- DEFINE VARIABLE lresult AS LOGICAL NO-UNDO INIT FALSE.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE j1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE j2 AS INTEGER NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOG NO-UNDO INIT FALSE.
- DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
- DEFINE VARIABLE hField AS HANDLE NO-UNDO.
- DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
- DEFINE VARIABLE rFile AS RECID NO-UNDO.
- DEFINE VARIABLE cViewas AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cSidelabel AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cHeadlabel AS CHARACTER NO-UNDO.
- DEFINE VARIABLE rLabelTexte AS RECID NO-UNDO.
-
- DEFINE VARIABLE cFileNames AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cLDBName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cDBName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cTestName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cDBFileName AS CHARACTER NO-UNDO.
-
- DEFINE VARIABLE ccompany AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cuser_name AS CHARACTER NO-UNDO.
- DEFINE VARIABLE iLanguage_id AS INTEGER NO-UNDO.
-
- DEFINE BUFFER blabeltexte FOR labeltexte.
-
- ccompany = oJsonIdent:GetCharacter('company').
- cuser_name = oJsonIdent:GetCharacter('user_name').
- iLanguage_id = oJsonIdent:GetInteger ('language_id').
- EMPTY TEMP-TABLE tFileDict.
- lRetVal = FALSE.
- cFileNames = REPLACE(oJsonIdent:GetCharacter('tables'), ',', ';').
- DO ii = 1 TO NUM-ENTRIES(cFileNames, ';'):
- cFileName = ENTRY(ii,cFileNames, ';').
- CREATE BUFFER hBuffer FOR TABLE cFileName NO-ERROR.
- IF ERROR-STATUS:ERROR OR
- NOT VALID-HANDLE(hBuffer) THEN NEXT.
- DO i1 = 1 TO hBuffer:NUM-FIELDS:
- hField = hBuffer:BUFFER-FIELD(i1).
- cFieldName = hField:NAME.
- IF cFieldName = 'wordindex' THEN NEXT.
- CREATE tFileDict.
- ASSIGN
- tFileDict.cId = cFileName + '_' + cFieldName
- tFileDict.cName = cFilename + '_' + cFieldName
- tFileDict.cFormat = hBuffer:BUFFER-FIELD(cFieldName):FORMAT
- tFileDict.cType = hBuffer:BUFFER-FIELD(cFieldName):DATA-TYPE
- tFileDict.iDecimals = 0
- tFileDict.lhidden = FALSE
- tFileDict.leditable = TRUE
- tFileDict.iMaxLength = 12
- tFileDict.cAusrichtung = 'left'
- tFileDict.cDisplayType = ?
- tFileDict.lShowSpinner = ?
- tFileDict.cInputMode = ?
- .
- DO WHILE TRUE TRANSACTION:
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.company = ccompany
- AND labeltexte.user_name = 'admin'
- AND labeltexte.table_name = cFileName
- AND labeltexte.field_name = cFieldName
- AND labeltexte.language_id = iLanguage_id
- AND labeltexte.program = '' NO-ERROR.
- IF AVAILABLE labeltexte THEN
- DO:
- rLabelTexte = RECID(labeltexte).
- LEAVE.
- END.
-
- FIND FIRST blabeltexte NO-LOCK
- WHERE blabeltexte.company = ccompany
- AND blabeltexte.user_name = 'admin'
- AND blabeltexte.field_name = cFieldName
- AND blabeltexte.language_id = iLanguage_id
- AND blabeltexte.program = '' NO-ERROR.
- IF AVAILABLE blabeltexte THEN
- ASSIGN
- cSidelabel = blabeltexte.sidelabel
- cHeadlabel = blabeltexte.headlabel.
- ELSE
- IF hField:LABEL <> ? THEN
- ASSIGN
- cSidelabel = hField:LABEL
- cHeadlabel = hField:LABEL.
- ELSE
- ASSIGN
- cSidelabel = hField:NAME
- cHeadlabel = hField:NAME.
-
- CREATE labeltexte.
- ASSIGN
- labeltexte.company = ccompany
- labeltexte.user_name = 'admin'
- labeltexte.table_name = cFileName
- labeltexte.field_name = cFieldName
- labeltexte.language_id = iLanguage_id
- labeltexte.program = ''
- labeltexte.created_at = NOW NO-ERROR.
-
- ASSIGN
- labeltexte.sidelabel = cSidelabel
- labeltexte.headlabel = cHeadlabel.
-
- rLabelTexte = RECID(labeltexte).
- RELEASE labeltexte.
- RELEASE blabeltexte.
- LEAVE.
- END.
-
- DO WHILE TRUE TRANSACTION:
- IF cuser_name = 'admin' THEN LEAVE.
-
- FIND FIRST labeltexte NO-LOCK
- WHERE labeltexte.company = ccompany
- AND labeltexte.user_name = cuser_name
- AND labeltexte.table_name = cFileName
- AND labeltexte.field_name = cFieldName
- AND labeltexte.language_id = iLanguage_id
- AND labeltexte.program = '' NO-ERROR.
- IF AVAILABLE labeltexte THEN
- DO:
- rLabelTexte = RECID(labeltexte).
- LEAVE.
- END.
-
- FIND FIRST blabeltexte NO-LOCK
- WHERE blabeltexte.company = ccompany
- AND blabeltexte.user_name = cuser_name
- AND blabeltexte.field_name = cFieldName
- AND blabeltexte.language_id = iLanguage_id
- AND blabeltexte.program = '' NO-ERROR.
- IF AVAILABLE blabeltexte THEN
- DO:
- rLabelTexte = RECID(blabeltexte).
- LEAVE.
- END.
- LEAVE.
- END.
-
- FIND labeltexte NO-LOCK
- WHERE RECID(labeltexte) = rLabelTexte.
- tFileDict.cLabel = labeltexte.headlabel.
- IF INDEX(hField:FORMAT, '(') = 0 THEN tFileDict.iMaxLength = LENGTH(hField:FORMAT).
- ELSE
- DO:
- j1 = INDEX(hField:FORMAT, '(') + 1.
- j2 = INDEX(hField:FORMAT, ')').
- tFileDict.iMaxLength = INTEGER(SUBSTRING(hField:FORMAT, j1, j2 - j1)).
- END.
- IF hField:EXTENT > 0 THEN tFileDict.iMaxLength = tFileDict.iMaxLength * hField:EXTENT.
-
- CASE tFileDict.cType:
- WHEN 'character' THEN
- DO:
- ASSIGN
- tFileDict.cType = 'text'
- tFileDict.iDecimals = 0.
- IF hField:EXTENT > 0 THEN tFileDict.cType = 'textarea'.
- END.
- WHEN 'Date' THEN
- DO:
- ASSIGN
- tFileDict.cType = 'date'
- tFileDict.cFormat = '99.99.9999'
- tFileDict.iDecimals = 0
- tFileDict.iMaxLength = tFileDict.iMaxLength + 2
- tFileDict.cAusrichtung = 'center'.
- END.
- WHEN 'Decimal' THEN
- DO:
- ASSIGN
- tFileDict.cType = 'decimal'
- tFileDict.iDecimals = hField:DECIMALS
- tFileDict.cDisplayType = 'text'
- tFileDict.cInputMode = 'decimal'
- tFileDict.lShowSpinner = FALSE
- tFileDict.iMaxLength = tFileDict.iMaxLength
- tFileDict.cAusrichtung = 'right'.
- END.
- WHEN 'Integer' OR
- WHEN 'Int64' THEN
- DO:
- ASSIGN
- tFileDict.cType = 'integer'
- tFileDict.iDecimals = 0
- tFileDict.cDisplayType = 'text'
- tFileDict.cInputMode = 'numeric'
- tFileDict.lShowSpinner = FALSE
- tFileDict.iMaxLength = tFileDict.iMaxLength
- tFileDict.cAusrichtung = 'right'.
- END.
- WHEN 'Recid' THEN
- DO:
- ASSIGN
- tFileDict.cType = 'integer'
- tFileDict.iDecimals = 0
- tFileDict.cDisplayType = 'text'
- tFileDict.cInputMode = 'text'
- tFileDict.lShowSpinner = FALSE
- tFileDict.lHidden = TRUE
- tFileDict.leditable = FALSE.
- END.
- WHEN 'logical' THEN
- DO:
- ASSIGN
- tFileDict.cType = 'checkbox'
- tFileDict.cAusrichtung = 'center'.
- END.
- END CASE.
-
- cViewas = hField:VIEW-AS.
- CASE cViewas:
- WHEN 'combo-box' THEN
- tFileDict.cType = 'select'.
- WHEN 'editor' THEN
- ASSIGN
- tFileDict.cType = 'textarea'.
- END CASE.
-
- END.
- DELETE OBJECT hBuffer NO-ERROR.
- END.
-
- lResult = TRUE.
- RETURN lresult.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD OVERRIDE PROTECTED INTEGER HandleGet (INPUT poRequest AS IWebRequest ):
- DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
-
- DEFINE VARIABLE oJsonCompanies AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonUsers AS JsonArray NO-UNDO.
- DEFINE VARIABLE oJsonLanguages AS JsonArray NO-UNDO.
- DEFINE VARIABLE oBody AS String NO-UNDO.
-
- DEFINE VARIABLE cDefautlCharSet AS CHARACTER NO-UNDO INIT 'UTF-8'.
- DEFINE VARIABLE cCorralationID AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cContent-Type AS CHARACTER NO-UNDO.
- DEFINE VARIABLE htFileDict AS HANDLE NO-UNDO.
- DEFINE VARIABLE htConfig AS HANDLE NO-UNDO.
- DEFINE VARIABLE lcJsonInhalt AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE cFileNames AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE dDateTime AS DATETIME NO-UNDO.
- DEFINE VARIABLE cDateTime AS CHARACTER NO-UNDO.
-
- DEFINE VARIABLE cConfig_id AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO INIT FALSE.
- DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cQueryPairs AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cQueryKey AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cQueryValue AS CHARACTER NO-UNDO.
-
- outilitiesHandler = NEW utilitiesHandler().
- MESSAGE 'GetHandler '.
- cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
- outilitiesHandler:getHeaderData(
- INPUT poRequest ,
- INPUT cQueryString ,
- OUTPUT ccompany ,
- OUTPUT cuser_name ,
- OUTPUT cAnzeigeName ,
- OUTPUT ilanguage_id ,
- OUTPUT cSessionToken,
- OUTPUT cFunction ,
- OUTPUT oJsonIdent
- ).
-
- oJsonIdent:WriteFile('C:\TEMP\formdesigner_GET.json', TRUE).
- MESSAGE 'getHandler Function =' cFunction.
- DO WHILE cFunction = 'init':
- EMPTY TEMP-TABLE tcompanies.
- FOR EACH companies NO-LOCK WHERE companies.active:
- CREATE tcompanies.
- BUFFER-COPY companies TO tcompanies.
- ASSIGN
- tcompanies.lselected = (IF companies.company = ccompany THEN TRUE ELSE FALSE).
- END.
-
- EMPTY TEMP-TABLE tusers.
- FOR EACH users NO-LOCK WHERE users.active:
- CREATE tusers.
- BUFFER-COPY users TO tusers.
- END.
-
- EMPTY TEMP-TABLE tlanguages.
- FOR EACH languages NO-LOCK:
- CREATE tlanguages.
- BUFFER-COPY languages TO tlanguages.
- END.
-
- oJsonResponse = NEW JsonObject().
- oJsonCompanies = NEW JsonArray().
- oJsonUsers = NEW JsonArray().
- oJsonLanguages = NEW JsonArray().
-
- htcompanies = TEMP-TABLE tcompanies:DEFAULT-BUFFER-HANDLE.
- htusers = TEMP-TABLE tusers :DEFAULT-BUFFER-HANDLE.
- htlanguages = TEMP-TABLE tlanguages:DEFAULT-BUFFER-HANDLE.
-
- htcompanies:WRITE-JSON('JsonArray', oJsonCompanies ).
- htusers :WRITE-JSON('JsonArray', oJsonUsers ).
- htlanguages:WRITE-JSON('JsonArray', oJsonLanguages ).
-
- oJsonResponse:ADD('companies', oJsonCompanies).
- oJsonResponse:ADD('users' , oJsonUsers ).
- oJsonResponse:ADD('languages', oJsonLanguages).
-
- oJsonResponse:WRITE(lcJsonInhalt, FALSE).
-
- lRetVal = TRUE.
- LEAVE.
- END.
- DO WHILE cFunction = 'load':
- lRetVal = fillFileDict(
- INPUT oJsonIdent
- ).
- cFileNames = oJsonIdent:GetCharacter('tables').
- MESSAGE 'File-Namen ' cFileNames.
- EMPTY TEMP-TABLE tConfig.
- FOR EACH htmldokumente NO-LOCK
- WHERE htmldokumente.company = ccompany
- AND htmldokumente.user_name = cuser_name
- AND htmldokumente.language_id = ilanguage_id:
- DO ii = 1 TO NUM-ENTRIES(cFileNames, ';'):
- cFileName = ENTRY(ii, cFileNames, ';').
- IF INDEX(htmldokumente.Form_Id, cFileName) = 0 THEN NEXT.
-
- IF htmldokumente.updated_at = ? THEN
- DO:
- dDateTime = htmldokumente.created_at.
- cDateTime = STRING(htmldokumente.created_at,'99-99-9999THH:MM:SS').
- END.
- ELSE
- DO:
- dDateTime = htmldokumente.updated_at.
- cDateTime = STRING(htmldokumente.updated_at,'99-99-9999THH:MM:SS').
- END.
- CREATE tConfig.
- ASSIGN
- tConfig.cId = htmldokumente.form_id
- tConfig.cFormTitle = htmldokumente.formtitle
- tConfig.cCreated = STRING(YEAR(dDateTime),'9999')
- + '-'
- + STRING(MONTH(dDateTime),'99')
- + '-'
- + STRING(DAY(dDateTime),'99')
- + SUBSTRING(cDateTime,11).
- LEAVE.
- END.
- END.
-
- htFileDict = TEMP-TABLE tFileDict :DEFAULT-BUFFER-HANDLE.
- htConfig = TEMP-TABLE tConfig :DEFAULT-BUFFER-HANDLE.
- hdsResponse = DATASET dsResponse:HANDLE.
-
- oJsonResponse = NEW JsonObject().
- oJsonResponse:READ(hdsResponse).
- oJsonResponse:WRITE(lcJsonInhalt, FALSE).
- lRetVal = TRUE.
- LEAVE.
- END.
-
- DO WHILE cFunction = 'loaddetail':
- cConfig_id = oJsonIdent:GetCharacter('config_id').
- FIND FIRST htmldokumente NO-LOCK
- WHERE htmldokumente.company = ccompany
- AND htmldokumente.user_name = cuser_name
- AND htmldokumente.language_id = ilanguage_id
- AND htmldokumente.form_id = cConfig_id NO-ERROR.
-
- lcJsonInhalt = htmldokumente.htmltext.
- lRetVal = TRUE.
- LEAVE.
- END.
-
- DO WHILE cFunction = 'delete':
- lRetVal = FALSE.
- cConfig_id = oJsonIdent:GetCharacter('config_id').
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
- FIND FIRST htmldokumente
- WHERE htmldokumente.company = ccompany
- AND htmldokumente.user_name = cuser_name
- AND htmldokumente.language_id = ilanguage_id
- AND htmldokumente.form_id = cConfig_id NO-ERROR.
- IF NOT AVAILABLE htmldokumente THEN LEAVE.
- DELETE htmldokumente.
- lRetVal = TRUE.
- LEAVE.
- END.
-
- oJsonResponse = NEW JsonObject().
- oJsonResponse:ADD("success", lRetVal).
- IF lRetVal THEN oJsonResponse:ADD('message', 'Konfiguration erfolreich gelöscht').
- ELSE oJsonResponse:ADD('error' , 'Konfiguration nicht gefunden' ).
- oJsonResponse:write(lcJsonInhalt, FALSE).
-
- LEAVE.
- END.
-
- IF NOT lRetVal THEN
- DO:
- oJsonResponse = NEW JsonObject().
- oJsonResponse:ADD('success', FALSE).
- oJsonResponse:WRITE(lcJsonInhalt, FALSE).
- END.
-
- cContent-Type = "application/json".
- cDefautlCharSet = 'utf-8'.
- oBody = NEW STRING(lcJsonInhalt).
- WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse).
-
- oWriter = NEW WebResponseWriter(oResponse).
- oWriter:Open().
- oWriter:Close().
- RETURN 0.
-
- CATCH e AS Progress.Lang.Error:
- END CATCH.
- FINALLY:
- END FINALLY.
- 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:
- ------------------------------------------------------------------------------*/
- 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 oJsonMessage AS JsonObject NO-UNDO.
- DEFINE VARIABLE oFelder AS JsonArray NO-UNDO.
- DEFINE VARIABLE oFeld AS JsonObject NO-UNDO.
-
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE lcJsonString AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE cJSON AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE oJsonConfig AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonFields AS JsonArray NO-UNDO.
-
- DEFINE VARIABLE ctables AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ccompany AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cuser_name AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ilanguage_id AS INTEGER NO-UNDO.
- DEFINE VARIABLE cformtitle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cformid AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFormColumns AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lcJsonConfig AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE iItemsPerPage AS INTEGER NO-UNDO.
- DEFINE VARIABLE ctableMaxHeight AS CHARACTER NO-UNDO.
- DEFINE VARIABLE htTable AS HANDLE NO-UNDO.
- DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
- DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
- DEFINE VARIABLE hField AS HANDLE NO-UNDO.
- DEFINE VARIABLE cFieldNames AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cField AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cBoxfields AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cBoxfieldsFix AS CHARACTER NO-UNDO.
- DEFINE VARIABLE lBoxField AS LOGICAL NO-UNDO.
- DEFINE VARIABLE cLabel AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cAlign AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cadminLabel AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cadminAlign AS CHARACTER NO-UNDO.
- lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
- // MESSAGE 'getJsonFromRequest = ' lRetVal.
-
- cFunction = poRequest:URI:GetQueryValue("function").
- // MESSAGE 'Funktion = ' cFunction.
-
- oJsonData:WRITE(lcJsonString, FALSE).
- MESSAGE 'ganzer Eingangsstring = ' STRING(lcJsonString).
-
- outilitiesHandler = NEW utilitiesHandler().
-
- ccompany = oJsonData:GetCharacter('company' ).
- cuser_name = oJsonData:GetCharacter('user_name' ).
- ilanguage_id = INTEGER(oJsonData:GetCharacter('language_id')).
- ctables = oJsonData:GetCharacter('tables').
- MESSAGE ccompany '-' cuser_name '-' ilanguage_id '-' ctables.
-
- oJsonConfig = NEW JsonObject().
- oJsonConfig = oJsonData:GetJsonObject ('config' ).
- cformtitle = oJsonConfig:GetCharacter('formTitle' ).
- cformid = oJsonConfig:GetCharacter('formId' ).
- iItemsPerPage = oJsonConfig:Getinteger ('itemsPerPage' ).
- ctableMaxHeight = oJsonConfig:GetCharacter('tableMaxHeight').
- cFormColumns = oJsonConfig:GetCharacter('formColumns' ).
- oJsonFields = NEW JsonArray().
- oJsonFields = oJsonConfig:GetJsonArray('selectedFields').
- oJsonConfig:WRITE(lcJsonConfig, FALSE).
-
- oJsonConfig:WriteFile('C:\TEMP\FormDesignerConfig.json', TRUE).
- oJsonFields:WriteFile('C:\TEMP\FormDesignerFields.json', TRUE).
-
- createTemptable (
- INPUT oJsonFields,
- OUTPUT htTable ,
- OUTPUT hBuffer ).
-
- hBuffer:WRITE-JSON ('file', 'C:\TEMP\FeldAttributeAusFormdesigner.csv', TRUE).
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
- FIND htmldokumente
- WHERE htmldokumente.company = ccompany
- AND htmldokumente.user_name = cuser_name
- AND htmldokumente.form_id = cformid
- AND htmldokumente.language_id = ilanguage_id NO-ERROR.
- IF NOT AVAILABLE htmldokumente THEN
- DO:
- CREATE htmldokumente.
- ASSIGN
- htmldokumente.company = ccompany
- htmldokumente.user_name = cuser_name
- htmldokumente.form_id = cformid
- htmldokumente.language_id = ilanguage_id
- htmldokumente.created_at = NOW.
- END.
- ASSIGN
- htmldokumente.tables = ctables
- htmldokumente.formtitle = cformtitle
- htmldokumente.itemsPerPage = iItemsPerPage
- htmldokumente.tableMaxHeight = ctableMaxHeight
- Htmldokumente.formColumns = cFormColumns.
- htmltext = STRING(lcJsonConfig).
- // MESSAGE 'htmldokument gschrieben mit config ' STRING(lcJsonConfig).
- RELEASE htmldokumente.
- LEAVE.
- END.
- cBoxfields = ''.
- cBoxfieldsFix = ''.
- CREATE QUERY hQuery.
- hQuery:SET-BUFFERS(hBuffer).
- hQuery:QUERY-PREPARE ('FOR EACH ttTemp NO-LOCK').
- hQuery:QUERY-OPEN ().
- hQuery:GET-FIRST ().
-
- DO WHILE NOT hQuery:QUERY-OFF-END TRANSACTION:
- cFieldName = hBuffer:BUFFER-FIELD('fieldName'):BUFFER-VALUE.
- cFileName = ENTRY(1, cFieldName, '_').
- cField = REPLACE(cFieldName, cFileName + '_', '').
- //
- // Standard-Label-Text für admin und table
- //
- clabel = hBuffer:BUFFER-FIELD('label'):BUFFER-VALUE.
- calign = hBuffer:BUFFER-FIELD('align'):BUFFER-VALUE.
- MESSAGE 'cFileName =' cFileName 'FieldName =' cField 'cLabel =' cLabel 'cAlign =' cAlign.
- FIND FIRST labeltexte
- WHERE labeltexte.company = ccompany
- AND labeltexte.user_name = 'admin'
- AND labeltexte.program = 'program'
- AND labeltexte.table_name = 'table'
- AND labeltexte.field_name = cField
- AND labeltexte.language_id = ilanguage_id NO-ERROR.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- CREATE labeltexte.
- ASSIGN
- labeltexte.company = ccompany
- labeltexte.user_name = 'admin'
- labeltexte.program = 'program'
- labeltexte.table_name = 'table'
- labeltexte.field_name = cField
- labeltexte.language_id = ilanguage_id
- labeltexte.created_at = NOW
- labeltexte.sidelabel = cLabel
- labeltexte.headlabel = cLabel
- labeltexte.alignment = cAlign.
- END.
- ELSE
- DO:
- IF cuser_name = 'admin' THEN
- DO:
- ASSIGN
- labeltexte.updated_at = NOW
- labeltexte.sidelabel = cLabel
- labeltexte.headlabel = cLabel
- labeltexte.alignment = cAlign.
- END.
- END.
- cadminlabel = labeltexte.headlabel.
- cadminalign = labeltexte.alignment.
-
- DO WHILE TRUE:
- IF cLabel = cadminlabel AND
- cAlign = cadminalign THEN LEAVE.
-
- FIND FIRST labeltexte
- WHERE labeltexte.company = ccompany
- AND labeltexte.user_name = 'admin'
- AND labeltexte.program = 'program'
- AND labeltexte.table_name = cFileName
- AND labeltexte.field_name = cField
- AND labeltexte.language_id = ilanguage_id NO-ERROR.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- CREATE labeltexte.
- ASSIGN
- labeltexte.company = ccompany
- labeltexte.user_name = 'admin'
- labeltexte.program = 'program'
- labeltexte.table_name = cFileName
- labeltexte.field_name = cField
- labeltexte.language_id = ilanguage_id
- labeltexte.created_at = NOW
- labeltexte.sidelabel = cLabel
- labeltexte.headlabel = cLabel
- labeltexte.alignment = cAlign.
- END.
- IF cuser_name = 'admin' THEN LEAVE.
-
- cadminlabel = labeltexte.headlabel.
- cadminalign = labeltexte.alignment.
-
- IF cLabel = cadminlabel AND
- cAlign = cadminalign THEN LEAVE.
-
- FIND FIRST labeltexte
- WHERE labeltexte.company = ccompany
- AND labeltexte.user_name = cuser_name
- AND labeltexte.program = 'program'
- AND labeltexte.table_name = cFileName
- AND labeltexte.field_name = cField
- AND labeltexte.language_id = ilanguage_id NO-ERROR.
- IF NOT AVAILABLE labeltexte THEN
- DO:
- CREATE labeltexte.
- ASSIGN
- labeltexte.company = ccompany
- labeltexte.user_name = cuser_name
- labeltexte.program = 'program'
- labeltexte.table_name = cFileName
- labeltexte.field_name = cField
- labeltexte.language_id = ilanguage_id
- labeltexte.created_at = NOW.
- END.
- ELSE
- DO:
- ASSIGN
- labeltexte.updated_at = NOW.
- END.
- ASSIGN
- labeltexte.sidelabel = hBuffer:BUFFER-FIELD('label'):BUFFER-VALUE
- labeltexte.headlabel = hBuffer:BUFFER-FIELD('label'):BUFFER-VALUE
- labeltexte.alignment = hBuffer:BUFFER-FIELD('align'):BUFFER-VALUE.
-
- LEAVE.
- END.
- RELEASE labeltexte.
-
-
- hField = hBuffer:BUFFER-FIELD('id'):HANDLE NO-ERROR.
- IF hField:BUFFER-VALUE = 'addresses_salutation_code' THEN
- DO:
- hField = hBuffer:BUFFER-FIELD('type'):HANDLE.
- MESSAGE 'addresses_salutation_code type' hField:BUFFER-VALUE.
- hField = hBuffer:BUFFER-FIELD('selectOptionsType'):HANDLE.
- MESSAGE 'addresses_salutation_code selectOptionsType =' hField:BUFFER-VALUE.
- END.
- lBoxField = (IF hBuffer:BUFFER-FIELD('type'):BUFFER-VALUE = 'select' THEN TRUE ELSE FALSE).
- DO WHILE lBoxField:
- hField = hBuffer:BUFFER-FIELD('selectOptionsType'):HANDLE NO-ERROR.
- IF outilitiesHandler:evaluateErrorStatus(ERROR-STATUS:HANDLE) THEN LEAVE.
- MESSAGE hField:NAME '-' hField:BUFFER-VALUE.
- IF VALID-HANDLE(hField) AND hField:BUFFER-VALUE BEGINS 'variable' THEN
- cBoxFields = cBoxfields
- + (IF cBoxfields = '' THEN '' ELSE ';')
- + hBuffer:BUFFER-FIELD('fieldName'):BUFFER-VALUE.
- ELSE
- cBoxFieldsFix = cBoxfieldsFix
- + (IF cBoxfieldsFix = '' THEN '' ELSE ';')
- + hBuffer:BUFFER-FIELD('fieldName'):BUFFER-VALUE.
- MESSAGE 'Feldname =' hBuffer:BUFFER-FIELD('fieldName'):BUFFER-VALUE VALID-HANDLE(hField).
- LEAVE.
- END.
- hQuery:GET-NEXT ().
- END.
- IF cBoxfields <> '' OR
- cBoxFieldsFix <> '' THEN
- DO:
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
- FIND FIRST selectboxfields
- WHERE selectboxfields.company = ccompany
- AND selectboxfields.program = cFormId
- AND selectboxfields.user_name = cuser_name
- AND selectboxfields.table_Name = '' NO-ERROR.
- IF NOT AVAILABLE selectboxfields THEN
- DO:
- CREATE selectboxfields.
- ASSIGN
- selectboxfields.company = ccompany
- selectboxfields.program = cFormId
- selectboxfields.user_name = cuser_name
- selectboxfields.table_Name = ''.
- END.
- ASSIGN
- selectboxfields.boxfields = cBoxFields
- selectboxfields.boxfieldsFix = cBoxfieldsFix.
- RELEASE selectboxfields.
- LEAVE.
- END.
- END.
-
- // MESSAGE 'geschrieben ' ccompany '-' cuser_name '-' cformid '-' ilanguage_id.
-
- oResponse = NEW OpenEdge.Web.WebResponse().
- oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
- oResponse:ContentType = "application/json;charset=utf-8".
- oWriter = NEW WebResponseWriter(oResponse).
-
- oJsonMessage = NEW JsonObject().
- oJsonMessage:ADD('id', cformid).
- oJsonMessage:ADD('message', 'erfolgreich gespeichert').
- oJsonMessage:WRITE(lcJsonString, TRUE).
- // MESSAGE 'Rueckmeldung ' STRING(lcJsonString).
-
- oWriter:Open().
- oWriter:Write(lcJsonString).
- oWriter:Close().
- CATCH e AS Progress.Lang.Error:
- END CATCH.
- FINALLY:
- /* DELETE OBJECT oJsonConfig NO-ERROR.*/
- /* DELETE OBJECT oJsonMessage NO-ERROR.*/
- /* DELETE OBJECT oJsonFields NO-ERROR.*/
- END FINALLY.
- END METHOD.
- END CLASS.
|