Untitled

 avatar
unknown
plain_text
2 years ago
6.1 kB
6
Indexable
import 'dart:io';

import 'package:d_info_project/pages/personalinformation/controller/data_controller.dart';
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';

class DatabaseHelper {
  DataController _dataController = Get.put(DataController());
  static const dbname = 'user.db';
  static const dbversion = 1;
  static const Columnid = 'id';

  //property

  static const who = 'name';
  static const user = 'user';
  static const userRelation = 'user_relation';
  static const relation = 'relation';
  static const firstpage = 'firstpage';
  static const secondpage = 'secondpage';

  //tables name

  static const nidtable = 'nid';

  static const passportTable = 'passport';
  static const birthCertificateTable = 'dob';
  static const drivingLicenceTable = 'drivingLicence';
  static const citizenTable = 'citizen';
  static const marriageTable = 'marriage';
  static const successionTable = 'succession';

  //userList

  static const StringName = 'name';
  static const foreginKey = 'id';

  static Database? _database;

  DatabaseHelper.privateConstructor();

  static final DatabaseHelper instances = DatabaseHelper.privateConstructor();

  Future<Database> get database async {
    if (_database != null) return _database!;
    _database = await _initDatabase();
    return _database!;
  }

  _initDatabase() async {
    Directory directory = await getApplicationDocumentsDirectory();
    String path = join(directory.path, dbname);
    return await openDatabase(path, version: dbversion, onCreate: _onCreate);
  }

  Future _onCreate(Database db, int version) async {
    // await db.execute('''
    //       CREATE TABLE $userListTable (
    //         $Columnid INTEGER PRIMARY KEY,
    //         $who TEXT NOT NULL
    //       )
    //       ''');

    // db.insert(userListTable, {'name': 'own'});

    await db.execute('''
            CREATE TABLE $nidtable (
              $user TEXT,
             
              $who TEXT NOT NULL,
               $userRelation TEXT NOT NULL,
              $relation TEXT NOT NULL,
              $firstpage TEXT,
              $secondpage TEXT
              
            )
            ''');

    await db.execute('''
            CREATE TABLE $passportTable (
             $user TEXT,
              $who TEXT NOT NULL,
               $userRelation TEXT NOT NULL,
              $relation TEXT NOT NULL,
              $firstpage TEXT,
              $secondpage TEXT
            )
            ''');

    await db.execute('''
            CREATE TABLE $birthCertificateTable (
            $user TEXT,
              $who TEXT NOT NULL, 
              $userRelation TEXT NOT NULL,
              $relation TEXT NOT NULL,
              $firstpage TEXT,
              $secondpage TEXT
            )
            ''');
    await db.execute('''
            CREATE TABLE $drivingLicenceTable (
            $user TEXT,
              $who TEXT NOT NULL,
               $userRelation TEXT NOT NULL,
              $relation TEXT NOT NULL,
              $firstpage TEXT,
              $secondpage TEXT
            )
            ''');

    await db.execute('''
            CREATE TABLE $citizenTable (
            $user TEXT,
              $who TEXT NOT NULL,
               $userRelation TEXT NOT NULL,
              $relation TEXT NOT NULL,
              $firstpage TEXT,
              $secondpage TEXT
            )
            ''');

    await db.execute('''
            CREATE TABLE $marriageTable (
           $user TEXT,
              $who TEXT NOT NULL, 
              $userRelation TEXT NOT NULL,
              $relation TEXT NOT NULL,
              $firstpage TEXT,
              $secondpage TEXT
            )
            ''');

    await db.execute('''
            CREATE TABLE $successionTable (
             $user TEXT,
              $who TEXT NOT NULL, 
              $userRelation TEXT NOT NULL,
              $relation TEXT NOT NULL,
              $firstpage TEXT,
              $secondpage TEXT
            )
            ''');
  }

  Future<int> insert(
      String tableName, BuildContext context, Map<String, dynamic> row) async {
    Database db = await instances.database;

    return await db.insert(tableName, row);
  }

  Future update(String tableName, String users, String whos, String relations,String userRelations,
      String? firstPages, String? secondPages) async {
    Database db = await instances.database;

    await db.rawUpdate(
        'UPDATE $tableName SET $firstpage =?,$secondpage =? WHERE $user=? AND $who=? AND $relation=? AND $userRelation=?',
        [firstPages, secondPages, users, whos, relations,userRelations]);
  }

  Future<List<Map<String, dynamic>>> queryAllRows(String tableName) async {
    Database db = await instances.database;
    var da = await db.query(tableName);

    print(await db.query(tableName));
    print(da.length);
    return await db.query(tableName);
  }

  queryForCheck() async {
    Database db = await instances.database;
    var check = await db.query(nidtable);

    for (var element in check) {
      _dataController.checkUser.add(element['user']);
      print('the element $element');
    }
    print(_dataController.checkUser);
  }

  Future queryspecic(String tableName, String searchUser, String searchWho,String searchRelation,
      String searchUserRelation) async {
    Database db = await instances.database;

    var res = await db.query(tableName,
        columns: [
          user,
          who,
          userRelation,
          relation,
          firstpage,
          secondpage,
        ],
        where: '$user=? and $who=? and $relation=? and  $userRelation=?',
        whereArgs: [searchUser, searchWho, searchRelation,searchUserRelation]);

    print('i am the res ${res}');
    return res;
  }

  Future updateName(
    String tableName,
    String whos,
  ) async {
    Database db = await instances.database;

    await db.rawUpdate('UPDATE $tableName SET $who =? WHERE $who=?', [
      whos,
    ]);
  }
}
Editor is loading...