diff --git a/lib/admin/ui/pages/add_loaner_page/add_loaner_page.dart b/lib/admin/ui/pages/add_loaner_page/add_loaner_page.dart index 10e76cbdc..8aabc0ed3 100644 --- a/lib/admin/ui/pages/add_loaner_page/add_loaner_page.dart +++ b/lib/admin/ui/pages/add_loaner_page/add_loaner_page.dart @@ -4,7 +4,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:myecl/admin/providers/group_list_provider.dart'; import 'package:myecl/admin/tools/constants.dart'; import 'package:myecl/admin/ui/admin.dart'; -import 'package:myecl/loan/class/loaner.dart'; +import 'package:myecl/generated/openapi.swagger.dart'; import 'package:myecl/loan/providers/all_loaner_list_provider.dart'; import 'package:myecl/loan/providers/loaner_list_provider.dart'; import 'package:myecl/tools/functions.dart'; diff --git a/lib/loan/class/item.dart b/lib/loan/class/item.dart deleted file mode 100644 index bf492bc15..000000000 --- a/lib/loan/class/item.dart +++ /dev/null @@ -1,73 +0,0 @@ -import 'package:myecl/loan/class/item_simple.dart'; - -class Item { - Item({ - required this.id, - required this.name, - required this.caution, - required this.totalQuantity, - required this.loanedQuantity, - required this.suggestedLendingDuration, - }); - late final String id; - late final String name; - late final int caution; - late final int totalQuantity; - late final int loanedQuantity; - late final double suggestedLendingDuration; - - Item.fromJson(Map json) { - id = json['id']; - name = json['name']; - caution = json['suggested_caution']; - totalQuantity = json['total_quantity']; - loanedQuantity = json['loaned_quantity']; - suggestedLendingDuration = json['suggested_lending_duration']; - } - - Map toJson() { - final data = {}; - data['id'] = id; - data['name'] = name; - data['suggested_caution'] = caution; - data['total_quantity'] = totalQuantity; - data['loaned_quantity'] = loanedQuantity; - data['suggested_lending_duration'] = suggestedLendingDuration; - return data; - } - - Item copyWith( - {String? id, - String? name, - int? caution, - int? totalQuantity, - int? loanedQuantity, - double? suggestedLendingDuration}) { - return Item( - id: id ?? this.id, - name: name ?? this.name, - caution: caution ?? this.caution, - totalQuantity: totalQuantity ?? this.totalQuantity, - loanedQuantity: loanedQuantity ?? this.loanedQuantity, - suggestedLendingDuration: - suggestedLendingDuration ?? this.suggestedLendingDuration); - } - - ItemSimple toItemSimple() { - return ItemSimple(id: id, name: name); - } - - Item.empty() { - id = ''; - name = ''; - caution = 0; - totalQuantity = 1; - loanedQuantity = 0; - suggestedLendingDuration = 0; - } - - @override - String toString() { - return 'Item(id: $id, name: $name, caution: $caution, totalQuantity: $totalQuantity, loanedQuantity: $loanedQuantity, suggestedLendingDuration: $suggestedLendingDuration)'; - } -} diff --git a/lib/loan/class/item_quantity.dart b/lib/loan/class/item_quantity.dart deleted file mode 100644 index 5a5c69dd4..000000000 --- a/lib/loan/class/item_quantity.dart +++ /dev/null @@ -1,35 +0,0 @@ -import 'package:myecl/loan/class/item_simple.dart'; - -class ItemQuantity { - ItemQuantity({required this.itemSimple, required this.quantity}); - late final ItemSimple itemSimple; - late final int quantity; - - ItemQuantity.fromJson(Map json) { - itemSimple = ItemSimple.fromJson(json['itemSimple']); - quantity = json['quantity']; - } - - Map toJson() { - final data = {}; - data['item_id'] = itemSimple.id; - data['quantity'] = quantity; - return data; - } - - ItemQuantity copyWith({ItemSimple? itemSimple, int? quantity}) { - return ItemQuantity( - itemSimple: itemSimple ?? this.itemSimple, - quantity: quantity ?? this.quantity); - } - - ItemQuantity.empty() { - itemSimple = ItemSimple.empty(); - quantity = 0; - } - - @override - String toString() { - return 'ItemQuantity(itemSimple: $itemSimple, quantity: $quantity)'; - } -} diff --git a/lib/loan/class/item_simple.dart b/lib/loan/class/item_simple.dart deleted file mode 100644 index 45bf24e38..000000000 --- a/lib/loan/class/item_simple.dart +++ /dev/null @@ -1,37 +0,0 @@ -class ItemSimple { - ItemSimple({ - required this.id, - required this.name, - }); - late final String id; - late final String name; - - ItemSimple.fromJson(Map json) { - id = json['id']; - name = json['name']; - } - - Map toJson() { - final data = {}; - data['id'] = id; - data['name'] = name; - return data; - } - - ItemSimple copyWith({id, name}) { - return ItemSimple( - id: id ?? this.id, - name: name ?? this.name, - ); - } - - ItemSimple.empty() { - id = ''; - name = ''; - } - - @override - String toString() { - return 'ItemSimple(id: $id, name: $name'; - } -} diff --git a/lib/loan/class/loan.dart b/lib/loan/class/loan.dart deleted file mode 100644 index 17e854688..000000000 --- a/lib/loan/class/loan.dart +++ /dev/null @@ -1,92 +0,0 @@ -import 'package:myecl/generated/openapi.models.swagger.dart' show CoreUserSimple; -import 'package:myecl/loan/class/item_quantity.dart'; -import 'package:myecl/loan/class/loaner.dart'; -import 'package:myecl/tools/functions.dart'; - -class Loan { - Loan({ - required this.id, - required this.loaner, - required this.borrower, - required this.notes, - required this.start, - required this.end, - required this.caution, - required this.itemsQuantity, - required this.returned, - }); - late final String id; - late final Loaner loaner; - late final CoreUserSimple borrower; - late final String notes; - late final DateTime start; - late final DateTime end; - late final String caution; - late final List itemsQuantity; - late final bool returned; - - Loan.fromJson(Map json) { - id = json['id']; - borrower = CoreUserSimple.fromJson(json['borrower']); - loaner = Loaner.fromJson(json['loaner']); - notes = json['notes']; - start = DateTime.parse(json['start']); - end = DateTime.parse(json['end']); - caution = json['caution']; - itemsQuantity = List.from( - json['items_qty'].map((x) => ItemQuantity.fromJson(x))); - returned = json['returned']; - } - - Map toJson() { - final data = {}; - data['id'] = id; - data['borrower_id'] = borrower.id; - data['loaner_id'] = loaner.id; - data['notes'] = notes; - data['start'] = processDateToAPIWithoutHour(start); - data['end'] = processDateToAPIWithoutHour(end); - data['caution'] = caution; - data['items_borrowed'] = itemsQuantity.map((x) => x.toJson()).toList(); - return data; - } - - Loan copyWith( - {String? id, - Loaner? loaner, - CoreUserSimple? borrower, - String? notes, - DateTime? start, - DateTime? end, - String? caution, - List? itemsQuantity, - bool? returned}) { - return Loan( - id: id ?? this.id, - loaner: loaner ?? this.loaner, - borrower: borrower ?? this.borrower, - notes: notes ?? this.notes, - start: start ?? this.start, - end: end ?? this.end, - caution: caution ?? this.caution, - itemsQuantity: itemsQuantity ?? this.itemsQuantity, - returned: returned ?? this.returned); - } - - Loan.empty() { - id = ''; - borrower = CoreUserSimple.fromJson({}); - loaner = Loaner.empty(); - notes = ''; - start = DateTime.now(); - end = DateTime.now(); - caution = ''; - itemsQuantity = []; - returned = false; - } - - @override - String toString() { - return 'Loan(id: $id, loaner: $loaner, borrower: $borrower, notes: $notes, start: $start, end: $end, caution: $caution, itemsQuantity: $itemsQuantity, returned: $returned)'; - } -} diff --git a/lib/loan/class/loaner.dart b/lib/loan/class/loaner.dart deleted file mode 100644 index d847f717e..000000000 --- a/lib/loan/class/loaner.dart +++ /dev/null @@ -1,43 +0,0 @@ -class Loaner { - Loaner({ - required this.name, - required this.groupManagerId, - required this.id, - }); - late final String name; - late final String groupManagerId; - late final String id; - - Loaner.fromJson(Map json) { - name = json['name']; - groupManagerId = json['group_manager_id']; - id = json['id']; - } - - Map toJson() { - final data = {}; - data['name'] = name; - data['group_manager_id'] = groupManagerId; - data['id'] = id; - return data; - } - - Loaner copyWith({String? name, String? groupManagerId, String? id}) { - return Loaner( - name: name ?? this.name, - groupManagerId: groupManagerId ?? this.groupManagerId, - id: id ?? this.id, - ); - } - - Loaner.empty() { - name = ""; - groupManagerId = ""; - id = ""; - } - - @override - String toString() { - return 'Loaner(name: $name, groupManagerId: $groupManagerId, id: $id)'; - } -} diff --git a/lib/loan/providers/admin_history_loan_list_provider.dart b/lib/loan/providers/admin_history_loan_list_provider.dart index e0547ae75..4a93ad00b 100644 --- a/lib/loan/providers/admin_history_loan_list_provider.dart +++ b/lib/loan/providers/admin_history_loan_list_provider.dart @@ -1,6 +1,5 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/loan/class/loan.dart'; -import 'package:myecl/loan/class/loaner.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/history_loaner_loan_list_provider.dart'; import 'package:myecl/loan/providers/loaner_provider.dart'; import 'package:myecl/loan/providers/user_loaner_list_provider.dart'; @@ -21,7 +20,7 @@ final adminHistoryLoanListProvider = StateNotifierProvider< final loaner = ref.watch(loanerProvider); final loanListNotifier = ref.watch(historyLoanerLoanListProvider.notifier); adminLoanListNotifier.loadTList(loaners); - if (loaner.id == Loaner.empty().id) return adminLoanListNotifier; + if (loaner.id == Loaner.fromJson({}).id) return adminLoanListNotifier; loanListNotifier.loadLoan(loaner.id).then((value) { adminLoanListNotifier.setTData(loaner, value); }); diff --git a/lib/loan/providers/admin_loan_list_provider.dart b/lib/loan/providers/admin_loan_list_provider.dart index cbac3653e..b8cecec4e 100644 --- a/lib/loan/providers/admin_loan_list_provider.dart +++ b/lib/loan/providers/admin_loan_list_provider.dart @@ -1,6 +1,5 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/loan/class/loan.dart'; -import 'package:myecl/loan/class/loaner.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/loaner_loan_list_provider.dart'; import 'package:myecl/loan/providers/loaner_provider.dart'; import 'package:myecl/loan/providers/user_loaner_list_provider.dart'; @@ -19,7 +18,7 @@ final adminLoanListProvider = StateNotifierProvider>((ref) { diff --git a/lib/loan/providers/caution_provider.dart b/lib/loan/providers/caution_provider.dart index 0b9c1c2a3..1a07ced53 100644 --- a/lib/loan/providers/caution_provider.dart +++ b/lib/loan/providers/caution_provider.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/loan/class/item.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; class CautionNotifier extends StateNotifier { CautionNotifier() : super(TextEditingController()); @@ -16,7 +16,7 @@ class CautionNotifier extends StateNotifier { void setCautionFromSelected(Map selected) { double total = 0; selected.forEach((key, value) { - total += key.caution * value; + total += key.suggestedCaution * value; }); final caution = "${total.toStringAsFixed(2)} €"; state.value = state.value.copyWith( diff --git a/lib/loan/providers/end_provider.dart b/lib/loan/providers/end_provider.dart index 2a0b36a9a..1e91a158e 100644 --- a/lib/loan/providers/end_provider.dart +++ b/lib/loan/providers/end_provider.dart @@ -1,5 +1,5 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/loan/class/item.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/tools/functions.dart'; class EndNotifier extends StateNotifier { diff --git a/lib/loan/providers/history_loaner_loan_list_provider.dart b/lib/loan/providers/history_loaner_loan_list_provider.dart index 681ff7d38..3f67a61a8 100644 --- a/lib/loan/providers/history_loaner_loan_list_provider.dart +++ b/lib/loan/providers/history_loaner_loan_list_provider.dart @@ -1,86 +1,36 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:myecl/admin/tools/functions.dart'; -import 'package:myecl/auth/providers/openid_provider.dart'; -import 'package:myecl/loan/class/loan.dart'; +import 'package:myecl/generated/openapi.swagger.dart'; import 'package:myecl/loan/providers/loaner_id_provider.dart'; -import 'package:myecl/loan/repositories/loan_repository.dart'; -import 'package:myecl/tools/exception.dart'; -import 'package:myecl/tools/providers/list_notifier.dart'; +import 'package:myecl/tools/providers/list_notifier%20copy.dart'; +import 'package:myecl/tools/repository/repository2.dart'; import 'package:myecl/tools/token_expire_wrapper.dart'; -class HistoryLoanerLoanListNotifier extends ListNotifier { - final LoanRepository loanRepository = LoanRepository(); - HistoryLoanerLoanListNotifier({required String token}) - : super(const AsyncValue.loading()) { - loanRepository.setToken(token); - } +class HistoryLoanerLoanListNotifier extends ListNotifier2 { + final Openapi loanRepository; + HistoryLoanerLoanListNotifier({required this.loanRepository}) + : super(const AsyncValue.loading()); Future>> loadLoan(String loanerId) async { - return await loadList(() async => loanRepository.getHistory(loanerId)); - } - - Future addLoan(Loan loan) async { - return await add(loanRepository.createLoan, loan); - } - - Future updateLoan(Loan loan) async { - return await update( - loanRepository.updateLoan, - (loans, loan) => - loans..[loans.indexWhere((l) => l.id == loan.id)] = loan, - loan); - } - - Future deleteLoan(Loan loan) async { - return await delete( - loanRepository.deleteLoan, - (loans, loan) => loans..removeWhere((i) => i.id == loan.id), - loan.id, - loan); - } - - Future returnLoan(Loan loan) async { - return await delete( - loanRepository.returnLoan, - (loans, loan) => loans..removeWhere((i) => i.id == loan.id), - loan.id, - loan); - } - - Future extendLoan(Loan loan, int delay) async { - return await update((l) async { - return loanRepository.extendLoan(l, delay); - }, - (loans, loan) => - loans..[loans.indexWhere((l) => l.id == loan.id)] = loan, - loan); + return await loadList( + () async => loanRepository.loansLoanersLoanerIdLoansGet( + loanerId: loanerId, + returned: true, + )); } Future>> copy() async { return state.whenData((loans) => loans.sublist(0)); } - Future>> loadHistory(String loanerId) async { - try { - final data = await loanRepository.getHistory(loanerId); - return AsyncValue.data(data); - } catch (e) { - state = AsyncValue.error(e, StackTrace.current); - if (e is AppException && e.type == ErrorType.tokenExpire) { - rethrow; - } else { - return state; - } - } - } - + Future>> filterLoans(String query) async { return state.whenData((loans) => loans .where((loan) => getName(loan.borrower) .toLowerCase() .contains(query.toLowerCase()) || - loan.itemsQuantity + loan.itemsQty .map((e) => e.itemSimple.name .toLowerCase() .contains(query.toLowerCase())) @@ -91,9 +41,9 @@ class HistoryLoanerLoanListNotifier extends ListNotifier { final historyLoanerLoanListProvider = StateNotifierProvider< HistoryLoanerLoanListNotifier, AsyncValue>>((ref) { - final token = ref.watch(tokenProvider); + final loanRepository = ref.watch(repositoryProvider); HistoryLoanerLoanListNotifier historyLoanerLoanListNotifier = - HistoryLoanerLoanListNotifier(token: token); + HistoryLoanerLoanListNotifier(loanRepository: loanRepository); tokenExpireWrapperAuth(ref, () async { final loanerId = ref.watch(loanerIdProvider); if (loanerId != "") { diff --git a/lib/loan/providers/item_list_provider.dart b/lib/loan/providers/item_list_provider.dart index 02433c0a9..05e8223d5 100644 --- a/lib/loan/providers/item_list_provider.dart +++ b/lib/loan/providers/item_list_provider.dart @@ -1,26 +1,45 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/loan/class/item.dart'; +import 'package:myecl/generated/client_index.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/loaner_id_provider.dart'; -import 'package:myecl/loan/repositories/item_repository.dart'; -import 'package:myecl/tools/providers/list_notifier.dart'; +import 'package:myecl/tools/providers/list_notifier%20copy.dart'; +import 'package:myecl/tools/repository/repository2.dart'; import 'package:myecl/tools/token_expire_wrapper.dart'; -class ItemListNotifier extends ListNotifier { - final ItemRepository itemrepository; - ItemListNotifier({required this.itemrepository}) +class ItemListNotifier extends ListNotifier2 { + final Openapi itemRepository; + ItemListNotifier({required this.itemRepository}) : super(const AsyncValue.loading()); Future>> loadItemList(String id) async { - return await loadList(() async => itemrepository.getItemList(id)); + return await loadList( + () async => itemRepository.loansLoanersLoanerIdItemsGet(loanerId: id)); } Future addItem(Item item, String loanerId) async { - return await add((i) async => itemrepository.createItem(loanerId, i), item); + return await add( + (item) async => itemRepository.loansLoanersLoanerIdItemsPost( + loanerId: loanerId, + body: ItemBase( + name: item.name, + suggestedCaution: item.suggestedCaution, + totalQuantity: item.totalQuantity, + suggestedLendingDuration: item.suggestedLendingDuration, + )), + item); } Future updateItem(Item item, String loanerId) async { return await update( - (i) async => itemrepository.updateItem(loanerId, i), + (item) async => itemRepository.loansLoanersLoanerIdItemsItemIdPatch( + loanerId: loanerId, + itemId: item.id, + body: ItemUpdate( + name: item.name, + suggestedCaution: item.suggestedCaution, + totalQuantity: item.totalQuantity, + suggestedLendingDuration: item.suggestedLendingDuration, + )), (items, item) => items..[items.indexWhere((i) => i.id == item.id)] = item, item); @@ -28,7 +47,8 @@ class ItemListNotifier extends ListNotifier { Future deleteItem(Item item, String loanerId) async { return await delete( - (id) async => itemrepository.deleteItem(loanerId, id), + (itemId) async => itemRepository.loansLoanersLoanerIdItemsItemIdDelete( + loanerId: loanerId, itemId: itemId), (items, item) => items..removeWhere((i) => i.id == item.id), item.id, item); @@ -47,9 +67,9 @@ class ItemListNotifier extends ListNotifier { final itemListProvider = StateNotifierProvider>>((ref) { - final itemRepository = ref.watch(itemRepositoryProvider); + final itemRepository = ref.watch(repositoryProvider); ItemListNotifier itemListNotifier = - ItemListNotifier(itemrepository: itemRepository); + ItemListNotifier(itemRepository: itemRepository); tokenExpireWrapperAuth(ref, () async { final loanerId = ref.watch(loanerIdProvider); if (loanerId != "") { diff --git a/lib/loan/providers/item_provider.dart b/lib/loan/providers/item_provider.dart index c9fb9546e..28ad62692 100644 --- a/lib/loan/providers/item_provider.dart +++ b/lib/loan/providers/item_provider.dart @@ -1,8 +1,8 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/loan/class/item.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; class ItemNotifier extends StateNotifier { - ItemNotifier() : super(Item.empty()); + ItemNotifier() : super(Item.fromJson({})); void setItem(Item item) { state = item; diff --git a/lib/loan/providers/loan_list_provider.dart b/lib/loan/providers/loan_list_provider.dart index 2267112f5..86416a589 100644 --- a/lib/loan/providers/loan_list_provider.dart +++ b/lib/loan/providers/loan_list_provider.dart @@ -1,52 +1,24 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/loan/class/loan.dart'; -import 'package:myecl/loan/repositories/loan_repository.dart'; -import 'package:myecl/tools/providers/list_notifier.dart'; +import 'package:myecl/generated/openapi.swagger.dart'; +import 'package:myecl/tools/providers/list_notifier%20copy.dart'; +import 'package:myecl/tools/repository/repository2.dart'; import 'package:myecl/tools/token_expire_wrapper.dart'; -class LoanListNotifier extends ListNotifier { - final LoanRepository loanrepository; - LoanListNotifier({required this.loanrepository}) +class LoanListNotifier extends ListNotifier2 { + final Openapi loanRepository; + LoanListNotifier({required this.loanRepository}) : super(const AsyncValue.loading()); Future>> loadLoanList() async { - return await loadList(loanrepository.getMyLoanList); - } - - Future addLoan(Loan loan) async { - return await add(loanrepository.createLoan, loan); - } - - Future updateLoan(Loan loan) async { - return await update(loanrepository.updateLoan, (loans, loan) { - final index = loans.indexWhere((l) => l.id == loan.id); - loans[index] = loan; - return loans; - }, loan); - } - - Future deleteLoan(Loan loan) async { - return await delete( - loanrepository.deleteLoan, - (loans, loan) => loans..removeWhere((i) => i.id == loan.id), - loan.id, - loan); - } - - Future returnLoan(Loan loan) async { - return await delete( - loanrepository.returnLoan, - (loans, loan) => loans..removeWhere((i) => i.id == loan.id), - loan.id, - loan); + return await loadList(loanRepository.loansUsersMeGet); } } final loanListProvider = StateNotifierProvider>>((ref) { - final loanRepository = ref.watch(loanRepositoryProvider); + final loanRepository = ref.watch(repositoryProvider); LoanListNotifier loanListNotifier = - LoanListNotifier(loanrepository: loanRepository); + LoanListNotifier(loanRepository: loanRepository); tokenExpireWrapperAuth(ref, () async { await loanListNotifier.loadLoanList(); }); diff --git a/lib/loan/providers/loan_provider.dart b/lib/loan/providers/loan_provider.dart index 68801fbc5..1e55be05a 100644 --- a/lib/loan/providers/loan_provider.dart +++ b/lib/loan/providers/loan_provider.dart @@ -1,8 +1,8 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/loan/class/loan.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; class LoanNotifier extends StateNotifier { - LoanNotifier() : super(Loan.empty()); + LoanNotifier() : super(Loan.fromJson({})); Future setLoan(Loan loan) async { state = loan; diff --git a/lib/loan/providers/loaner_list_provider.dart b/lib/loan/providers/loaner_list_provider.dart index b8197e394..5323019ca 100644 --- a/lib/loan/providers/loaner_list_provider.dart +++ b/lib/loan/providers/loaner_list_provider.dart @@ -1,25 +1,36 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:myecl/loan/class/loaner.dart'; -import 'package:myecl/loan/repositories/loaner_repository.dart'; -import 'package:myecl/tools/providers/list_notifier.dart'; +import 'package:myecl/generated/openapi.swagger.dart'; +import 'package:myecl/tools/providers/list_notifier%20copy.dart'; +import 'package:myecl/tools/repository/repository2.dart'; import 'package:myecl/tools/token_expire_wrapper.dart'; -class LoanerListNotifier extends ListNotifier { - final LoanerRepository loanerRepository; +class LoanerListNotifier extends ListNotifier2 { + final Openapi loanerRepository; LoanerListNotifier({required this.loanerRepository}) : super(const AsyncValue.loading()); Future>> loadLoanerList() async { - return await loadList(loanerRepository.getLoanerList); + return await loadList(loanerRepository.loansLoanersGet); } Future addLoaner(Loaner loaner) async { - return await add(loanerRepository.createLoaner, loaner); + return await add( + (loaner) async => loanerRepository.loansLoanersPost( + body: LoanerBase( + name: loaner.name, + groupManagerId: loaner.groupManagerId, + )), + loaner); } Future updateLoaner(Loaner loaner) async { return await update( - loanerRepository.updateLoaner, + (loaner) async => loanerRepository.loansLoanersLoanerIdPatch( + loanerId: loaner.id, + body: LoanerUpdate( + name: loaner.name, + groupManagerId: loaner.groupManagerId, + )), (loaners, loaner) => loaners..[loaners.indexWhere((i) => i.id == loaner.id)] = loaner, loaner); @@ -27,7 +38,8 @@ class LoanerListNotifier extends ListNotifier { Future deleteLoaner(Loaner loaner) async { return await delete( - loanerRepository.deleteLoaner, + (loanerId) async => + loanerRepository.loansLoanersLoanerIdDelete(loanerId: loanerId), (loans, loan) => loans..removeWhere((i) => i.id == loan.id), loaner.id, loaner); @@ -37,7 +49,7 @@ class LoanerListNotifier extends ListNotifier { final loanerListProvider = StateNotifierProvider>>( (ref) { - final loanerRepository = ref.watch(loanerRepositoryProvider); + final loanerRepository = ref.watch(repositoryProvider); LoanerListNotifier orderListNotifier = LoanerListNotifier(loanerRepository: loanerRepository); tokenExpireWrapperAuth(ref, () async { diff --git a/lib/loan/providers/loaner_loan_list_provider.dart b/lib/loan/providers/loaner_loan_list_provider.dart index 335338699..7e074e5e2 100644 --- a/lib/loan/providers/loaner_loan_list_provider.dart +++ b/lib/loan/providers/loaner_loan_list_provider.dart @@ -1,29 +1,61 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:myecl/admin/tools/functions.dart'; -import 'package:myecl/loan/class/loan.dart'; +import 'package:myecl/generated/openapi.swagger.dart'; import 'package:myecl/loan/providers/loaner_id_provider.dart'; -import 'package:myecl/loan/repositories/loan_repository.dart'; -import 'package:myecl/tools/exception.dart'; -import 'package:myecl/tools/providers/list_notifier.dart'; +import 'package:myecl/tools/providers/list_notifier%20copy.dart'; +import 'package:myecl/tools/repository/repository2.dart'; import 'package:myecl/tools/token_expire_wrapper.dart'; -class LoanerLoanListNotifier extends ListNotifier { - final LoanRepository loanrepository; - LoanerLoanListNotifier({required this.loanrepository}) +class LoanerLoanListNotifier extends ListNotifier2 { + final Openapi loanRepository; + LoanerLoanListNotifier({required this.loanRepository}) : super(const AsyncValue.loading()); Future>> loadLoan(String loanerId) async { return await loadList( - () async => loanrepository.getLoanListByLoanerId(loanerId)); + () async => loanRepository.loansLoanersLoanerIdLoansGet( + loanerId: loanerId, + returned: true, + )); } Future addLoan(Loan loan) async { - return await add(loanrepository.createLoan, loan); + return await add( + (loan) async => loanRepository.loansPost( + body: LoanCreation( + borrowerId: loan.borrower.id, + loanerId: loan.loaner.id, + start: loan.start, + end: loan.end, + notes: loan.notes, + caution: loan.caution, + itemsBorrowed: loan.itemsQty + .map((e) => ItemBorrowed( + itemId: e.itemSimple.id, + quantity: e.quantity, + )) + .toList(), + )), + loan); } Future updateLoan(Loan loan) async { return await update( - loanrepository.updateLoan, + (loan) async => loanRepository.loansLoanIdPatch( + loanId: loan.id, + body: LoanUpdate( + borrowerId: loan.borrower.id, + start: loan.start, + end: loan.end, + notes: loan.notes, + caution: loan.caution, + itemsBorrowed: loan.itemsQty + .map((e) => ItemBorrowed( + itemId: e.itemSimple.id, + quantity: e.quantity, + )) + .toList(), + )), (loans, loan) => loans..[loans.indexWhere((l) => l.id == loan.id)] = loan, loan); @@ -31,7 +63,7 @@ class LoanerLoanListNotifier extends ListNotifier { Future deleteLoan(Loan loan) async { return await delete( - loanrepository.deleteLoan, + (loanId) async => loanRepository.loansLoanIdDelete(loanId: loanId), (loans, loan) => loans..removeWhere((i) => i.id == loan.id), loan.id, loan); @@ -39,16 +71,16 @@ class LoanerLoanListNotifier extends ListNotifier { Future returnLoan(Loan loan) async { return await delete( - loanrepository.returnLoan, + (loanId) async => loanRepository.loansLoanIdReturnPost(loanId: loanId), (loans, loan) => loans..removeWhere((i) => i.id == loan.id), loan.id, loan); } - Future extendLoan(Loan loan, int delay) async { - return await update((l) async { - return loanrepository.extendLoan(l, delay); - }, + Future extendLoan(Loan loan, double delay) async { + return await update( + (loan) async => loanRepository.loansLoanIdExtendPost( + loanId: loan.id, body: LoanExtend(duration: delay)), (loans, loan) => loans..[loans.indexWhere((l) => l.id == loan.id)] = loan, loan); @@ -58,27 +90,13 @@ class LoanerLoanListNotifier extends ListNotifier { return state.whenData((loans) => loans.sublist(0)); } - Future>> loadHistory(String loanerId) async { - try { - final data = await loanrepository.getHistory(loanerId); - return AsyncValue.data(data); - } catch (e) { - state = AsyncValue.error(e, StackTrace.current); - if (e is AppException && e.type == ErrorType.tokenExpire) { - rethrow; - } else { - return state; - } - } - } - Future>> filterLoans(String query) async { return state.whenData((loans) => loans .where((loan) => getName(loan.borrower) .toLowerCase() .contains(query.toLowerCase()) || - loan.itemsQuantity + loan.itemsQty .map((e) => e.itemSimple.name .toLowerCase() .contains(query.toLowerCase())) @@ -90,9 +108,9 @@ class LoanerLoanListNotifier extends ListNotifier { final loanerLoanListProvider = StateNotifierProvider>>( (ref) { - final loanerRepository = ref.watch(loanRepositoryProvider); + final loanerRepository = ref.watch(repositoryProvider); LoanerLoanListNotifier loanerLoanListNotifier = - LoanerLoanListNotifier(loanrepository: loanerRepository); + LoanerLoanListNotifier(loanRepository: loanerRepository); tokenExpireWrapperAuth(ref, () async { final loanerId = ref.watch(loanerIdProvider); if (loanerId != "") { diff --git a/lib/loan/providers/loaner_provider.dart b/lib/loan/providers/loaner_provider.dart index 12cf70538..5d693aa35 100644 --- a/lib/loan/providers/loaner_provider.dart +++ b/lib/loan/providers/loaner_provider.dart @@ -1,5 +1,5 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/loan/class/loaner.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/loaner_id_provider.dart'; import 'package:myecl/loan/providers/user_loaner_list_provider.dart'; @@ -9,6 +9,6 @@ final loanerProvider = Provider((ref) { return loanerList.maybeWhen( data: (loanerList) => loanerList.firstWhere((loaner) => loaner.id == loanerId), - orElse: () => Loaner.empty(), + orElse: () => Loaner.fromJson({}), ); }); diff --git a/lib/loan/providers/loaners_items_provider.dart b/lib/loan/providers/loaners_items_provider.dart index b338730c9..b30ed7f28 100644 --- a/lib/loan/providers/loaners_items_provider.dart +++ b/lib/loan/providers/loaners_items_provider.dart @@ -1,6 +1,5 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:myecl/loan/class/item.dart'; -import 'package:myecl/loan/class/loaner.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/user_loaner_list_provider.dart'; import 'package:myecl/tools/providers/map_provider.dart'; diff --git a/lib/loan/providers/selected_items_provider.dart b/lib/loan/providers/selected_items_provider.dart index 472b916d5..bc93cf4d7 100644 --- a/lib/loan/providers/selected_items_provider.dart +++ b/lib/loan/providers/selected_items_provider.dart @@ -1,6 +1,5 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/loan/class/item.dart'; -import 'package:myecl/loan/class/loan.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/item_list_provider.dart'; import 'package:myecl/loan/providers/loan_provider.dart'; @@ -50,7 +49,7 @@ class SelectedListProvider extends StateNotifier> { void initWithLoan(List items, Loan loan) { var copy = state.toList(); final itemIds = items.map((i) => i.id).toList(); - for (var itemQty in loan.itemsQuantity) { + for (var itemQty in loan.itemsQty) { if (itemIds.contains(itemQty.itemSimple.id)) { copy[itemIds.indexOf(itemQty.itemSimple.id)] = itemQty.quantity; } diff --git a/lib/loan/providers/user_loaner_list_provider.dart b/lib/loan/providers/user_loaner_list_provider.dart index bfeda4c46..d459b994b 100644 --- a/lib/loan/providers/user_loaner_list_provider.dart +++ b/lib/loan/providers/user_loaner_list_provider.dart @@ -1,43 +1,23 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:myecl/loan/class/loaner.dart'; -import 'package:myecl/loan/repositories/loaner_repository.dart'; -import 'package:myecl/tools/providers/list_notifier.dart'; +import 'package:myecl/generated/openapi.swagger.dart'; +import 'package:myecl/tools/providers/list_notifier%20copy.dart'; +import 'package:myecl/tools/repository/repository2.dart'; import 'package:myecl/tools/token_expire_wrapper.dart'; -class UserLoanerListNotifier extends ListNotifier { - final LoanerRepository loanerRepository; +class UserLoanerListNotifier extends ListNotifier2 { + final Openapi loanerRepository; UserLoanerListNotifier({required this.loanerRepository}) : super(const AsyncValue.loading()); Future>> loadMyLoanerList() async { - return await loadList(loanerRepository.getMyLoaner); - } - - Future addLoaner(Loaner loaner) async { - return await add(loanerRepository.createLoaner, loaner); - } - - Future updateLoaner(Loaner loaner) async { - return await update( - loanerRepository.updateLoaner, - (loaners, loaner) => - loaners..[loaners.indexWhere((i) => i.id == loaner.id)] = loaner, - loaner); - } - - Future deleteLoaner(Loaner loaner) async { - return await delete( - loanerRepository.deleteLoaner, - (loans, loan) => loans..removeWhere((i) => i.id == loan.id), - loaner.id, - loaner); + return await loadList(loanerRepository.loansUsersMeLoanersGet); } } final userLoanerListProvider = StateNotifierProvider>>( (ref) { - final loanerRepository = ref.watch(loanerRepositoryProvider); + final loanerRepository = ref.watch(repositoryProvider); UserLoanerListNotifier orderListNotifier = UserLoanerListNotifier(loanerRepository: loanerRepository); tokenExpireWrapperAuth(ref, () async { diff --git a/lib/loan/repositories/item_repository.dart b/lib/loan/repositories/item_repository.dart deleted file mode 100644 index 1f6ea2e33..000000000 --- a/lib/loan/repositories/item_repository.dart +++ /dev/null @@ -1,33 +0,0 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/auth/providers/openid_provider.dart'; -import 'package:myecl/loan/class/item.dart'; -import 'package:myecl/tools/repository/repository.dart'; - -class ItemRepository extends Repository { - @override - // ignore: overridden_fields - final ext = "loans/loaners/"; - - Future> getItemList(String loanerId) async { - return List.from((await getList(suffix: "$loanerId/items")) - .map((x) => Item.fromJson(x))); - } - - Future createItem(String loanerId, Item item) async { - return Item.fromJson( - await create(item.toJson(), suffix: "$loanerId/items")); - } - - Future updateItem(String loanerId, Item item) async { - return await update(item.toJson(), "$loanerId/items/${item.id}"); - } - - Future deleteItem(String loanerId, String itemId) async { - return await delete("$loanerId/items/$itemId"); - } -} - -final itemRepositoryProvider = Provider((ref) { - final token = ref.watch(tokenProvider); - return ItemRepository()..setToken(token); -}); diff --git a/lib/loan/repositories/loan_repository.dart b/lib/loan/repositories/loan_repository.dart deleted file mode 100644 index 5d3621749..000000000 --- a/lib/loan/repositories/loan_repository.dart +++ /dev/null @@ -1,57 +0,0 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/auth/providers/openid_provider.dart'; -import 'package:myecl/loan/class/loan.dart'; -import 'package:myecl/tools/repository/repository.dart'; - -class LoanRepository extends Repository { - @override - // ignore: overridden_fields - final ext = "loans/"; - - Future> getLoanListByLoanerId(String loanerId) async { - return List.from( - (await getList(suffix: "loaners/$loanerId/loans?returned=false")) - .map((x) => Loan.fromJson(x))); - } - - Future> getMyLoanList() async { - return List.from( - (await getList(suffix: "users/me")).map((x) => Loan.fromJson(x))); - } - - Future getLoan(String id) async { - return Loan.fromJson(await getOne(id)); - } - - Future createLoan(Loan loan) async { - return Loan.fromJson(await create(loan.toJson())); - } - - Future updateLoan(Loan loan) async { - return await update(loan.toJson(), loan.id); - } - - Future deleteLoan(String loanId) async { - return await delete(loanId); - } - - Future extendLoan(Loan loan, int newDate) async { - return await create({"duration": newDate * 24 * 60 * 60}, - suffix: "${loan.id}/extend"); - } - - Future returnLoan(String loanId) async { - return await create({}, suffix: "$loanId/return"); - } - - Future> getHistory(String loanerId) async { - return List.from( - (await getList(suffix: "loaners/$loanerId/loans?returned=true")) - .map((x) => Loan.fromJson(x))); - } -} - -final loanRepositoryProvider = Provider((ref) { - final token = ref.watch(tokenProvider); - return LoanRepository()..setToken(token); -}); diff --git a/lib/loan/repositories/loaner_repository.dart b/lib/loan/repositories/loaner_repository.dart deleted file mode 100644 index cda15134e..000000000 --- a/lib/loan/repositories/loaner_repository.dart +++ /dev/null @@ -1,41 +0,0 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:myecl/auth/providers/openid_provider.dart'; -import 'package:myecl/loan/class/loaner.dart'; -import 'package:myecl/tools/repository/repository.dart'; - -class LoanerRepository extends Repository { - @override - // ignore: overridden_fields - final ext = "loans/"; - - Future> getLoanerList() async { - return List.from( - (await getList(suffix: "loaners/")).map((x) => Loaner.fromJson(x))); - } - - Future> getMyLoaner() async { - return List.from((await getList(suffix: "users/me/loaners")) - .map((x) => Loaner.fromJson(x))); - } - - Future getLoaner(String id) async { - return Loaner.fromJson(await getOne("loaners/$id")); - } - - Future createLoaner(Loaner loaner) async { - return Loaner.fromJson(await create(loaner.toJson(), suffix: "loaners/")); - } - - Future updateLoaner(Loaner loaner) async { - return await update(loaner.toJson(), "loaners/${loaner.id}"); - } - - Future deleteLoaner(String loanerId) async { - return await delete("loaners/$loanerId"); - } -} - -final loanerRepositoryProvider = Provider((ref) { - final token = ref.watch(tokenProvider); - return LoanerRepository()..setToken(token); -}); diff --git a/lib/loan/tools/functions.dart b/lib/loan/tools/functions.dart index 419a994cf..f3ba26112 100644 --- a/lib/loan/tools/functions.dart +++ b/lib/loan/tools/functions.dart @@ -1,4 +1,4 @@ -import 'package:myecl/loan/class/item_quantity.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/tools/constants.dart'; String formatItems(List itemsQty) { diff --git a/lib/loan/ui/pages/admin_page/item_card.dart b/lib/loan/ui/pages/admin_page/item_card.dart index e33217890..d4d2ad3d6 100644 --- a/lib/loan/ui/pages/admin_page/item_card.dart +++ b/lib/loan/ui/pages/admin_page/item_card.dart @@ -1,7 +1,7 @@ import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/material.dart'; import 'package:heroicons/heroicons.dart'; -import 'package:myecl/loan/class/item.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/tools/constants.dart'; import 'package:myecl/tools/ui/layouts/card_button.dart'; import 'package:myecl/tools/ui/layouts/card_layout.dart'; @@ -51,7 +51,7 @@ class ItemCard extends StatelessWidget { ? Colors.grey.shade400 : LoanColorConstants.redGradient2)), const SizedBox(height: 5), - AutoSizeText('${item.caution.toStringAsFixed(2)} €', + AutoSizeText('${item.suggestedCaution.toStringAsFixed(2)} €', maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle( diff --git a/lib/loan/ui/pages/admin_page/loan_card.dart b/lib/loan/ui/pages/admin_page/loan_card.dart index aadf664e9..25fbfed0c 100644 --- a/lib/loan/ui/pages/admin_page/loan_card.dart +++ b/lib/loan/ui/pages/admin_page/loan_card.dart @@ -2,7 +2,7 @@ import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/material.dart'; import 'package:heroicons/heroicons.dart'; import 'package:myecl/admin/tools/functions.dart'; -import 'package:myecl/loan/class/loan.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/tools/constants.dart'; import 'package:myecl/loan/tools/functions.dart'; import 'package:myecl/tools/functions.dart'; @@ -92,7 +92,7 @@ class LoanCard extends StatelessWidget { fontWeight: FontWeight.bold, color: shouldReturn ? Colors.white : Colors.black)), const SizedBox(height: 7), - Text(formatItems(loan.itemsQuantity), + Text(formatItems(loan.itemsQty), style: TextStyle( fontSize: 13, fontWeight: FontWeight.bold, @@ -100,7 +100,7 @@ class LoanCard extends StatelessWidget { ? Colors.white.withOpacity(0.8) : Colors.grey.shade400)), const SizedBox(height: 5), - Text(loan.caution, + Text(loan.caution.toString(), style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, diff --git a/lib/loan/ui/pages/admin_page/loaners_bar.dart b/lib/loan/ui/pages/admin_page/loaners_bar.dart index 8dad8c346..88e5846b2 100644 --- a/lib/loan/ui/pages/admin_page/loaners_bar.dart +++ b/lib/loan/ui/pages/admin_page/loaners_bar.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:myecl/loan/class/loaner.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/admin_loan_list_provider.dart'; import 'package:myecl/loan/providers/loaner_provider.dart'; import 'package:myecl/tools/functions.dart'; diff --git a/lib/loan/ui/pages/admin_page/loaners_items.dart b/lib/loan/ui/pages/admin_page/loaners_items.dart index aa3780a74..7e01d4577 100644 --- a/lib/loan/ui/pages/admin_page/loaners_items.dart +++ b/lib/loan/ui/pages/admin_page/loaners_items.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:heroicons/heroicons.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:myecl/loan/class/item.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/item_focus_provider.dart'; import 'package:myecl/loan/providers/item_list_provider.dart'; import 'package:myecl/loan/providers/item_provider.dart'; @@ -77,7 +77,7 @@ class LoanersItems extends HookConsumerWidget { height: 140, firstChild: GestureDetector( onTap: () { - itemNotifier.setItem(Item.empty()); + itemNotifier.setItem(Item.fromJson({})); QR.to(LoanRouter.root + LoanRouter.admin + LoanRouter.addEditItem); diff --git a/lib/loan/ui/pages/admin_page/on_going_loan.dart b/lib/loan/ui/pages/admin_page/on_going_loan.dart index c24aafd19..e7f59cd04 100644 --- a/lib/loan/ui/pages/admin_page/on_going_loan.dart +++ b/lib/loan/ui/pages/admin_page/on_going_loan.dart @@ -2,8 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:heroicons/heroicons.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:myecl/loan/class/item.dart'; -import 'package:myecl/loan/class/loan.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/admin_loan_list_provider.dart'; import 'package:myecl/loan/providers/end_provider.dart'; import 'package:myecl/loan/providers/loan_focus_provider.dart'; @@ -87,7 +86,7 @@ class OnGoingLoan extends HookConsumerWidget { height: 170, firstChild: GestureDetector( onTap: () async { - await loanNotifier.setLoan(Loan.empty()); + await loanNotifier.setLoan(Loan.fromJson({})); ref.watch(itemListProvider); startNotifier.setStart(processDate(DateTime.now())); endNotifier.setEnd(""); @@ -132,7 +131,7 @@ class OnGoingLoan extends HookConsumerWidget { await loanNotifier.setLoan(newLoan); tokenExpireWrapper(ref, () async { final value = await loanListNotifier - .extendLoan(newLoan, i); + .extendLoan(newLoan, i.toDouble()); if (value) { await adminLoanListNotifier .setTData( @@ -164,7 +163,7 @@ class OnGoingLoan extends HookConsumerWidget { onYes: () async { await tokenExpireWrapper(ref, () async { - final loanItemsId = e.itemsQuantity + final loanItemsId = e.itemsQty .map((e) => e.itemSimple.id) .toList(); final updatedItems = loanersItems diff --git a/lib/loan/ui/pages/detail_pages/detail_loan.dart b/lib/loan/ui/pages/detail_pages/detail_loan.dart index 8290ef93b..7c0061535 100644 --- a/lib/loan/ui/pages/detail_pages/detail_loan.dart +++ b/lib/loan/ui/pages/detail_pages/detail_loan.dart @@ -65,7 +65,7 @@ class DetailLoanPage extends HookConsumerWidget { ), const SizedBox(height: 30), Text( - loan.notes, + loan.notes ?? 'Pas de notes', style: const TextStyle( fontSize: 18, ), @@ -73,11 +73,11 @@ class DetailLoanPage extends HookConsumerWidget { ], ), ), - loan.itemsQuantity.isNotEmpty + loan.itemsQty.isNotEmpty ? SingleChildScrollView( physics: const BouncingScrollPhysics(), child: Wrap( - children: loan.itemsQuantity + children: loan.itemsQty .map( (itemQty) => ItemCardInLoan( itemQty: itemQty, diff --git a/lib/loan/ui/pages/detail_pages/item_card_in_loan.dart b/lib/loan/ui/pages/detail_pages/item_card_in_loan.dart index 91e386add..e748d850e 100644 --- a/lib/loan/ui/pages/detail_pages/item_card_in_loan.dart +++ b/lib/loan/ui/pages/detail_pages/item_card_in_loan.dart @@ -1,6 +1,6 @@ import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/material.dart'; -import 'package:myecl/loan/class/item_quantity.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/tools/constants.dart'; import 'package:myecl/tools/ui/layouts/card_layout.dart'; diff --git a/lib/loan/ui/pages/item_group_page/add_edit_item_page.dart b/lib/loan/ui/pages/item_group_page/add_edit_item_page.dart index 36fcc04aa..aa12875a8 100644 --- a/lib/loan/ui/pages/item_group_page/add_edit_item_page.dart +++ b/lib/loan/ui/pages/item_group_page/add_edit_item_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:myecl/loan/class/item.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/item_list_provider.dart'; import 'package:myecl/loan/providers/item_provider.dart'; import 'package:myecl/loan/providers/loaner_provider.dart'; @@ -26,12 +26,12 @@ class AddEditItemPage extends HookConsumerWidget { final itemListNotifier = ref.watch(itemListProvider.notifier); final loanersItemsNotifier = ref.watch(loanersItemsProvider.notifier); final item = ref.watch(itemProvider); - final isEdit = item.id != Item.empty().id; + final isEdit = item.id != Item.fromJson({}).id; final name = useTextEditingController(text: item.name); final quantity = useTextEditingController(text: item.totalQuantity.toString()); final caution = - useTextEditingController(text: isEdit ? item.caution.toString() : ''); + useTextEditingController(text: isEdit ? item.suggestedCaution.toString() : ''); final lendingDuration = useTextEditingController( text: isEdit ? (item.suggestedLendingDuration).toString() : ''); @@ -97,7 +97,8 @@ class AddEditItemPage extends HookConsumerWidget { Item newItem = Item( id: isEdit ? item.id : '', name: name.text, - caution: int.parse(caution.text), + loanerId: loaner.id, + suggestedCaution: int.parse(caution.text), suggestedLendingDuration: double.parse(lendingDuration.text), loanedQuantity: 1, diff --git a/lib/loan/ui/pages/loan_group_page/add_edit_button.dart b/lib/loan/ui/pages/loan_group_page/add_edit_button.dart index 7b49b1560..3bc704263 100644 --- a/lib/loan/ui/pages/loan_group_page/add_edit_button.dart +++ b/lib/loan/ui/pages/loan_group_page/add_edit_button.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:myecl/loan/class/item_quantity.dart'; -import 'package:myecl/loan/class/loan.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/admin_loan_list_provider.dart'; import 'package:myecl/loan/providers/borrower_provider.dart'; import 'package:myecl/loan/providers/caution_provider.dart'; @@ -74,13 +73,15 @@ class AddEditButton extends HookConsumerWidget { .where((element) => selectedItems[itemList.indexOf(element)] != 0) .map((e) => ItemQuantity( - itemSimple: e.toItemSimple(), + itemSimple: ItemSimple(id: e.id, name: e.name, loanerId: e.loanerId), quantity: selectedItems[itemList.indexOf(e)])) .toList(); if (selected.isNotEmpty) { Loan newLoan = Loan( loaner: isEdit ? loan.loaner : loaner, - itemsQuantity: selected, + loanerId: isEdit ? loan.loaner.id : loaner.id, + borrowerId: borrower.id, + itemsQty: selected, borrower: borrower, caution: caution.text, end: DateTime.parse(processDateBack(end)), diff --git a/lib/loan/ui/pages/loan_group_page/add_edit_loan_page.dart b/lib/loan/ui/pages/loan_group_page/add_edit_loan_page.dart index 6be035465..92b8b3c08 100644 --- a/lib/loan/ui/pages/loan_group_page/add_edit_loan_page.dart +++ b/lib/loan/ui/pages/loan_group_page/add_edit_loan_page.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:myecl/admin/tools/functions.dart'; -import 'package:myecl/loan/class/loan.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/caution_provider.dart'; import 'package:myecl/loan/providers/item_focus_provider.dart'; import 'package:myecl/loan/providers/item_list_provider.dart'; @@ -30,11 +30,11 @@ class AddEditLoanPage extends HookConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final key = GlobalKey(); final loan = ref.watch(loanProvider); - final isEdit = loan.id != Loan.empty().id; + final isEdit = loan.id != Loan.fromJson({}).id; final note = useTextEditingController(text: loan.notes); final caution = ref.watch(cautionProvider); final cautionNotifier = ref.watch(cautionProvider.notifier); - cautionNotifier.setCaution(loan.caution); + cautionNotifier.setCaution(loan.caution.toString()); final usersNotifier = ref.watch(userList.notifier); final loaner = ref.watch(loanerProvider); final loanersItemsNotifier = ref.watch(loanersItemsProvider.notifier); diff --git a/lib/loan/ui/pages/loan_group_page/check_item_card.dart b/lib/loan/ui/pages/loan_group_page/check_item_card.dart index 3731c4bbb..1ce8aabc3 100644 --- a/lib/loan/ui/pages/loan_group_page/check_item_card.dart +++ b/lib/loan/ui/pages/loan_group_page/check_item_card.dart @@ -1,6 +1,6 @@ import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/material.dart'; -import 'package:myecl/loan/class/item.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/tools/constants.dart'; import 'package:myecl/tools/ui/layouts/card_layout.dart'; @@ -43,7 +43,7 @@ class CheckItemCard extends StatelessWidget { ? Colors.grey.shade400 : LoanColorConstants.redGradient2)), const SizedBox(height: 5), - AutoSizeText('${item.caution.toStringAsFixed(2)} €', + AutoSizeText('${item.suggestedCaution.toStringAsFixed(2)} €', maxLines: 1, style: const TextStyle( fontSize: 18, diff --git a/lib/loan/ui/pages/loan_group_page/item_bar.dart b/lib/loan/ui/pages/loan_group_page/item_bar.dart index 502e21415..8dd0ce6ea 100644 --- a/lib/loan/ui/pages/loan_group_page/item_bar.dart +++ b/lib/loan/ui/pages/loan_group_page/item_bar.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:heroicons/heroicons.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:myecl/loan/class/item.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/caution_provider.dart'; import 'package:myecl/loan/providers/end_provider.dart'; import 'package:myecl/loan/providers/item_list_provider.dart'; diff --git a/lib/loan/ui/pages/loan_group_page/start_date_entry.dart b/lib/loan/ui/pages/loan_group_page/start_date_entry.dart index 002eaca00..a8846e05b 100644 --- a/lib/loan/ui/pages/loan_group_page/start_date_entry.dart +++ b/lib/loan/ui/pages/loan_group_page/start_date_entry.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:myecl/loan/class/item.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/end_provider.dart'; import 'package:myecl/loan/providers/initial_date_provider.dart'; import 'package:myecl/loan/providers/item_list_provider.dart'; diff --git a/lib/loan/ui/pages/main_page/main_page.dart b/lib/loan/ui/pages/main_page/main_page.dart index 427a40c4c..c67d3b4a4 100644 --- a/lib/loan/ui/pages/main_page/main_page.dart +++ b/lib/loan/ui/pages/main_page/main_page.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:myecl/loan/class/loan.dart'; +import 'package:myecl/generated/openapi.models.swagger.dart'; import 'package:myecl/loan/providers/admin_loan_list_provider.dart'; import 'package:myecl/loan/providers/is_loan_admin_provider.dart'; import 'package:myecl/loan/providers/item_list_provider.dart'; diff --git a/pubspec.lock b/pubspec.lock index b5862696c..3acaefda1 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: "8942974ee5dc932427704ede5e0db8b5f2b8f22172964544b56e6bd37f6c3634" + sha256: eb0ac20f704799b986049fbb3c1c16421eca319a1b872378d669513e12452ba5 url: "https://pub.dev" source: hosted - version: "1.3.12" + version: "1.3.14" analyzer: dependency: transitive description: @@ -109,10 +109,10 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b" + sha256: "67d591d602906ef9201caf93452495ad1812bea2074f04e25dbd7c133785821b" url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.7" build_runner_core: dependency: transitive description: @@ -133,10 +133,10 @@ packages: dependency: transitive description: name: built_value - sha256: "723b4021e903217dfc445ec4cf5b42e27975aece1fc4ebbc1ca6329c2d9fb54e" + sha256: "69acb7007eb2a31dc901512bfe0f7b767168be34cb734835d54c070bfa74c1b2" url: "https://pub.dev" source: hosted - version: "8.7.0" + version: "8.8.0" characters: dependency: transitive description: @@ -229,10 +229,10 @@ packages: dependency: transitive description: name: cross_file - sha256: "445db18de832dba8d851e287aff8ccf169bed30d2e94243cb54c7d2f1ed2142c" + sha256: fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e url: "https://pub.dev" source: hosted - version: "0.3.3+6" + version: "0.3.3+8" crypto: dependency: "direct main" description: @@ -253,10 +253,10 @@ packages: dependency: transitive description: name: dart_style - sha256: abd7625e16f51f554ea244d090292945ec4d4be7bfbaf2ec8cccea568919d334 + sha256: "40ae61a5d43feea6d24bd22c0537a6629db858963b99b4bc1c3db80676f32368" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.3.4" datetime_picker_formfield: dependency: "direct main" description: @@ -365,10 +365,10 @@ packages: dependency: "direct main" description: name: firebase_core - sha256: "45f3f9babfc6f56fb94c3cd11584cf3c9672868228373b699b94427010e01dc3" + sha256: d301561d614487688d797717bef013a264c517d1d09e4c5c1325c3a64c835efb url: "https://pub.dev" source: hosted - version: "2.22.0" + version: "2.24.0" firebase_core_platform_interface: dependency: transitive description: @@ -381,34 +381,34 @@ packages: dependency: transitive description: name: firebase_core_web - sha256: "0631a2ec971dbc540275e2fa00c3a8a2676f0a7adbc3c197d6fba569db689d97" + sha256: "10159d9ee42c79f4548971d92f3f0fcd5791f6738cda3583a4e3b2c8b244c018" url: "https://pub.dev" source: hosted - version: "2.8.1" + version: "2.9.0" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: "9922476db960b4044a6e65152f2695d9d6eaa6658db9aa9915c47bf38b572359" + sha256: "260064e1b512a9e1970b5964d645eba888208ca3de42459c38e484c8ecdc37a9" url: "https://pub.dev" source: hosted - version: "14.7.4" + version: "14.7.6" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: "4d18606a988337911c2572afe1b946b5c7ad5a3444864b4468ed686ca9f5cd5a" + sha256: "81fb8c983356dd75ee660f276c918380325df7a1ab1e981ede911809e9ddff30" url: "https://pub.dev" source: hosted - version: "4.5.13" + version: "4.5.15" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: "22a16175e204439156ba5f6396cd9ca4b74799744d7dbc8faa1d27efbaec7f1c" + sha256: "1c5d9b6cf929ab471300143059d1641a26b73c9c24adb5266e241aea23c090aa" url: "https://pub.dev" source: hosted - version: "3.5.13" + version: "3.5.15" fixnum: dependency: transitive description: @@ -429,10 +429,10 @@ packages: dependency: "direct main" description: name: flash - sha256: "1f1632d83f42fe0b9038f72694969a6adf52fa2a3df46d05cfc392dde3c1505f" + sha256: "1bb5a53158d7834ce0db8b15a0b948ee369698e59c907b751035c3a787f347ac" url: "https://pub.dev" source: hosted - version: "3.0.5+2" + version: "3.1.0" flutter: dependency: "direct main" description: flutter @@ -527,10 +527,10 @@ packages: dependency: "direct main" description: name: flutter_riverpod - sha256: e90eaad95b2543d5473ca561f22995bb33f186b2b6065e26e9e22d913be481aa + sha256: da9591d1f8d5881628ccd5c25c40e74fc3eef50ba45e40c3905a06e1712412d5 url: "https://pub.dev" source: hosted - version: "2.4.7" + version: "2.4.9" flutter_secure_storage: dependency: "direct main" description: @@ -641,10 +641,10 @@ packages: dependency: "direct main" description: name: hooks_riverpod - sha256: dcb557be94f6ae6c5483f74362615ebc9429c288581f570b38d3f2f70fcbad6b + sha256: c12a456e03ef9be65b0be66963596650ad7a3220e96c7e7b0a048562ea32d6ae url: "https://pub.dev" source: hosted - version: "2.4.7" + version: "2.4.9" html: dependency: transitive description: @@ -657,10 +657,10 @@ packages: dependency: "direct main" description: name: http - sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + sha256: d4872660c46d929f6b8a9ef4e7a7eff7e49bbf0c4ec3f385ee32df5119175139 url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.2" http_multi_server: dependency: transitive description: @@ -689,10 +689,10 @@ packages: dependency: "direct main" description: name: image_cropper - sha256: "19340e50a8c09124ef2196884e9eb79d219d84cb819cfbf52141221216e30515" + sha256: f4bad5ed2dfff5a7ce0dfbad545b46a945c702bb6182a921488ef01ba7693111 url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.0.1" image_cropper_for_web: dependency: transitive description: @@ -1009,10 +1009,10 @@ packages: dependency: transitive description: name: petitparser - sha256: eeb2d1428ee7f4170e2bd498827296a18d4e7fc462b71727d111c0ac7707cfa6 + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 url: "https://pub.dev" source: hosted - version: "6.0.1" + version: "6.0.2" platform: dependency: transitive description: @@ -1081,10 +1081,10 @@ packages: dependency: transitive description: name: riverpod - sha256: f003970b2b47fc708f0697299e32693fd8f5e2d490edcba65e4987f88b840cf4 + sha256: "942999ee48b899f8a46a860f1e13cee36f2f77609eb54c5b7a669bb20d550b11" url: "https://pub.dev" source: hosted - version: "2.4.7" + version: "2.4.9" rxdart: dependency: "direct main" description: @@ -1278,34 +1278,34 @@ packages: dependency: "direct dev" description: name: swagger_dart_code_generator - sha256: b4febfba42311d808f26874ff679362e890e55a6c3e1ee2bc6b92f4e4cca396b + sha256: "8bb418d4ea7e4b8f63183d1749672d139452992448685d87f38c830eea78ef09" url: "https://pub.dev" source: hosted - version: "2.12.2" + version: "2.13.2" syncfusion_flutter_calendar: dependency: "direct main" description: name: syncfusion_flutter_calendar - sha256: d5d9edbaed2c1b6ed681056446f2467746d60e714301d47a9c4914ff1a6ba600 + sha256: "68b7555324f76badae05cd12c2e6d55020896ab041d8c7e07ca7762b3235e76c" url: "https://pub.dev" source: hosted - version: "23.2.4" + version: "23.2.6" syncfusion_flutter_core: dependency: transitive description: name: syncfusion_flutter_core - sha256: "8a1220f978491f56431c66dacf1bb97bf2abcd1458b542fe0dfbf1a630c67260" + sha256: "88366a5e95ccb4091feb531021567f76ed3ceddab7424de02a9ac4a335d22a44" url: "https://pub.dev" source: hosted - version: "23.2.4" + version: "23.2.6" syncfusion_flutter_datepicker: dependency: transitive description: name: syncfusion_flutter_datepicker - sha256: a676067cb93697f059f84b2a4d143234273a1f9b10d0b5540bb63297d1f93f74 + sha256: "5e0a9647232fbbd31d1734f4f8eba517e78a6ea955739671182c9c7cbdd05d42" url: "https://pub.dev" source: hosted - version: "23.2.4" + version: "23.2.6" term_glyph: dependency: transitive description: @@ -1438,10 +1438,10 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "7fd2f55fe86cea2897b963e864dc01a7eb0719ecc65fcef4c1cc3d686d718bb2" + sha256: "138bd45b3a456dcfafc46d1a146787424f8d2edfbf2809c9324361e58f851cf7" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" url_launcher_windows: dependency: transitive description: @@ -1526,10 +1526,10 @@ packages: dependency: transitive description: name: win32 - sha256: "7c99c0e1e2fa190b48d25c81ca5e42036d5cac81430ef249027d97b0935c553f" + sha256: b0f37db61ba2f2e9b7a78a1caece0052564d1bc70668156cf3a29d676fe4e574 url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "5.1.1" xdg_directories: dependency: transitive description: @@ -1542,10 +1542,10 @@ packages: dependency: transitive description: name: xml - sha256: af5e77e9b83f2f4adc5d3f0a4ece1c7f45a2467b695c2540381bac793e34e556 + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 url: "https://pub.dev" source: hosted - version: "6.4.2" + version: "6.5.0" yaml: dependency: transitive description: