815 lines
27 KiB
Dart
815 lines
27 KiB
Dart
|
import 'dart:convert';
|
||
|
import 'dart:io';
|
||
|
|
||
|
import 'package:dio/dio.dart';
|
||
|
import 'package:flutter/cupertino.dart';
|
||
|
import 'package:flutter/foundation.dart';
|
||
|
import 'package:flutter/services.dart';
|
||
|
import 'package:hive_flutter/hive_flutter.dart';
|
||
|
import 'package:provider/provider.dart';
|
||
|
import 'package:pwa_ios/model/interaction_config_data.dart';
|
||
|
|
||
|
import 'package:pwa_ios/model/interaction_data.dart';
|
||
|
|
||
|
import 'package:pwa_ios/model/json_form_data.dart';
|
||
|
import 'package:pwa_ios/model/location_model.dart';
|
||
|
import 'package:pwa_ios/model/save_interaction.dart';
|
||
|
import 'package:pwa_ios/repository/hive_repository.dart';
|
||
|
import 'package:pwa_ios/utils/mockapi.dart';
|
||
|
import 'package:pwa_ios/viewmodel/interactionprovider.dart';
|
||
|
|
||
|
import '../utils/util.dart';
|
||
|
|
||
|
class ViewInteractionProvider extends ChangeNotifier {
|
||
|
List<FormFieldData> interactionReponseList = [];
|
||
|
// List<dynamic> sectionList = [];
|
||
|
List<SectionList> sectionList = [];
|
||
|
late Location locationList;
|
||
|
List<TextEditingController> textEditingControllerList = [];
|
||
|
List<TextEditingController> multipletextEditingControllerList = [];
|
||
|
int textfieldIndex = 0;
|
||
|
List<Country> countryList = [];
|
||
|
List<States> stateList = [];
|
||
|
List<City> cityList = [];
|
||
|
List<InputClass> checkboxlist = [];
|
||
|
String selectedCountry = 'Selected Country';
|
||
|
String radioValue = '';
|
||
|
bool checkboxValue = false;
|
||
|
|
||
|
late SaveInteraction saveInteraction;
|
||
|
List<SaveData> saveData = [];
|
||
|
|
||
|
List<SectionList> newList = [];
|
||
|
String sectionName = '';
|
||
|
late String selectedCity = 'Selected City', selectedState = 'Selected State';
|
||
|
String customdropdownValue = '';
|
||
|
String? selectedValue;
|
||
|
List<String> selectedItems = [];
|
||
|
InputClass? selectedObj;
|
||
|
List<SaveInteraction> savedList = [];
|
||
|
List<InteractionConfigData> intConfigDataList = [];
|
||
|
String? intId, intName;
|
||
|
final HiveDataRepository _hiveprovider = HiveDataRepository(
|
||
|
Hive.box<InteractionConfigData>('InteractionConfigDataBox'));
|
||
|
|
||
|
late final InteractionProvider interactionProvider;
|
||
|
initConfigData() async {
|
||
|
intConfigDataList = _hiveprovider.getAllDataFromHive();
|
||
|
notifyListeners();
|
||
|
}
|
||
|
|
||
|
Future<void> getRecords(String formname) async {
|
||
|
var box = await Hive.openBox<SaveInteraction>('InteractionDataBox');
|
||
|
savedList = box.values.toList();
|
||
|
savedList = savedList
|
||
|
.where(
|
||
|
(element) => element.form == formname,
|
||
|
)
|
||
|
.toList();
|
||
|
notifyListeners();
|
||
|
}
|
||
|
|
||
|
Future<List<SaveInteraction>> getAllRecords() async {
|
||
|
var box = await Hive.openBox<SaveInteraction>('InteractionDataBox');
|
||
|
List<SaveInteraction> savedList = box.values.toList();
|
||
|
|
||
|
return savedList;
|
||
|
}
|
||
|
|
||
|
init(int index) async {
|
||
|
// _hiveprovider = HiveDataRepository(
|
||
|
// Hive.box<InteractionConfigData>('InteractionConfigDataBox'));
|
||
|
// intConfigDataList = _hiveprovider.getAllDataFromHive();
|
||
|
InteractionConfigData interactionConfigData = intConfigDataList[index];
|
||
|
intId = intConfigDataList[index].id;
|
||
|
intName = intConfigDataList[index].name;
|
||
|
|
||
|
print("data $intConfigDataList");
|
||
|
// await fetchSaveDataJson();
|
||
|
// await fetchDataSet();
|
||
|
await fetchData(interactionConfigData.widgets);
|
||
|
await fetchLocationData();
|
||
|
}
|
||
|
|
||
|
initSavedForm(SaveInteraction saveInteractiondata) {
|
||
|
int index = intConfigDataList
|
||
|
.indexWhere((element) => element.id == saveInteractiondata.intId);
|
||
|
InteractionConfigData interactionConfigData = intConfigDataList[index];
|
||
|
|
||
|
interactionReponseList = saveInteractiondata.save
|
||
|
.map((e) => FormFieldData(
|
||
|
multipleList: e.multipleList == null
|
||
|
? []
|
||
|
: e.multipleList!
|
||
|
.map((mobj) => SectionList(
|
||
|
depid: mobj.depid,
|
||
|
id: mobj.id,
|
||
|
inputList: mobj.inputList,
|
||
|
isRequired: mobj.isRequired,
|
||
|
extension: mobj.extension,
|
||
|
fileName: mobj.fileName,
|
||
|
selectedObject: mobj.selectedObject,
|
||
|
name: mobj.name,
|
||
|
param: mobj.param,
|
||
|
selectedValue: mobj.selectedValue,
|
||
|
widget: mobj.widget,
|
||
|
controller: mobj.controller,
|
||
|
gid: mobj.gid,
|
||
|
input: mobj.input,
|
||
|
selectedId: mobj.selectedId,
|
||
|
value: mobj.value))
|
||
|
.toList(),
|
||
|
sectionList: e.sectionList
|
||
|
.map((obj) => SectionList(
|
||
|
depid: obj.depid,
|
||
|
id: obj.id,
|
||
|
inputList: obj.inputList,
|
||
|
isRequired: obj.isRequired,
|
||
|
extension: obj.extension,
|
||
|
fileName: obj.fileName,
|
||
|
name: obj.name,
|
||
|
param: obj.param,
|
||
|
selectedObject: obj.selectedObject,
|
||
|
selectedValue: obj.selectedValue,
|
||
|
widget: obj.widget,
|
||
|
controller: obj.controller,
|
||
|
gid: obj.gid,
|
||
|
input: obj.input,
|
||
|
selectedId: obj.selectedId,
|
||
|
value: obj.value))
|
||
|
.toList(),
|
||
|
sectionName: e.sectionName,
|
||
|
multiple: e.multiple))
|
||
|
.toList();
|
||
|
|
||
|
textEditingControllerList.clear();
|
||
|
|
||
|
for (var item in interactionReponseList) {
|
||
|
sectionList = item.sectionList;
|
||
|
|
||
|
for (SectionList obj in item.multipleList!) {
|
||
|
obj.gid = obj.gid ?? item.multipleList!.length;
|
||
|
if (obj.widget == InteractionWidget.TEXT) {
|
||
|
var textEditingController = TextEditingController();
|
||
|
textEditingController.text = obj.selectedValue!.isNotEmpty
|
||
|
? obj.selectedValue!.last ?? ""
|
||
|
: "";
|
||
|
multipletextEditingControllerList.add(textEditingController);
|
||
|
obj.controller = multipletextEditingControllerList.last;
|
||
|
// obj.controller = obj.selectedValue.last ?? " ";
|
||
|
}
|
||
|
if (obj.widget == InteractionWidget.DROPDOWN ||
|
||
|
obj.widget == InteractionWidget.AUTOCOMPLETE ||
|
||
|
obj.widget == InteractionWidget.MULTISELECT) {
|
||
|
List<InputClass> list = obj.inputList!;
|
||
|
if (obj.selectedObject != null) {
|
||
|
} else {
|
||
|
obj.selectedObject = obj.selectedValue!.isNotEmpty
|
||
|
? getDataObject(obj.id, obj.selectedValue!.last, list)
|
||
|
: list[0];
|
||
|
}
|
||
|
|
||
|
print("value : ${list.first.name} ");
|
||
|
}
|
||
|
if (obj.widget == InteractionWidget.CHECKBOX) {
|
||
|
List<String> selectedvalues = [];
|
||
|
if (obj.selectedValue!.isNotEmpty) {
|
||
|
for (var id in obj.selectedValue!) {
|
||
|
int ind =
|
||
|
obj.inputList!.indexWhere((element) => element.id == id);
|
||
|
if (ind != -1) {
|
||
|
obj.inputList![ind].ischecked = true;
|
||
|
selectedvalues.add(obj.inputList![ind].name);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (obj.widget == InteractionWidget.RADIO) {
|
||
|
List<InputClass> list = obj.inputList!;
|
||
|
|
||
|
if (obj.selectedValue!.isNotEmpty) {
|
||
|
int ind = list
|
||
|
.indexWhere((element) => element.id == obj.selectedValue!.last);
|
||
|
if (ind != -1) {
|
||
|
obj.inputList![ind].ischecked = true;
|
||
|
radioValue = obj.inputList![ind].name;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
// newList.add(obj);
|
||
|
}
|
||
|
for (var sectionItem in item.sectionList) {
|
||
|
if (sectionItem.widget == InteractionWidget.TEXT) {
|
||
|
var textEditingController = TextEditingController();
|
||
|
textEditingController.text = sectionItem.selectedValue!.isNotEmpty
|
||
|
? sectionItem.selectedValue!.last ?? "empty"
|
||
|
: "empty";
|
||
|
textEditingControllerList.add(textEditingController);
|
||
|
|
||
|
sectionItem.controller = textEditingControllerList.last;
|
||
|
}
|
||
|
if (sectionItem.widget == InteractionWidget.DROPDOWN) {
|
||
|
List<InputClass> list = sectionItem.inputList!;
|
||
|
if (sectionItem.selectedObject != null) {
|
||
|
print("not null");
|
||
|
} else {
|
||
|
sectionItem.selectedObject = sectionItem.selectedValue!.isNotEmpty
|
||
|
? getDataObject(
|
||
|
sectionItem.id, sectionItem.selectedValue!.last, list)
|
||
|
: list[0];
|
||
|
}
|
||
|
|
||
|
print("valuesssss : ${sectionItem.selectedObject!.name} ");
|
||
|
}
|
||
|
|
||
|
if (sectionItem.widget == InteractionWidget.AUTOCOMPLETE ||
|
||
|
sectionItem.widget == InteractionWidget.MULTISELECT) {
|
||
|
List<InputClass> list = sectionItem.inputList!;
|
||
|
if (sectionItem.selectedObject != null) {
|
||
|
} else {
|
||
|
sectionItem.selectedObject = sectionItem.selectedValue!.isNotEmpty
|
||
|
? getDataObject(
|
||
|
sectionItem.id, sectionItem.selectedValue!.last, list)
|
||
|
: list[0];
|
||
|
}
|
||
|
|
||
|
print("value : ${list.first.name} ");
|
||
|
}
|
||
|
if (sectionItem.widget == InteractionWidget.CHECKBOX) {
|
||
|
List<String> selectedvalues = [];
|
||
|
if (sectionItem.selectedValue!.isNotEmpty) {
|
||
|
for (var id in sectionItem.selectedValue!) {
|
||
|
int ind = sectionItem.inputList!
|
||
|
.indexWhere((element) => element.id == id);
|
||
|
if (ind != -1) {
|
||
|
sectionItem.inputList![ind].ischecked = true;
|
||
|
selectedvalues.add(sectionItem.inputList![ind].name);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (sectionItem.widget == InteractionWidget.RADIO) {
|
||
|
List<InputClass> list = sectionItem.inputList!;
|
||
|
|
||
|
if (sectionItem.selectedValue!.isNotEmpty) {
|
||
|
int ind = list.indexWhere(
|
||
|
(element) => element.id == sectionItem.selectedValue!.last);
|
||
|
if (ind != -1) {
|
||
|
sectionItem.inputList![ind].ischecked = true;
|
||
|
radioValue = sectionItem.inputList![ind].name;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (sectionItem.widget == InteractionWidget.BUTTON &&
|
||
|
sectionItem.param == 'chooseFile' &&
|
||
|
sectionItem.selectedValue!.isNotEmpty) {
|
||
|
print("choosed file");
|
||
|
print(sectionItem.selectedValue!.last);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
print(interactionReponseList);
|
||
|
print("check textcontrollers ${textEditingControllerList.length}");
|
||
|
}
|
||
|
|
||
|
// Future<String> fetchSaveDataJson() async {
|
||
|
// dynamic jsonResult = jsonDecode(
|
||
|
// await rootBundle.loadString("assets/images/saveinteractiondata.json"));
|
||
|
|
||
|
// // for (var value in jsonResult) {
|
||
|
// saveInteraction = SaveInteraction.fromJson(jsonResult);
|
||
|
// saveData = saveInteraction.save;
|
||
|
// await fetchLocationData();
|
||
|
// return "success";
|
||
|
// }
|
||
|
|
||
|
Future<String> fetchDataSet() async {
|
||
|
dynamic jsonResult = jsonDecode(
|
||
|
await rootBundle.loadString("assets/images/interactiondata.json"));
|
||
|
// for (var value in jsonResult) {
|
||
|
|
||
|
List<InputClass> list = getData("intlocation_1");
|
||
|
print(list);
|
||
|
return "success";
|
||
|
}
|
||
|
|
||
|
List<InputClass> getData(String widgetId) {
|
||
|
List<InputClass> list = [];
|
||
|
|
||
|
return list;
|
||
|
}
|
||
|
|
||
|
InputClass getDataObject(String widgetId, String id, List<InputClass> list) {
|
||
|
// if (id != "") {
|
||
|
// List<InputClass> list = [];
|
||
|
InputClass value = InputClass(id: '', name: '');
|
||
|
|
||
|
if (list.isNotEmpty) {
|
||
|
int index = list.indexWhere((element) => element.id.toString() == id);
|
||
|
|
||
|
if (index != -1) {
|
||
|
value = list[index];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return value;
|
||
|
}
|
||
|
|
||
|
// TODO: Search for widget with depid and check if selected is not null and by selected id get the data of current widget
|
||
|
List<InputClass> getData2(SectionList sectionItem) {
|
||
|
List<InputClass> list = [];
|
||
|
// if (sectionItem.inputList != null) {
|
||
|
list = sectionItem.inputList!;
|
||
|
if (sectionItem.depid != "") {
|
||
|
// print("check depid : ${sectionItem.depid}");
|
||
|
int i = 0;
|
||
|
for (var obj in interactionReponseList) {
|
||
|
i = obj.sectionList
|
||
|
.indexWhere((element) => element.id == sectionItem.depid);
|
||
|
// print("check depid index: $i");
|
||
|
if (i != -1) {
|
||
|
//print("check depid value: ${obj.sectionList[i].value}");
|
||
|
if (obj.sectionList[i].value != null) {
|
||
|
if (list
|
||
|
.where((element) => element.pid == obj.sectionList[i].value)
|
||
|
.isNotEmpty) {
|
||
|
list = list
|
||
|
.where((element) => element.pid == obj.sectionList[i].value)
|
||
|
.toList();
|
||
|
|
||
|
sectionItem.selectedObject = list[0];
|
||
|
} else {
|
||
|
// InputClass obj = InputClass(
|
||
|
// id: "obj.sectionList[i].value",
|
||
|
// name: "Select ${sectionItem.name}");
|
||
|
list = [];
|
||
|
// list.add(obj);
|
||
|
sectionItem.selectedObject = null;
|
||
|
}
|
||
|
} else {
|
||
|
// int index = obj.sectionList
|
||
|
// .indexWhere((element) => element.id == sectionItem.id);
|
||
|
|
||
|
// list = obj.sectionList[index].inputList;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// int index = data[i].data.indexWhere((element) => element.)
|
||
|
}
|
||
|
// }
|
||
|
return list;
|
||
|
}
|
||
|
|
||
|
setDropDownValue(String value, SectionList sectionItem, bool multiple,
|
||
|
InputClass selectedObject) {
|
||
|
int i = 0;
|
||
|
for (var obj in interactionReponseList) {
|
||
|
if (multiple && obj.multipleList != null) {
|
||
|
i = obj.multipleList!
|
||
|
.indexWhere((element) => element.id == sectionItem.id);
|
||
|
if (i != -1) {
|
||
|
obj.multipleList![i].value = value;
|
||
|
obj.multipleList![i].tempselectedValue = [];
|
||
|
obj.multipleList![i].tempselectedValue!.add(value);
|
||
|
// obj.multipleList![i].selectedObject = selectedObj;
|
||
|
}
|
||
|
} else {
|
||
|
i = obj.sectionList
|
||
|
.indexWhere((element) => element.id == sectionItem.id);
|
||
|
if (i != -1) {
|
||
|
obj.sectionList[i].value = value;
|
||
|
obj.sectionList[i].tempselectedValue = [];
|
||
|
obj.sectionList[i].tempselectedValue!.add(value);
|
||
|
// obj.sectionList[i].selectedObject = selectedObj;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
notifyListeners();
|
||
|
}
|
||
|
|
||
|
Future<void> disposeValues() async {
|
||
|
print("dispose called");
|
||
|
await _hiveprovider.closeHiveBox();
|
||
|
for (var obj in interactionReponseList) {
|
||
|
obj.multipleList!.clear();
|
||
|
// for (var obj2 in obj.sectionList) {
|
||
|
// obj2.selectedObject = null;
|
||
|
// }
|
||
|
|
||
|
obj.sectionList.clear();
|
||
|
}
|
||
|
interactionReponseList.clear();
|
||
|
}
|
||
|
|
||
|
setTextValue(String value, SectionList sectionItem, bool multiple) {
|
||
|
int i = 0;
|
||
|
for (var obj in interactionReponseList) {
|
||
|
if (multiple && obj.multipleList != null) {
|
||
|
i = obj.multipleList!
|
||
|
.indexWhere((element) => element.id == sectionItem.id);
|
||
|
if (i != -1) {
|
||
|
obj.multipleList![i].value = value;
|
||
|
obj.multipleList![i].selectedValue!.add(value);
|
||
|
}
|
||
|
} else {
|
||
|
i = obj.sectionList
|
||
|
.indexWhere((element) => element.id == sectionItem.id);
|
||
|
if (i != -1) {
|
||
|
obj.sectionList[i].value = value;
|
||
|
obj.sectionList[i].selectedValue!.add(value);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
notifyListeners();
|
||
|
}
|
||
|
|
||
|
setAutoCompleteValue(String value, SectionList sectionItem, bool multiple) {
|
||
|
int i = 0;
|
||
|
for (var obj in interactionReponseList) {
|
||
|
if (multiple && obj.multipleList != null) {
|
||
|
i = obj.multipleList!
|
||
|
.indexWhere((element) => element.id == sectionItem.id);
|
||
|
if (i != -1) {
|
||
|
obj.multipleList![i].value = value;
|
||
|
obj.multipleList![i].tempselectedValue = [];
|
||
|
obj.multipleList![i].tempselectedValue!.add(value);
|
||
|
}
|
||
|
} else {
|
||
|
i = obj.sectionList
|
||
|
.indexWhere((element) => element.id == sectionItem.id);
|
||
|
if (i != -1) {
|
||
|
obj.sectionList[i].value = value;
|
||
|
obj.sectionList[i].tempselectedValue = [];
|
||
|
obj.sectionList[i].tempselectedValue!.add(value);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
notifyListeners();
|
||
|
}
|
||
|
|
||
|
String getDropDownValue(
|
||
|
String value, SectionList sectionItem, List<InputClass> list) {
|
||
|
int i = 0;
|
||
|
String svalue = '';
|
||
|
|
||
|
i = list.indexWhere((element) => element.id == value);
|
||
|
if (i != -1) {
|
||
|
svalue = list[i].name;
|
||
|
} else {
|
||
|
svalue = list[0].name;
|
||
|
}
|
||
|
|
||
|
return svalue;
|
||
|
}
|
||
|
|
||
|
Future<String> fetchData(InteractionResultData interactionResultData) async {
|
||
|
dynamic jsonResult = jsonDecode(
|
||
|
await rootBundle.loadString("assets/images/interactionform.json"));
|
||
|
|
||
|
InteractionResultData interactionConfig = interactionResultData;
|
||
|
|
||
|
print("itemCategoryModel Item = + ${interactionConfig.result}");
|
||
|
|
||
|
interactionReponseList = interactionConfig.result;
|
||
|
print("check stored: $interactionReponseList");
|
||
|
textEditingControllerList.clear();
|
||
|
|
||
|
for (var item in interactionReponseList) {
|
||
|
sectionList = item.sectionList;
|
||
|
for (var sectionItem in item.sectionList) {
|
||
|
if (sectionItem.widget == InteractionWidget.TEXT) {
|
||
|
var textEditingController = TextEditingController();
|
||
|
|
||
|
textEditingControllerList.add(textEditingController);
|
||
|
sectionItem.controller = textEditingControllerList.last;
|
||
|
}
|
||
|
if (sectionItem.widget == InteractionWidget.DROPDOWN ||
|
||
|
sectionItem.widget == InteractionWidget.AUTOCOMPLETE ||
|
||
|
sectionItem.widget == InteractionWidget.MULTISELECT) {
|
||
|
List<InputClass> list = sectionItem.inputList!;
|
||
|
sectionItem.value = list[0].name;
|
||
|
print("value : ${list.first} ");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
print(interactionReponseList);
|
||
|
print("check textcontrollers ${textEditingControllerList.length}");
|
||
|
|
||
|
return "success";
|
||
|
}
|
||
|
|
||
|
Future<String> fetchLocationData() async {
|
||
|
var data =
|
||
|
await rootBundle.loadString("assets/images/locationdetailsform.json");
|
||
|
|
||
|
Locations loc =
|
||
|
Locations(location: Location.fromJson(json.decode(data)["location"]));
|
||
|
locationList = loc.location;
|
||
|
countryList = locationList.country;
|
||
|
stateList = locationList.state;
|
||
|
cityList = locationList.city;
|
||
|
|
||
|
print(locationList);
|
||
|
notifyListeners();
|
||
|
return "success";
|
||
|
}
|
||
|
|
||
|
List<States> getState(String cid) {
|
||
|
List<States> states =
|
||
|
stateList.where((element) => element.countryId == cid).toList();
|
||
|
|
||
|
return states;
|
||
|
}
|
||
|
|
||
|
List<City> getCity(String sid) {
|
||
|
List<City> city =
|
||
|
cityList.where((element) => element.stateId == sid).toList();
|
||
|
|
||
|
return city;
|
||
|
}
|
||
|
|
||
|
String getCountryId(String name) {
|
||
|
if (countryList.isNotEmpty) {
|
||
|
int i = countryList.indexWhere((element) => element.countryName == name);
|
||
|
return countryList[i].countryId;
|
||
|
}
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
String getStateId(String name) {
|
||
|
if (stateList.isNotEmpty) {
|
||
|
int i = stateList.indexWhere((element) => element.stateName == name);
|
||
|
return stateList[i].stateId;
|
||
|
}
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
String getCityId(String name) {
|
||
|
if (cityList.isNotEmpty) {
|
||
|
int i = cityList.indexWhere((element) => element.cityName == name);
|
||
|
return cityList[i].distId;
|
||
|
}
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
setRadioValue(SectionList sectionItem) {
|
||
|
List<InputClass> list = (sectionItem.input as List)
|
||
|
.map((itemWord) => InputClass.fromJson(itemWord))
|
||
|
.toList();
|
||
|
radioValue = list[0].name;
|
||
|
|
||
|
notifyListeners();
|
||
|
}
|
||
|
|
||
|
setcheckBoxValue(SectionList sectionItem, String sectionName, bool newValue,
|
||
|
String id, bool multiple) {
|
||
|
int index =
|
||
|
sectionItem.inputList!.indexWhere((element) => element.id == id);
|
||
|
sectionItem.inputList![index].ischecked = newValue;
|
||
|
// sectionItem.selectedValue.add(data[i].data[index].id);
|
||
|
int index2 = 0;
|
||
|
for (var obj in interactionReponseList) {
|
||
|
if (multiple && obj.multipleList != null) {
|
||
|
index2 = obj.multipleList!
|
||
|
.indexWhere((element) => element.id == sectionItem.id);
|
||
|
if (index2 != -1) {
|
||
|
obj.multipleList![index2].value = sectionItem.inputList![index].id;
|
||
|
obj.multipleList![index2].selectedValue!
|
||
|
.add(sectionItem.inputList![index].id);
|
||
|
}
|
||
|
} else {
|
||
|
index2 = obj.sectionList
|
||
|
.indexWhere((element) => element.id == sectionItem.id);
|
||
|
if (index2 != -1) {
|
||
|
obj.sectionList[index2].value = sectionItem.inputList![index].id;
|
||
|
obj.sectionList[index2].selectedValue!
|
||
|
.add(sectionItem.inputList![index].id);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
notifyListeners();
|
||
|
}
|
||
|
|
||
|
getSectionItem(String sectionName) {
|
||
|
newList = [];
|
||
|
List<SectionList> addList = [];
|
||
|
int index = interactionReponseList
|
||
|
.indexWhere((element) => element.sectionName == sectionName);
|
||
|
|
||
|
addList = interactionReponseList[index]
|
||
|
.sectionList
|
||
|
.map((e) => SectionList(
|
||
|
depid: e.depid,
|
||
|
id: e.id,
|
||
|
inputList: e.inputList,
|
||
|
isRequired: e.isRequired,
|
||
|
name: e.name,
|
||
|
param: e.param,
|
||
|
selectedValue: [],
|
||
|
widget: e.widget,
|
||
|
controller: e.controller,
|
||
|
gid: e.gid,
|
||
|
input: e.input,
|
||
|
selectedId: e.selectedId,
|
||
|
value: e.value))
|
||
|
.toList();
|
||
|
SectionList delItem = SectionList(
|
||
|
name: "delete",
|
||
|
param: "deletebtn",
|
||
|
id: "deletebtn",
|
||
|
selectedValue: [],
|
||
|
depid: "",
|
||
|
widget: InteractionWidget.BUTTON,
|
||
|
inputList: [],
|
||
|
isRequired: true);
|
||
|
|
||
|
addList.add(delItem);
|
||
|
|
||
|
// if (interactionReponseList[index].multipleList!.isEmpty) {
|
||
|
// newList = addList;
|
||
|
// } else {
|
||
|
if (interactionReponseList[index].multipleList == null) {
|
||
|
interactionReponseList[index].multipleList = addList;
|
||
|
} else {
|
||
|
interactionReponseList[index].multipleList =
|
||
|
interactionReponseList[index].multipleList! + addList;
|
||
|
}
|
||
|
|
||
|
newList = interactionReponseList[index].multipleList!;
|
||
|
// newList = newList + addList;
|
||
|
// }
|
||
|
if (interactionReponseList[index].multipleList != null) {
|
||
|
for (SectionList obj in interactionReponseList[index].multipleList!) {
|
||
|
obj.gid = obj.gid ?? interactionReponseList[index].multipleList!.length;
|
||
|
if (obj.widget == InteractionWidget.TEXT) {
|
||
|
var textEditingController = TextEditingController();
|
||
|
|
||
|
multipletextEditingControllerList.add(textEditingController);
|
||
|
obj.controller = multipletextEditingControllerList.last;
|
||
|
obj.controller!.text =
|
||
|
obj.selectedValue != null && obj.selectedValue!.isNotEmpty
|
||
|
? obj.selectedValue!.last
|
||
|
: '';
|
||
|
}
|
||
|
// newList.add(obj);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
print(
|
||
|
"check length : ${interactionReponseList[index].multipleList!.length}");
|
||
|
notifyListeners();
|
||
|
}
|
||
|
|
||
|
deleteMultipleRows(
|
||
|
int gid, SectionList sectionItem, String selectedSectionName) {
|
||
|
int index = interactionReponseList
|
||
|
.indexWhere((element) => element.sectionName == selectedSectionName);
|
||
|
interactionReponseList[index]
|
||
|
.multipleList!
|
||
|
.removeWhere((item) => item.gid == gid);
|
||
|
|
||
|
notifyListeners();
|
||
|
}
|
||
|
|
||
|
saveJsonObject(BuildContext context, String form,
|
||
|
SaveInteraction saveInteraction) async {
|
||
|
List<FormFieldData> resultData = interactionReponseList
|
||
|
.map((e) => FormFieldData(
|
||
|
multipleList: e.multipleList == null
|
||
|
? []
|
||
|
: e.multipleList!
|
||
|
.map((mobj) => SectionList(
|
||
|
depid: mobj.depid,
|
||
|
id: mobj.id,
|
||
|
inputList: mobj.inputList,
|
||
|
isRequired: mobj.isRequired,
|
||
|
extension: mobj.extension,
|
||
|
fileName: mobj.fileName,
|
||
|
name: mobj.name,
|
||
|
param: mobj.param,
|
||
|
selectedValue:
|
||
|
mobj.tempselectedValue ?? mobj.selectedValue,
|
||
|
widget: mobj.widget,
|
||
|
gid: mobj.gid,
|
||
|
input: mobj.input,
|
||
|
selectedId: mobj.selectedId,
|
||
|
value: mobj.value))
|
||
|
.toList(),
|
||
|
sectionList: e.sectionList
|
||
|
.map((obj) => SectionList(
|
||
|
depid: obj.depid,
|
||
|
id: obj.id,
|
||
|
inputList: obj.inputList,
|
||
|
extension: obj.extension,
|
||
|
fileName: obj.fileName,
|
||
|
isRequired: obj.isRequired,
|
||
|
name: obj.name,
|
||
|
param: obj.param,
|
||
|
selectedValue: obj.tempselectedValue ?? obj.selectedValue,
|
||
|
widget: obj.widget,
|
||
|
controller: obj.controller,
|
||
|
gid: obj.gid,
|
||
|
input: obj.input,
|
||
|
selectedId: obj.selectedId,
|
||
|
value: obj.value))
|
||
|
.toList(),
|
||
|
sectionName: e.sectionName,
|
||
|
multiple: e.multiple,
|
||
|
))
|
||
|
.toList();
|
||
|
|
||
|
final data = SaveInteraction(
|
||
|
save: resultData,
|
||
|
id: saveInteraction.id,
|
||
|
updatedTime: DateTime.now().toString(),
|
||
|
form: saveInteraction.form,
|
||
|
intId: saveInteraction.intId,
|
||
|
intName: saveInteraction.intName,
|
||
|
);
|
||
|
|
||
|
var box = await Hive.openBox<SaveInteraction>('InteractionDataBox');
|
||
|
// box.put(await getNextAutoIncrementValue(), data);
|
||
|
|
||
|
int index =
|
||
|
box.values.toList().indexWhere((element) => element.id == data.id);
|
||
|
|
||
|
box.putAt(index, data);
|
||
|
await getRecords(saveInteraction.form!);
|
||
|
box.close();
|
||
|
|
||
|
// await MockApiCall().postFormData(data);
|
||
|
}
|
||
|
|
||
|
Future<void> deleteRecord(SaveInteraction saveInteraction) async {
|
||
|
var box = await Hive.openBox<SaveInteraction>('InteractionDataBox');
|
||
|
final Map<dynamic, SaveInteraction> deliveriesmap = box.toMap();
|
||
|
dynamic deleteKey;
|
||
|
deliveriesmap.forEach((key, value) {
|
||
|
if (value.id == saveInteraction.id) {
|
||
|
deleteKey = key;
|
||
|
}
|
||
|
});
|
||
|
box.delete(deleteKey);
|
||
|
await getRecords(saveInteraction.form!);
|
||
|
box.close();
|
||
|
}
|
||
|
|
||
|
List<MultipleSectionList> getModifiedList(List<SectionList> sectionList) {
|
||
|
List<MultipleSectionList> newSectionList = [];
|
||
|
for (var obj in sectionList) {
|
||
|
if (obj.id != 'deletebtn') {
|
||
|
if (obj.id == 'chooseFile') {
|
||
|
List<MultipartFile> files = [];
|
||
|
if (obj.selectedValue!.isNotEmpty && obj.selectedValue != null) {
|
||
|
for (var file in obj.selectedValue!) {
|
||
|
files.add(MultipartFile.fromFileSync(file));
|
||
|
}
|
||
|
}
|
||
|
MultipleSectionList newobj = MultipleSectionList(
|
||
|
id: obj.id,
|
||
|
selectedValue: files,
|
||
|
);
|
||
|
|
||
|
newSectionList.add(newobj);
|
||
|
} else {
|
||
|
MultipleSectionList newobj = MultipleSectionList(
|
||
|
id: obj.id,
|
||
|
selectedValue: obj.selectedValue!,
|
||
|
);
|
||
|
newSectionList.add(newobj);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return newSectionList;
|
||
|
}
|
||
|
|
||
|
bool validateMultipleRows() {
|
||
|
for (var obj in interactionReponseList) {
|
||
|
if (obj.multipleList != null) {
|
||
|
for (var mulobj in obj.multipleList!) {
|
||
|
if (mulobj.widget == InteractionWidget.TEXT) {
|
||
|
if (mulobj.controller!.text.isEmpty) {
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
bool validateTextFields() {
|
||
|
for (var obj in interactionReponseList) {
|
||
|
for (var mulobj in obj.sectionList) {
|
||
|
if (mulobj.widget == InteractionWidget.TEXT) {
|
||
|
if (mulobj.controller!.text.isEmpty) {
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
}
|