TvPlanIt: Fix leaving orphan events, tasks and contacts in a json datastore when a resource is deleted.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8951 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2023-10-12 14:13:03 +00:00
parent 85f217b38e
commit ad75d24647
4 changed files with 83 additions and 76 deletions

View File

@ -28,6 +28,9 @@ type
protected
{ ancestor methods }
procedure InternalPurgeContacts(Res: TVpResource); override;
procedure InternalPurgeEvents(Res: TVpResource); override;
procedure InternalPurgeTasks(Res: TVpResource); override;
procedure Loaded; override;
procedure SetConnected(const Value: boolean); override;
@ -68,6 +71,8 @@ type
procedure PostTasks; override;
procedure PostResources; override;
procedure PurgeResource(Res: TVpResource); override;
procedure SetResourceByName(Value: String); override;
published
@ -241,6 +246,21 @@ begin
until UniqueID(Result) and (Result <> -1);
end;
procedure TVpJSONDataStore.InternalPurgeContacts(Res: TVpResource);
begin
Res.Contacts.ClearContacts;
end;
procedure TVpJSONDataStore.InternalPurgeEvents(Res: TVpResource);
begin
Res.Schedule.ClearEvents;
end;
procedure TVpJSONDataStore.InternalPurgeTasks(Res: TVpResource);
begin
Res.Tasks.ClearTasks;
end;
function TVpJSONDatastore.JSONToContact(AObj: TJSONObject;
AResource: TVpResource): TVpContact;
var
@ -497,6 +517,15 @@ begin
RefreshTasks;
end;
procedure TVpJSONDataStore.PurgeResource(Res: TVpResource);
begin
PurgeEvents(Res);
PurgeContacts(Res);
PurgeTasks(Res);
Res.Deleted := true;
inherited PurgeResource(Res);
end;
procedure TVpJSONDatastore.ReadJSON;
begin
case FStoreType of