Untitled

 avatar
unknown
plain_text
5 months ago
3.3 kB
3
Indexable
import 'package:dartz/dartz.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import '../../../../core/errors/exceptions.dart';
import '../../../../core/errors/failure.dart';
import '../../../../core/utils/typedef.dart';
// import '../../domain/entities/charger_station.dart';
import '../../domain/entities/charger_station.dart';
import '../../domain/entities/filter.dart';
import '../../domain/repositories/find_repository.dart';
import '../datasources/find_remote_data_source.dart';
import '../models/charger_station_model.dart';
import '../models/filter_model.dart';

class FindRepositoryImpl implements FindRepository {
  const FindRepositoryImpl(this._remoteDataSource);

  final FindRemoteDataSource _remoteDataSource;

  @override
  ResultFuture<List<ChargeStation>> getChargeStations() async {
    try {
      final result = await _remoteDataSource.getChargeStations();
      return Right(result);
    } on ServerException catch (e) {
      return Left(ServerFailure.fromException(e));
    }
  }

  @override
  ResultVoid openMapsNavigation(List<double> coordinates) async {
    try {
      final result = await _remoteDataSource.openMapsNavigation(coordinates);
      return Right(result);
    } on ServerException catch (e) {
      return Left(ServerFailure.fromException(e));
    }
  }

  @override
  ResultFuture<Set<Marker>> loadMarkers(
      List<ChargeStation> chargerStations) async {
    try {
      final chargerStationsModel = chargerStations
          .map((e) => ChargerStationModel.fromEntity(e))
          .toList();
      final result = await _remoteDataSource.loadMarkers(chargerStationsModel);
      return Right(result);
    } on ServerException catch (e) {
      return Left(ServerFailure.fromException(e));
    }
  }

  @override
  ResultFuture<List<ChargeStation>> loadFilteredChargeStations(
      Filter filter) async {
    try {
      final filterModel = FilterModel.fromEntity(filter);

      final result =
          await _remoteDataSource.loadFilteredChargeStations(filterModel);

      return Right(result);
    } on ServerException catch (e) {
      return Left(ServerFailure.fromException(e));
    }
  }

  @override
  ResultFuture<List<ChargeStation>> getFavoriteChargeStations(
      String userId) async {
    try {
      final result = await _remoteDataSource.getFavoriteChargeStations(userId);
      return Right(result);
    } on ServerException catch (e) {
      return Left(ServerFailure.fromException(e));
    }
  }

  @override
  ResultFuture<String> addFavoriteChargeStations(
      String favoriteChargerStationId) async {
    try {
      final result = await _remoteDataSource
          .addFavoriteChargeStations(favoriteChargerStationId);
      return Right(result);
    } on ServerException catch (e) {
      return Left(ServerFailure.fromException(e));
    }
  }

  @override
  ResultFuture<String> deleteFavoriteChargeStations(
      String favoriteChargerStationId) async {
    try {
      final result = await _remoteDataSource
          .deleteFavoriteChargeStations(favoriteChargerStationId);
      return Right(result);
    } on ServerException catch (e) {
      return Left(ServerFailure.fromException(e));
    }
  }
}
Editor is loading...
Leave a Comment