|
@@ -13,6 +13,7 @@ class PedidoViewModel extends ChangeNotifier {
|
|
|
List<Pedido> _pedidos = [];
|
|
|
Pedido? _selectedPedido;
|
|
|
bool _isLoading = false;
|
|
|
+ String? _errorMessage;
|
|
|
|
|
|
int _currentPage = 1;
|
|
|
int _totalPedidos = 0;
|
|
@@ -25,12 +26,18 @@ class PedidoViewModel extends ChangeNotifier {
|
|
|
List<Pedido> get pedidos => _pedidos;
|
|
|
Pedido? get selectedPedido => _selectedPedido;
|
|
|
bool get isLoading => _isLoading;
|
|
|
+ String? get errorMessage => _errorMessage;
|
|
|
|
|
|
void setIsLoading(bool loading) {
|
|
|
_isLoading = loading;
|
|
|
notifyListeners();
|
|
|
}
|
|
|
|
|
|
+ void setErrorMessage(String? message) {
|
|
|
+ _errorMessage = message;
|
|
|
+ notifyListeners();
|
|
|
+ }
|
|
|
+
|
|
|
Future<bool> guardarPedidoLocal({required Pedido pedido}) async {
|
|
|
RepoService<Pedido> repoPedido = RepoService<Pedido>();
|
|
|
|
|
@@ -223,41 +230,46 @@ class PedidoViewModel extends ChangeNotifier {
|
|
|
}
|
|
|
|
|
|
Future<bool> sincronizarPedidos() async {
|
|
|
- List<Pedido> pedidosNoSincronizados =
|
|
|
- await fetchAllLocalPedidosOrdenadosPorFecha();
|
|
|
+ try {
|
|
|
+ List<Pedido> pedidosNoSincronizados =
|
|
|
+ await fetchAllLocalPedidosOrdenadosPorFecha();
|
|
|
|
|
|
- if (pedidosNoSincronizados.isNotEmpty) {
|
|
|
- Pedido pedidoNoSincronizado = pedidosNoSincronizados.first;
|
|
|
+ if (pedidosNoSincronizados.isNotEmpty) {
|
|
|
+ Pedido pedidoNoSincronizado = pedidosNoSincronizados.first;
|
|
|
|
|
|
- if (pedidoNoSincronizado.productos.isEmpty) {
|
|
|
- pedidoNoSincronizado =
|
|
|
- await fetchPedidoConProductos(pedidoNoSincronizado.id) ??
|
|
|
- pedidoNoSincronizado;
|
|
|
- }
|
|
|
+ if (pedidoNoSincronizado.productos.isEmpty) {
|
|
|
+ pedidoNoSincronizado =
|
|
|
+ await fetchPedidoConProductos(pedidoNoSincronizado.id) ??
|
|
|
+ pedidoNoSincronizado;
|
|
|
+ }
|
|
|
|
|
|
- Map<String, dynamic> pedidoJson =
|
|
|
- await prepararPedidoParaApi(pedidoNoSincronizado);
|
|
|
+ Map<String, dynamic> pedidoJson =
|
|
|
+ await prepararPedidoParaApi(pedidoNoSincronizado);
|
|
|
|
|
|
- print('JSON enviado: $pedidoJson');
|
|
|
+ print('JSON enviado: $pedidoJson');
|
|
|
|
|
|
- var response = ApiResponse(await BaseService()
|
|
|
- .post('/pos/pedido/sincronizar', body: pedidoJson));
|
|
|
+ var response = ApiResponse(await BaseService()
|
|
|
+ .post('/pos/pedido/sincronizar', body: pedidoJson));
|
|
|
|
|
|
- if (response.isOk && response.detalle != null) {
|
|
|
- int idWeb = response.detalle!['id'];
|
|
|
- String sincronizado = response.detalle!['sincronizado'];
|
|
|
+ if (response.isOk && response.detalle != null) {
|
|
|
+ int idWeb = response.detalle!['id'];
|
|
|
+ String sincronizado = response.detalle!['sincronizado'];
|
|
|
|
|
|
- await actualizarPedidoSincronizado(
|
|
|
- pedidoNoSincronizado.id!, idWeb, sincronizado);
|
|
|
+ await actualizarPedidoSincronizado(
|
|
|
+ pedidoNoSincronizado.id!, idWeb, sincronizado);
|
|
|
|
|
|
- await fetchLocalPedidosForScreen();
|
|
|
- return true;
|
|
|
+ await fetchLocalPedidosForScreen();
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ throw Exception(
|
|
|
+ 'Error en la sincronización del pedido: ${response.mensaje}');
|
|
|
+ }
|
|
|
} else {
|
|
|
- print('Error en la sincronización del pedido: ${response.mensaje}');
|
|
|
- return true;
|
|
|
+ print('No se encontraron pedidos no sincronizados.');
|
|
|
+ return false;
|
|
|
}
|
|
|
- } else {
|
|
|
- print('No se encontraron pedidos no sincronizados.');
|
|
|
+ } catch (e) {
|
|
|
+ setErrorMessage(e.toString());
|
|
|
return false;
|
|
|
}
|
|
|
}
|