Files
Handwerks_app/models/auftrag.dart
2026-04-03 20:42:47 +02:00

65 lines
1.9 KiB
Dart

import 'package:cloud_firestore/cloud_firestore.dart';
/// Ein Datensatz = eine Rechnung / dokumentierter Auftrag (Fotos, Unterschrift, PDF).
class Auftrag {
Auftrag({
required this.id,
required this.titel,
required this.beschreibung,
required this.kundenName,
required this.kundenEmail,
required this.rechnungsnummer,
required this.betragText,
required this.fotoUrls,
required this.unterschriftUrl,
required this.createdAt,
});
final String id;
final String titel;
final String beschreibung;
final String kundenName;
final String kundenEmail;
final String rechnungsnummer;
final String betragText;
final List<String> fotoUrls;
final String? unterschriftUrl;
final DateTime? createdAt;
bool get hasUnterschrift =>
unterschriftUrl != null && unterschriftUrl!.isNotEmpty;
factory Auftrag.fromDoc(DocumentSnapshot<Map<String, dynamic>> doc) {
final d = doc.data() ?? {};
final fotos = d['fotoUrls'];
return Auftrag(
id: doc.id,
titel: d['titel'] as String? ?? '',
beschreibung: d['beschreibung'] as String? ?? '',
kundenName: d['kundenName'] as String? ?? '',
kundenEmail: d['kundenEmail'] as String? ?? '',
rechnungsnummer: d['rechnungsnummer'] as String? ?? '',
betragText: d['betragText'] as String? ?? '',
fotoUrls: fotos is List
? fotos.map((e) => e.toString()).toList()
: const <String>[],
unterschriftUrl: d['unterschriftUrl'] as String?,
createdAt: (d['createdAt'] as Timestamp?)?.toDate(),
);
}
Map<String, dynamic> toMap() {
return {
'titel': titel,
'beschreibung': beschreibung,
'kundenName': kundenName,
'kundenEmail': kundenEmail,
'rechnungsnummer': rechnungsnummer,
'betragText': betragText,
'fotoUrls': fotoUrls,
'unterschriftUrl': unterschriftUrl,
'updatedAt': FieldValue.serverTimestamp(),
};
}
}