initEmployees function

Future<void> initEmployees(
  1. SharedDatabase database
)

Implementation

Future<void> initEmployees(SharedDatabase database) async {
  String content = await AssetsUtils.loadTextAsset(
    "statics/init-data/employees.txt",
  );
  //
  List<DepartmentData> departments = await database
      .select(database.department)
      .get();
  Map<String, int> departmentsMap = {for (var v in departments) v.code: v.id};
  //
  List<EmployeePositionData> employeePositions = await database
      .select(database.employeePosition)
      .get();
  Map<String, int> employeePositionMap = {
    for (var v in employeePositions) v.code: v.id,
  };
  //
  List<String> lines = content.split("\n");
  for (String li in lines) {
    String line = li.trim();
    if (line.startsWith("#") || line.isEmpty) {
      continue;
    }
    List<String> values = line.split(";");
    //
    // @line: "EmpNumber,DepartmentCode,  EmployeeName, Image, Email, BirthDay, HireDate"
    //
    String empNumber = values[0].trim();
    String positionCode = values[1].trim();
    String deptCode = values[2].trim();
    String name = values[3].trim();
    String imageName = values[4].trim();
    String email = values[5].trim();
    DateTime birthday = stringToDate(values[6].trim());
    DateTime hireDate = stringToDate(values[7].trim());
    //
    await database
        .into(database.employee)
        .insert(
          EmployeeCompanion.insert(
            empNumber: empNumber,
            name: name,
            email: email,
            departmentId: departmentsMap[deptCode]!,
            employeePositionId: employeePositionMap[positionCode]!,
            birthday: birthday,
            hireDate: hireDate,
            imagePath: Value("/static/images/employee/$imageName"),
            address: const Value.absent(),
          ),
        );
  }
}