This repository has been archived on 2025-08-25. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
Seshat/lib/data/repositories/book_instance_repository.dart

48 lines
1.5 KiB
Dart

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<BookInstance>] from an [ean]
Future<Result<List<BookInstance>>> getByEan(int balId, int ean) async {
return await _apiClient.getBookInstanceByEAN(balId, ean);
}
/// Gets a [List<BookInstance>] from a [title] and [author]
Future<Result<List<SearchResult>>> 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<Result<BookInstance>> sendNewBookInstance(
Book book,
Owner owner,
Bal bal,
double price,
) async {
return await _apiClient.sendNewBookInstance(book, owner, bal, price);
}
/// Sells a [List<BookInstance>]
Future<Result<void>> sellBooks(List<BookInstance> books) async {
Map<String, double?> res = {};
for (BookInstance instance in books) {
res[instance.id.toString()] = instance.soldPrice;
}
return await _apiClient.sellBooks(res);
}
}