/*------------------------------------------------------------------------------
Purpose: Inclui um atalho Local
Notes:
------------------------------------------------------------------------------*/
PROCEDURE upsertLocalShortcut:
DEFINE INPUT PARAMETER jsonInput AS JsonObject NO-UNDO.
DEFINE INPUT PARAMETER isUpdate AS LOGICAL NO-UNDO.
DEFINE VARIABLE idxShortcut AS INTEGER NO-UNDO.
DEFINE VARIABLE payload AS JsonObject NO-UNDO.
DEFINE VARIABLE payloadArray AS JsonArray NO-UNDO.
DEFINE VARIABLE iCountPayload AS INTEGER NO-UNDO.
DEFINE VARIABLE iPayloadLength AS INTEGER NO-UNDO.
ASSIGN iPayloadLength = CAST(jsonInput:getJSONArray("payload"), "JSONArray"):LENGTH NO-ERROR.
payloadArray = NEW JsonArray().
ASSIGN payloadArray = jsonInput:getJSONArray("payload") NO-ERROR.
IF payloadArray:LENGTH = 0 THEN do: // caso o tamanho seja zero
payload = CAST(jsonInput:getJSONObject("payload"), "JSONObject") NO-ERROR. //atribui object
payloadArray:ADD(payload). //adiciona ao array
END.
iPayloadLength = payloadArray:LENGTH.
DO iCountPayload = 1 TO iPayloadLength:
ASSIGN payload = payloadArray:getJSONObject(iCountPayload) NO-ERROR.
/* Valida os campos obrigatorios */
RUN validateLocalRequiredFields IN THIS-PROCEDURE (INPUT payload).
IF NOT VALID-HANDLE(hExecutionShortcutRepository) THEN
RUN btb/properties/infrastructure/domain/ExecutionShortcutRepository.p PERSISTENT SET hExecutionShortcutRepository.
ASSIGN idxShortcut = getIdxShortcut(jsonInput, isUpdate).
/* Validacoes somente para update */
IF isUpdate THEN DO:
/* Valida se existe o registro no banco de dados */
RUN validateIndex IN THIS-PROCEDURE (INPUT idxShortcut).
/* Valida o tipo do atalho se foi alterado */
RUN validateTypeShortcut IN THIS-PROCEDURE (INPUT idxShortcut, INPUT {&LOCAL_ACCESS}).
END.
/* Valida a descricao do atalho */
RUN validateDescriptionShortcut IN THIS-PROCEDURE ( INPUT idxShortcut,
INPUT JsonAPIUtils:getPropertyJsonObject(payload, "description") ).
RUN setDefaultShortcut IN THIS-PROCEDURE ( INPUT idxShortcut,
INPUT JsonAPIUtils:getPropertyJsonObject(payload, "description") ).
RUN upsertLocalShortcut IN hExecutionShortcutRepository (INPUT payload, INPUT STRING(idxShortcut)).
END.
FINALLY:
DELETE PROCEDURE hExecutionShortcutRepository NO-ERROR.
END FINALLY.
END PROCEDURE.
|