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'; class CollaborativeArea extends SerializerDeserializer { String? id; String? name; String? description; String? creatorID; String? version; Map attributes = {}; List workspaces = []; List workflows = []; List peers = []; List rules = []; CollaborativeArea( {this.id, this.name, this.description, this.creatorID, this.version, this.attributes = const {}, this.workspaces = const [], this.workflows = const [], this.peers = const [], this.rules = const []}); @override deserialize(dynamic json) { try { json = json as Map; } catch (e) { return CollaborativeArea(); } return CollaborativeArea( id: json.containsKey("id") ? json["id"] : null, name: json.containsKey("name") ? json["name"] : null, description: json.containsKey("description") ? json["description"] : null, creatorID: json.containsKey("peer_id") ? json["peer_id"] : 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 serialize() => { "id": id, "name": name, "description": description, "creator_id": creatorID, "version": version, "attributes": attributes, "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 { String? id; String? name; String? description; Rule( {this.id, this.name, this.description,}); @override deserialize(dynamic json) { try { json = json as Map; } 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 serialize() => { "id": id, "name": name, "description": description, }; } class Peer extends SerializerDeserializer 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; } catch (e) { return Peer(); } return Peer( id: json.containsKey("id") ? json["id"] : null, name: json.containsKey("name") ? json["name"] : null, ); } @override Map serialize() => { "id": id, "name": name, }; }