{$IfDef FPC}{$CodePage cp1251}{$EndIf FPC}
unit m3LogByActionQueryExecutor;
// --------------------------------------------------------------------------
// Родители: "Queries" <> MUID: (66FB115B029F) :: "m3" <> MUID: (66FB10950007) :: "Shared Delphi For Archi" <> MUID: (4ABA2360025A)
// --------------------------------------------------------------------------
// Модуль: "w:\common\components\rtl\Garant\m3\m3LogByActionQueryExecutor.pas" GeneratorVersion: 1.0.0.883901
// Стереотип: "<>"
// Элемент модели: "Tm3LogByActionQueryExecutor" MUID: (6745BF7A0131)
// --------------------------------------------------------------------------
//#UC START# *6745BF7A0131BeforeDefines*
//#UC END# *6745BF7A0131BeforeDefines*
{$Include daDefine.inc}
interface
uses
l3IntfUses
, daLogByActionQueryParams
, l3Ranges
, m3AttrIndexInterfaces
, daQueryInterfaces
, m3QueryInterfaces
, daEnumerableInterfaces
, l3Interfaces
, m4SearchResult
, daQueryParams
, l3LongintList
, daTypes
, evdDATypes
, daAbstractQueryExecutor
;
type
{$If not Defined(_ParamsType_Defined_) }
{Tm3LogByActionQueryExecutor.}_ParamsType_ = TdaLogByActionQueryParams;
{$Define _ParamsType_Defined_ }
{$Define _ParamsType_IsClass_ }
{$Define _ParamsType_IsAcceptableForScripts_ }
{$IfEnd} // not Defined(_ParamsType_Defined_)
{$Include Mm3QueryExecutor_imp.pas}
Tm3LogByActionQueryExecutor = class(_Mm3QueryExecutor_)
protected
function FindByParams(const aParams: TdaLogByActionQueryParams;
const aSearcher: Im3AttrIndexSearcher): Il3RangeEnumerable; override;
public
{$If NOT Defined(l3NoSRT)}
function SetRefTo(var thePlace: Tm3LogByActionQueryExecutor): Boolean; overload; {$If Defined(l3HasInl)}inline;{$IfEnd}
{$IfEnd} // NOT Defined(l3NoSRT)
end;//Tm3LogByActionQueryExecutor
implementation
uses
l3ImplUses
, l3Date
, m3QueryResultSetFromLongintList
, daQueryExecutorFactory
, m3AttrIndexSearcher
, SysUtils
, l3Enumerators
, l3InterfacedIntegerList
, k2Tags
//#UC START# *6745BF7A0131impl_uses*
, DT_CONST
, daDataProvider
//#UC END# *6745BF7A0131impl_uses*
;
{$Include Mm3QueryExecutor_imp.pas}
{$If NOT Defined(l3NoSRT)}
function Tm3LogByActionQueryExecutor.SetRefTo(var thePlace: Tm3LogByActionQueryExecutor): Boolean;
begin
if (thePlace = Self) then
Result := false
else
begin
Result := true;
thePlace.Free;
thePlace := Self.Use;
end;//thePlace = Self
end;//Tm3LogByActionQueryExecutor.SetRefTo
{$IfEnd} // NOT Defined(l3NoSRT)
function Tm3LogByActionQueryExecutor.FindByParams(const aParams: TdaLogByActionQueryParams;
const aSearcher: Im3AttrIndexSearcher): Il3RangeEnumerable;
//#UC START# *670660CF0357_6745BF7A0131_var*
var
l_FromDate : TStDate;
l_ToDate : TStDate;
l_HasDate : Boolean;
l_HasUser : Boolean;
l_DateResult : Il3RangeEnumerable;
l_UserResult : Il3RangeEnumerable;
l_OneUserResult : Il3RangeEnumerable;
l_ActionResult : Il3RangeEnumerable;
//l_UserSab : ISab;
l_UserID: TdaUserID;
//l_LogRecType: TdaLogActionFlags;
l_JournalType : Integer;
l_UsersList: Tl3LongintList;
l_IDX: Integer;
var
l_Action: TdaLogActionType;
//#UC END# *670660CF0357_6745BF7A0131_var*
begin
//#UC START# *670660CF0357_6745BF7A0131_impl*
Result := nil;
//f_Sab := MakeSab(LinkServer(CurrentFamily)[atOrdLogRecords]);
l_FromDate := aParams.FromDate;
l_ToDate := aParams.ToDate;
l_HasUser := false;
l_HasDate := false;
l_DateResult := nil;
l_UserResult := nil;
l_Action := aParams.Action;
if (l_Action in cOrdLogActions) then
l_JournalType := k2_tiSysLogRecords
else
l_JournalType := k2_tiLogRecords;
if (l_FromDate <> 0) or (l_ToDate <> 0) then
begin
l_HasDate := true;
if (l_FromDate = l_ToDate) then
l_DateResult := aSearcher.SearchBetweenKeys([l_JournalType, k2_tiStart], l_FromDate, l_ToDate, false)
///f_Sab.Select(lgDate_Key, l_FromDate)
else
begin
if l_FromDate = 0 then
l_FromDate := 1;
if l_ToDate = 0 then
l_ToDate := MaxDate;
l_DateResult := aSearcher.SearchBetweenKeys([l_JournalType, k2_tiStart], l_FromDate, l_ToDate, false);
//f_Sab.Select(lgDate_Key, l_FromDate, l_ToDate);
end;//l_FromDate = l_ToDate
end//(l_FromDate <> 0) or (l_ToDate <> 0)
else
//f_Sab.SelectAll
;
if (aParams.UserID <> 0) then
begin
if aParams.IsUserGroup then
begin
l_UsersList := Tl3LongintList.Create;
try
l_UserResult := nil;
GlobalDataProvider.UserManager.GetUserListOnGroup(aParams.UserID, l_UsersList);
for l_IDX := 0 to l_UsersList.Count - 1 do
begin
l_UserID := l_UsersList[l_IDX];
l_HasUser := true;
l_OneUserResult := aSearcher.SearchByKeyEx([l_JournalType, k2_tiUser], l_UserID, false);
if l_UserResult = nil then
l_UserResult := l_OneUserResult
else
l_UserResult := Il3RangeEnumerable_JoinWithOther(l_UserResult, l_OneUserResult);
end;
finally
FreeAndNil(l_UsersList);
end;
(* l_UserSab := xxxUserManager.xxxGetGroupMembers(aParams.UserID);
try
l_UserSab.TransferToPhoto(lgAuthor_Key, f_Sab);
l_UserSab.RecordsByKey;
f_Sab.AndSab(l_UserSab);
finally
l_UserSab := nil;
end;*)
end//aParams.IsUserGroup
else
begin
l_UserID := aParams.UserID;
l_HasUser := true;
l_UserResult := aSearcher.SearchByKeyEx([l_JournalType, k2_tiUser], l_UserID, false);
(* f_Sab.SubSelect(lgAuthor_Key, l_UserID);*)
end;//aParams.IsUserGroup
end;//aParams.UserID <> 0
(* if (aParams.LogRecType <> acfNone) then
begin
l_LogRecType := aParams.LogRecType;
f_Sab.SubSelect(lgActionFlag_Key, l_LogRecType);
end;//aParams.LogRecType <> acfNone*)
// - это как мы выяснили - нам нахер не нужно
//l_Action := aParams.Action;
(* f_Sab.SubSelect(lgAction_key,l_Action);
f_Sab.ValuesOfKey(lgDocID_Key);
f_Sab.TransferToPhoto(fID_Fld, Get_MainTblPhoto);
f_Sab.RecordsByKey;*)
l_ActionResult := aSearcher.SearchByKeyEx([l_JournalType, k2_tiType], Ord(l_Action), false);
if l_HasUser
AND l_HasDate then
begin
Result := Il3RangeEnumerable_Intersect(l_ActionResult, l_UserResult);
Result := Il3RangeEnumerable_Intersect(Result, l_DateResult);
end//l_HasUser .. l_HasDate
else
if l_HasUser then
Result := Il3RangeEnumerable_Intersect(l_ActionResult, l_UserResult)
else
if l_HasDate then
Result := Il3RangeEnumerable_Intersect(l_ActionResult, l_DateResult)
else
Result := l_ActionResult;
if (Result <> nil) then
Result := Il3RangeEnumerable_Diff(Result, aSearcher.AllRelated);
// - тут вычитаем справки
//#UC END# *670660CF0357_6745BF7A0131_impl*
end;//Tm3LogByActionQueryExecutor.FindByParams
//#UC START# *6745BF7A0131forDiagramm*
(*
*)
//#UC END# *6745BF7A0131forDiagramm*
end.
Заметки о тестировании, программировании и прочий "поток сознания", который жалко писать "в стол"
воскресенье, 12 апреля 2026 г.
m3LogByActionQueryExecutor
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий