110 lines
3.2 KiB
Dart
110 lines
3.2 KiB
Dart
import 'package:dartz/dartz.dart';
|
|
import '../entities/tour.dart';
|
|
import '../entities/logistic_object.dart';
|
|
import '../entities/location.dart';
|
|
import '../entities/counter.dart';
|
|
import '../../core/errors/failures.dart';
|
|
|
|
abstract class TourRepository {
|
|
// Touren
|
|
Future<Either<Failure, List<Tour>>> getTours();
|
|
Future<Either<Failure, Tour>> getTourById(int tourId);
|
|
Future<Either<Failure, void>> updateTourState(int tourId, int state);
|
|
Future<Either<Failure, void>> completeTour(int tourId);
|
|
|
|
// Sync
|
|
Future<Either<Failure, void>> syncData();
|
|
Future<Either<Failure, bool>> checkForUpdates();
|
|
|
|
// Objects
|
|
Future<Either<Failure, List<LogisticObject>>> getObjectsByTour(int tourId);
|
|
Future<Either<Failure, List<LogisticObject>>> getObjectsByState(String state);
|
|
Future<Either<Failure, LogisticObject?>> getObjectByBarcode(String barcode);
|
|
Future<Either<Failure, void>> updateObjectState(
|
|
int objectId,
|
|
String newState, {
|
|
int? locationId,
|
|
int? refType,
|
|
int? refId,
|
|
String? containerCode,
|
|
});
|
|
Future<Either<Failure, void>> createObject({
|
|
required int type,
|
|
required String code,
|
|
bool isManual = true,
|
|
});
|
|
|
|
// Locations
|
|
Future<Either<Failure, List<Location>>> getLocations();
|
|
Future<Either<Failure, Location>> getLocationById(int locationId);
|
|
|
|
// Metadata
|
|
Future<Either<Failure, List<ObjectMetadata>>> getObjectMetadata();
|
|
|
|
// Statistics
|
|
Future<Either<Failure, TourStatistics>> getTourStatistics(int tourId);
|
|
Future<Either<Failure, ObjectStatistics>> getObjectStatistics();
|
|
|
|
// Counter operations (spezifisch für Lua-kompatible Ansichten)
|
|
Future<Either<Failure, CounterOverview>> getCounterOverview(
|
|
int tourId,
|
|
String tourType, {
|
|
String? pageId,
|
|
});
|
|
|
|
Future<Either<Failure, List<PickupCount>>> getPickupCounts(int tourId, String pageId);
|
|
Future<Either<Failure, List<SwapCount>>> getSwapCounts(int tourId, String pageId);
|
|
|
|
// Container operations
|
|
Future<Either<Failure, List<ContainerInfo>>> getOpenContainers();
|
|
Future<Either<Failure, void>> addObjectToContainer(
|
|
String containerId,
|
|
String containerType,
|
|
int objectId,
|
|
);
|
|
Future<Either<Failure, void>> closeContainer(
|
|
String containerId,
|
|
String containerType,
|
|
);
|
|
|
|
// Recent scans
|
|
Future<Either<Failure, List<RecentScan>>> getRecentScans(
|
|
int tourId, {
|
|
int limit = 10,
|
|
});
|
|
}
|
|
|
|
class TourStatistics {
|
|
final int totalObjects;
|
|
final int completedObjects;
|
|
final int pendingObjects;
|
|
final Map<String, int> objectsByState;
|
|
final Map<String, int> objectsByType;
|
|
final double completionPercentage;
|
|
|
|
const TourStatistics({
|
|
required this.totalObjects,
|
|
required this.completedObjects,
|
|
required this.pendingObjects,
|
|
required this.objectsByState,
|
|
required this.objectsByType,
|
|
required this.completionPercentage,
|
|
});
|
|
}
|
|
|
|
class ObjectStatistics {
|
|
final Map<String, int> byState;
|
|
final Map<String, int> byType;
|
|
final Map<String, int> byLocation;
|
|
final List<LogisticObject> recentObjects;
|
|
final int totalCount;
|
|
|
|
const ObjectStatistics({
|
|
required this.byState,
|
|
required this.byType,
|
|
required this.byLocation,
|
|
required this.recentObjects,
|
|
required this.totalCount,
|
|
});
|
|
}
|