import 'dart:developer'; import 'dart:typed_data'; import 'package:flutter/cupertino.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/assigned_employee.dart'; import 'package:test_sa/models/new_models/building.dart'; import 'package:test_sa/models/new_models/department.dart'; import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/site.dart'; class GasRefillModel { GasRefillModel({ this.id, this.gazRefillNo, this.expectedDate, this.expectedTime, this.startDate, this.startTime, this.endDate, this.endTime, this.engSignature, this.nurseSignature, this.workingHours, this.site, this.building, this.floor, this.department, this.assignedEmployee, this.status, this.gazRefillDetails, this.localEngineerSignature, this.localNurseSignature }); GasRefillModel.fromJson(dynamic json) { id = json['id']; gazRefillNo = json['gazRefillNo']; expectedDate = json['expectedDate']; expectedTime = json['expectedTime']; startDate = json['startDate']; startTime = json['startTime']; endDate = json['endDate']; endTime = json['endTime']; engSignature = json['engSignature']; nurseSignature = json['nurseSignature']; workingHours = json['workingHours']; site = json['site'] != null ? Site.fromJson(json['site']) : null; building = json['building'] != null ? Building.fromJson(json['building']) : null; floor = json['floor'] != null ? Floor.fromJson(json['floor']) : null; department = json['department'] != null ? Department.fromJson(json['department']) : null; assignedEmployee = json['assignedEmployee'] != null ? AssignedEmployee.fromJson(json['assignedEmployee']) : null; status = json['status'] != null ? Lookup.fromJson(json['status']) : null; if (json['gazRefillDetails'] != null) { gazRefillDetails = []; json['gazRefillDetails'].forEach((v) { gazRefillDetails.add(GasRefillDetails.fromJson(v)); }); } } num id; String gazRefillNo; String expectedDate; String expectedTime; String startDate; String startTime; String endDate; String endTime; String engSignature; String nurseSignature; num workingHours; Site site; Building building; Floor floor; Department department; AssignedEmployee assignedEmployee; Lookup status; List gazRefillDetails; Uint8List localNurseSignature; Uint8List localEngineerSignature; GasRefillModel copyWith({ num id, String gazRefillNo, String expectedDate, String expectedTime, String startDate, String startTime, String endDate, String endTime, String engSignature, String nurseSignature, num workingHours, Site site, Building building, Floor floor, Department department, AssignedEmployee assignedEmployee, Lookup status, List gazRefillDetails, }) => GasRefillModel( id: id ?? this.id, gazRefillNo: gazRefillNo ?? this.gazRefillNo, expectedDate: expectedDate ?? this.expectedDate, expectedTime: expectedTime ?? this.expectedTime, startDate: startDate ?? this.startDate, startTime: startTime ?? this.startTime, endDate: endDate ?? this.endDate, endTime: endTime ?? this.endTime, engSignature: engSignature ?? this.engSignature, nurseSignature: nurseSignature ?? this.nurseSignature, workingHours: workingHours ?? this.workingHours, site: site ?? this.site, building: building ?? this.building, floor: floor ?? this.floor, department: department ?? this.department, assignedEmployee: assignedEmployee ?? this.assignedEmployee, status: status ?? this.status, gazRefillDetails: gazRefillDetails ?? this.gazRefillDetails, ); Map toJson() { final map = {}; map['id'] = id ?? 0; map['gazRefillNo'] = "GR-${DateTime.now().toString().split(" ").first}"; map['expectedDate'] = expectedDate; map['expectedTime'] = expectedTime; map['startDate'] = startDate; map['startTime'] = startTime; map['endDate'] = endDate; map['endTime'] = endTime; map['engSignature'] = engSignature; map['nurseSignature'] = nurseSignature; map['workingHours'] = workingHours; if (site != null) { map['site'] = site.toJson(); } if (building != null) { map['building'] = building.toJson(); } if (floor != null) { map['floor'] = floor.toJson(); } if (department != null) { map['department'] = department.toJson(); } if (assignedEmployee != null) { map['assignedEmployee'] = assignedEmployee.toJson(); } if (status != null) { map['status'] = status.toJson(); } if (gazRefillDetails != null) { map['gazRefillDetails'] = gazRefillDetails.map((v) => v.toJson()).toList(); } return map; } Future validate(BuildContext context) async { if (site == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.destinationSite}"); return false; } else if (building == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.building}"); return false; } else if (floor == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.floor}"); return false; } else if (department == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.department}"); return false; } return true; } fromGasRefillModel(GasRefillModel model) { id = model.id; //userId = model.userId; site = model.site; gazRefillNo = model.gazRefillNo; status = Lookup.fromStatus(model.status); gazRefillDetails = model.gazRefillDetails; building = model.building; floor = model.floor; department = model.department; startDate = model.startDate; endDate = model.endDate; expectedDate = model.expectedDate; assignedEmployee = model.assignedEmployee; localEngineerSignature = model.localEngineerSignature; localNurseSignature = model.localNurseSignature; engSignature = model.engSignature; nurseSignature = model.nurseSignature; workingHours = model.workingHours; } } class GasRefillDetails { GasRefillDetails({ this.id, this.gasType, this.cylinderType, this.cylinderSize, this.requestedQty, this.deliverdQty, this.selectedForEditing }); GasRefillDetails.fromJson(dynamic json) { id = json['id']; gasType = json['gasType'] != null ? Lookup.fromJson(json['gasType']) : null; cylinderType = json['cylinderType'] != null ? Lookup.fromJson(json['cylinderType']) : null; cylinderSize = json['cylinderSize'] != null ? Lookup.fromJson(json['cylinderSize']) : null; requestedQty = json['requestedQty']; deliverdQty = json['deliverdQty']; } num id; Lookup gasType; Lookup cylinderType; Lookup cylinderSize; num requestedQty; num deliverdQty; bool selectedForEditing; GasRefillDetails copyWith({ num id, Lookup gasType, Lookup cylinderType, Lookup cylinderSize, num requestedQty, num deliverdQty, }) => GasRefillDetails( id: id ?? this.id, gasType: gasType ?? this.gasType, cylinderType: cylinderType ?? this.cylinderType, cylinderSize: cylinderSize ?? this.cylinderSize, requestedQty: requestedQty ?? this.requestedQty, deliverdQty: deliverdQty ?? this.deliverdQty, ); Map toJson() { final map = {}; map['id'] = id ?? 0; if (gasType != null) { map['gasType'] = gasType.toJson(); } if (cylinderType != null) { map['cylinderType'] = cylinderType.toJson(); } if (cylinderSize != null) { map['cylinderSize'] = cylinderSize.toJson(); } map['requestedQty'] = requestedQty; map['deliverdQty'] = deliverdQty; return map; } Future validate(BuildContext context) async { if (gasType == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.gasType}"); return false; } else if (cylinderType == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.cylinderType}"); return false; } else if (cylinderSize == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.cylinderSize}"); return false; } return true; } }