From 9f3dfbfe12588c778fd679a6db0558734e9c8c37 Mon Sep 17 00:00:00 2001 From: "Infineon\\Ouellette" Date: Thu, 16 Jan 2025 16:50:30 -0700 Subject: [PATCH] Added more core functionality --- LSL2/STPROC/OIWIZARD_API.txt | 29 ++++++ LSL2/STPROC/OI_WIZARD_SERVICES.txt | 28 +++++- LSL2/STPROC/RETURNTOFAB_API.txt | 92 ++++++++++++++++- LSL2/STPROC/RETURN_TO_FAB_SERVICES.txt | 133 ++++++++++++++++++++++++- 4 files changed, 275 insertions(+), 7 deletions(-) diff --git a/LSL2/STPROC/OIWIZARD_API.txt b/LSL2/STPROC/OIWIZARD_API.txt index 7a80f41..f0b6683 100644 --- a/LSL2/STPROC/OIWIZARD_API.txt +++ b/LSL2/STPROC/OIWIZARD_API.txt @@ -206,3 +206,32 @@ CreateHALItem: end return + +API oiwizard.checkidleoisessionvalid.HEAD +API oiwizard.checkidleoisessionvalid.GET + + OIWizardID = '' + Cookies = HTTP_Services('GetHTTPCookie') + For each Cookie in Cookies using ';' + Key = Field(Cookie, '=', 1) + If Key EQ 'sessionID' then + OIWizardID = Field(Cookie, '=', 2) + end + Next Cookie + + ValidSession = OI_Wizard_Services('ValidateSessionIdle', OIWizardID) + + If ValidSession EQ True$ then + Expiry = Xlate('OI_WIZARD', OIWizardID, 'EXPIRY_UTC', 'X') + LSLUserID = Xlate('OI_WIZARD', OIWizardID, 'EMPLOYEE_ID', 'X') + HTTP_Services('SetResponseHeaderField', 'Set-Cookie', 'sessionID=':OIWizardID:' ;Expires=':Expiry) + HTTP_Services('SetResponseHeaderField', 'Set-Cookie', 'userID=':LSLUserID:' ;Expires=':Expiry, True$) + HTTP_Services('SetResponseHeaderField', 'Expires', Expiry) + Message = 'Valid session. Expiry updated' + StatusCode = 200 + GoSub CreateHALItem + end else + HTTP_Services('SetResponseStatus', 401, 'Invalid session. Reauthentication required.') + end + +end api diff --git a/LSL2/STPROC/OI_WIZARD_SERVICES.txt b/LSL2/STPROC/OI_WIZARD_SERVICES.txt index bf40475..2872f75 100644 --- a/LSL2/STPROC/OI_WIZARD_SERVICES.txt +++ b/LSL2/STPROC/OI_WIZARD_SERVICES.txt @@ -184,7 +184,6 @@ end service Service ValidateSession(OIWizardID) - ErrorMsg = '' If OIWizardID NE '' then OIWizardRec = Database_Services('ReadDataRow', 'OI_WIZARD', OIWizardID) @@ -214,6 +213,32 @@ Service ValidateSession(OIWizardID) end end service +/* +This routine validates a users session without extending it. Used for OI Wizard sessions that are awaiting input. +*/ +Service ValidateSessionIdle(OIWizardID) + ErrorMsg = '' + If OIWizardID NE '' then + OIWizardRec = Database_Services('ReadDataRow', 'OI_WIZARD', OIWizardID, True$, 0, False$) + If Error_Services('NoError') then + SessionTerminated = OIWizardRec + If SessionTerminated then + ErrorMsg = 'Expired session.' + end + end else + ErrorMsg = Error_Services('GetMessage') + end + end else + ErrorMsg = 'Error in ':Service:' service. Null OIWizardID passed in.' + end + + If ErrorMsg EQ '' then + Response = True$ + end else + Error_Services('Add', ErrorMsg) + Response = False$ + end +end service Service TerminateSession(OIWizardID) @@ -452,3 +477,4 @@ end service + diff --git a/LSL2/STPROC/RETURNTOFAB_API.txt b/LSL2/STPROC/RETURNTOFAB_API.txt index 7b86454..a416473 100644 --- a/LSL2/STPROC/RETURNTOFAB_API.txt +++ b/LSL2/STPROC/RETURNTOFAB_API.txt @@ -152,7 +152,6 @@ end api API returntofab.ID.PATCH -debug // Update reactor reactor and return updated reactor object RTFId = EndpointSegment If RTFId then @@ -184,6 +183,16 @@ debug Return_To_Fab_Services('SetReasonForReturn', RTFId, LSLUser, Value) Case Field EQ 'EvalResultId' Return_To_Fab_Services('SetEvalInfo', RTFId, LSLUser, Value) + Case Field EQ 'MhInitDtm' + Return_To_Fab_Services('SetBinToBin', RTFId, LSLUser) + Case Field EQ 'CompletedDtm' + Return_To_Fab_Services('SetFinalBinToBin', RTFId, LSLUser) + if Error_Services('NoError') then + Return_To_Fab_Services('SetRTFCompleted', RTFId, LSLUser) + end else + ErrorMessage = Error_Services('GetMessage') + Error_Services('Add', ErrorMessage) + end Case Otherwise$ Error_Services('Add', 'Error Updating ' : Field : 'field in RTF Record.') End Case @@ -234,6 +243,87 @@ API returntofab.evaluationresultoptions.GET end end api +API returntofab.reportopenforms.HEAD +API returntofab.reportopenforms.GET + + OIWizardID = '' + Cookies = HTTP_Services('GetHTTPCookie') + For each Cookie in Cookies using ';' + Key = Field(Cookie, '=', 1) + If Key EQ 'sessionID' then + OIWizardID = Field(Cookie, '=', 2) + end + Next Cookie + + ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID) + + If ValidSession then + UserId = Xlate('OI_WIZARD', OIWizardID, 'EMPLOYEE_ID', 'X') + RTFId = EndpointSegment + If Error_Services('NoError') AND RTFId NE '' then + RTFJson = Return_To_Fab_Services('CreateReturnToFabReportJson', True$) + If Error_Services('NoError') then + HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL) + HTTP_Services('SetResponseBody', RTFJson, False$, 'application/hal+json') + If Assigned(Message) then + HTTP_Services('SetResponseStatus', 201, Message) + end else + HTTP_Services('SetResponseStatus', 201) + end + end else + + end + + end else + HTTP_Services('SetResponseStatus', 400, Error_Services('GetMessage')) + end + end else + HTTP_Services('SetResponseStatus', 401, 'Invalid session. Reauthentication required.') + end + +end api + + +API returntofab.reportallforms.HEAD +API returntofab.reportallforms.GET + + OIWizardID = '' + Cookies = HTTP_Services('GetHTTPCookie') + For each Cookie in Cookies using ';' + Key = Field(Cookie, '=', 1) + If Key EQ 'sessionID' then + OIWizardID = Field(Cookie, '=', 2) + end + Next Cookie + + ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID) + + If ValidSession then + UserId = Xlate('OI_WIZARD', OIWizardID, 'EMPLOYEE_ID', 'X') + RTFId = EndpointSegment + If Error_Services('NoError') AND RTFId NE '' then + RTFJson = Return_To_Fab_Services('CreateReturnToFabReportJson', False$) + If Error_Services('NoError') then + HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL) + HTTP_Services('SetResponseBody', RTFJson, False$, 'application/hal+json') + If Assigned(Message) then + HTTP_Services('SetResponseStatus', 201, Message) + end else + HTTP_Services('SetResponseStatus', 201) + end + end else + + end + + end else + HTTP_Services('SetResponseStatus', 400, Error_Services('GetMessage')) + end + end else + HTTP_Services('SetResponseStatus', 401, 'Invalid session. Reauthentication required.') + end + +end api + //---------------------------------------------------------------------------------------------------------------------- // CreateResultOptionCollection // diff --git a/LSL2/STPROC/RETURN_TO_FAB_SERVICES.txt b/LSL2/STPROC/RETURN_TO_FAB_SERVICES.txt index e26d3ee..8044d45 100644 --- a/LSL2/STPROC/RETURN_TO_FAB_SERVICES.txt +++ b/LSL2/STPROC/RETURN_TO_FAB_SERVICES.txt @@ -179,7 +179,7 @@ Service ConvertReturnToFabRecordToJSON(RTFId) SRP_JSON(objRTF, 'SetValue', 'RequestorUserId', RTFRecord) SRP_JSON(objRTF, 'SetValue', 'StartDtm', OConv(RTFRecord, 'DT')) SRP_JSON(objRTF, 'SetValue', 'MHInitUserId', RTFRecord) - SRP_JSON(objRTF, 'SetValue', 'MHInitDtm', RTFRecord) + SRP_JSON(objRTF, 'SetValue', 'MHInitDtm', OConv(RTFRecord, 'DT')) SRP_JSON(objRTF, 'SetValue', 'EvalUserId', RTFRecord) SRP_JSON(objRTF, 'SetValue', 'EvalResultId', RTFRecord, 'Number') if RTFRecord NE '' then @@ -190,9 +190,9 @@ Service ConvertReturnToFabRecordToJSON(RTFId) SRP_JSON(objRTF, 'SetValue', 'EvalDesc', EvaluationDescription) SRP_JSON(objRTF, 'SetValue', 'EvalDtm', OConv(RTFRecord, 'DT')) SRP_JSON(objRTF, 'SetValue', 'FinalCompleteUserId', RTFRecord) - SRP_JSON(objRTF, 'SetValue', 'FinalCompleteDtm', RTFRecord) + SRP_JSON(objRTF, 'SetValue', 'FinalCompleteDtm', OConv(RTFRecord, 'DT')) SRP_JSON(objRTF, 'SetValue', 'Completed', RTFRecord, 'Boolean') - SRP_JSON(objRTF, 'SetValue', 'CompletedDtm', RTFRecord) + SRP_JSON(objRTF, 'SetValue', 'CompletedDtm', OConv(RTFRecord,'DT')) SRP_JSON(objRTF, 'SetValue', 'Reason', RTFRecord) Notes = RTFRecord NotesUser = RTFRecord @@ -228,6 +228,55 @@ Service ConvertReturnToFabRecordToJSON(RTFId) Response = JsonString end service +Service CreateReturnToFabReportJson(ShowOpenReport) + ErrorMessage = '' + JsonString = '' + objJSON = '' + Begin Case + Case ShowOpenReport + RTFIdList = Return_To_Fab_Services('GetAllReturnToFabRecords', True$) + Case Otherwise$ + RTFIdList = Return_To_Fab_Services('GetAllReturnToFabRecords', False$) + End Case + If SRP_JSON(objJSON, 'New', 'Object') then + If SRP_Json(objReturnToFabReport, 'New', 'Array') then + for each RTFId in RTFIdList using @VM + RTFRecord = Database_Services('ReadDataRow', 'RETURN_TO_FAB_LOTS', RTFId, True$, 0, False$) + If Error_Services('NoError') and RTFRecord NE '' then + hRTFJsonSingle = '' + if SRP_Json(hRTFJsonSingle, 'New', 'Object') then + SRP_JSON(hRTFJsonSingle, 'SetValue', 'ReturnToFabLotsId', RTFId) + SRP_JSON(hRTFJsonSingle, 'SetValue', 'CassId', RTFRecord) + SRP_JSON(hRTFJsonSingle, 'SetValue', 'LotType', RTFRecord) + SRP_JSON(hRTFJsonSingle, 'SetValue', 'RequestorUserId', RTFRecord) + SRP_JSON(hRTFJsonSingle, 'SetValue', 'StartDtm', OConv(RTFRecord, 'DT')) + if RTFRecord NE '' then + EvaluationDescription = Database_Services('ReadDataColumn', 'RETURN_TO_FAB_RESULT_OPTION', RTFRecord, RETURN_TO_FAB_RESULT_OPTION_RESULT$, True$, 0, False$) + end else + EvaluationDescription = '' + end + SRP_JSON(hRTFJsonSingle, 'SetValue', 'EvalDesc', EvaluationDescription) + SRP_JSON(hRTFJsonSingle, 'SetValue', 'FinalCompleteDtm', OConv(RTFRecord, 'DT')) + SRP_JSON(hRTFJsonSingle, 'SetValue', 'Completed', RTFRecord, 'Boolean') + SRP_JSON(hRTFJsonSingle, 'SetValue', 'CompletedDtm', OConv(RTFRecord,'DT')) + SRP_Json(objReturnToFabReport, 'Add', hRTFJsonSingle) + SRP_Json(hRTFJsonSingle, 'Release') + end + end else + Error_Services('Clear') + end + Next RTFId + SRP_JSON(objJSON, 'Set', 'ReturnToFabReport', objReturnToFabReport) + SRP_JSON(objReturnToFabReport, 'Release') + end + JsonString = SRP_JSON(objJSON, 'Stringify', 'Styled') + SRP_JSON(objJSON, 'Release') + end else + ErrorMessage = 'Error creating root JSON object.' + end + Response = JsonString +end service + Service GetReturnToFabRecordIdByCassId(CassId) ErrorMessage = '' RTFRecords = '' @@ -252,6 +301,29 @@ Service GetReturnToFabRecordIdByCassId(CassId) end End Service +Service GetAllReturnToFabRecords(ShowOnlyOpen) + ErrorMessage = '' + RTFRecords = '' + table = "RETURN_TO_FAB_LOTS" + Open "DICT ":table To @DICT Else + ErrorMessage = 'Error opening RETURN_TO_FAB_LOTS dictionary' + End + If ErrorMessage EQ '' then + srch_strng = "CASS_ID":@VM:"#NULL":@FM + if ShowOnlyOpen then + srch_strng := "COMPLETED":@VM:"#1":@FM + end + option = "" + flag = "" + Btree.Extract(srch_strng, table, @DICT, RTFRecords, option, flag) + end + If ErrorMessage EQ '' then + Response = RTFRecords + end else + Error_Services('Add', ErrorMessage) + end +end service + Service GetOpenReturnToFabRecordIdByCassId(CassId) ErrorMessage = '' OpenRTFRecords = '' @@ -381,6 +453,57 @@ Service SetBinToBin(RTFId, MHUserId) end end service +Service SetRTFCompleted(RTFId, CompleteUserId) + ErrorMessage = '' + If RTFId NE '' then + If RowExists('RETURN_TO_FAB_LOTS', RTFId) then + RTFRecord = Database_Services('ReadDataRow', 'RETURN_TO_FAB_LOTS', RTFId, True$, 0, False$) + RTFRecordComplete = RTFRecord + If RTFRecordComplete NE True$ then + If CompleteUserId NE '' then + If RowExists('LSL_USERS', CompleteUserId) then + RTFRecord = True$ + RTFRecord = Datetime() + Database_Services('WriteDataRow', 'RETURN_TO_FAB_LOTS', RTFId, RTFRecord, True$, False$, False$) + If Error_Services('HasError') then + ErrorMessage = Error_Services('GetMessage') + end + end else + ErrorMessage = 'Error setting Return To Fab form as complete. User ID was not found in OpenInsight.' + end + + end else + ErrorMessage = 'Error setting Return To Fab form as complete. User ID was null.' + end + end else + ErrorMessage = 'Error setting Return To Fab form as complete. Return to fab record has already been completed.' + end + end else + ErrorMessage = 'Error setting Return To Fab form as complete. Return to fab record did not exists' + end + end else + ErrorMessage = 'Error setting Return To Fab form as complete. Return to fab record id was null' + end + If ErrorMessage EQ '' then + LogData = '' + LogData<1> = LoggingDTM;//Defined at entry of subroutine + LogData<2> = '' + LogData<3> = CompleteUserId + LogData<4> = RTFId + LogData<5> = 'Successfully set bin to bin complete on RETURN_TO_FAB_LOTS record' + Logging_Services('AppendLog', objReturnToFabLog, LogData, @RM, @FM, False$) + end else + LogData = '' + LogData<1> = LoggingDTM;//Defined at entry of subroutine + LogData<2> = '' + LogData<3> = CompleteUserId + LogData<4> = RTFId + LogData<5> = ErrorMessage + Logging_Services('AppendLog', objReturnToFabLog, LogData, @RM, @FM, False$) + Error_Services('Add', ErrorMessage) + end +end service + Service SetEvalInfo(RTFId, EvalUserId, ResultId) ErrorMessage = '' If RTFId NE '' then @@ -453,8 +576,8 @@ Service SetFinalBinToBin(RTFId, MHUserId) If RowExists('LSL_USERS', MHUserId) then RTFRecord = MHUserId RTFRecord = Datetime() - RTFRecord = True$ - RTFRecord = Datetime() +* RTFRecord = True$ +* RTFRecord = Datetime() Database_Services('WriteDataRow', 'RETURN_TO_FAB_LOTS', RTFId, RTFRecord, True$, False$, False$) If Error_Services('HasError') then ErrorMessage = Error_Services('GetMessage')