160 lines
5.1 KiB
Dart
160 lines
5.1 KiB
Dart
import 'package:oc_front/models/abstract.dart';
|
|
import 'package:oc_front/models/response.dart';
|
|
import 'package:oc_front/models/workflow.dart';
|
|
import 'package:oc_front/models/workspace.dart';
|
|
|
|
/*
|
|
based on :
|
|
type CollaborativeAreaRule struct {
|
|
ShareMode string `json:"share_mode,omitempty" bson:"share_mode,omitempty"` // Share is the share of the rule
|
|
CreatedAt time.Time `json:"created_at,omitempty" bson:"created_at,omitempty"` // CreatedAt is the time the rule was created
|
|
Creator string `json:"creator,omitempty" bson:"creator,omitempty"` // Creator is the creator of the rule
|
|
ExploitedBy string `json:"exploited_by,omitempty" bson:"exploited_by,omitempty"` // ExploitedBy is the exploited by of the rule
|
|
}
|
|
*/
|
|
class CollaborativeAreaRule extends SerializerDeserializer<CollaborativeAreaRule> {
|
|
String? shareMode;
|
|
DateTime? createdAt;
|
|
String? creator;
|
|
String? exploitedBy;
|
|
|
|
CollaborativeAreaRule(
|
|
{this.shareMode,
|
|
this.createdAt,
|
|
this.creator,
|
|
this.exploitedBy,});
|
|
|
|
@override
|
|
CollaborativeAreaRule deserialize(dynamic json) {
|
|
try { json = json as Map<String, dynamic>;
|
|
} catch (e) { return CollaborativeAreaRule(); }
|
|
return CollaborativeAreaRule(
|
|
shareMode: json.containsKey("share_mode") ? json["share_mode"] : null,
|
|
createdAt: json.containsKey("created_at") ? DateTime.parse(json["created_at"]) : null,
|
|
creator: json.containsKey("creator") ? json["creator"] : null,
|
|
exploitedBy: json.containsKey("exploited_by") ? json["exploited_by"] : null,
|
|
);
|
|
}
|
|
|
|
@override
|
|
Map<String, dynamic> serialize() => {
|
|
"share_mode": shareMode,
|
|
"created_at": createdAt?.toIso8601String(),
|
|
"creator": creator,
|
|
"exploited_by": exploitedBy,
|
|
};
|
|
}
|
|
|
|
class CollaborativeArea extends SerializerDeserializer<CollaborativeArea> {
|
|
String? id;
|
|
String? name;
|
|
String? description;
|
|
String? creatorID;
|
|
String? version;
|
|
Map<String, dynamic> attributes = {};
|
|
List<Workspace> workspaces = [];
|
|
List<Workflow> workflows = [];
|
|
List<Peer> peers = [];
|
|
List<Rule> rules = [];
|
|
CollaborativeAreaRule? rule;
|
|
|
|
CollaborativeArea(
|
|
{this.id,
|
|
this.name,
|
|
this.description,
|
|
this.creatorID,
|
|
this.version,
|
|
this.attributes = const {},
|
|
this.workspaces = const [],
|
|
this.workflows = const [],
|
|
this.peers = const [],
|
|
this.rule,
|
|
this.rules = const []});
|
|
|
|
@override
|
|
deserialize(dynamic json) {
|
|
try { json = json as Map<String, dynamic>;
|
|
} catch (e) { return CollaborativeArea(); }
|
|
return CollaborativeArea(
|
|
rule : json.containsKey("collaborative_area") ? CollaborativeAreaRule().deserialize(json["collaborative_area"]) : CollaborativeAreaRule(),
|
|
id: json.containsKey("id") ? json["id"] : null,
|
|
name: json.containsKey("name") ? json["name"] : null,
|
|
description: json.containsKey("description") ? json["description"] : null,
|
|
version: json.containsKey("version") ? json["version"] : null,
|
|
attributes: json.containsKey("attributes") ? json["attributes"] : {},
|
|
workspaces: json.containsKey("shared_workspaces") ? fromListJson(json["shared_workspaces"], Workspace()) : [],
|
|
workflows: json.containsKey("shared_workflows") ? fromListJson(json["shared_workflows"], Workflow()) : [],
|
|
peers: json.containsKey("shared_peers") ? fromListJson(json["shared_peers"], Peer()) : [],
|
|
rules: json.containsKey("shared_rules") ? fromListJson(json["shared_rules"], Rule()) : [],
|
|
);
|
|
}
|
|
@override
|
|
Map<String, dynamic> serialize() => {
|
|
"id": id,
|
|
"name": name,
|
|
"description": description,
|
|
"creator_id": creatorID,
|
|
"version": version,
|
|
"attributes": attributes,
|
|
"rule": rule?.serialize(),
|
|
"workspaces": workspaces.map((e) => e.id).toList(),
|
|
"workflows": workflows.map((e) => e.id).toList(),
|
|
"peers": peers.map((e) => e.id).toList(),
|
|
"rules": rules.map((e) => e.id).toList(),
|
|
};
|
|
}
|
|
|
|
class Rule extends SerializerDeserializer<Rule> {
|
|
String? id;
|
|
String? name;
|
|
String? description;
|
|
|
|
Rule(
|
|
{this.id,
|
|
this.name,
|
|
this.description,});
|
|
|
|
@override
|
|
deserialize(dynamic json) {
|
|
try { json = json as Map<String, dynamic>;
|
|
} catch (e) { return Rule(); }
|
|
return Rule(
|
|
id: json.containsKey("id") ? json["id"] : null,
|
|
name: json.containsKey("name") ? json["name"] : null,
|
|
description: json.containsKey("description") ? json["description"] : null,
|
|
);
|
|
}
|
|
@override
|
|
Map<String, dynamic> serialize() => {
|
|
"id": id,
|
|
"name": name,
|
|
"description": description,
|
|
};
|
|
}
|
|
|
|
class Peer extends SerializerDeserializer<Peer> implements ShallowData {
|
|
String? id;
|
|
String? name;
|
|
|
|
Peer(
|
|
{this.id,
|
|
this.name,});
|
|
|
|
@override String getID() => id ?? "";
|
|
@override String getName() => name ?? "";
|
|
|
|
@override
|
|
deserialize(dynamic json) {
|
|
try { json = json as Map<String, dynamic>;
|
|
} catch (e) { return Peer(); }
|
|
return Peer(
|
|
id: json.containsKey("id") ? json["id"] : null,
|
|
name: json.containsKey("name") ? json["name"] : null,
|
|
);
|
|
}
|
|
@override
|
|
Map<String, dynamic> serialize() => {
|
|
"id": id,
|
|
"name": name,
|
|
};
|
|
} |