#include BL.EC.Common #include %occCommon AddToLog(Niveau, Groep, Actie, Detail) If $isObject($G(%ECSession)) Do . Set Logging=##class(Derde.EC.Logging).Create(,,%ECSession.%Id(),%ECSession.ToegangID,%ECSession.KlantNr,.Niveau,.Groep,.Actie,.Detail) Else Do . Set Logging=##class(Derde.EC.Logging).Create(,,,,,.Niveau,.Groep,.Actie,.Detail) Quit Logging AddErrorToLog(Groep, Actie, Error,Detail) If $isObject($G(%ECSession)) Do . Set Logging=##class(Derde.EC.Logging).Create(,,%ECSession.%Id(),%ECSession.ToegangID,%ECSession.KlantNr,$$$logGrpError,.Groep,.Actie,$G(Detail)_"~"_$$ParseStatus^vhLib(Error),$STACK($STACK-2,"PLACE")) . $$$blToegang . Set Body="SessionID: "_%ECSession.%Id() . Set Body=Body_$C(13)_"ToegangID: "_%ECSession.ToegangID . Set Body=Body_$C(13)_"Klant: "_%ECSession.KlantNr . Set oToegang=%blToegang.OpenID(%ECSession.ToegangID) . Set Body=Body_$C(13)_"User: "_oToegang.UserNaam Else Do . Set Logging=##class(Derde.EC.Logging).Create(,,,,,$$$logGrpError,.Groep,.Actie,$G(Detail)_"~"_$$ParseStatus^vhLib(Error),$STACK($STACK-2,"PLACE")) . Set Body="" ; Mail versturen van de fout Set Body=Body_$C(13)_"Groep: "_$G(Groep) Set Body=Body_$C(13)_"Actie: "_$G(Actie) Set Body=Body_$C(13)_"Detail: "_$G(Detail) Set Body=Body_$C(13)_"Error: "_$$ParseStatus^vhLib(Error) Set Body=Body_$C(13,13)_"$ZError: "_$ZError Set:$G(%objlasterror)'="" Body=Body_$C(13)_"Object Last Error: "_$$ParseStatus^vhLib(%objlasterror) Set Body=Body_$C(13)_"$ECode: "_$ECode Set Body=Body_$C(13)_"Stack: " For EST=1:1:$ESTACK Set Body=Body_$C(13)_" "_$STACK($STACK-EST,"PLACE") Set Body=Body_$C(13)_$C(13)_"Device: "_$I_" Job: "_$J Set Body=Body_$C(13)_"Server: "_$ZU(110)_" NameSpace: "_$ZU(5) Set From="System@vanhoecke.be" Set Subj="VHISIE - Error to Log" Set To=$LB("pv@vanhoecke.be") Do SendMiniMail^vhLib(From,To,Subj,Body,,,,,) Quit Logging WebServiceTrap() For EST=1:1:$ESTACK Set $ZERROR=$ZERROR_"~"_$STACK($STACK-EST,"PLACE") Quit MailTrap() Quit:($ZError="ErrorHandled")&&$Quit "" Quit:($ZError="ErrorHandled") Set Body="$ZError: "_$ZError Set:$G(%objlasterror)'="" Body=Body_$C(13)_"Object Last Error: "_$$ParseStatus^vhLib(%objlasterror) Set Body=Body_$C(13)_"$ECode: "_$ECode Set Body=Body_$C(13)_"Stack: " For EST=1:1:$ESTACK Set Body=Body_$C(13)_" "_$STACK($STACK-EST,"PLACE") Set Body=Body_$C(13)_$C(13)_"Device: "_$I_" Job: "_$J Set Body=Body_$C(13)_"Server: "_$ZU(110)_" NameSpace: "_$ZU(5) Set From="System@vanhoecke.be" Set Subj="VHISIE - Errortrap "_$ZError Set To=$LB("pv@vanhoecke.be") Do SendMiniMail^vhLib(From,To,Subj,Body,,,,,) Set $ZError="ErrorHandled" Quit:$Quit "" Quit Zoek(Zoek,FromPage, FromLine, Dir, pxFetch,bl,RowMethod,PosList,SessionKey,Toegang,SubNode) New PageNode,DataNode,KeepCharOrig,KeepChar,I,LijnNr,ZoekPattern,OK,Value,Row,Page,PageLijn Set %FullText=1 Set PageNode=$G(SubNode,"F")_"P" Set DataNode=$G(SubNode,"F")_"D" Quit:(Zoek="")||(Zoek=$C(0)) $G(pxFetch) Set Zoek=$TR(Zoek," ","*") Set KeepCharOrig="@/.#+-",KeepChar="" For I=1:1:$L(KeepChar) Set:Zoek[$E(KeepCharOrig,I) KeepChar=KeepChar_$E(KeepCharOrig,I) Set Zoek=$ZSTRIP($ZCVT(Zoek,"U"),"*P",,KeepChar_"*?\") Set ZoekPattern=$$WildCardToPattern^vhLib(Zoek,1) Set KeepChar=KeepChar_$S(Zoek["\*":"*",1:"")_$S(Zoek["\?":"?",1:"") ; KeepChar uitbreiden met * of ? indien \* of \? voorkomt If $E(ZoekPattern,1,2)'=".E" Set ZoekPattern=".E"_ZoekPattern Set Dir=$S($G(Dir)=-1:-1,$G(Dir)="P":-1,1:1) Set LijnNr=$S($G(FromPage):$LG($G(^ECHULP(SessionKey,PageNode,FromPage)),1),1:0)+$G(FromLine,1) ; Bereken absolute lijn pos Set OK=0 For Set LijnNr=$O(^ECHULP(SessionKey,DataNode,LijnNr),Dir) Quit:LijnNr="" Do Quit:OK . Set Row=$zobjMethod(bl,RowMethod,^ECHULP(SessionKey,DataNode,LijnNr)) ; Listbuild zoals voor de DataSet . Quit:Row="" . Quit:$LG(Row)="" . Set PosList=$G(PosList($LG(Row))) . Quit:PosList="" . . For I=1:1:$LL(PosList) Do Quit:OK . . Set Value=$ZCVT($ZSTRIP($LG(Row,$LG(PosList,I)),"*P",,KeepChar),"U") . . X "Set OK=Value?"_ZoekPattern Quit:'LijnNr $g(pxFetch) ; Niet gevonden Set PageLijn="" For Page=1:1:$LG(^ECHULP(SessionKey,PageNode),2) Do Quit:PageLijn . Set:LijnNr<=$LG(^ECHULP(SessionKey,PageNode,Page),2) PageLijn=LijnNr-$LG(^ECHULP(SessionKey,PageNode,Page),1) Quit:'PageLijn $g(pxFetch) ; geen omzetting mag niet voorkomen Set:'$isObject($G(pxFetch)) pxFetch=##class(BL.EC.pxFetch).%New() Set pxFetch.ZoekPage=Page Set pxFetch.ZoekLijn=PageLijn Quit pxFetch ; SnapNewPage als .Local doorgeven CreatePages(SessionKey,LijnCnt,Toegang,SubNode,SnapNewPage) Set PageNode=$G(SubNode,"F")_"P" Set (PageCnt,Start,End)=0 For Quit:+End=+LijnCnt Do . Set Start=End . Set End=Start+$$$PageSize . If '$D(SnapNewPage(End)) Do ; Properen om te snappen . . If LijnCnt<=(End+$$$PageWindowPlus) Set End=LijnCnt . . Else If $O(SnapNewPage(End)),$O(SnapNewPage(End))'>(End+$$$PageWindowPlus) Set End=$O(SnapNewPage(End))-1 . . Else If $O(SnapNewPage(End),-1),$O(SnapNewPage(End),-1)'<(End+$$$PageWindowMin) Set End=$O(SnapNewPage(End),-1)-1 . Set:LijnCnt