import 'dart:async'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:fcs/model/base_model.dart'; import 'package:fcs/vo/box.dart'; import 'package:fcs/vo/package.dart'; import 'package:logging/logging.dart'; class PackageModel extends BaseModel { final log = Logger('PackageModel'); StreamSubscription listener; static List statusHistory = [ Status(status: "Received", date: DateTime(2020, 6, 1), done: true), Status(status: "Processed", date: DateTime(2020, 6, 1), done: true), Status(status: "Shipped", date: DateTime(2020, 6, 5), done: false), Status(status: "Delivered", date: DateTime(2020, 6, 15), done: false) ]; static List packages = [ Package( shipmentNumber: "A202", receiverNumber: "3", receiverName: "Ko Myo Min", boxNumber: "1", rate: 7, packageType: "General", weight: 25, status: "Received", receiverAddress: '1 Bo Yar Nyunt St.\nDagon Tsp, Yangon', cargoDesc: "Computers", arrivedDate: DateTime(2020, 6, 1), market: "Amazon", id: "PKG2039", trackingID: "23-234s-asdfl",statusHistory: statusHistory), Package( shipmentNumber: "A202", receiverNumber: "3", receiverName: "Ko Myo Min", boxNumber: "2", rate: 7, packageType: "General", weight: 20, status: "Received", cargoDesc: "Clothes", arrivedDate: DateTime(2020, 6, 1), market: "Macy", trackingID: "asd-sdf-23498", id: "PKG2040", receiverAddress: '1 Bo Yar Nyunt St.\nDagon Tsp, Yangon',statusHistory: statusHistory), Package( shipmentNumber: "A202", receiverNumber: "3", receiverName: "Ko Myo Min", boxNumber: "3", rate: 7, packageType: "General", weight: 15, cargoDesc: "Shoes", status: "Processed", market: "Macy", trackingID: "8923-234-sd", id: "PKG2041", arrivedDate: DateTime(2020, 6, 1), receiverAddress: '1 Bo Yar Nyunt St.\nDagon Tsp, Yangon',statusHistory: statusHistory), Package( shipmentNumber: "A202", receiverNumber: "2", receiverName: "Ma Aye", boxNumber: "1", rate: 8, packageType: "Medicine", weight: 15, status: "Processed", market: "Macy", trackingID: "lsdf-sd09sdf", cargoDesc: "Dietary supplement", id: "PKG2042", arrivedDate: DateTime(2020, 6, 1), receiverAddress: '2 Shwe Taung Kyar St, Bahan Tsp, Yangon',statusHistory: statusHistory), Package( shipmentNumber: "A202", receiverNumber: "2", receiverName: "Ma Aye", boxNumber: "2", rate: 7, packageType: "General", cargoDesc: "Handbags", weight: 55, market: "Macy", trackingID: "234-sdflsdf-213", status: "Processed", id: "PKG2043", arrivedDate: DateTime(2020, 6, 1), receiverAddress: '2 Shwe Taung Kyar St, Bahan Tsp, Yangon',statusHistory: statusHistory), Package( shipmentNumber: "A201", receiverNumber: "1", receiverName: "Ko Wai", boxNumber: "1", rate: 9, packageType: "Dangerous", cargoDesc: "Phones and Scooters", weight: 25, status: "Received", market: "Amazon", trackingID: "sdf-asdf-23489", id: "PKG2044", arrivedDate: DateTime(2020, 5, 21), receiverAddress: '3 Kambzwza St, Bahan Tsp, Yangon',statusHistory: statusHistory), Package( shipmentNumber: "A201", receiverNumber: "1", receiverName: "Ko Wai", boxNumber: "2", rate: 7, packageType: "General", cargoDesc: "Construction tools", weight: 5, status: "Processed", market: "Amazon", id: "PKG2045", trackingID: "oiuw-sdfpo-234", arrivedDate: DateTime(2020, 5, 21), receiverAddress: '3 Kambzwza St, Bahan Tsp, Yangon',statusHistory: statusHistory), ]; List get completed { return packages.where((e) => e.status == "Processed").toList() ..sort((e1, e2) { return e2.packageNumber.compareTo(e1.packageNumber); }); } List get upcoming { return packages.where((e) => e.status == "Received").toList() ..sort((e1, e2) { return e2.packageNumber.compareTo(e1.packageNumber); }); } void initUser(user) { super.initUser(user); } @override logout() async { if (listener != null) await listener.cancel(); packages = []; } }