add structure
This commit is contained in:
83
lib/model/report_user_model.dart
Normal file
83
lib/model/report_user_model.dart
Normal file
@@ -0,0 +1,83 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
import 'package:fcs/model/constants.dart';
|
||||
import 'package:fcs/vo/report.dart';
|
||||
import 'package:fcs/vo/report_user.dart';
|
||||
import 'package:fcs/vo/user.dart';
|
||||
|
||||
import '../config.dart';
|
||||
import 'base_model.dart';
|
||||
import 'firebase_helper.dart';
|
||||
|
||||
class ReportUserModel extends BaseModel {
|
||||
List<ReportUser> reportUsers = [];
|
||||
void initUser(user) {
|
||||
super.initUser(user);
|
||||
}
|
||||
|
||||
@override
|
||||
logout() async {}
|
||||
|
||||
Future<List<ReportUser>> getUsersForReport(String reportID) async {
|
||||
List<ReportUser> users = [];
|
||||
String path = "/$report_user_collection";
|
||||
|
||||
QuerySnapshot snapshots = await Firestore.instance
|
||||
.collection(path)
|
||||
.where('report_id', isEqualTo: reportID)
|
||||
.getDocuments();
|
||||
snapshots.documents.forEach((d) {
|
||||
users.add(ReportUser.fromMap(d.data, d.documentID));
|
||||
});
|
||||
return users;
|
||||
}
|
||||
|
||||
Future<List<User>> findUser(String searchUser) async {
|
||||
if (searchUser == null || searchUser == '') return List();
|
||||
|
||||
var bytes = utf8.encode(searchUser);
|
||||
var base64Str = base64.encode(bytes);
|
||||
HtmlEscape htmlEscape = const HtmlEscape();
|
||||
String escapeUser = htmlEscape.convert(base64Str);
|
||||
|
||||
int limit = 20;
|
||||
List<User> _users = [];
|
||||
|
||||
try {
|
||||
var data = await request(
|
||||
"/api/fts/$user_collection/$escapeUser/$limit", "GET",
|
||||
token: await getToken(), url: Config.instance.reportURL);
|
||||
if (data == null) return List();
|
||||
|
||||
data.forEach((user) {
|
||||
var _user = User.fromUserJson(user);
|
||||
_users.add(_user);
|
||||
});
|
||||
} catch (e) {
|
||||
// permission error
|
||||
log.warning("user error:" + e.toString());
|
||||
return null;
|
||||
}
|
||||
return _users;
|
||||
}
|
||||
|
||||
Future<void> updateReportForAllUsers(Report report) async {
|
||||
await request("/report", "PUT",
|
||||
payload: {'id': report.id, 'for_all_users': report.forAllUser},
|
||||
token: await getToken());
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> assignUser(ReportUser reportUser) async {
|
||||
await request("/report_user", "POST",
|
||||
payload: reportUser.toMap(), token: await getToken());
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> deleteReportUser(ReportUser reportUser) async {
|
||||
await request("/report_user", "DELETE",
|
||||
payload: reportUser.toMap(), token: await getToken());
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user