diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index c21d2f1..60b4a84 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -12,6 +12,7 @@ { autovalidateMode: AutovalidateMode.onUserInteraction, obscureText: obscureText, controller: widget.textEditingController, + textCapitalization: widget.textCapV ?? TextCapitalization.none, decoration: InputDecoration( hintStyle: TextStyle(color: Colors.white), hintText: widget.hintText, diff --git a/lib/Utils/Common/custom_drop_down.dart b/lib/Utils/Common/custom_drop_down.dart index 2493035..c00c4c6 100644 --- a/lib/Utils/Common/custom_drop_down.dart +++ b/lib/Utils/Common/custom_drop_down.dart @@ -133,20 +133,24 @@ class _CustomDropDownWidgetState extends State { Positioned( left: 14, top: 16, - child: Text( - widget.type == "risk" - ? (selectedValue.isNotEmpty - ? selectedValue.value - : widget.header) - : (contactUsController.selectedValue.isNotEmpty - ? contactUsController.selectedValue.value - : widget.header), - style: const TextStyle( - color: Color(0xFFADADAD), - fontSize: 16, - fontFamily: 'hiragino', - fontWeight: FontWeight.w400, - height: 0, + child: Container( + width: 310, + child: Text( + widget.type == "risk" + ? (selectedValue.isNotEmpty + ? selectedValue.value + : widget.header) + : (contactUsController.selectedValue.isNotEmpty + ? contactUsController.selectedValue.value + : widget.header), + overflow: TextOverflow.ellipsis, + style: const TextStyle( + color: Color(0xFFADADAD), + fontSize: 16, + fontFamily: 'hiragino', + fontWeight: FontWeight.w400, + height: 0, + ), ), ), ), diff --git a/lib/Utils/api_urls.dart b/lib/Utils/api_urls.dart index 9dd194f..4a2f927 100644 --- a/lib/Utils/api_urls.dart +++ b/lib/Utils/api_urls.dart @@ -43,6 +43,7 @@ class ApiUrls { //RISK PROFILE API static String getRiskProfileQuestionAnswerApi = "${base}riskProfileQueAns"; static String addRiskProfileQuestionAnswerApi = "${base}addUserRiskProfile"; + static String getRiskProfile = "${base}get-user-risk-profile-data"; //CONTENT BYTES API static String getContentBytesCategoriesApi = @@ -78,4 +79,7 @@ class ApiUrls { //explore unseen static String getExplore = "${base}get-explore-the-unseen-recommendations"; + + //kyc + static String getKyc = "${base}get-kyc-images"; } diff --git a/lib/model/KycModel/kyc_model.dart b/lib/model/KycModel/kyc_model.dart new file mode 100644 index 0000000..2902f7b --- /dev/null +++ b/lib/model/KycModel/kyc_model.dart @@ -0,0 +1,76 @@ +class GetKYCModel { + String? status; + int? statusCode; + String? message; + List? data; + + GetKYCModel({this.status, this.statusCode, this.message, this.data}); + + GetKYCModel.fromJson(Map json) { + status = json['status']; + statusCode = json['status_code']; + message = json['message']; + if (json['data'] != null) { + data = []; + json['data'].forEach((v) { + data!.add(Data.fromJson(v)); + }); + } + } + + Map toJson() { + final Map data = {}; + data['status'] = status; + data['status_code'] = statusCode; + data['message'] = message; + if (this.data != null) { + data['data'] = this.data!.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class Data { + int? id; + int? userId; + String? adharcardNumber; + String? panNumber; + String? pancardImageFront; + String? pancardImageBack; + String? adharcardImageFront; + String? adharcardImageBack; + + Data( + {this.id, + this.userId, + this.adharcardNumber, + this.panNumber, + this.pancardImageFront, + this.pancardImageBack, + this.adharcardImageFront, + this.adharcardImageBack}); + + Data.fromJson(Map json) { + id = json['id']; + userId = json['user_id']; + adharcardNumber = json['adharcard_number']; + panNumber = json['pan_number'] ?? ""; + pancardImageFront = json['pancard_image_front']; + pancardImageBack = json['pancard_image_back']; + adharcardImageFront = json['adharcard_image_front']; + adharcardImageBack = json['adharcard_image_back']; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['user_id'] = userId; + data['adharcard_number'] = adharcardNumber; + data['pan_number'] = panNumber; + data['pancard_image_front'] = pancardImageFront; + data['pancard_image_back'] = pancardImageBack; + data['adharcard_image_front'] = adharcardImageFront; + data['adharcard_image_back'] = adharcardImageBack; + return data; + } +} diff --git a/lib/model/RiskProfileModel/get_user_risk_profile_model.dart b/lib/model/RiskProfileModel/get_user_risk_profile_model.dart new file mode 100644 index 0000000..f366258 --- /dev/null +++ b/lib/model/RiskProfileModel/get_user_risk_profile_model.dart @@ -0,0 +1,118 @@ +class GetUserRiskProfileModel { + String? status; + int? statusCode; + String? message; + List? data; + + GetUserRiskProfileModel( + {this.status, this.statusCode, this.message, this.data}); + + GetUserRiskProfileModel.fromJson(Map json) { + status = json['status']; + statusCode = json['status_code']; + message = json['message']; + if (json['data'] != null) { + data = []; + json['data'].forEach((v) { + data!.add(Data.fromJson(v)); + }); + } + } + + Map toJson() { + final Map data = {}; + data['status'] = status; + data['status_code'] = statusCode; + data['message'] = message; + if (this.data != null) { + data['data'] = this.data!.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class Data { + int? id; + int? userId; + int? questionId; + int? answerId; + QuestionData? questionData; + AnswerData? answerData; + + Data( + {this.id, + this.userId, + this.questionId, + this.answerId, + this.questionData, + this.answerData}); + + Data.fromJson(Map json) { + id = json['id']; + userId = json['user_id']; + questionId = json['question_id']; + answerId = json['answer_id']; + questionData = json['question_data'] != null + ? QuestionData.fromJson(json['question_data']) + : null; + answerData = json['answer_data'] != null + ? AnswerData.fromJson(json['answer_data']) + : null; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['user_id'] = userId; + data['question_id'] = questionId; + data['answer_id'] = answerId; + if (questionData != null) { + data['question_data'] = questionData!.toJson(); + } + if (answerData != null) { + data['answer_data'] = answerData!.toJson(); + } + return data; + } +} + +class QuestionData { + int? id; + String? question; + String? hint; + + QuestionData({this.id, this.question, this.hint}); + + QuestionData.fromJson(Map json) { + id = json['id']; + question = json['question']; + hint = json['hint']; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['question'] = question; + data['hint'] = hint; + return data; + } +} + +class AnswerData { + int? id; + String? answer; + + AnswerData({this.id, this.answer}); + + AnswerData.fromJson(Map json) { + id = json['id']; + answer = json['answer']; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['answer'] = answer; + return data; + } +} diff --git a/lib/model/RiskProfileModel/risk_profile_ques_answer_model.dart b/lib/model/RiskProfileModel/risk_profile_ques_answer_model.dart index e3382fa..221a485 100644 --- a/lib/model/RiskProfileModel/risk_profile_ques_answer_model.dart +++ b/lib/model/RiskProfileModel/risk_profile_ques_answer_model.dart @@ -35,7 +35,7 @@ class Data { int? id; String? question; String? isActive; - + String? hint; String? createdAt; String? updatedAt; List? answer; @@ -43,6 +43,7 @@ class Data { Data( {this.id, this.question, + this.hint, this.isActive, this.createdAt, this.updatedAt, @@ -52,7 +53,7 @@ class Data { id = json['id']; question = json['question']; isActive = json['is_active']; - + hint = json['hint']; createdAt = json['created_at']; updatedAt = json['updated_at']; if (json['answer'] != null) { @@ -68,7 +69,7 @@ class Data { data['id'] = id; data['question'] = question; data['is_active'] = isActive; - + data['hint'] = hint; data['created_at'] = createdAt; data['updated_at'] = updatedAt; if (answer != null) { @@ -84,7 +85,6 @@ class Answer { String? answer; int? points; String? isActive; - String? createdAt; String? updatedAt; diff --git a/lib/view/MainScreen/ShortTrade.dart b/lib/view/MainScreen/ShortTrade.dart index a58ef3f..db0544c 100644 --- a/lib/view/MainScreen/ShortTrade.dart +++ b/lib/view/MainScreen/ShortTrade.dart @@ -309,7 +309,7 @@ class _ShortTradeState extends State { date: callRecommendationsModel .data!.activeCalls![index].createdAt!, premium: - "₹ ${callRecommendationsModel.data!.activeCalls![index].stopLoss}", + "₹ ${callRecommendationsModel.data!.activeCalls![index].currentPrice}", price1: "₹ ${callRecommendationsModel.data!.activeCalls![index].targetPrice}", stoploss: @@ -425,7 +425,7 @@ class _ShortTradeState extends State { date: callRecommendationsModel .data!.exitedCalls![index].createdAt!, premium: - "₹ ${callRecommendationsModel.data!.exitedCalls![index].stopLoss}", + "₹ ${callRecommendationsModel.data!.exitedCalls![index].currentPrice}", price1: "₹ ${callRecommendationsModel.data!.exitedCalls![index].targetPrice}", stoploss: diff --git a/lib/view/Sidemenu/Sidemenu.dart b/lib/view/Sidemenu/Sidemenu.dart index fd140ad..aa7181a 100644 --- a/lib/view/Sidemenu/Sidemenu.dart +++ b/lib/view/Sidemenu/Sidemenu.dart @@ -245,7 +245,9 @@ class _SideMenuState extends State { ), selected: true, onTap: () { - Get.toNamed(RouteName.kyc); + Get.toNamed(RouteName.kyc, arguments: { + "fromScreen": "sidemenu-flow", + }); }, ), Container( @@ -276,7 +278,9 @@ class _SideMenuState extends State { selected: true, onTap: () { setState(() { - Get.toNamed(RouteName.updateriskprofile); + Get.toNamed(RouteName.updateriskprofile, arguments: { + "fromScreen": "sidemenu-flow", + }); }); }, ), diff --git a/lib/view/login/AddDetails.dart b/lib/view/login/AddDetails.dart index 2231002..00364e2 100644 --- a/lib/view/login/AddDetails.dart +++ b/lib/view/login/AddDetails.dart @@ -94,7 +94,9 @@ class _AddDetailsState extends State { final resp = await AddDetailsAPI(updata).adddetailsApi(); if (resp.status == ResponseStatus.SUCCESS) { Get.back(); - Get.toNamed(RouteName.kyc); + Get.toNamed(RouteName.kyc, arguments: { + "fromScreen": "login-flow", + }); } else if (resp.status == ResponseStatus.PRIVATE) { Get.back(); String? message = resp.data['message']; diff --git a/lib/view/login/Kyc.dart b/lib/view/login/Kyc.dart index 1393309..37d847b 100644 --- a/lib/view/login/Kyc.dart +++ b/lib/view/login/Kyc.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'dart:ui'; +import 'package:cached_network_image/cached_network_image.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -12,17 +13,42 @@ import 'package:traderscircuit/Utils/Common/CommonAppbar.dart'; import 'package:traderscircuit/Utils/Common/CustomTextFormField.dart'; import 'package:traderscircuit/Utils/Common/commonBotton.dart'; import 'package:traderscircuit/Utils/base_manager.dart'; +import 'package:traderscircuit/Utils/dialogs.dart'; import 'package:traderscircuit/Utils/text.dart'; import 'package:traderscircuit/Utils/utils.dart'; +import 'package:traderscircuit/model/KycModel/kyc_model.dart'; import 'package:traderscircuit/resources/routes/route_name.dart'; import 'package:traderscircuit/view/onBoarding/splashScreen1.dart'; +import 'package:traderscircuit/view_model/KycApi/kyc_api.dart'; import 'package:traderscircuit/view_model/Login/add_kyc_api.dart'; import '../../controller/kyc_controller.dart'; -import '../../view_model/RiskProfileApi/risk_profile_api.dart'; import 'package:path/path.dart' as path; +class AlphaNumericTextFormatter extends TextInputFormatter { + @override + TextEditingValue formatEditUpdate( + TextEditingValue oldValue, TextEditingValue newValue) { + final regExp = RegExp(r'^[a-zA-Z0-9]*$'); + if (regExp.hasMatch(newValue.text)) { + return newValue; + } + return oldValue; + } +} + +class UpperCaseTextFormatter extends TextInputFormatter { + @override + TextEditingValue formatEditUpdate( + TextEditingValue oldValue, TextEditingValue newValue) { + return TextEditingValue( + text: newValue.text.toUpperCase(), + selection: newValue.selection, + ); + } +} + class Kyc extends StatefulWidget { const Kyc({super.key}); @@ -39,12 +65,21 @@ class _KycState extends State { KYCController kycController = Get.put(KYCController()); + String fromScreen = Get.arguments['fromScreen']; + var panFMulti; var panBMulti; var aadFMulti; var aadBMulti; _addKyc() async { + if (kycController.panFrontImage.value.isEmpty || + kycController.panBackImage.value.isEmpty || + kycController.aadharFrontImage.value.isEmpty || + kycController.aadharBackImage.value.isEmpty) { + utils.showToast("Please add images to proceed further"); + return; + } panFMulti = await MultipartFile.fromFile( kycController.panFrontImage.value, filename: path.basename(kycController.panFrontImage.value), @@ -76,7 +111,9 @@ class _KycState extends State { final resp = await AddKycAPI(formdata).addkycApi(); if (resp.status == ResponseStatus.SUCCESS) { Get.back(); - Get.toNamed(RouteName.updateriskprofile); + Get.toNamed(RouteName.updateriskprofile, arguments: { + "fromScreen": "login-flow", + }); } else if (resp.status == ResponseStatus.PRIVATE) { Get.back(); String? message = resp.data['message']; @@ -93,6 +130,26 @@ class _KycState extends State { } } + @override + void initState() { + if (fromScreen == "sidemenu-flow") { + KycApi().getKycUserApi().then((value) { + GetKYCModel getKYCModel = GetKYCModel.fromJson(value.data); + pannumber.text = getKYCModel.data![0].panNumber!; + aadhaarnumber.text = getKYCModel.data![0].adharcardNumber!; + kycController.panFrontImage.value = + getKYCModel.data![0].pancardImageFront!; + kycController.panBackImage.value = + getKYCModel.data![0].pancardImageBack!; + kycController.aadharFrontImage.value = + getKYCModel.data![0].adharcardImageFront!; + kycController.aadharBackImage.value = + getKYCModel.data![0].adharcardImageBack!; + }); + } + super.initState(); + } + @override Widget build(BuildContext context) { return Obx( @@ -127,17 +184,23 @@ class _KycState extends State { child: ListView( physics: const BouncingScrollPhysics(), children: [ + fromScreen == "sidemenu-flow" + ? SizedBox() + : Row( + children: [ + text18W500("Step 1 : Personal Information"), + ], + ), + fromScreen == "sidemenu-flow" + ? SizedBox() + : SizedBox( + height: 30.h, + ), Row( children: [ - text18W500("Step 1 : Personal Information"), - ], - ), - SizedBox( - height: 30.h, - ), - Row( - children: [ - text18W400("Upload pan card image"), + fromScreen == "sidemenu-flow" + ? text18W400("View pan card image") + : text18W400("Upload pan card image"), ], ), SizedBox( @@ -190,33 +253,46 @@ class _KycState extends State { const EdgeInsets.symmetric( vertical: 20, horizontal: 40), - child: Image( - image: FileImage( - File( - kycController - .panFrontImage.value, - ), - ), - fit: BoxFit.cover, - width: Get.width, - height: 50.h, - ), + child: fromScreen == + "sidemenu-flow" + ? CachedNetworkImage( + imageUrl: kycController + .panFrontImage.value, + fit: BoxFit.cover, + width: Get.width, + height: 50.h, + ) + : Image( + image: FileImage( + File( + kycController + .panFrontImage + .value, + ), + ), + fit: BoxFit.cover, + width: Get.width, + height: 50.h, + ), ), - Positioned( - top: 6, - right: 10, - child: InkWell( - onTap: () { - kycController - .panFrontImage.value = ""; - }, - child: SvgPicture.asset( - "assets/images/svg/cancel.svg", - width: 18, - height: 18, - ), - ), - ) + fromScreen == "sidemenu-flow" + ? SizedBox() + : Positioned( + top: 6, + right: 10, + child: InkWell( + onTap: () { + kycController + .panFrontImage + .value = ""; + }, + child: SvgPicture.asset( + "assets/images/svg/cancel.svg", + width: 18, + height: 18, + ), + ), + ) ], ) : Center( @@ -281,33 +357,46 @@ class _KycState extends State { const EdgeInsets.symmetric( vertical: 20, horizontal: 40), - child: Image( - image: FileImage( - File( - kycController - .panBackImage.value, - ), - ), - fit: BoxFit.cover, - width: Get.width, - height: 50.h, - ), + child: fromScreen == + "sidemenu-flow" + ? CachedNetworkImage( + imageUrl: kycController + .panBackImage.value, + fit: BoxFit.cover, + width: Get.width, + height: 50.h, + ) + : Image( + image: FileImage( + File( + kycController + .panBackImage + .value, + ), + ), + fit: BoxFit.cover, + width: Get.width, + height: 50.h, + ), ), - Positioned( - top: 6, - right: 10, - child: InkWell( - onTap: () { - kycController - .panBackImage.value = ""; - }, - child: SvgPicture.asset( - "assets/images/svg/cancel.svg", - width: 18, - height: 18, - ), - ), - ) + fromScreen == "sidemenu-flow" + ? SizedBox() + : Positioned( + top: 6, + right: 10, + child: InkWell( + onTap: () { + kycController + .panBackImage + .value = ""; + }, + child: SvgPicture.asset( + "assets/images/svg/cancel.svg", + width: 18, + height: 18, + ), + ), + ) ], ) : Center( @@ -343,7 +432,15 @@ class _KycState extends State { height: 15.h, ), CustomTextFormField( + enabled: + fromScreen == "sidemenu-flow" ? false : true, + textCapV: TextCapitalization.characters, textEditingController: pannumber, + inputFormatters: [ + AlphaNumericTextFormatter(), + UpperCaseTextFormatter(), + LengthLimitingTextInputFormatter(10), + ], ), SizedBox( height: 15.h, @@ -357,15 +454,24 @@ class _KycState extends State { height: 15.h, ), CustomTextFormField( + enabled: + fromScreen == "sidemenu-flow" ? false : true, textEditingController: aadhaarnumber, texttype: TextInputType.phone, + inputFormatters: [ + FilteringTextInputFormatter.allow( + RegExp(r'[0-9]')), + LengthLimitingTextInputFormatter(12), + ], ), SizedBox( height: 30.h, ), Row( children: [ - text18W400("Upload Aadhar card image"), + fromScreen == "sidemenu-flow" + ? text18W400("View Aadhar card image") + : text18W400("Upload Aadhar card image"), ], ), SizedBox( @@ -418,33 +524,47 @@ class _KycState extends State { const EdgeInsets.symmetric( vertical: 20, horizontal: 40), - child: Image( - image: FileImage( - File( - kycController - .aadharFrontImage.value, - ), - ), - fit: BoxFit.cover, - width: Get.width, - height: 50.h, - ), + child: + fromScreen == "sidemenu-flow" + ? CachedNetworkImage( + imageUrl: kycController + .aadharFrontImage + .value, + fit: BoxFit.cover, + width: Get.width, + height: 50.h, + ) + : Image( + image: FileImage( + File( + kycController + .aadharFrontImage + .value, + ), + ), + fit: BoxFit.cover, + width: Get.width, + height: 50.h, + ), ), - Positioned( - top: 6, - right: 10, - child: InkWell( - onTap: () { - kycController.aadharFrontImage - .value = ""; - }, - child: SvgPicture.asset( - "assets/images/svg/cancel.svg", - width: 18, - height: 18, - ), - ), - ) + fromScreen == "sidemenu-flow" + ? SizedBox() + : Positioned( + top: 6, + right: 10, + child: InkWell( + onTap: () { + kycController + .aadharFrontImage + .value = ""; + }, + child: SvgPicture.asset( + "assets/images/svg/cancel.svg", + width: 18, + height: 18, + ), + ), + ) ], ) : Center( @@ -510,33 +630,47 @@ class _KycState extends State { const EdgeInsets.symmetric( vertical: 20, horizontal: 40), - child: Image( - image: FileImage( - File( - kycController - .aadharBackImage.value, - ), - ), - fit: BoxFit.cover, - width: Get.width, - height: 50.h, - ), + child: + fromScreen == "sidemenu-flow" + ? CachedNetworkImage( + imageUrl: kycController + .aadharBackImage + .value, + fit: BoxFit.cover, + width: Get.width, + height: 50.h, + ) + : Image( + image: FileImage( + File( + kycController + .aadharBackImage + .value, + ), + ), + fit: BoxFit.cover, + width: Get.width, + height: 50.h, + ), ), - Positioned( - top: 6, - right: 10, - child: InkWell( - onTap: () { - kycController.aadharBackImage - .value = ""; - }, - child: SvgPicture.asset( - "assets/images/svg/cancel.svg", - width: 18, - height: 18, - ), - ), - ) + fromScreen == "sidemenu-flow" + ? SizedBox() + : Positioned( + top: 6, + right: 10, + child: InkWell( + onTap: () { + kycController + .aadharBackImage + .value = ""; + }, + child: SvgPicture.asset( + "assets/images/svg/cancel.svg", + width: 18, + height: 18, + ), + ), + ) ], ) : Center( @@ -563,13 +697,15 @@ class _KycState extends State { SizedBox( height: 70.h, ), - CommonBtn( - text: "Next", - onTap: () { - _addKyc(); - // Get.toNamed(RouteName.updateriskprofile); - }, - ), + fromScreen == "sidemenu-flow" + ? SizedBox() + : CommonBtn( + text: "Next", + onTap: () { + _addKyc(); + // Get.toNamed(RouteName.updateriskprofile); + }, + ), SizedBox( height: 10.h, ), diff --git a/lib/view/login/UpdateRiskProfile.dart b/lib/view/login/UpdateRiskProfile.dart index 41eaf81..d510fa0 100644 --- a/lib/view/login/UpdateRiskProfile.dart +++ b/lib/view/login/UpdateRiskProfile.dart @@ -8,7 +8,9 @@ import 'package:get/get.dart' hide FormData; import 'package:traderscircuit/Utils/Common/CommonAppbar.dart'; import 'package:traderscircuit/Utils/dialogs.dart'; import 'package:traderscircuit/Utils/text.dart'; +import 'package:traderscircuit/Utils/utils.dart'; import 'package:traderscircuit/controller/risk_profile_controller.dart'; +import 'package:traderscircuit/model/RiskProfileModel/get_user_risk_profile_model.dart'; import 'package:traderscircuit/model/RiskProfileModel/risk_profile_ques_answer_model.dart'; import 'package:traderscircuit/view/onBoarding/splashScreen1.dart'; @@ -32,6 +34,8 @@ class _UpdateRiskProfileState extends State { List answerIdList = []; List>> dropHeader = []; + String fromScreen = Get.arguments["fromScreen"]; + @override void initState() { RiskProfileApi().getRiskProfileData().then((value) { @@ -47,8 +51,23 @@ class _UpdateRiskProfileState extends State { dropHeader.add({a.question!: titleTxt}); } - log(dropHeader.toString()); - isLoading.value = false; + if (fromScreen == "sidemenu-flow") { + riskProfileController.selectedData.clear(); + RiskProfileApi().getUserRiskProfileData().then((value) { + GetUserRiskProfileModel getUserRiskProfileModel = + GetUserRiskProfileModel.fromJson(value.data); + for (var a in getUserRiskProfileModel.data!) { + questionIdList.add(a.questionId!); + answerIdList.add(a.answerId!); + riskProfileController.selectedData + .add({a.questionData!.question!: a.answerData!.answer!}); + } + isLoading.value = false; + setState(() {}); + }); + } else { + isLoading.value = false; + } }); super.initState(); } @@ -98,6 +117,9 @@ class _UpdateRiskProfileState extends State { CommonBtn( text: "Submit", onTap: () { + log(riskProfileController + .selectedData.length + .toString()); questionIdList.clear(); answerIdList.clear(); if (riskProfileController @@ -109,6 +131,7 @@ class _UpdateRiskProfileState extends State { utils.showToast( "All Fields Required"); } else { + Utils.loader(); // Iterate through selected data and match with provided data for (var entry in riskProfileController @@ -157,6 +180,7 @@ class _UpdateRiskProfileState extends State { jsonEncode(answerIdList), })) .then((value) { + Get.back(); Map responseData = Map.from( @@ -179,7 +203,10 @@ class _UpdateRiskProfileState extends State { .riskProfileQuestionAnswerModel .data![index] .question!, - "Select your goal", + riskProfileController + .riskProfileQuestionAnswerModel + .data![index] + .hint!, index); })), ], diff --git a/lib/view/login/VerifyOtp.dart b/lib/view/login/VerifyOtp.dart index b705e56..f636757 100644 --- a/lib/view/login/VerifyOtp.dart +++ b/lib/view/login/VerifyOtp.dart @@ -78,7 +78,9 @@ class _VerifyOTPState extends State { // ? Get.toNamed(RouteName.kyc) // : isriskProfileUpdated == 0 - ? Get.toNamed(RouteName.updateriskprofile) + ? Get.toNamed(RouteName.updateriskprofile, arguments: { + "fromScreen": "login-flow", + }) : Get.toNamed(RouteName.mainscreen); } else { Get.toNamed(RouteName.loginscreen); diff --git a/lib/view_model/KycApi/kyc_api.dart b/lib/view_model/KycApi/kyc_api.dart new file mode 100644 index 0000000..3745663 --- /dev/null +++ b/lib/view_model/KycApi/kyc_api.dart @@ -0,0 +1,21 @@ +import 'package:traderscircuit/Utils/api_urls.dart'; +import 'package:traderscircuit/Utils/base_manager.dart'; +import 'package:traderscircuit/data/network/network_api_services.dart'; + +class KycApi { + Future> getKycUserApi() async { + final response = + await NetworkApiServices().getApi(ApiUrls.getKyc, isAuth: true); + if (response.status == ResponseStatus.SUCCESS) { + Map responseData = + Map.from(response.data); + if (responseData['status'] == "success") { + return response; + } else { + return ResponseData( + responseData['message'], ResponseStatus.FAILED); + } + } + return response; + } +} diff --git a/lib/view_model/RiskProfileApi/risk_profile_api.dart b/lib/view_model/RiskProfileApi/risk_profile_api.dart index 3726185..2ed28c2 100644 --- a/lib/view_model/RiskProfileApi/risk_profile_api.dart +++ b/lib/view_model/RiskProfileApi/risk_profile_api.dart @@ -10,7 +10,7 @@ class RiskProfileApi { Future> getRiskProfileData() async { final response = await NetworkApiServices() .getApi(ApiUrls.getRiskProfileQuestionAnswerApi, isAuth: true); - log(response.data.toString()); + // log(response.data.toString()); if (response.status == ResponseStatus.SUCCESS) { Map responseData = Map.from(response.data); @@ -42,4 +42,22 @@ class RiskProfileApi { } return response; } + + Future> getUserRiskProfileData() async { + final response = await NetworkApiServices().getApi( + ApiUrls.getRiskProfile, + ); + // log(response.data.toString()); + if (response.status == ResponseStatus.SUCCESS) { + Map responseData = + Map.from(response.data); + if (responseData['status'] == "success") { + return response; + } else { + return ResponseData( + responseData['message'], ResponseStatus.FAILED); + } + } + return response; + } } diff --git a/pubspec.lock b/pubspec.lock index 466dcb5..26b4424 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -616,6 +616,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.9" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + url: "https://pub.dev" + source: hosted + version: "10.0.0" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + url: "https://pub.dev" + source: hosted + version: "2.0.1" lints: dependency: transitive description: @@ -684,26 +708,26 @@ packages: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" mime: dependency: transitive description: @@ -748,10 +772,10 @@ packages: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_drawing: dependency: transitive description: @@ -1302,6 +1326,14 @@ packages: url: "https://github.com/kishan06/videoPlayerKB.git" source: git version: "0.0.2" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + url: "https://pub.dev" + source: hosted + version: "13.0.0" wakelock: dependency: transitive description: @@ -1342,14 +1374,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.1" - web: - dependency: transitive - description: - name: web - sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 - url: "https://pub.dev" - source: hosted - version: "0.3.0" win32: dependency: transitive description: @@ -1375,7 +1399,5 @@ packages: source: hosted version: "6.3.0" sdks: - dart: ">=3.2.0-0 <4.0.0" flutter: ">=3.16.0" -