flutter app untuk unitstock
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 

326 rindas
12 KiB

  1. import 'dart:async';
  2. import 'dart:io' as io;
  3. import 'UnitModel.dart';
  4. import 'package:path/path.dart';
  5. import 'package:path_provider/path_provider.dart';
  6. import 'package:sqflite/sqflite.dart';
  7. import 'Prefs.dart';
  8. import '../main.dart';
  9. class DBHelper {
  10. DBHelper._();
  11. static final DBHelper database = DBHelper._();
  12. static Database _db;
  13. Future<Database> get db async {
  14. if (_db != null) return _db;
  15. _db = await initDb();
  16. return _db;
  17. }
  18. initDb() async {
  19. io.Directory documentsDirectory = await getExternalStorageDirectory();
  20. String path = join(documentsDirectory.path, "UnitStocking.db");
  21. print("save at $path");
  22. var theDb = await openDatabase(path, version: 1,onCreate: await _onCreate);
  23. return theDb;
  24. }
  25. closeDb() async {
  26. final database = await db;
  27. await database.close();
  28. _db = null;
  29. }
  30. _onCreate(Database db, int version) async {
  31. io.Directory documentsDirectory = await getExternalStorageDirectory();
  32. String path = join(documentsDirectory.path, "UnitStocking.db");
  33. io.File file = io.File(path);
  34. print('Database created, ${file.lengthSync()}');
  35. var res = await db.query(tableName.values,where: "${columnName.name} = ?",whereArgs: [keyClass.stock_id]);
  36. valueTab value = valueTab.fromJson(res.first);
  37. await prefs.setString(keyClass.stock_id, value.value);
  38. }
  39. getCount(mesin) async {
  40. final database = await db;
  41. var res =
  42. await database.rawQuery("SELECT COUNT(*) as count FROM ${tableName.blob} where ${columnName.mesin} = '$mesin'");
  43. return res.isNotEmpty ? Count.fromJson(res.first).count : 0;
  44. }
  45. getUnitdetailMaster(id) async{
  46. try{
  47. final database = await db;
  48. var res = await database.rawQuery("SELECT * FROM '${tableName.master}' WHERE ${columnName.id} = $id");
  49. return res.isNotEmpty ? Unit.fromJson(res.first) : null;
  50. }
  51. catch(e){
  52. print(e);
  53. return null;
  54. }
  55. }
  56. // Future<List<Unit>> getAllUnits() async {
  57. // final database = await db;
  58. // var res = await database.query("${tableName.master}");
  59. //// var res = await database.rawQuery("SELECT ${columnName.tipe} from ${tableName.}");
  60. //// var res = await database.rawQuery("SELECT b.${columnName.id}, b.${columnName.mesin}, b.${columnName.tipe}, b.${columnName.warna}, IFNULL((SELECT ${columnName.timestamp} from ${tableName.unit} where ${columnName.mesin} = b.${columnName.mesin}),'-') ${columnName.timestamp}, (SELECT ${columnName.id} from ${tableName.unit} where ${columnName.mesin} = b.${columnName.mesin}) ${columnName.mesin_id} from ${tableName.master} b");
  61. // List<Unit> list =
  62. // res.isNotEmpty ? res.map((c) => Unit.fromJson(c)).toList() : [];
  63. // return list;
  64. // }
  65. Future<List<Unit>> getAllUnits({inserted=false}) async {
  66. final database = await db;
  67. var res = await database.query("${tableName.master}",where: (inserted)?"${columnName.flag} = 'TRUE'":null,orderBy: "CASE WHEN ${columnName.flag} = 'FALSE' THEN 0 ELSE 1 END, ${columnName.state} desc");
  68. // var res = await database.rawQuery("SELECT ${columnName.id}, ${columnName.mesin}, ${columnName.tipe}, ${columnName.state}, ${columnName.warna}, ${columnName.rangka},${columnName.kode},${columnName.flag}, ${columnName.timestamp} from ${tableName.master} ORDER BY CASE WHEN ${columnName.flag} = 'FALSE' THEN 0 ELSE 1 END, ${columnName.state} desc");
  69. List<Unit> list =
  70. res.isNotEmpty ? res.map((c) => Unit.fromJson(c)).toList() : [];
  71. return list;
  72. }
  73. Future<List<Unit>> searchAllUnits(String query,{inserted:false}) async {
  74. // print("${(inserted)?"${columnName.flag} = 'TRUE' AND ":''} REPLACE(${columnName.mesin},'-','') like '%$query%' or ${columnName.rangka} like '%$query%' or ${columnName.mesin} like '%$query%' or ${columnName.timestamp} like '%$query%' or ${columnName.tipe} like '%$query%' or ${columnName.warna} like '%$query%' or UPPER(${columnName.state}) like '%$query%'");
  75. final database = await db;
  76. try{
  77. var res = await database.query(tableName.master,where: "${(inserted)?"${columnName.flag} = 'TRUE' AND ":''} (REPLACE(${columnName.mesin},'-','') like '%$query%' or ${columnName.rangka} like '%$query%' or ${columnName.mesin} like '%$query%' or ${columnName.timestamp} like '%$query%' or ${columnName.tipe} like '%$query%' or ${columnName.warna} like '%$query%' or UPPER(${columnName.state}) like '%$query%')",orderBy: "CASE WHEN ${columnName.flag} = 'FALSE' THEN 0 ELSE 1 END, ${columnName.state} desc");
  78. // var res = await database.rawQuery(
  79. // "select * from (SELECT ${columnName.id}, ${columnName.state}, ${columnName.rangka}, ${columnName.mesin}, ${columnName.tipe}, ${columnName.warna}, ${columnName.timestamp}, ${columnName.mesin} from ${tableName.master} ) where REPLACE(${columnName.mesin},'-','') like '%$query%' or ${columnName.rangka} like '%$query%' or ${columnName.mesin} like '%$query%' or ${columnName.timestamp} like '%$query%' or ${columnName.tipe} like '%$query%' or ${columnName.warna} like '%$query%' or UPPER(${columnName.state}) like '%$query%' ORDER BY CASE WHEN ${columnName.flag} = 'FALSE' THEN 0 ELSE 1 END, ${columnName.state} desc");
  80. List<Unit> list =
  81. res.isNotEmpty ? res.map((c) => Unit.fromJson(c)).toList() : [];
  82. return list;
  83. }
  84. catch(e){
  85. print(e);
  86. return [];
  87. }
  88. }
  89. // Future<List<insertUnit>> getAllInsertUnits() async {
  90. // final database = await db;
  91. //// var res = await database.query("${tableName.unit}");
  92. // var res = await database.rawQuery("SELECT a.${columnName.id},a.${columnName.mesin},b.${columnName.rangka},b.${columnName.tipe},b.${columnName.warna}, a.${columnName.timestamp}, b.${columnName.state} from ${tableName.unit} a, ${tableName.master} b where a.${columnName.mesin} = b.${columnName.mesin}");
  93. // List<insertUnit> list =
  94. // res.isNotEmpty ? res.map((c) => insertUnit.fromJson(c)).toList() : [];
  95. // return list;
  96. // }
  97. // Future<List<blobImage>> getAllBlobImage(mesin) async {
  98. // final database = await db;
  99. //// var res = await database.query("${tableName.blob}");
  100. // var res = await database.query("${tableName.blob}",where: "${columnName.mesin} = ?",whereArgs: [mesin]);
  101. //// print([mesin_id,res]);
  102. //
  103. // List<blobImage> list =
  104. // res.isNotEmpty ? res.map((c) => blobImage.fromJson(c)).toList() : [];
  105. // return list;
  106. // }
  107. getBlobUnits(mesin) async{
  108. try{
  109. final database = await db;
  110. var res = await database.query("${tableName.blob}" ,where: "${columnName.mesin} = ?", whereArgs: [mesin]);
  111. List<blobImage> list =
  112. res.isNotEmpty ? res.map((c) => blobImage.fromJson(c)).toList() : [];
  113. return list;
  114. }
  115. catch(e){
  116. print(e);
  117. return null;
  118. }
  119. }
  120. insertUpdateBlob(blobImage blob) async{
  121. return (blob.blob_id==null)?newInsertBlob(blob):updateBlob(blob);
  122. }
  123. deleteBlob(blob_id) async {
  124. final database = await db;
  125. try{
  126. await database.delete("${tableName.blob}", where: "${columnName.blob_id} = ?", whereArgs: [blob_id]);
  127. return true;
  128. }
  129. catch(e){
  130. print(e);
  131. return null;
  132. }
  133. }
  134. updateUnit(Unit unitUpdate) async{
  135. try{
  136. final database = await db;
  137. var res = await database.update("${tableName.master}", unitUpdate.toJson(),
  138. where: "${columnName.id} = ?", whereArgs: [unitUpdate.id]);
  139. print('Row Updated');
  140. return res;
  141. }
  142. catch(e){
  143. print(e);
  144. return null;
  145. }
  146. }
  147. updateBlob(blobImage blobUpdate) async{
  148. try{
  149. final database = await db;
  150. var res = await database.update("${tableName.blob}", blobUpdate.toJson(),
  151. where: "${columnName.blob_id} = ?", whereArgs: [blobUpdate.blob_id]);
  152. print('Row Updated');
  153. return res;
  154. }
  155. catch(e){
  156. print(e);
  157. return null;
  158. }
  159. }
  160. newInsertBlob(blobImage newBlob) async {
  161. final database = await db;
  162. try{
  163. var res = await database.rawInsert("Insert into ${tableName.blob}(${columnName.blob_file},${columnName.mesin},${columnName.lat},${columnName.long},${columnName.jenis})VALUES(?,?,?,?,?)", [
  164. newBlob.blob_file,
  165. newBlob.mesin,
  166. newBlob.lat,
  167. newBlob.long,
  168. newBlob.jenis
  169. ]);
  170. print('Image Inserted');
  171. return res;
  172. }
  173. catch(e){
  174. print(e);
  175. return null;
  176. }
  177. }
  178. getBlobImage(mesin) async{
  179. final database = await db;
  180. var res = await database.query("${tableName.blob}",where: "${columnName.mesin} = ? AND ${columnName.no_urut} = ?",whereArgs: [mesin,'1']);
  181. return res.isNotEmpty ? blobImage.fromJson(res.first) : null;
  182. }
  183. // Future<List<insertUnit>> searchAllInsertUnits(String query) async {
  184. // final database = await db;
  185. // var res = await database.rawQuery(
  186. // "select * from (SELECT a.${columnName.id},a.${columnName.mesin},b.${columnName.tipe},b.${columnName.warna}, a.${columnName.timestamp}, b.${columnName.state}, b.${columnName.rangka} from ${tableName.unit} a, ${tableName.master} b where a.${columnName.mesin} = b.${columnName.mesin}) where REPLACE(${columnName.mesin},'-','') like '%$query%' or ${columnName.mesin} like '%$query%' or ${columnName.timestamp} like '%$query%' or ${columnName.warna} like '%$query%' or ${columnName.tipe} like '%$query%'");
  187. // List<insertUnit> list =
  188. // res.isNotEmpty ? res.map((c) => insertUnit.fromJson(c)).toList() : [];
  189. // return list;
  190. // }
  191. //
  192. // updateInsertUnit(insertUnit newPart) async {
  193. // try{
  194. // final database = await db;
  195. //// var res = await database.update("${tableName.unit}", newPart.toJson(),
  196. //// where: "${columnName.id} = ?", whereArgs: [newPart.id]);
  197. // var res = await database.rawQuery("Update ${tableName.unit} SET ${columnName.id} = ${newPart.id}, ${columnName.mesin} = '${newPart.mesin}' WHERE ${columnName.id} = ${newPart.id}");
  198. // print('Row Updated');
  199. // return res;
  200. // }
  201. // catch(e){
  202. // print(e);
  203. // return null;
  204. // }
  205. // }
  206. Future<List<jenisDrop>> getAllJenis() async {
  207. try{
  208. final database = await db;
  209. var res = await database.query("${tableName.jenis}");
  210. // var res = (id==null)?await database.query("${tableName.jenis}") :await database.rawQuery("select a.${columnName.value}, b.${columnName.jenis} from ${tableName.jenis} a, ${tableName.blob} b where a.${columnName.value} <> b.${columnName.jenis} AND b.${columnName.mesin_id} = $id");
  211. // print(res);
  212. List<jenisDrop> list =
  213. res.isNotEmpty ? res.map((c) => jenisDrop.fromJson(c)).toList() : [];
  214. return list;
  215. }
  216. catch(e){
  217. print(e);
  218. return null;
  219. }
  220. }
  221. getValue(value)async{
  222. try{
  223. final database = await db;
  224. var res = await database.query(tableName.values,where: "${columnName.name} = ?",whereArgs: [value]);
  225. return res.isEmpty?null:valueTab.fromJson(res.first);
  226. }
  227. catch(e){
  228. return null;
  229. }
  230. }
  231. insertUpdateValue(valueTab newValue)async{
  232. try{
  233. final database = await db;
  234. var res = await database.rawQuery("Select Count(*) as count from ${tableName.values} where ${columnName.name} = '${newValue.name}'");
  235. int count = res.isNotEmpty ? Count.fromJson(res.first).count : 0;
  236. return (count==0)?addNewValue(newValue):updateValue(newValue);
  237. }
  238. catch(e){
  239. print(e);
  240. return null;
  241. }
  242. }
  243. updateValue(valueTab newValue) async {
  244. try{
  245. final database = await db;
  246. var res = await database.update("${tableName.values}", newValue.toJson(),
  247. where: "${columnName.name} = ?", whereArgs: [newValue.name]);
  248. print('Row Updated');
  249. return res;
  250. }
  251. catch(e){
  252. print(e);
  253. return null;
  254. }
  255. }
  256. addNewValue(valueTab newValue) async {
  257. final database = await db;
  258. try{
  259. var res = await database.rawInsert("Insert into ${tableName.values}(${columnName.name},${columnName.value})VALUES(?,?)", [
  260. newValue.name,
  261. newValue.value
  262. ]);
  263. print('Row Inserted');
  264. return res;
  265. }
  266. catch(e){
  267. print(e);
  268. return null;
  269. }
  270. }
  271. // deleteInsertUnit(String id) async {
  272. // final database = await db;
  273. // try{
  274. // await database.delete("${tableName.unit}", where: "${columnName.id} = ?", whereArgs: [id]);
  275. // return true;
  276. // }
  277. // catch(e){
  278. // print(e);
  279. // return null;
  280. // }
  281. // }
  282. deleteAll() async {
  283. final database = await db;
  284. try{
  285. await database.rawQuery("DROP TABLE IF EXISTS ${tableName.blob}");
  286. // await database.rawQuery("DROP TABLE IF EXISTS ${tableName.unit}");
  287. await database.rawQuery("DROP TABLE IF EXISTS ${tableName.master}");
  288. return true;
  289. }
  290. catch(e){
  291. print(e);
  292. return null;
  293. }
  294. }
  295. }