You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.2 KiB
108 lines
2.2 KiB
import 'package:geolocator/geolocator.dart';
|
|
|
|
import '../common/settings.dart';
|
|
|
|
|
|
class WaterSuppliersModel {
|
|
|
|
String supplier_name = '';
|
|
String status = '';
|
|
String supplier_address = '';
|
|
String supplier_phone_number = '';
|
|
String supplier_alternate_phone_number = '';
|
|
String supplier_id = '';
|
|
String about_supplier = '';
|
|
String startingprice_supplier = '';
|
|
|
|
double lat = 0;
|
|
double lng = 0;
|
|
|
|
double distanceInMeters = 0;
|
|
|
|
String displayAddress = '';
|
|
|
|
bool isFavorite = false;
|
|
bool isConnected = false;
|
|
|
|
WaterSuppliersModel();
|
|
|
|
factory WaterSuppliersModel.fromJson(Map<String, dynamic> json) {
|
|
|
|
WaterSuppliersModel rtvm = WaterSuppliersModel();
|
|
|
|
var supplier = json['supplier'];
|
|
|
|
rtvm.supplier_name = supplier['suppliername'] ?? '';
|
|
|
|
rtvm.status = supplier['status'] ?? '';
|
|
|
|
rtvm.supplier_address =
|
|
supplier['profile']?['office_address'] ?? '';
|
|
|
|
rtvm.supplier_phone_number =
|
|
supplier['phone'] ?? '';
|
|
|
|
rtvm.supplier_alternate_phone_number =
|
|
supplier['profile']?['alternativeContactNumber'] ?? '';
|
|
|
|
rtvm.supplier_id =
|
|
supplier['supplierId'] ?? '';
|
|
|
|
rtvm.lat =
|
|
(supplier['latitude'] ?? 0).toDouble();
|
|
|
|
rtvm.lng =
|
|
(supplier['longitude'] ?? 0).toDouble();
|
|
|
|
rtvm.about_supplier =
|
|
supplier['description'] ?? '';
|
|
|
|
rtvm.startingprice_supplier =
|
|
supplier['startingPrice'] ?? '';
|
|
|
|
rtvm.isFavorite =
|
|
json['isFavorite'] ?? false;
|
|
|
|
rtvm.isConnected =
|
|
json['isConnected'] ?? false;
|
|
|
|
try {
|
|
|
|
rtvm.distanceInMeters = double.parse(
|
|
(Geolocator.distanceBetween(
|
|
rtvm.lat,
|
|
rtvm.lng,
|
|
AppSettings.userLatitude,
|
|
AppSettings.userLongitude) /
|
|
1000)
|
|
.toStringAsFixed(2),
|
|
);
|
|
|
|
} catch (e) {
|
|
|
|
rtvm.distanceInMeters = 0;
|
|
|
|
}
|
|
|
|
/// Address safe parsing
|
|
|
|
if (rtvm.supplier_address.contains(',')) {
|
|
|
|
List<String> parts = rtvm.supplier_address.split(',');
|
|
|
|
if (parts.length > 2) {
|
|
rtvm.displayAddress = parts[2].trim();
|
|
} else {
|
|
rtvm.displayAddress = parts.last.trim();
|
|
}
|
|
|
|
} else {
|
|
|
|
rtvm.displayAddress = rtvm.supplier_address;
|
|
|
|
}
|
|
|
|
return rtvm;
|
|
}
|
|
|
|
} |