Flutter app for Asset Management
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

261 lignes
9.4 KiB

  1. import 'package:assetstock/util/Models.dart';
  2. import 'package:sqflite/sqflite.dart';
  3. import 'package:path_provider/path_provider.dart';
  4. import 'prefsKey.dart';
  5. import 'dart:io';
  6. import 'dart:async';
  7. import 'package:path/path.dart';
  8. class DBHelper{
  9. DBHelper._();
  10. static final DBHelper database = DBHelper._();
  11. Database _db;
  12. Future<Database> get db async {
  13. if (_db != null) return _db;
  14. _db = await initDb();
  15. return _db;
  16. }
  17. initDb() async {
  18. Directory documentsDirectory = await getApplicationDocumentsDirectory();
  19. String path = join(documentsDirectory.path, "assets.db");
  20. var theDb = await openDatabase(path, version: 1,onCreate: _onCreate);
  21. return theDb;
  22. }
  23. closeDb() async {
  24. if(_db!=null){
  25. final database = await db;
  26. await database.close();
  27. _db = null;
  28. }
  29. }
  30. void _onCreate(Database db, int version) async {
  31. Directory documentsDirectory = await getApplicationDocumentsDirectory();
  32. String path = join(documentsDirectory.path, "assets.db");
  33. File file = File(path);
  34. print('Database created, ${file.lengthSync()}');
  35. }
  36. insertAsset(Asset newAsset) async{
  37. try{
  38. final database = await db;
  39. await database.rawInsert("Insert into ${tableName.insert} (${columnName.tag_number},${columnName.blob},${columnName.keterangan}) VALUES(?,?,?)", [newAsset.tag_number,newAsset.blob,newAsset.keterangan]);
  40. await database.rawQuery("UPDATE ${tableName.ref} SET ${columnName.flag} = 'TRUE' WHERE ${columnName.tag_number} = '${newAsset.tag_number}'");
  41. return true;
  42. }
  43. catch(e){
  44. print(e);
  45. return null;
  46. }
  47. }
  48. updateAsset(Asset newAsset) async{
  49. try{
  50. final database = await db;
  51. await database.rawUpdate("Update ${tableName.insert} SET ${columnName.blob} = ?, ${columnName.tag_number} = ?, ${columnName.keterangan} = ? WHERE ${columnName.no} = ?", [newAsset.blob,newAsset.tag_number,newAsset.keterangan,newAsset.no]);
  52. return true;
  53. }
  54. catch(e){
  55. print(e);
  56. return null;
  57. }
  58. }
  59. getBlobbyNo(no) async{
  60. try{
  61. final database = await db;
  62. var res = await database.query(tableName.insert,where: "${columnName.no} = ?",whereArgs: [no]);
  63. // var a = await database.rawQuery("select length(${columnName.blob}) / 1024 from ${tableName.insert} where ${columnName.no} = $no");
  64. // print(a);
  65. return res.isNotEmpty ? Asset.fromJson(res.first): null;
  66. }
  67. catch(e){
  68. print(e);
  69. return null;
  70. }
  71. }
  72. getRefBlob(tagNumber)async{
  73. try{
  74. final database = await db;
  75. var res = await database.query(tableName.ref,where: "${columnName.tag_number} = ?",whereArgs: [tagNumber]);
  76. // var a = await database.rawQuery("select length(${columnName.blob}) / 1024 from ${tableName.insert} where ${columnName.no} = $no");
  77. // print(a);
  78. return res.isNotEmpty ? Asset.fromJson(res.first): null;
  79. }
  80. catch(e){
  81. print(e);
  82. return null;
  83. }
  84. }
  85. searchbyTagNumber(tagNumber) async{
  86. try{
  87. final database = await db;
  88. var exist = await database.query(tableName.insert,where: "${columnName.tag_number} = ?",whereArgs: [tagNumber]);
  89. var res = await database.query(tableName.ref,where: "${columnName.tag_number} = ?",whereArgs: [tagNumber]);
  90. if(res.isEmpty&&exist.isNotEmpty){
  91. var appendAsset = new Asset();
  92. appendAsset.tag_number=tagNumber;
  93. return {"EXIST":exist.isNotEmpty?true:false,"DATA":appendAsset};
  94. }
  95. else return {"EXIST":exist.isNotEmpty?true:false,"DATA":res.isNotEmpty ? Asset.fromJson(res.first): null};
  96. }
  97. catch(e){
  98. print(e);
  99. return null;
  100. }
  101. }
  102. getAllLocation() async{
  103. try{
  104. final database = await db;
  105. var res = await database.rawQuery("SELECT Distinct UPPER(${columnName.lantai}) ${columnName.lantai} from ${tableName.ref} ORDER BY UPPER(${columnName.lantai})");
  106. List<Asset> list =
  107. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList().reversed.toList() : [];
  108. return list;
  109. }
  110. catch(e){
  111. print(e);
  112. return null;
  113. }
  114. }
  115. getAllRuangan() async{
  116. try{
  117. final database = await db;
  118. var res = await database.rawQuery("SELECT Distinct UPPER(${columnName.ruang}) ${columnName.ruang} from ${tableName.ref} ORDER BY UPPER(${columnName.ruang})");
  119. List<Asset> list =
  120. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList().reversed.toList() : [];
  121. return list;
  122. }
  123. catch(e){
  124. print(e);
  125. return null;
  126. }
  127. }
  128. getLantaiRuangan(lantai) async{
  129. try{
  130. final database = await db;
  131. var res = await database.rawQuery("SELECT Distinct UPPER(${columnName.ruang}) ${columnName.ruang} from ${tableName.ref} WHERE UPPER(${columnName.lantai}) = UPPER('$lantai') ORDER BY UPPER(${columnName.ruang})");
  132. List<Asset> list =
  133. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList().reversed.toList() : [];
  134. return list;
  135. }
  136. catch(e){
  137. print(e);
  138. return null;
  139. }
  140. }
  141. getAllAsset() async {
  142. try{
  143. final database = await db;
  144. var res = await database.rawQuery("SELECT a.${columnName.tag_number}, a.${columnName.asset_desc}, a.${columnName.ruang}, a.${columnName.lantai}, a.${columnName.gedung}, a.${columnName.flag}, b.${columnName.blob} from ${tableName.ref} a LEFT JOIN ${tableName.insert} b on a.${columnName.tag_number} = b.${columnName.tag_number} ORDER BY a.${columnName.flag},a.${columnName.ruang}");
  145. List<Asset> list =
  146. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
  147. return list;
  148. }
  149. catch(e){
  150. print(e);
  151. return null;
  152. }
  153. }
  154. filterAllAsset(search) async {
  155. try{
  156. final database = await db;
  157. var res = await database.rawQuery("SELECT * FROM (SELECT a.${columnName.tag_number}, a.${columnName.asset_desc}, a.${columnName.ruang}, a.${columnName.lantai}, a.${columnName.gedung}, a.${columnName.flag}, b.${columnName.blob} from ${tableName.ref} a LEFT JOIN ${tableName.insert} b on a.${columnName.tag_number} = b.${columnName.tag_number}) WHERE UPPER(${columnName.tag_number}) Like '%$search%' ORDER BY ${columnName.flag},${columnName.ruang}");
  158. List<Asset> list =
  159. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
  160. return list;
  161. }
  162. catch(e){
  163. print(e);
  164. return null;
  165. }
  166. }
  167. getAllInsertAsset() async {
  168. try{
  169. final database = await db;
  170. // var res = await database.rawQuery("SELECT a.*, b.${columnName.asset_desc}, b.${columnName.gedung}, b.${columnName.lantai}, b.${columnName.ruang} FROM ${tableName.insert} a, ${tableName.ref} b WHERE a.${columnName.tag_number} = b.${columnName.tag_number}");
  171. var res = await database.rawQuery("select a.*, b.${columnName.asset_desc}, b.${columnName.gedung}, b.${columnName.lantai}, b.${columnName.ruang} from ${tableName.insert} a LEFT JOIN ${tableName.ref} b ON a.${columnName.tag_number} = b.${columnName.tag_number}");
  172. List<Asset> list =
  173. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
  174. return list;
  175. }
  176. catch(e){
  177. print(e);
  178. return null;
  179. }
  180. }
  181. deleteInsertAsset(no) async{
  182. try{
  183. final database = await db;
  184. // await database.rawUpdate("Update ${tableName.insert} SET ${columnName.blob} = ?, ${columnName.tag_number} = ?, ${columnName.keterangan} = ? WHERE ${columnName.no} = ?", [newAsset.blob,newAsset.tag_number,newAsset.keterangan,newAsset.no]);
  185. await database.delete(tableName.insert,where: "${columnName.no} = ?",whereArgs: [no]);
  186. return true;
  187. }
  188. catch(e){
  189. print(e);
  190. return null;
  191. }
  192. }
  193. filterAllInsertAsset(search) async {
  194. try{
  195. final database = await db;
  196. // var res = await database.rawQuery("SELECT * FROM (SELECT a.${columnName.no},a.${columnName.keterangan},a.${columnName.tag_number},a.${columnName.blob}, b.${columnName.asset_desc}, b.${columnName.gedung}, b.${columnName.lantai}, b.${columnName.ruang} FROM ${tableName.insert} a, ${tableName.ref} b WHERE a.${columnName.tag_number} = b.${columnName.tag_number}) WHERE UPPER(${columnName.tag_number}) Like '%$search%'");
  197. var res = await database.rawQuery("SELECT * FROM (select a.*, b.${columnName.asset_desc}, b.${columnName.gedung}, b.${columnName.lantai}, b.${columnName.ruang} from ${tableName.insert} a LEFT JOIN ${tableName.ref} b ON a.${columnName.tag_number} = b.${columnName.tag_number}) WHERE UPPER(${columnName.tag_number}) Like '%$search%'");
  198. List<Asset> list =
  199. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
  200. return list;
  201. }
  202. catch(e){
  203. print(e);
  204. return null;
  205. }
  206. }
  207. countRows(tableName)async{
  208. try{
  209. final database = await db;
  210. var res = await database.rawQuery("SELECT Count(*) Count FROM $tableName");
  211. return res.isEmpty?0:Count.fromJson(res.first).count;
  212. }
  213. catch(e){
  214. print(e);
  215. return null;
  216. }
  217. }
  218. getDbName()async{
  219. try{
  220. final database = await db;
  221. var res = await database.rawQuery("SELECT ${columnName.value} FROM ${tableName.key} where ${columnName.key} = 'DB_MASTER_NAME'");
  222. return res.isEmpty?null:res.first[columnName.value];
  223. }
  224. catch(e){
  225. print(e);
  226. return null;
  227. }
  228. }
  229. getBUnit()async{
  230. try{
  231. final database = await db;
  232. var res = await database.rawQuery("SELECT ${columnName.value} FROM ${tableName.key} where ${columnName.key} = 'BUSINESS_UNIT'");
  233. return res.isEmpty?null:res.first[columnName.value];
  234. }
  235. catch(e){
  236. print(e);
  237. return null;
  238. }
  239. }
  240. }