1+ namespace Common . DB . Crud ;
2+
3+ using System . Text . Json ;
4+
5+
6+ public class SyncDataFlowStatus
7+ {
8+ public bool Downloading { get ; set ; } = false ;
9+ public bool Uploading { get ; set ; } = false ;
10+ }
11+
12+
13+ public class SyncStatusOptions
14+ {
15+ public bool ? Connected { get ; set ; }
16+ public SyncDataFlowStatus ? DataFlow { get ; set ; }
17+ public DateTime ? LastSyncedAt { get ; set ; }
18+ public bool ? HasSynced { get ; set ; }
19+ }
20+
21+ public class SyncStatus ( SyncStatusOptions options )
22+ {
23+ protected SyncStatusOptions options = options ;
24+
25+ public bool Connected => options . Connected ?? false ;
26+
27+ public DateTime ? LastSyncedAt => options . LastSyncedAt ;
28+
29+ public bool ? HasSynced => options . HasSynced ;
30+
31+ public SyncDataFlowStatus DataFlowStatus => options . DataFlow ?? new SyncDataFlowStatus ( ) ;
32+
33+ public bool IsEqual ( SyncStatus status )
34+ {
35+ return JsonSerializer . Serialize ( options ) == JsonSerializer . Serialize ( status . options ) ;
36+ }
37+
38+ public string GetMessage ( )
39+ {
40+ return $ "SyncStatus<connected: { Connected } , lastSyncedAt: { LastSyncedAt } , hasSynced: { HasSynced } , " +
41+ $ "downloading: { DataFlowStatus . Downloading } , uploading: { DataFlowStatus . Uploading } >";
42+ }
43+
44+ public SyncStatusOptions ToJson ( )
45+ {
46+ return new SyncStatusOptions
47+ {
48+ Connected = Connected ,
49+ DataFlow = DataFlowStatus ,
50+ LastSyncedAt = LastSyncedAt ,
51+ HasSynced = HasSynced
52+ } ;
53+ }
54+
55+ public override string ToString ( )
56+ {
57+ return GetMessage ( ) ;
58+ }
59+ }
0 commit comments