Flutter app for Asset Management
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.
 
 
 
 

306 rindas
11 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. import 'package:intl/intl.dart';
  9. class DBHelper{
  10. DBHelper._();
  11. static final DBHelper database = DBHelper._();
  12. 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. Directory documentsDirectory = await getApplicationDocumentsDirectory();
  20. String path = join(documentsDirectory.path, "assets.db");
  21. var theDb = await openDatabase(path, version: 1,onCreate: _onCreate);
  22. return theDb;
  23. }
  24. closeDb() async {
  25. if(_db!=null){
  26. final database = await db;
  27. await database.close();
  28. _db = null;
  29. }
  30. }
  31. void _onCreate(Database db, int version) async {
  32. Directory documentsDirectory = await getApplicationDocumentsDirectory();
  33. String path = join(documentsDirectory.path, "assets.db");
  34. File file = File(path);
  35. print('Database created, ${file.lengthSync()}');
  36. }
  37. insertAsset(Asset newAsset) async{
  38. try{
  39. final database = await db;
  40. await database.rawInsert("Insert into ${tableName.insert} (${columnName.tag_number},${columnName.blob},${columnName.keterangan}) VALUES(?,?,?)", [newAsset.tag_number,newAsset.blob,newAsset.keterangan]);
  41. await database.rawQuery("UPDATE ${tableName.ref} SET ${columnName.flag} = 'TRUE' WHERE ${columnName.tag_number} = '${newAsset.tag_number}'");
  42. return true;
  43. }
  44. catch(e){
  45. print(e);
  46. return null;
  47. }
  48. }
  49. updateAsset(Asset newAsset) async{
  50. try{
  51. final database = await db;
  52. 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]);
  53. return true;
  54. }
  55. catch(e){
  56. print(e);
  57. return null;
  58. }
  59. }
  60. getBlobbyTag(tag) async{
  61. try{
  62. final database = await db;
  63. var res = await database.query(tableName.insert,where: "${columnName.tag_number} = ?",whereArgs: [tag]);
  64. // var a = await database.rawQuery("select length(${columnName.blob}) / 1024 from ${tableName.insert} where ${columnName.no} = $no");
  65. // print(a);
  66. return res.isNotEmpty ? Asset.fromJson(res.first): null;
  67. }
  68. catch(e){
  69. print(e);
  70. return null;
  71. }
  72. }
  73. getBlobbyNo(no) async{
  74. try{
  75. final database = await db;
  76. var res = await database.query(tableName.insert,where: "${columnName.no} = ?",whereArgs: [no]);
  77. // var a = await database.rawQuery("select length(${columnName.blob}) / 1024 from ${tableName.insert} where ${columnName.no} = $no");
  78. // print(a);
  79. return res.isNotEmpty ? Asset.fromJson(res.first): null;
  80. }
  81. catch(e){
  82. print(e);
  83. return null;
  84. }
  85. }
  86. // getRefBlob(tagNumber)async{
  87. // try{
  88. // final database = await db;
  89. // var res = await database.query(tableName.insert,where: "${columnName.tag_number} = ?",whereArgs: [tagNumber]);
  90. // // var a = await database.rawQuery("select count(*) from ${tableName.insert}");
  91. // // print(a);
  92. // return res.isNotEmpty ? Asset.fromJson(res.first): null;
  93. // }
  94. // catch(e){
  95. // print(e);
  96. // return null;
  97. // }
  98. // }
  99. searchbyTagNumber(tagNumber) async{
  100. try{
  101. final database = await db;
  102. var exist = await database.query(tableName.insert,where: "${columnName.tag_number} = ?",whereArgs: [tagNumber]);
  103. var res = await database.query(tableName.ref,where: "${columnName.tag_number} = ?",whereArgs: [tagNumber]);
  104. if(res.isEmpty&&exist.isNotEmpty){
  105. var appendAsset = new Asset();
  106. appendAsset.tag_number=tagNumber;
  107. return {"EXIST":exist.isNotEmpty?true:false,"DATA":appendAsset};
  108. }
  109. else return {"EXIST":exist.isNotEmpty?true:false,"DATA":res.isNotEmpty ? Asset.fromJson(res.first): null};
  110. }
  111. catch(e){
  112. print(e);
  113. return null;
  114. }
  115. }
  116. getAllKategori() async{
  117. try{
  118. final database = await db;
  119. var res = await database.rawQuery("SELECT Distinct UPPER(${columnName.kategori}) ${columnName.kategori} from ${tableName.ref} ORDER BY UPPER(${columnName.kategori})");
  120. List<Asset> list =
  121. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList().reversed.toList() : [];
  122. return list;
  123. }
  124. catch(e){
  125. print(e);
  126. return null;
  127. }
  128. }
  129. getAllLocation() async{
  130. try{
  131. final database = await db;
  132. var res = await database.rawQuery("SELECT Distinct UPPER(${columnName.lantai}) ${columnName.lantai} from ${tableName.ref} ORDER BY UPPER(${columnName.lantai})");
  133. List<Asset> list =
  134. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList().reversed.toList() : [];
  135. return list;
  136. }
  137. catch(e){
  138. print(e);
  139. return null;
  140. }
  141. }
  142. getAllRuangan() async{
  143. try{
  144. final database = await db;
  145. var res = await database.rawQuery("SELECT Distinct UPPER(${columnName.ruang}) ${columnName.ruang} from ${tableName.ref} ORDER BY UPPER(${columnName.ruang})");
  146. List<Asset> list =
  147. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList().reversed.toList() : [];
  148. return list;
  149. }
  150. catch(e){
  151. print(e);
  152. return null;
  153. }
  154. }
  155. getLantaiRuangan(lantai) async{
  156. try{
  157. final database = await db;
  158. 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})");
  159. List<Asset> list =
  160. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList().reversed.toList() : [];
  161. return list;
  162. }
  163. catch(e){
  164. print(e);
  165. return null;
  166. }
  167. }
  168. getAllAsset() async {
  169. try{
  170. final database = await db;
  171. var res = await database.rawQuery("SELECT a.${columnName.tag_number}, a.${columnName.asset_desc},a.${columnName.kategori}, 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}");
  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. filterAllAsset(search) async {
  182. try{
  183. final database = await db;
  184. var res = await database.rawQuery("SELECT * FROM (SELECT a.${columnName.tag_number}, a.${columnName.asset_desc},a.${columnName.kategori}, 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}");
  185. List<Asset> list =
  186. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
  187. return list;
  188. }
  189. catch(e){
  190. print(e);
  191. return null;
  192. }
  193. }
  194. getAllInsertAsset() async {
  195. try{
  196. final database = await db;
  197. // 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}");
  198. 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}");
  199. List<Asset> list =
  200. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
  201. return list;
  202. }
  203. catch(e){
  204. print(e);
  205. return null;
  206. }
  207. }
  208. deleteInsertAsset(no) async{
  209. try{
  210. final database = await db;
  211. // 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]);
  212. await database.delete(tableName.insert,where: "${columnName.no} = ?",whereArgs: [no]);
  213. return true;
  214. }
  215. catch(e){
  216. print(e);
  217. return null;
  218. }
  219. }
  220. filterAllInsertAsset(search) async {
  221. try{
  222. final database = await db;
  223. // 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%'");
  224. 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%'");
  225. List<Asset> list =
  226. res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
  227. return list;
  228. }
  229. catch(e){
  230. print(e);
  231. return null;
  232. }
  233. }
  234. countRows(tableName)async{
  235. try{
  236. final database = await db;
  237. var res = await database.rawQuery("SELECT Count(*) Count FROM $tableName");
  238. return res.isEmpty?0:Count.fromJson(res.first).count;
  239. }
  240. catch(e){
  241. print(e);
  242. return null;
  243. }
  244. }
  245. getDbName()async{
  246. try{
  247. final database = await db;
  248. var res = await database.rawQuery("SELECT ${columnName.value} FROM ${tableName.key} where ${columnName.key} = 'DB_MASTER_NAME'");
  249. return res.isEmpty?null:res.first[columnName.value];
  250. }
  251. catch(e){
  252. print(e);
  253. return null;
  254. }
  255. }
  256. getBUnit()async{
  257. try{
  258. final database = await db;
  259. var res = await database.rawQuery("SELECT ${columnName.value} FROM ${tableName.key} where ${columnName.key} = 'BUSINESS_UNIT'");
  260. return res.isEmpty?null:res.first[columnName.value];
  261. }
  262. catch(e){
  263. print(e);
  264. return null;
  265. }
  266. }
  267. setOpenState()async{
  268. try{
  269. final database = await db;
  270. var check_KEY = await database.rawQuery("SELECT 1 FROM ${tableName.key} where ${columnName.key} = 'STATE'");
  271. if (check_KEY.length<=0){
  272. await database.insert(tableName.key, {columnName.key:"STATE",columnName.value:"OPEN"});
  273. }
  274. else{
  275. await database.update(tableName.key, {columnName.value:"OPEN"},where: "${columnName.key} = ?",whereArgs: ['STATE']);
  276. }
  277. await database.update(tableName.key, {columnName.value:DateFormat("YYYY-MM-DD HH:mm:ss").format(DateTime.now())},where: "${columnName.key} = ?",whereArgs: ['START_DATE']);
  278. }
  279. catch(e){
  280. print(e);
  281. return null;
  282. }
  283. }
  284. }