|
- import 'package:assetstock/util/Models.dart';
- import 'package:sqflite/sqflite.dart';
- import 'package:path_provider/path_provider.dart';
- import 'prefsKey.dart';
- import 'dart:io';
- import 'dart:async';
- import 'package:path/path.dart';
-
- class DBHelper{
- DBHelper._();
-
- static final DBHelper database = DBHelper._();
- Database _db;
-
- Future<Database> get db async {
- if (_db != null) return _db;
- _db = await initDb();
- return _db;
- }
-
- initDb() async {
- Directory documentsDirectory = await getApplicationDocumentsDirectory();
- String path = join(documentsDirectory.path, "assets.db");
- var theDb = await openDatabase(path, version: 1,onCreate: _onCreate);
- return theDb;
- }
- closeDb() async {
- if(_db!=null){
- final database = await db;
- await database.close();
- _db = null;
- }
- }
-
- void _onCreate(Database db, int version) async {
- Directory documentsDirectory = await getApplicationDocumentsDirectory();
- String path = join(documentsDirectory.path, "assets.db");
- File file = File(path);
- print('Database created, ${file.lengthSync()}');
- }
-
- insertAsset(Asset newAsset) async{
- try{
- final database = await db;
- await database.rawInsert("Insert into ${tableName.insert} (${columnName.tag_number},${columnName.blob},${columnName.keterangan}) VALUES(?,?,?)", [newAsset.tag_number,newAsset.blob,newAsset.keterangan]);
- await database.rawQuery("UPDATE ${tableName.ref} SET ${columnName.flag} = 'TRUE' WHERE ${columnName.tag_number} = '${newAsset.tag_number}'");
- return true;
- }
- catch(e){
- print(e);
- return null;
- }
- }
-
- updateAsset(Asset newAsset) async{
- try{
- final database = await db;
- 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]);
- return true;
- }
- catch(e){
- print(e);
- return null;
- }
- }
-
-
- getBlobbyNo(no) async{
- try{
- final database = await db;
- var res = await database.query(tableName.insert,where: "${columnName.no} = ?",whereArgs: [no]);
- // var a = await database.rawQuery("select length(${columnName.blob}) / 1024 from ${tableName.insert} where ${columnName.no} = $no");
- // print(a);
- return res.isNotEmpty ? Asset.fromJson(res.first): null;
- }
- catch(e){
- print(e);
- return null;
- }
- }
- getRefBlob(tagNumber)async{
- try{
- final database = await db;
- var res = await database.query(tableName.ref,where: "${columnName.tag_number} = ?",whereArgs: [tagNumber]);
- // var a = await database.rawQuery("select length(${columnName.blob}) / 1024 from ${tableName.insert} where ${columnName.no} = $no");
- // print(a);
- return res.isNotEmpty ? Asset.fromJson(res.first): null;
- }
- catch(e){
- print(e);
- return null;
- }
- }
- searchbyTagNumber(tagNumber) async{
- try{
- final database = await db;
- var exist = await database.query(tableName.insert,where: "${columnName.tag_number} = ?",whereArgs: [tagNumber]);
- var res = await database.query(tableName.ref,where: "${columnName.tag_number} = ?",whereArgs: [tagNumber]);
- if(res.isEmpty&&exist.isNotEmpty){
- var appendAsset = new Asset();
- appendAsset.tag_number=tagNumber;
- return {"EXIST":exist.isNotEmpty?true:false,"DATA":appendAsset};
- }
- else return {"EXIST":exist.isNotEmpty?true:false,"DATA":res.isNotEmpty ? Asset.fromJson(res.first): null};
- }
- catch(e){
- print(e);
- return null;
- }
- }
-
- getAllLocation() async{
- try{
- final database = await db;
- var res = await database.rawQuery("SELECT Distinct UPPER(${columnName.lantai}) ${columnName.lantai} from ${tableName.ref} ORDER BY UPPER(${columnName.lantai})");
- List<Asset> list =
- res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList().reversed.toList() : [];
- return list;
- }
- catch(e){
- print(e);
- return null;
- }
- }
- getAllRuangan() async{
- try{
- final database = await db;
- var res = await database.rawQuery("SELECT Distinct UPPER(${columnName.ruang}) ${columnName.ruang} from ${tableName.ref} ORDER BY UPPER(${columnName.ruang})");
- List<Asset> list =
- res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList().reversed.toList() : [];
- return list;
- }
- catch(e){
- print(e);
- return null;
- }
- }
-
- getLantaiRuangan(lantai) async{
- try{
- final database = await db;
- 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})");
- List<Asset> list =
- res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList().reversed.toList() : [];
- return list;
- }
- catch(e){
- print(e);
- return null;
- }
- }
-
-
- getAllAsset() async {
- try{
- final database = await db;
- 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}");
- List<Asset> list =
- res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
- return list;
- }
- catch(e){
- print(e);
- return null;
- }
- }
-
- filterAllAsset(search) async {
- try{
- final database = await db;
- 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}");
- List<Asset> list =
- res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
- return list;
- }
- catch(e){
- print(e);
- return null;
- }
- }
-
- getAllInsertAsset() async {
- try{
- final database = await db;
- // 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}");
- 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}");
-
- List<Asset> list =
- res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
- return list;
- }
- catch(e){
- print(e);
- return null;
- }
- }
-
- deleteInsertAsset(no) async{
- try{
- final database = await db;
- // 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]);
- await database.delete(tableName.insert,where: "${columnName.no} = ?",whereArgs: [no]);
- return true;
- }
- catch(e){
- print(e);
- return null;
- }
- }
-
- filterAllInsertAsset(search) async {
- try{
- final database = await db;
- // 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%'");
- 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%'");
-
- List<Asset> list =
- res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
- return list;
- }
- catch(e){
- print(e);
- return null;
- }
- }
- countRows(tableName)async{
- try{
- final database = await db;
- var res = await database.rawQuery("SELECT Count(*) Count FROM $tableName");
- return res.isEmpty?0:Count.fromJson(res.first).count;
- }
- catch(e){
- print(e);
- return null;
- }
- }
- getDbName()async{
- try{
- final database = await db;
- var res = await database.rawQuery("SELECT ${columnName.value} FROM ${tableName.key} where ${columnName.key} = 'DB_MASTER_NAME'");
- return res.isEmpty?null:res.first[columnName.value];
- }
- catch(e){
- print(e);
- return null;
- }
- }
-
- }
|