feat: start working on sell

This commit is contained in:
alzalia1 2025-08-14 13:42:20 +02:00
parent f378c8c0be
commit 1803a2b119
8 changed files with 94 additions and 31 deletions

View file

@ -45,6 +45,9 @@ class AddViewModel extends ChangeNotifier {
notifyListeners();
}
Owner? _sectionOwner;
Owner? get sectionOwner => _sectionOwner;
List<Owner> _owners = [];
List<Owner>? get owners => _owners;
Future<Result<Owner>> addOwner(
@ -176,9 +179,17 @@ class AddViewModel extends ChangeNotifier {
),
);
case Error():
break;
return result;
}
return result;
final result2 = await _ownerRepository.sectionOwner;
switch (result2) {
case Ok():
_sectionOwner = result2.value;
break;
default:
}
return result2;
}
}

View file

@ -129,32 +129,37 @@ class _ConfirmationPopupState extends State<ConfirmationPopup> {
case Ok():
if (context.mounted) {
Navigator.of(context).pop();
}
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text(
"ID : ${widget.viewModel.currentOwner!.firstName[0]}${widget.viewModel.currentOwner!.lastName[0]}${(price == 0) ? "PL" : price.toString()}",
),
content: Text(
"Identifiant propriétaire de ce livre. Pensez à l'écrire pour retrouver lae propriétaire du livre lors de la vente ou du retour !",
),
actions: [
TextButton(
onPressed: () {
widget.exitPopup(context);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Enregistré: ${widget.book.title}"),
behavior: SnackBarBehavior.floating,
),
);
},
child: Text("Ok"),
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text(
"ID : ${widget.viewModel.currentOwner!.firstName[0].toUpperCase()}${widget.viewModel.currentOwner!.lastName[0].toUpperCase()}${(price == 0) ? "PL" : price.toString()}",
),
],
),
);
content: Text(
(widget.viewModel.currentOwner!.id ==
widget.viewModel.sectionOwner!.id)
? "Ce livre appartient à la section. Vous pouvez mettre le code, ou poser une gomette, ..."
: "Identifiant propriétaire de ce livre. Pensez à l'écrire pour retrouver lae propriétaire du livre lors de la vente ou du retour !",
),
actions: [
TextButton(
onPressed: () {
widget.exitPopup(context);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
"Enregistré: ${widget.book.title}",
),
behavior: SnackBarBehavior.floating,
),
);
},
child: Text("Ok"),
),
],
),
);
}
break;
case Error():
if (context.mounted) {

View file

@ -1,10 +1,16 @@
import 'package:flutter/material.dart';
import 'package:mobile_scanner/mobile_scanner.dart';
import 'package:seshat/ui/sell_page/view_model/sell_view_model.dart';
class ManualScanPopup extends StatelessWidget {
ManualScanPopup({required this.viewModel});
const ManualScanPopup({
super.key,
required this.viewModel,
required this.controller,
});
final SellViewModel viewModel;
final MobileScannerController controller;
@override
Widget build(BuildContext context) {
@ -29,6 +35,7 @@ class ManualScanPopup extends StatelessWidget {
actions: [
TextButton(
onPressed: () {
controller.start();
Navigator.of(context).pop();
},
child: Text("Annuler"),

View file

@ -61,11 +61,14 @@ class _ScanScreenState extends State<ScanScreen> {
backgroundColor: WidgetStatePropertyAll(theme.cardColor),
),
onPressed: () {
controller.stop();
showDialog(
context: context,
barrierDismissible: false,
builder: (context) =>
ManualScanPopup(viewModel: widget.viewModel),
builder: (context) => ManualScanPopup(
viewModel: widget.viewModel,
controller: controller,
),
);
},
child: Text("Vendre un livre sans scanner"),

View file

@ -154,7 +154,6 @@ class _SellPageState extends State<SellPage> {
],
),
),
(widget.viewModel.showScan)
? ScanScreen(viewModel: widget.viewModel)
: SizedBox(),