add structure

This commit is contained in:
2020-05-29 07:45:27 +06:30
parent 4c851d9971
commit bad27ba5c4
272 changed files with 36065 additions and 174 deletions

View File

@@ -0,0 +1,81 @@
import 'dart:async';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:logging/logging.dart';
import 'package:fcs/model/base_model.dart';
import 'package:fcs/model/constants.dart';
import 'package:fcs/model/firebase_helper.dart';
import 'package:fcs/util.dart';
import '../vo/user.dart';
class UserModel extends BaseModel {
final log = Logger('UserListModel');
StreamSubscription<QuerySnapshot> listener;
List<User> users = [];
void initUser(user) async {
super.initUser(user);
_loadUsers(user);
}
Future<void> _loadUsers(User user) async {
try {
String path = "/$biz_collection/${setting.okEnergyId}/$user_collection";
var snaps = await Firestore.instance
.collection(path)
.where('user_level', isLessThanOrEqualTo: user.userLevel)
.limit(1)
.getDocuments();
Stream<QuerySnapshot> snapshots = Firestore.instance
.collection(path)
.where('user_level', isLessThanOrEqualTo: user.userLevel)
.snapshots();
snapshots.listen((snaps) async {
users = snaps.documents.map((documentSnapshot) {
var data =
User.fromMap(documentSnapshot.data, documentSnapshot.documentID);
if (data.docID == user.docID && data.isBlock) {
this.mainModel.logout();
notifyListeners();
}
return data;
}).toList();
notifyListeners();
});
} catch (e) {
log.warning("Error!! $e");
}
}
@override
logout() async {
users = [];
if (listener != null) listener.cancel();
}
List<User> getUserList() {
return users.where((u) => u.docID != this.user.docID).toList();
}
Future<User> findUser(String phoneNumber) async {
var _phoneNumber = updatePhoneNumber(phoneNumber);
try {
var data = await request("/user/find/$_phoneNumber", "GET",
token: await getToken());
return User.fromJson(data);
} catch (e) {
throw Exception(e);
}
}
Future<User> getUser(String id) async {
String path = "/$biz_collection/${setting.okEnergyId}/$user_collection";
print("id=> $id");
var snap = await getDocSnap(path, id);
print("snap=> $snap");
return User.fromMap(snap.data, snap.documentID);
}
}