import 'package:seshat/data/services/api_client.dart'; import 'package:seshat/domain/models/bal.dart'; import 'package:seshat/domain/models/book.dart'; import 'package:seshat/domain/models/book_instance.dart'; import 'package:seshat/domain/models/owner.dart'; import 'package:seshat/domain/models/search_result.dart'; import 'package:seshat/utils/result.dart'; /// Repository to manage [BookInstance] class BookInstanceRepository { BookInstanceRepository({required ApiClient apiClient}) : _apiClient = apiClient; final ApiClient _apiClient; /// Gets a [List] from an [ean] Future>> getByEan(int balId, int ean) async { return await _apiClient.getBookInstanceByEAN(balId, ean); } /// Gets a [List] from a [title] and [author] Future>> getBySearch( int balId, String title, String author, ) async { return await _apiClient.getBookInstanceBySearch(balId, title, author); } /// Sends a new [BookInstance]'s [book], [owner], [bal] and [price] Future> sendNewBookInstance( Book book, Owner owner, Bal bal, double price, ) async { return await _apiClient.sendNewBookInstance(book, owner, bal, price); } /// Sells a [List] Future> sellBooks(List books) async { Map res = {}; for (BookInstance instance in books) { res[instance.id.toString()] = instance.soldPrice; } return await _apiClient.sellBooks(res); } }