loadCurrentEmployeeFromPrefs function

Future<ICEmployee?> loadCurrentEmployeeFromPrefs()

Implementation

Future<ICEmployee?> loadCurrentEmployeeFromPrefs() async {
  final prefs = await SharedPreferences.getInstance();
  final jsonStr = prefs.getString('current_employee');

  if (jsonStr == null) return null;

  final Map<String, dynamic> jsonMap = jsonDecode(jsonStr);

  bool toBool(dynamic v) {
    if (v is bool) return v;
    if (v is int) return v == 1;
    if (v is String) return v.toLowerCase() == "true" || v == "1";
    return false;
  }

  final accessJson = jsonMap['projectAccessRight'] ?? {};

  final employee = ICEmployee()
    ..name = jsonMap['name'] ?? ''
    ..icEmployeeId = jsonMap['icEmployeeId'] ?? 0
    ..employeeId = jsonMap['employeeId'] ?? ''
    ..email = jsonMap['email'] ?? ''
    ..address = jsonMap['address'] ?? ''
    ..image = jsonMap['image'] ?? ''
    ..phoneNumber = jsonMap['phoneNumber'] ?? ''
    ..nameKh = jsonMap['nameKh'] ?? ''
    ..projectNameKh = jsonMap['projectNameKh'] ?? ''
    ..positionNamekh = jsonMap['position_nameKh'] ?? ''
    ..bu = jsonMap['bu'] ?? ''
    ..positionName = jsonMap['position_name'] ?? ''
    ..numberOfDaySinceStartDate = jsonMap['numberOfDaySinceStartDate'] ?? 0
    ..daysSinceJobDate = jsonMap['daysSinceJobDate'] ?? ''
    ..projectName = jsonMap['projectName'] ?? ''
    ..pob = jsonMap['pob'] ?? ''
    ..stopUse = jsonMap['stopUse'] ?? ''
    ..nationality = jsonMap['nationality'] ?? ''
    ..bankAccount = jsonMap['bankAcount'] ?? ''
    ..dob = jsonMap['dob'] ?? ''

    ..projectAccessRight = (ProjectAccessRight()
      ..bank = toBool(accessJson['bank'])
      ..saleorder = toBool(accessJson['saleorder'])
      ..service = toBool(accessJson['service'])
      ..settings = toBool(accessJson['settings'])
      ..accountPayable = toBool(accessJson['accountPayable'])
      ..accountReceivable = toBool(accessJson['accountReceivable'])
      ..asset = toBool(accessJson['asset'])
      ..department = toBool(accessJson['department'])
      ..generalLedger = toBool(accessJson['generalLedger'])
      ..hrd = toBool(accessJson['hrd'])
      ..logistic = toBool(accessJson['logistic'])
      ..purchaseOrder = toBool(accessJson['purchaseOrder'])
      ..stock = toBool(accessJson['stock'])
      ..warehousing = toBool(accessJson['warehousing'])
      ..tasks = toBool(accessJson['tasks'])
      ..pos = toBool(accessJson['pos'])
    );

  return employee;
}