import 'dart:convert'; import 'dart:io'; import '../lookup.dart'; import '../timer_model.dart'; import 'calibration_tools.dart'; import 'pm_kit.dart'; import 'ppm_check_list.dart'; class Pentry { Lookup? ppmVisitStatus; Lookup? status; TimerModel? timer; DateTime? actualVisitDate; String? travelingHours; String? image; File? imageFile; List? ppmCheckLists; List? calibrationTools; List? pmKits; Pentry({ this.travelingHours, this.timer, this.status, this.ppmVisitStatus, this.actualVisitDate, this.image, this.imageFile, // this.contacts, this.ppmCheckLists, this.calibrationTools, this.pmKits, }); bool validate() { if (actualVisitDate == null) return false; if (timer == null && timer?.endAt != null) return false; if (ppmVisitStatus == null) return false; //if(status == null) return false; return true; } Map toMap() { Map map = {}; if (ppmVisitStatus != null) map["visit_status"] = ppmVisitStatus!.id.toString(); if (status != null) map["pentry_status"] = status!.id.toString(); if (travelingHours != null) map["traveling_hours"] = travelingHours!; if (imageFile != null) map["file_attachement"] = base64Encode(imageFile!.readAsBytesSync()); map["actual_date"] = ((actualVisitDate?.millisecondsSinceEpoch ?? 0) / 1000) .toStringAsFixed(0); if (timer != null) { map["start_date"] = ((timer!.startAt?.millisecondsSinceEpoch??0) / 1000).toStringAsFixed(0); map["end_date"] = (((timer!.endAt)?.millisecondsSinceEpoch??0) / 1000).toStringAsFixed(0); map["working_hours"] = ((timer!.durationInSecond??0) / 60 / 60).toStringAsFixed(5); } // if(contacts?.isNotEmpty == true) { // for(int i = 0;i e.toMap()).toList()); map["calibrationTools"] = jsonEncode(calibrationTools?.map((e) => e.toMap()).toList()); map["pmKits"] = jsonEncode(pmKits?.map((e) => e.toMap()).toList()); return map; } factory Pentry.fromMap(Map map) { // List contacts = []; // if(map['contacts'] != null){ // contacts =(map['contacts'] as List) // .map((e) => Contact.fromMap(e as Map)) // .toList(); // } List pmKits = []; if (map['pmKits'] != null) { pmKits = (map['pmKits'] as List) .map((e) => PMKit.fromMap(e as Map)) .toList(); } List ppmCheckLists = []; if (map['ppmCheckLists'] != null) { ppmCheckLists = (map['ppmCheckLists'] as List) .map((e) => PPMCheckList.fromMap(e as Map)) .toList(); } List calibrationTools = []; if (map['calibrationTools'] != null) { calibrationTools = (map['calibrationTools'] as List) .map((e) => CalibrationTool.fromMap(e as Map)) .toList(); } return Pentry( status: Lookup.fromJson(map["pentry_status"]), ppmVisitStatus: Lookup.fromJson(map["visit_status"]), actualVisitDate: getDate(map["actual_date"]), travelingHours: map["traveling_hours"], timer: TimerModel( startAt: getDate(map["start_date"]), endAt: getDate(map["end_date"]), durationInSecond: (int.tryParse(map["working_hours"] ?? "") ?? 0) * 60 * 60), // contacts: contacts, ppmCheckLists: ppmCheckLists, calibrationTools: calibrationTools, pmKits: pmKits, ); } static getDate(String date) { return date.isEmpty ? null : DateTime.fromMillisecondsSinceEpoch((int.tryParse(date) ?? 0) * 1000); } }