diff --git a/lib/src/models/kontak.dart b/lib/src/models/kontak.dart new file mode 100644 index 0000000000000000000000000000000000000000..ab3c2fcd50e8462b1498ff890e4ae014c5270fff --- /dev/null +++ b/lib/src/models/kontak.dart @@ -0,0 +1,32 @@ +import 'package:equatable/equatable.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:to_string/to_string.dart'; + +part 'kontak.g.dart'; + +@JsonSerializable() +@ToString() +class Kontak extends Equatable { + final String email; + final String jabatan; + final String nama; + final String telepon; + + Kontak({ + this.email, + this.jabatan, + this.nama, + this.telepon, + }); + + factory Kontak.fromJson(Map<String, dynamic> json) => + _$KontakFromJson(json); + + Map<String, dynamic> toJson() => _$KontakToJson(this); + + @override + List<Object> get props => [nama, telepon]; + + @override + String toString() => _$KontakToString(this); +} diff --git a/lib/src/models/kontak.g.dart b/lib/src/models/kontak.g.dart new file mode 100644 index 0000000000000000000000000000000000000000..c29b9c3a454ee068bc01d57047d8f631108a6b85 --- /dev/null +++ b/lib/src/models/kontak.g.dart @@ -0,0 +1,31 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'kontak.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +Kontak _$KontakFromJson(Map<String, dynamic> json) { + return Kontak( + email: json['email'] as String, + jabatan: json['jabatan'] as String, + nama: json['nama'] as String, + telepon: json['telepon'] as String, + ); +} + +Map<String, dynamic> _$KontakToJson(Kontak instance) => <String, dynamic>{ + 'email': instance.email, + 'jabatan': instance.jabatan, + 'nama': instance.nama, + 'telepon': instance.telepon, + }; + +// ************************************************************************** +// ToStringGenerator +// ************************************************************************** + +String _$KontakToString(Kontak o) { + return """Kontak{email: ${o.email}, jabatan: ${o.jabatan}, nama: ${o.nama}, telepon: ${o.telepon}}"""; +} diff --git a/lib/src/repositories/kontak_repository.dart b/lib/src/repositories/kontak_repository.dart new file mode 100644 index 0000000000000000000000000000000000000000..6d1573debd67275556b84d036350079c615b07d6 --- /dev/null +++ b/lib/src/repositories/kontak_repository.dart @@ -0,0 +1,18 @@ +import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:flutter/widgets.dart'; +import 'package:mobile_apps/src/models/kontak.dart'; + +class KontakRepository { + CollectionReference kontakCollections(String institusiId) => + Firestore.instance.collection('waspada/covid19/institusi/${institusiId}/kontak'); + + Stream<QuerySnapshot> kontakSnapshots(String institusiId) => + kontakCollections(institusiId).snapshots(); + + List<Kontak> semuaKontak(AsyncSnapshot<QuerySnapshot> snapshot) { + if (!snapshot.hasData || snapshot.hasError) return []; + return snapshot.data.documents + .map<Kontak>((document) => Kontak.fromJson(document.data)) + .toList(); + } +}