import 'package:e_scan/backend/objectbox/entities/product/product_entity.dart'; import 'package:e_scan/backend/objectbox/entities/stock_picking/stock_picking_record_entity.dart'; import 'package:e_scan/backend/objectbox/objectbox_manager.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:mobile_scanner/mobile_scanner.dart'; part 'reception_scan_page_model.freezed.dart'; final receptionScanPageModelProvider = StateNotifierProvider.autoDispose< ReceptionScanPageModel, ReceptionScanPageModelState >((ref) { return ReceptionScanPageModel(); }); class ReceptionScanPageModel extends StateNotifier { ReceptionScanPageModel() : super(const ReceptionScanPageModelState()); Future getReceptionById({required int id}) async { try { final stockPickingRecords = objectboxManager.store .box(); state = state.copyWith(loading: true); final entity = stockPickingRecords.get(id); state = state.copyWith(loading: false, reception: entity); } catch (e) { state = state.copyWith(loading: false); } } bool isProductExist({required String barcode}) { final productBox = objectboxManager.store.box(); return productBox .query(ProductEntity_.barcode.equals(barcode)) .build() .findFirst() != null; } ProductEntity? getProduct({required String barcode}) { final productBox = objectboxManager.store.box(); return productBox .query(ProductEntity_.barcode.equals(barcode)) .build() .findFirst(); } void incrementMoveLineQuantity({required String barcode}) { final moveLineBox = objectboxManager.store .box(); final moveBox = objectboxManager.store.box(); final productBox = objectboxManager.store.box(); final productEntity = productBox .query(ProductEntity_.barcode.equals(barcode)) .build() .findFirst(); final productId = productEntity?.id; if (productId != null) { final moveLineEntity = moveLineBox .query(MoveLineWithoutPackageEntity_.productId.equals(productId)) .build() .findFirst(); final moveEntity = moveBox .query(MoveWithoutPackageEntity_.productId.equals(productId)) .build() .findFirst(); if (moveLineEntity != null && moveEntity != null) { moveLineEntity.quantity = (moveLineEntity.quantity ?? 0) + 1; moveEntity.quantity = (moveEntity.quantity ?? 0) + 1; moveLineBox.put(moveLineEntity); moveBox.put(moveEntity); } } } Future handleBarcode({required BarcodeCapture barcodeCapture}) async { try { final stockPickingRecords = objectboxManager.store .box(); } catch (e) {} } } @freezed abstract class ReceptionScanPageModelState with _$ReceptionScanPageModelState { const factory ReceptionScanPageModelState({ StockPickingRecordEntity? reception, @Default(false) bool loading, }) = _ReceptionScanPageModelState; }