cargo66/lib/data/repositories/order_repository_impl.dart

53 lines
1.4 KiB
Dart
Raw Normal View History

2024-08-15 05:49:01 +00:00
import 'package:cargo/data/models/route/route_response_model.dart';
2024-08-08 18:34:30 +00:00
import 'package:dartz/dartz.dart';
import '../../core/core.dart';
import '../../domain/domain.dart';
import '../data_sources/data_sources.dart';
2024-08-13 14:09:44 +00:00
import '../models/order/order_response_model.dart';
2024-08-08 18:34:30 +00:00
class OrderRepositoryImpl extends OrderRepository {
final OrderRemoteDataSource remoteDataSource;
final UserLocalDataSource localDataSource;
final NetworkInfo networkInfo;
OrderRepositoryImpl({
required this.remoteDataSource,
required this.localDataSource,
required this.networkInfo,
});
@override
2024-08-13 14:09:44 +00:00
Future<Either<Failure, OrderResponseModel>> getOrders(FilterProductParams params) async {
2024-08-08 18:34:30 +00:00
if (!await networkInfo.isConnected) {
return Left(NetworkFailure());
}
if (!await localDataSource.isTokenAvailable()) {
return Left(AuthenticationFailure());
}
try {
final String token = await localDataSource.getToken();
2024-08-13 14:09:44 +00:00
final response = await remoteDataSource.getOrders(params, token);
return Right(response);
2024-08-08 18:34:30 +00:00
} on Failure catch (failure) {
return Left(failure);
}
}
2024-08-15 05:49:01 +00:00
@override
Future<Either<Failure, RouteResponseModel>> getRoutes(String cargoId) async {
if (!await networkInfo.isConnected) {
return Left(NetworkFailure());
}
try {
final response = await remoteDataSource.getRoutes(cargoId);
return Right(response);
} on Failure catch (failure) {
return Left(failure);
}
}
2024-08-08 18:34:30 +00:00
}