project BLF > class BSODViolationRule2 > method DeleteByRoleResource

Description

delete violations


Parameters


iiRoleIDinputinteger
iiResourceIDinputinteger
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


BLF
method BResource.AdditionalUpdates
method BRole.AdditionalUpdates


program code (program1/bsodviolationrule2.p)

/* Needs a query as load criteria are not on the class main table */
<Q-2 run Violations2ByRoleResource (all) (Read) (NoCache)
   (input 0, (CompanyId)
    input iiRoleID, (RoleID)
    input iiResourceID, (ResourceID)
    output dataset tqViolations2ByRoleResource) in BSODViolationRule2 >
if not can-find (first tqViolations2ByRoleResource)
then do:
    oiReturnStatus = -4.
    return.
end.

for each tqViolations2ByRoleResource break by tqViolations2ByRoleResource.tiSODViolation2_ID on error undo, throw:
    if first-of(tqViolations2ByRoleResource.tiSODViolation2_ID)
    then
    if not can-find (first tSODViolation2 where tSODViolation2.SODViolation2_ID = tqViolations2ByRoleResource.tiSODViolation2_ID)
    then do:
        if viPrimCount = 0
        then vcPrimKey = string(tqViolations2ByRoleResource.tiSODViolation2_ID).
        else vcPrimKey = vcPrimKey + chr(4)
                       + string(tqViolations2ByRoleResource.tiSODViolation2_ID).
        viPrimCount = viPrimCount + 1.
        if viPrimCount = 100
        then do:
            <M-3 run DataLoad
               (input  '' (icRowids), 
                input  vcPrimKey (icPkeys), 
                input  '' (icObjectIds), 
                input  '' (icFreeform), 
                input  yes (ilKeepPrevious), 
                output viFcReturnSuper (oiReturnStatus)) in BSODViolationRule2>
            if viFcReturnSuper <> 0
            then oiReturnStatus = viFcReturnSuper.
            if viFcReturnSuper < 0
            then return.
            assign viPrimCount = 0
                   vcPrimKey   = "".
        end.
    end.
end.

if viPrimCount > 0
then do:
    <M-4 run DataLoad
       (input  '' (icRowids), 
        input  vcPrimKey (icPkeys), 
        input  '' (icObjectIds), 
        input  '' (icFreeform), 
        input  yes (ilKeepPrevious), 
        output viFcReturnSuper (oiReturnStatus)) in BSODViolationRule2>
    if viFcReturnSuper <> 0
    then oiReturnStatus = viFcReturnSuper.
    if viFcReturnSuper < 0
    then return.
end.

<M-5 run DeleteAndLog
   (input  iiRoleID (iiRoleID), 
    input  iiResourceID (iiResourceID), 
    input  0 (iiDomainID), 
    input  0 (iiCompanyID), 
    input  0 (iiUsrID), 
    input  0 (iiSODCategory1ID), 
    input  0 (iiSODCategory2ID), 
    output viFcReturnSuper (oiReturnStatus)) in BSODViolationRule2>    
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.