import 'package:built_collection/built_collection.dart'; import 'package:built_value/built_value.dart'; import 'package:built_value/serializer.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; part 'credit_model.g.dart'; abstract class CreditListResponse implements Built { factory CreditListResponse([void updates(CreditListResponseBuilder b)]) = _$CreditListResponse; CreditListResponse._(); BuiltList get data; static Serializer get serializer => _$creditListResponseSerializer; } abstract class CreditItemResponse implements Built { factory CreditItemResponse([void updates(CreditItemResponseBuilder b)]) = _$CreditItemResponse; CreditItemResponse._(); CreditEntity get data; static Serializer get serializer => _$creditItemResponseSerializer; } class CreditFields { static const String amount = 'amount'; static const String balance = 'balance'; static const String creditDate = 'creditDate'; static const String creditNumber = 'creditNumber'; static const String privateNotes = 'privateNotes'; static const String publicNotes = 'publicNotes'; static const String clientId = 'clientId'; static const String updatedAt = 'updatedAt'; static const String archivedAt = 'archivedAt'; static const String isDeleted = 'isDeleted'; } abstract class CreditEntity extends Object with BaseEntity, SelectableEntity implements Built { factory CreditEntity() { return _$CreditEntity._( id: BaseEntity.nextId, isChanged: false, amount: 0.0, balance: 0.0, creditDate: '', creditNumber: '', privateNotes: '', publicNotes: '', clientId: 0, updatedAt: 0, archivedAt: 0, isDeleted: false, ); } CreditEntity._(); CreditEntity get clone => rebuild((b) => b ..id = BaseEntity.nextId ..isChanged = false ..isDeleted = false); @override EntityType get entityType { return EntityType.credit; } double get amount; double get balance; @BuiltValueField(wireName: 'credit_date') String get creditDate; @BuiltValueField(wireName: 'credit_number') String get creditNumber; @BuiltValueField(wireName: 'private_notes') String get privateNotes; @BuiltValueField(wireName: 'public_notes') String get publicNotes; @BuiltValueField(wireName: 'client_id') int get clientId; @override List getActions( {UserCompanyEntity userCompany, ClientEntity client, bool includeEdit = false, bool multiselect = false}) { final actions = []; return actions..addAll(super.getActions(userCompany: userCompany)); } int compareTo(CreditEntity credit, String sortField, bool sortAscending) { int response = 0; final CreditEntity creditA = sortAscending ? this : credit; final CreditEntity creditB = sortAscending ? credit : this; switch (sortField) { case CreditFields.amount: response = creditA.amount.compareTo(creditB.amount); } return response; } @override bool matchesFilter(String filter) { if (filter == null || filter.isEmpty) { return true; } return publicNotes.toLowerCase().contains(filter); } @override String matchesFilterValue(String filter) { if (filter == null || filter.isEmpty) { return null; } return null; } @override String get listDisplayName { return publicNotes; } @override double get listDisplayAmount => null; @override FormatNumberType get listDisplayAmountType => FormatNumberType.money; static Serializer get serializer => _$creditEntitySerializer; }