import 'dart:convert'; import 'package:aman_kassa_flutter/core/base/base_service.dart'; import 'package:aman_kassa_flutter/core/entity/Category.dart'; import 'package:aman_kassa_flutter/core/entity/Goods.dart'; import 'package:aman_kassa_flutter/core/entity/Service.dart'; import 'package:aman_kassa_flutter/core/locator.dart'; import 'package:aman_kassa_flutter/core/models/Response.dart'; import 'package:aman_kassa_flutter/core/services/DbService.dart'; import 'ApiService.dart'; class DataService extends BaseService { final ApiService _api = locator(); final DbService _db = locator(); Future> getCategoriesByParentId ( {int parentId} ) async { List> list = await _db.queryRowsWithWhere(Category_tableName, '$Category_columnParentIn = ?', [parentId ?? 0 ]); return list.map((e) => Category.fromMap(e)).toList(); } Future> getGoodsByCategoryId ( {int categoryId} ) async { List> list = await _db.queryRowsWithWhere(Goog_tableName, '$Goog_columnCategoryId = ?', [categoryId ?? 0]); return list.map((e) => Good.fromMap(e)).toList(); } Future getDataFromServer(String token) async { try { Response goods = await _api.getGoodsFromServer(token); Response categories = await _api.getCategoryFromServer(token); Response services = await _api.getServiceFromServer(token); await _db.deleteAll(Goog_tableName); await _db.deleteAll(Category_tableName); await _db.deleteAll(Service_tableName); log.i('All tables cleaned'); for (var key in goods.body.keys) { print(goods.body[key]); Good row = Good.fromJson(goods.body[key]); _db.insert(Goog_tableName,row.toMap()); } log.i('Inserted ${goods.body.length} to table $Goog_tableName'); for (var el in categories.body) { print(el); Category row = Category.fromJson(el); _db.insert(Category_tableName,row.toMap()); } log.i('Inserted ${categories.body.length} to table $Category_tableName'); for (var key in services.body.keys) { print(services.body[key]); Service row = Service.fromJson(services.body[key]); _db.insert(Service_tableName,row.toMap()); } log.i('Inserted ${services.body.length} to table $Service_tableName'); return true; } catch (e) { print(e); return false; } } }