Untitled
unknown
plain_text
a year ago
20 kB
11
Indexable
import 'dart:convert';
import 'dart:developer';
import 'dart:io';
import 'dart:isolate';
import 'dart:ui';
import 'package:evaluator_app/service/api_manager.dart';
import 'package:evaluator_app/service/endpoints.dart';
import 'package:evaluator_app/utils/strings.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../../model/response/document/document_response.dart';
import '../../../utils/constants.dart';
import 'package:evaluator_app/utils/globals.dart' as globals;
import '../../../widgets/custom_toast.dart';
import '../../../widgets/progressbar.dart';
import '../dashboard_view_model.dart';
import 'package:workmanager/workmanager.dart';
const fetchBackground = "be.tramckrijte.workmanagerExample.simpleTask";
@pragma('vm:entry-point')
void callbackDispatcher() {
try {
Workmanager().executeTask((task, inputData) async {
switch (task) {
case fetchBackground:
try {
String carId = inputData?['carId'];
try {
/*var request = http.MultipartRequest('PATCH', Uri.parse('${EndPoints.baseUrl}${EndPoints.document}/$carId'));
request.fields.addAll({
'insurance': inputData?['insurance'],
'insuranceCompany': inputData?['insuranceCompany'],
'insuranceIDV': inputData?['insuranceIDV'],
'insuranceValidity': inputData?['insuranceValidity'],
'bankName': inputData?['bankName'],
'hypothecation': inputData?['hypothecation'],
'loanNoc': inputData?['loanNoc'],
'ncb': inputData?['ncb'],
'loanStatus': inputData?['loanStatus'],
'interStateTransfer': inputData?['interStateTransfer'],
'form35': inputData?['form35'],
'rcMismatch': inputData?['rcMismatch'],
'insuranceMismatch': inputData?['insuranceMismatch'],
'remarks': inputData?['remarks'],
'rcFront_remarks': inputData?['rcFront_remarks'],
'rcBack_remarks': inputData?['rcBack_remarks'],
'chassisImage_remarks': inputData?['chassisImage_remarks'],
'form35Image_remarks': inputData?['form35Image_remarks'],
'nocImage_remarks': inputData?['nocImage_remarks'],
'evaluationStatusForDocument': inputData?['evaluationStatusForDocument'],
});
if (inputData?['rcFront'] != null && !inputData?['rcFront'].startsWith('http') && !inputData?['rcFront'].startsWith('https')) {
request.files.add(await http.MultipartFile.fromPath(
'rcFront',
inputData?['rcFront'],
contentType: MediaType('image', 'jpg'),
));
}
if (inputData?['rcBack'] != null && !inputData?['rcBack'].startsWith('http') && !inputData?['rcBack'].startsWith('https')) {
request.files.add(await http.MultipartFile.fromPath(
'rcBack',
inputData?['rcBack'],
contentType: MediaType('image', 'jpg'),
));
}
if (inputData?['nocImage'] != null && inputData?['nocImage'] != '' && !inputData?['nocImage'].startsWith('http') && !inputData?['nocImage'].startsWith('https')) {
request.files.add(await http.MultipartFile.fromPath('nocImage', inputData?['nocImage'], contentType: MediaType('image', 'jpg')));
}
if (inputData?['form35Image'] != null && inputData?['form35Image'] != '' && !inputData?['form35Image'].startsWith('http') && !inputData?['form35Image'].startsWith('https')) {
request.files.add(await http.MultipartFile.fromPath(
'form35Image',
inputData?['form35Image'],
contentType: MediaType('image', 'jpg'),
));
}
if (inputData?['chassisImage'] != null && inputData?['chassisImage'] != '' && !inputData?['chassisImage'].startsWith('http') && !inputData?['chassisImage'].startsWith('https')) {
request.files.add(await http.MultipartFile.fromPath(
'chassisImage',
inputData?['chassisImage'],
contentType: MediaType('image', 'jpg'),
));
}
var headers = {'Authorization': 'Bearer ${inputData?['token']}'};
request.headers.addAll(headers);
log(request.toString());
var response = await request.send();*/
var response = await ApiManager.multipartRequest(endpoint: '${EndPoints.document}/$carId',
fields: {
'insurance': inputData?['insurance'],
'insuranceCompany': inputData?['insuranceCompany'],
'insuranceIDV': inputData?['insuranceIDV'],
'insuranceValidity': inputData?['insuranceValidity'],
'bankName': inputData?['bankName'],
'hypothecation': inputData?['hypothecation'],
'loanNoc': inputData?['loanNoc'],
'ncb': inputData?['ncb'],
'loanStatus': inputData?['loanStatus'],
'interStateTransfer': inputData?['interStateTransfer'],
'form35': inputData?['form35'],
'rcMismatch': inputData?['rcMismatch'],
'insuranceMismatch': inputData?['insuranceMismatch'],
'remarks': inputData?['remarks'],
'rcFront_remarks': inputData?['rcFront_remarks'],
'rcBack_remarks': inputData?['rcBack_remarks'],
'chassisImage_remarks': inputData?['chassisImage_remarks'],
'form35Image_remarks': inputData?['form35Image_remarks'],
'nocImage_remarks': inputData?['nocImage_remarks'],
'evaluationStatusForDocument': inputData?['evaluationStatusForDocument'],
},
files: [
{'field': 'rcFront' ,'path': inputData?['rcFront']},
{'field': 'rcBack', 'path': inputData?['rcBack']},
{'field': 'nocImage', 'path': inputData?['nocImage']},
{'field': 'form35Image', 'path': inputData?['form35Image']},
{'field': 'chassisImage', 'path': inputData?['chassisImage']},
]);
if (response.statusCode == 200) {
log(response.stream.toString());
IsolateNameServer.lookupPortByName("api_call_port")!.send("api_call_success");
if (Get.isRegistered<DashBoardViewModel>()) {
Get.delete<DashBoardViewModel>();
}
} else {
log(response.reasonPhrase.toString());
IsolateNameServer.lookupPortByName("api_call_port")!.send("api_call_failure");
}
} catch (e) {
IsolateNameServer.lookupPortByName("api_call_port")!.send("api_call_failure");
log(e.toString());
}
} catch (e) {
IsolateNameServer.lookupPortByName("api_call_port")!.send("api_call_failure");
log(e.toString());
}
break;
}
log("Native called background task: $task");
return Future.value(true);
});
} catch (e) {
log(e.toString());
}
}
class DocumentViewModel extends GetxController {
final GlobalKey<FormState> page1Key = GlobalKey<FormState>();
final GlobalKey<FormState> page2Key = GlobalKey<FormState>();
final Rx<PageController> pageController = PageController(initialPage: 0).obs;
var documentResponse = DocumentResponse().obs;
var id = Get.arguments ?? '';
// the index of the current page
var activePage = 0.obs;
Rx<TextEditingController> insuranceCompanyController = TextEditingController().obs;
Rx<TextEditingController> insuranceIDVController = TextEditingController().obs;
Rx<TextEditingController> insuranceValidityController = TextEditingController().obs;
Rx<TextEditingController> bankNameController = TextEditingController().obs;
Rx<TextEditingController> remarksController = TextEditingController().obs;
Rx<TextEditingController> rcFrontUploadRemarksController = TextEditingController().obs;
Rx<TextEditingController> rcBackUploadRemarksController = TextEditingController().obs;
Rx<TextEditingController> nocRemarksController = TextEditingController().obs;
Rx<TextEditingController> chassisRemarksController = TextEditingController().obs;
Rx<TextEditingController> form35RemarksController = TextEditingController().obs;
List<String> yesNoList = Constants.yesNoList;
List<String> insuranceList = Constants.insuranceList;
Rx<File?> rcFrontImage = Rx<File?>(null);
Rx<File?> rcBackImage = Rx<File?>(null);
Rx<File?> nocImage = Rx<File?>(null);
Rx<File?> form35Image = Rx<File?>(null);
Rx<File?> chassisImage = Rx<File?>(null);
var selectedRc = ''.obs;
var selectedUnderHypothecation = ''.obs;
var selectedInsurance = ''.obs;
var selectedInterStateTransfer = ''.obs;
var selectedNCB = ''.obs;
var selectedLoanClosed = ''.obs;
var selectedLoanNoc = ''.obs;
var selectedForm35 = ''.obs;
var selectedRcMismatch = ''.obs;
var selectedInsuranceMismatch = ''.obs;
var isPage1Fill = false.obs;
var isPage2Fill = false.obs;
@override
void onInit() {
getDocument();
super.onInit();
}
void registerBackgroundTask() {
Workmanager().initialize(callbackDispatcher, isInDebugMode: false);
RawReceivePort receivePort = RawReceivePort();
IsolateNameServer.registerPortWithName(receivePort.sendPort, "api_call_port");
receivePort.handler = (message) {
if (message == "api_call_success") {
CustomToast.instance.showMsg('${MyStrings.documents} ${MyStrings.updateSuccess}');
if(Get.isRegistered<DashBoardViewModel>()){
Get.find<DashBoardViewModel>().getEvaluationStatus();
}else{
Get.put(DashBoardViewModel());
Get.find<DashBoardViewModel>().getEvaluationStatus();
}
}else if(message == "api_call_failure"){
CustomToast.instance.showMsg('${MyStrings.documents} ${MyStrings.uploadFailed}');
}
};
Workmanager().registerOneOffTask(fetchBackground, fetchBackground,
// existingWorkPolicy: ExistingWorkPolicy.append,
// constraints: Constraints(networkType: NetworkType.connected),
inputData: <String, dynamic>{
'insurance': selectedInsurance.value.toString(),
'insuranceCompany': insuranceCompanyController.value.text,
'insuranceIDV': insuranceIDVController.value.text,
'insuranceValidity': insuranceValidityController.value.text,
'bankName': bankNameController.value.text,
'hypothecation': selectedUnderHypothecation.value.toString(),
'loanNoc': selectedLoanNoc.value.toString(),
'ncb': selectedNCB.value.toString(),
'loanStatus': selectedLoanClosed.value.toString(),
'interStateTransfer': selectedInterStateTransfer.value.toString(),
'form35': selectedForm35.value.toString(),
'rcMismatch': selectedRcMismatch.value.toString(),
'insuranceMismatch': selectedInsuranceMismatch.value.toString(),
'remarks': remarksController.value.text,
'rcFront_remarks': rcFrontUploadRemarksController.value.text,
'rcBack_remarks': rcBackUploadRemarksController.value.text,
'chassisImage_remarks': chassisRemarksController.value.text,
'form35Image_remarks': form35RemarksController.value.text,
'nocImage_remarks': nocRemarksController.value.text,
'evaluationStatusForDocument': 'COMPLETED',
// 'headers':globals.headers,
'rcFront': rcFrontImage.value?.path,
'rcBack': rcBackImage.value?.path,
'nocImage': nocImage.value?.path ?? '',
'form35Image': form35Image.value?.path ?? '',
'chassisImage': chassisImage.value?.path ?? '',
'carId': globals.carId,
'token': globals.token
});
}
/* void addDocuments() async {
ProgressBar.instance.showProgressbar(Get.context!);
try {
var request = http.MultipartRequest('PATCH', Uri.parse('${EndPoints.baseUrl}${EndPoints.document}/${globals.carId}'));
request.fields.addAll({
'insurance': selectedInsurance.value,
'insuranceCompany': insuranceCompanyController.value.text,
'insuranceIDV': insuranceIDVController.value.text,
'insuranceValidity': insuranceValidityController.value.text,
'bankName': bankNameController.value.text,
'hypothecation': selectedUnderHypothecation.value,
'loanNoc': selectedLoanNoc.value,
'ncb': selectedNCB.value,
'loanStatus': selectedLoanClosed.value,
'interStateTransfer': selectedInterStateTransfer.value,
'form35': selectedForm35.value,
'rcMismatch': selectedRcMismatch.value,
'insuranceMismatch': selectedInsuranceMismatch.value,
'remarks': remarksController.value.text,
'rcFront_remarks': rcFrontUploadRemarksController.value.text,
'rcBack_remarks': rcBackUploadRemarksController.value.text,
'chassisImage_remarks': chassisRemarksController.value.text,
'form35Image_remarks': form35RemarksController.value.text,
'nocImage_remarks': nocRemarksController.value.text,
'evaluationStatusForDocument': 'COMPLETED'
});
if (rcFrontImage.value != null && !rcFrontImage.value!.path.startsWith('http') && !rcFrontImage.value!.path.startsWith('https')) {
request.files.add(await http.MultipartFile.fromPath('rcFront', rcFrontImage.value!.path,contentType: MediaType('image', 'jpg'),));
}
if (rcBackImage.value != null && !rcBackImage.value!.path.startsWith('http') && !rcBackImage.value!.path.startsWith('https')) {
request.files.add(await http.MultipartFile.fromPath('rcBack', rcBackImage.value!.path,contentType: MediaType('image', 'jpg'),));
}
if(nocImage.value != null *//*&& !nocImage.value!.path.startsWith('http') && !nocImage.value!.path.startsWith('https')*//*) {
if (!nocImage.value!.path.startsWith('http') && !nocImage.value!.path.startsWith('https')) {
var type = nocImage.value!.path.split('.').last;
request.files.add(await http.MultipartFile.fromPath('nocImage', nocImage.value!.path,contentType: MediaType('image', type)));
}
}
if(form35Image.value != null *//*&& !form35Image.value!.path.startsWith('http') && !form35Image.value!.path.startsWith('https')*//*) {
if (!form35Image.value!.path.startsWith('http') && !form35Image.value!.path.startsWith('https')) {
var type = form35Image.value!.path.split('.').last;
request.files.add(await http.MultipartFile.fromPath('form35Image', form35Image.value!.path,contentType: MediaType('image', type),));
}
}
if(chassisImage.value != null *//*&& !chassisImage.value!.path.startsWith('http') && !chassisImage.value!.path.startsWith('https')*//*) {
if (!chassisImage.value!.path.startsWith('http') && !chassisImage.value!.path.startsWith('https')) {
var type = chassisImage.value!.path.split('.').last;
request.files.add(await http.MultipartFile.fromPath('chassisImage', chassisImage.value!.path,contentType: MediaType('image', type),));
}
}
request.headers.addAll(globals.headers);
log(request.toString());
var response = await request.send();
if (response.statusCode == 200) {
ProgressBar.instance.stopProgressBar(Get.context!);
log(response.stream.toString());
// Get.back();
if (Get.isRegistered<DashBoardViewModel>()) {
Get.delete<DashBoardViewModel>();
}
Get.offNamed(AppRoutes.dashBoardScreen);
} else {
ProgressBar.instance.stopProgressBar(Get.context!);
log(response.reasonPhrase.toString());
}
} catch (e) {
ProgressBar.instance.stopProgressBar(Get.context!);
log(e.toString());
CustomToast.instance.showMsg(ExceptionErrorUtil.handleErrors(e).errorMessage ?? '');
}
}*/
void getDocument() async {
// ProgressBar.instance.showProgressbar(Get.context!);
try {
var response = await ApiManager.get(endpoint: '${EndPoints.document}/${globals.carId}');
if (response.statusCode == 200) {
log(response.body.toString());
documentResponse.value = DocumentResponse.fromJson(jsonDecode(response.body));
loadData();
ProgressBar.instance.stopProgressBar(Get.context!);
} else {
ProgressBar.instance.stopProgressBar(Get.context!);
log(response.reasonPhrase.toString());
}
} catch (e) {
ProgressBar.instance.stopProgressBar(Get.context!);
log(e.toString());
// CustomToast.instance.showMsg(ExceptionErrorUtil.handleErrors(e).errorMessage ?? '');
}
}
void loadData() {
if (documentResponse.value.data != null && documentResponse.value.data?.rcFront != null && documentResponse.value.data?.rcBack != null) {
isPage2Fill.value = true;
isPage1Fill.value = true;
insuranceCompanyController.value.text = documentResponse.value.data?.insuranceCompany ?? '';
insuranceIDVController.value.text = documentResponse.value.data?.insuranceIDV ?? '';
insuranceValidityController.value.text = documentResponse.value.data?.insuranceValidity ?? '';
bankNameController.value.text = documentResponse.value.data?.bankName ?? '';
remarksController.value.text = documentResponse.value.data?.remarks ?? '';
rcFrontUploadRemarksController.value.text = documentResponse.value.data?.rcFront?.remarks ?? '';
rcBackUploadRemarksController.value.text = documentResponse.value.data?.rcBack?.remarks ?? '';
chassisRemarksController.value.text = documentResponse.value.data?.chassisImage?.remarks ?? '';
nocRemarksController.value.text = documentResponse.value.data?.nocImage?.remarks ?? '';
form35RemarksController.value.text = documentResponse.value.data?.form35Image?.remarks ?? '';
rcFrontImage.value = documentResponse.value.data?.rcFront?.url != null ? File(documentResponse.value.data?.rcFront?.url ?? '') : null;
rcBackImage.value = documentResponse.value.data?.rcBack?.url != null ? File(documentResponse.value.data?.rcBack?.url ?? '') : null;
chassisImage.value = documentResponse.value.data?.chassisImage?.url != null ? File(documentResponse.value.data?.chassisImage?.url ?? '') : null;
nocImage.value = documentResponse.value.data?.nocImage?.url != null ? File(documentResponse.value.data?.nocImage?.url ?? '') : null;
form35Image.value = documentResponse.value.data?.form35Image?.url != null ? File(documentResponse.value.data?.form35Image?.url ?? '') : null;
selectedInterStateTransfer.value = documentResponse.value.data?.interStateTransfer ?? '';
selectedInsurance.value = documentResponse.value.data?.insurance ?? '';
selectedNCB.value = documentResponse.value.data?.ncb ?? '';
selectedLoanClosed.value = documentResponse.value.data?.loanStatus ?? '';
selectedForm35.value = documentResponse.value.data?.form35 ?? '';
selectedRcMismatch.value = documentResponse.value.data?.rcMismatch ?? '';
selectedInsuranceMismatch.value = documentResponse.value.data?.insuranceMismatch ?? '';
selectedRc.value = documentResponse.value.data?.rcAvailability ?? '';
selectedLoanNoc.value = documentResponse.value.data!.loanNoc ?? '';
selectedUnderHypothecation.value = documentResponse.value.data!.hypothecation ?? '';
}
}
}
Editor is loading...
Leave a Comment