open-insight/LSL2/STPROC/OBJ_NOTE_PTRS.txt
2024-10-24 16:37:24 -07:00

141 lines
3.7 KiB
Plaintext

COMPILE FUNCTION obj_Note_Ptrs(Method,Parms)
/*
Methods for NOTE_PTRS (User InBox) table
08/02/2006 JCH - Initial Coding
Properties:
Methods:
AddNote() ;* Checks NOTES_SENT table for undelivered NOTE_IDs and adds them to the users inbox.
*/
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, NextKey, obj_Notes_Sent
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, RList, ErrMsg, obj_Notes_Sent, Update_Index
$INSERT LOGICAL
$INSERT MSG_EQUATES
$INSERT NOTES_EQU
$INSERT NOTE_PTRS_EQU
EQU TARGET_ACTIVELIST$ TO 5
ErrTitle = 'Error in Stored Procedure "obj_Note_Ptrs"'
ErrorMsg = ''
IF NOT(ASSIGNED(Method)) THEN ErrorMsg = 'Unassigned parameter "Method" passed to subroutine'
IF NOT(ASSIGNED(Parms)) THEN Parms = ''
IF ErrorMsg NE '' THEN
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
RETURN ''
END
Result = ''
BEGIN CASE
CASE Method = 'AddNotes' ; GOSUB AddNotes
CASE 1
ErrorMsg = 'Unknown Method ':QUOTE(Method):' passed to object.'
END CASE
IF ErrorMsg NE '' THEN
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
RETURN ''
END
RETURN Result
* * * * * * *
AddNotes:
* * * * * * *
UserID = Parms[1,@RM]
IF UserID = '' THEN ErrorMsg = 'Unassigned Parameter "UserID" passed to object. (':Method:')'
IF ErrorMsg NE '' THEN RETURN
OtParms = 'NOTE_PTRS':@RM:UserID
NPRec = obj_Tables('ReadRec',OtParms) ;* If not found then returns null, otherwise reads and sets the lock
IF LEN(NPRec) > 60000 THEN
* Dump the oldest note pointers
PtrCnt = COUNT(NPRec<note_ptrs_from$>, @vm) + (NPRec<note_ptrs_from$> NE '')
FOR N = PtrCnt TO (PtrCnt - 100) STEP -1
NPRec = Delete(NPRec, note_ptrs_subject$, N, 0)
NPRec = Delete(NPRec, note_ptrs_from$, N, 0)
NPRec = Delete(NPRec, note_ptrs_date$, N, 0)
NPRec = Delete(NPRec, note_ptrs_time$, N, 0)
NPRec = Delete(NPRec, note_ptrs_new$, N, 0)
NPRec = Delete(NPRec, note_ptrs_note_ids$, N, 0)
NPRec = Delete(NPRec, note_ptrs_attachment$, N, 0)
NEXT N
TLen = LEN(NPRec)
END
NotesSentKeys = obj_Notes_Sent('GetUserKeys',UserID)
IF NotesSentKeys NE '' THEN
FOR I = 1 TO COUNT(NotesSentKeys,@VM) + (NotesSentKeys NE '')
NotesSentKey = NotesSentKeys<1,I>
NoteID = FIELD(NotesSentKey,'*',2)
LOCATE NoteID IN NPRec<NOTE_PTRS_NOTE_IDS$> USING @VM SETTING POS ELSE
NoteRec = XLATE('NOTES',NoteID,'','X')
SentFrom = NoteRec<NOTES_FROM$>
SentDate = NoteRec<NOTES_ENTRY_DATE$>
SentTime = NoteRec<NOTES_ENTRY_TIME$>
AttachWindow = NoteRec<NOTES_ATTACH_WINDOW$>
AttachKeys = NoteRec<NOTES_ATTACH_KEYS$>
Subject = NoteRec<NOTES_SUBJECT$>
IF AttachWindow NE '' AND AttachKeys NE '' THEN
Attachment = 'Yes'
END ELSE
Attachment = 'No'
END
NPRec = INSERT( NPRec, note_ptrs_subject$, 1, 0, Subject ) ;* Add the subject
ConvSentFrom = OCONV(SentFrom,'[XLATE_CONV,LSL_USERS*FIRST_LAST]')
IF ConvSentFrom NE '' THEN SentFrom = ConvSentFrom
NPRec = INSERT( NPRec, note_ptrs_from$, 1, 0, SentFrom )
NPRec = INSERT( NPRec, note_ptrs_date$, 1, 0, OCONV(SentDate,'D2/') )
NPRec = INSERT( NPRec, note_ptrs_time$, 1, 0, OCONV(SentTime,'MTH') )
NPRec = INSERT( NPRec, note_ptrs_new$, 1, 0, 'Yes' )
NPRec = INSERT( NPRec, note_ptrs_note_ids$, 1, 0, NoteID )
NPRec = INSERT( NPRec, note_ptrs_attachment$, 1, 0, Attachment )
END
NEXT I
OtParms = FIELDSTORE(OtParms,@RM,4,0,NPRec)
obj_Tables('WriteRec',OtParms)
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END ELSE
obj_Notes_Sent('Delete',NotesSentKeys)
Update_Index('NOTES_SENT','USER_ID', False$, True$)
END
END ELSE
obj_Tables('UnlockRec',OtParms)
END
RETURN