getRetailerData method
Implementation
Future<List<dynamic>> getRetailerData() async {
clearUserDetails();
List<dynamic> returnVal = <dynamic>[ConstantName.fail, ErrorMsg.wentWrong];
await SharedPreferenceHelper.getBunchDataFromSp(data: {
SharedPreferenceKey.username: String,
SharedPreferenceKey.clientId: String
}).then((Map<String, dynamic> spresponse) async {
// Get user detail
await HttpServices.apicall(param: {
"username": spresponse[SharedPreferenceKey.username],
"ClientID": spresponse[SharedPreferenceKey.clientId],
"ClientRetailerID": retailerID.text
}, uri: ApiConstant.getRetailerDataApi, label: 'Get retailer data Api')
.then((List response1) async {
if (response1[0] == 200) {
try {
retailerDetailsMap.value = jsonDecode(response1[1]);
Map<String, String> retailerIdTableFields =
retailerDetailsMap.isEmpty
? <String, String>{}
: getFieldTypes(retailerDetailsMap);
// Create & Insert retailer table
if (retailerIdTableFields.isNotEmpty) {
// --> add {clientRetailerId : value} if not exit start
String clientMatchKey = ErrorHandling.getContainsKey(
detail: retailerDetailsMap,
inputKey: ConstantName.clientRetailerId,
);
if (clientMatchKey.trim().isEmpty) {
retailerDetailsMap[ConstantName.clientRetailerId] =
retailerID.text;
} else if (retailerDetailsMap[clientMatchKey] == null ||
retailerDetailsMap[clientMatchKey]
.toString()
.trim()
.isEmpty) {
retailerDetailsMap[clientMatchKey] = retailerID.text;
}
// --> add {clientRetailerId : value} if not exit end
await DatabaseHelper.instance.createRetailerIdTable(
retailerIdTableFields: retailerIdTableFields);
// --> Store data to Database start
await DatabaseHelper.instance.insertMultipleData(
tableName: ConstantName.retailerIdTable,
dataList: [retailerDetailsMap]);
// --> Store data to Database end
}
// Get identifier data
await HttpServices.apicall(param: {
"ClientID": spresponse[SharedPreferenceKey.clientId]
}, uri: ApiConstant.getIdentifierData, label: 'Get identifier data')
.then((List response2) async {
if (response2[0] == 200) {
//Map<String, dynamic> decodedMap = jsonDecode(response2[1]);
// Set data
showIdentifierMap.value =
await decodeJson(jsonResponse: jsonDecode(response2[1]));
//print('updateRetailerDetailsMap:: $updateRetailerDetailsMap');
//print('showIdentifierMap:: $showIdentifierMap');
// --> Copy showIdentifierMap to updateIdentifierMap without refrence start
showIdentifierMap.forEach((key, value) {
List<Map<String, dynamic>> newValue = [];
for (var item in value) {
Map<String, dynamic> newItem =
Map<String, dynamic>.from(item);
// Changed showIdentifierMap {controller : value} to {controller : TextEditingController}
item[ConstantName.controller] = TextEditingController(
text: item[ConstantName.controller]);
if (item[ConstantName.controller] != null) {
newItem[ConstantName.controller] =
TextEditingController.fromValue(
item[ConstantName.controller].value,
);
}
newValue.add(newItem);
}
updateIdentifierMap[key] = newValue;
});
// --> Copy showIdentifierMap to updateIdentifierMap without refrence end
/* --> print
for (int i = 0; i < showIdentifierMap.length; i++) {
String key = showIdentifierMap.keys.elementAt(i);
print(
'decodedMap => $i: key: $key, ${showIdentifierMap[key]}');
}
*/
retailerID.clear();
returnVal = <dynamic>[ConstantName.pass, ''];
} else {
returnVal = <dynamic>[ConstantName.fail, response2[1]];
}
});
} catch (e) {
print('getRetailerData error: $e');
}
} else {
returnVal = <dynamic>[ConstantName.fail, response1[1]];
}
});
});
return returnVal;
}