Added Streams to TourRepository

This commit is contained in:
Dennis Nemec
2026-01-03 01:29:21 +01:00
parent edb8676f5a
commit 9111dc92db
43 changed files with 1232 additions and 931 deletions

View File

@ -1,13 +1,17 @@
import 'dart:typed_data';
import 'package:hl_lieferservice/dto/discount_add_response.dart';
import 'package:hl_lieferservice/dto/discount_remove_response.dart';
import 'package:hl_lieferservice/dto/discount_update_response.dart';
import 'package:hl_lieferservice/feature/delivery/detail/repository/note_repository.dart';
import 'package:hl_lieferservice/feature/delivery/detail/service/notes_service.dart';
import 'package:hl_lieferservice/feature/delivery/overview/service/delivery_info_service.dart';
import 'package:hl_lieferservice/model/delivery.dart';
class DeliveryRepository {
DeliveryRepository({required this.service});
DeliveryInfoService service;
TourService service;
Future<String?> unscan(String articleId, int newAmount, String reason) async {
return await service.unscanArticle(articleId, newAmount, reason);
@ -17,6 +21,16 @@ class DeliveryRepository {
return await service.resetScannedArticleAmount(articleId);
}
Future<void> uploadDriverSignature(String deliveryId, Uint8List signature) async {
NoteRepository noteRepository = NoteRepository(service: NoteService());
await noteRepository.addNamedImage(deliveryId, signature, "delivery_${deliveryId}_signature_driver.jpg");
}
Future<void> uploadCustomerSignature(String deliveryId, Uint8List signature) async {
NoteRepository noteRepository = NoteRepository(service: NoteService());
await noteRepository.addNamedImage(deliveryId, signature, "delivery_${deliveryId}_signature_customer.jpg");
}
Future<DiscountAddResponseDTO> addDiscount(
String deliveryId,
String reason,

View File

@ -2,43 +2,61 @@ import 'dart:typed_data';
import 'package:hl_lieferservice/model/delivery.dart';
import 'package:hl_lieferservice/feature/delivery/detail/service/notes_service.dart';
import 'package:rxdart/rxdart.dart';
class NoteRepository {
final NoteService service;
final _notesStream = BehaviorSubject<List<Note>>.seeded([]);
final _imageNoteStream = BehaviorSubject<List<ImageNote>>.seeded([]);
final _noteTemplateStream = BehaviorSubject<List<NoteTemplate>>.seeded([]);
Stream<List<Note>> get notes => _notesStream.stream;
Stream<List<ImageNote>> get images => _imageNoteStream.stream;
Stream<List<NoteTemplate>> get templates => _noteTemplateStream.stream;
NoteRepository({required this.service});
Future<Note> addNote(String deliveryId, String content) async {
return service.addNote(content, int.parse(deliveryId));
Future<void> addNote(String deliveryId, String content) async {
final note = await service.addNote(content, int.parse(deliveryId));
final currentNotes = _notesStream.value;
currentNotes.add(note);
_notesStream.add(currentNotes);
}
Future<void> editNote(String noteId, String content) async {
return service.editNote(Note(content: content, id: int.parse(noteId)));
final newNote = Note(content: content, id: int.parse(noteId));
await service.editNote(newNote);
final currentNotes = _notesStream.value;
final index = currentNotes.indexWhere((note) => note.id == int.parse(noteId));
currentNotes[index] = newNote;
_notesStream.add(currentNotes);
}
Future<void> deleteNote(String noteId) async {
return service.deleteNote(int.parse(noteId));
await service.deleteNote(int.parse(noteId));
final currentNotes = _notesStream.value;
final index = currentNotes.indexWhere((note) => note.id == int.parse(noteId));
currentNotes.removeAt(index);
_notesStream.add(currentNotes);
}
Future<List<Note>> loadNotes(String deliveryId) async {
return service.getNotes(deliveryId);
Future<void> loadNotes(String deliveryId) async {
var (notes, images) = await service.getNotes(deliveryId);
_notesStream.add(notes);
_imageNoteStream.add(images);
}
Future<List<Uint8List>> loadImages(List<String> urls) async {
List<Uint8List> images = [];
for (final image in await service.downloadImages(urls)) {
images.add(await image);
}
return images;
Future<void> loadTemplates() async {
_noteTemplateStream.add(await service.getNoteTemplates());
}
Future<List<NoteTemplate>> loadTemplates() async {
return service.getNoteTemplates();
}
Future<ImageNote> addImage(String deliveryId, Uint8List bytes) async {
Future<void> addImage(String deliveryId, Uint8List bytes) async {
final fileName =
"delivery_note_${deliveryId}_${DateTime.timestamp().microsecondsSinceEpoch}.jpg";
@ -48,11 +66,12 @@ class NoteRepository {
bytes,
"image/png",
);
return ImageNote.make(objectId, fileName);
final imageNotes = _imageNoteStream.value;
imageNotes.add(ImageNote.make(objectId, fileName, bytes));
_imageNoteStream.add(imageNotes);
}
Future<ImageNote> addNamedImage(String deliveryId, Uint8List bytes, String filename) async {
Future<void> addNamedImage(String deliveryId, Uint8List bytes, String filename) async {
String objectId = await service.uploadImage(
deliveryId,
filename,
@ -60,10 +79,18 @@ class NoteRepository {
"image/png",
);
return ImageNote.make(objectId, filename);
final imageNotes = _imageNoteStream.value;
imageNotes.add(ImageNote.make(objectId, filename, bytes));
_imageNoteStream.add(imageNotes);
}
Future<void> deleteImage(String deliveryId, String objectId) async {
await service.removeImage(objectId);
final images = _imageNoteStream.value;
final index = images.indexWhere((imageNote) => imageNote.objectId == objectId);
images.removeAt(index);
_imageNoteStream.add(images);
}
}