kyc and update risk profile api integration and issues fixed

This commit is contained in:
jayesh
2024-05-10 15:48:07 +05:30
parent a6df6e9be0
commit 112ece34cf
16 changed files with 610 additions and 170 deletions

View File

@@ -20,6 +20,7 @@ class CustomTextFormField extends StatefulWidget {
this.inputFormatters,
this.onInput,
this.onTap,
this.textCapV,
this.suffixIcon,
}) : super(key: key);
@@ -38,6 +39,7 @@ class CustomTextFormField extends StatefulWidget {
final dynamic inputFormatters;
final Function(String)? onInput;
final VoidCallback? onTap;
final TextCapitalization? textCapV;
final Widget? suffixIcon;
@override
@@ -93,6 +95,7 @@ class _CustomTextFormFieldState extends State<CustomTextFormField> {
autovalidateMode: AutovalidateMode.onUserInteraction,
obscureText: obscureText,
controller: widget.textEditingController,
textCapitalization: widget.textCapV ?? TextCapitalization.none,
decoration: InputDecoration(
hintStyle: TextStyle(color: Colors.white),
hintText: widget.hintText,

View File

@@ -133,20 +133,24 @@ class _CustomDropDownWidgetState extends State<CustomDropDownWidget> {
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,
),
),
),
),

View File

@@ -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";
}

View File

@@ -0,0 +1,76 @@
class GetKYCModel {
String? status;
int? statusCode;
String? message;
List<Data>? data;
GetKYCModel({this.status, this.statusCode, this.message, this.data});
GetKYCModel.fromJson(Map<String, dynamic> json) {
status = json['status'];
statusCode = json['status_code'];
message = json['message'];
if (json['data'] != null) {
data = <Data>[];
json['data'].forEach((v) {
data!.add(Data.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
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;
}
}

View File

@@ -0,0 +1,118 @@
class GetUserRiskProfileModel {
String? status;
int? statusCode;
String? message;
List<Data>? data;
GetUserRiskProfileModel(
{this.status, this.statusCode, this.message, this.data});
GetUserRiskProfileModel.fromJson(Map<String, dynamic> json) {
status = json['status'];
statusCode = json['status_code'];
message = json['message'];
if (json['data'] != null) {
data = <Data>[];
json['data'].forEach((v) {
data!.add(Data.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
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<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
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<String, dynamic> json) {
id = json['id'];
question = json['question'];
hint = json['hint'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
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<String, dynamic> json) {
id = json['id'];
answer = json['answer'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['answer'] = answer;
return data;
}
}

View File

@@ -35,7 +35,7 @@ class Data {
int? id;
String? question;
String? isActive;
String? hint;
String? createdAt;
String? updatedAt;
List<Answer>? 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;

View File

@@ -309,7 +309,7 @@ class _ShortTradeState extends State<ShortTrade> {
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<ShortTrade> {
date: callRecommendationsModel
.data!.exitedCalls![index].createdAt!,
premium:
"${callRecommendationsModel.data!.exitedCalls![index].stopLoss}",
"${callRecommendationsModel.data!.exitedCalls![index].currentPrice}",
price1:
"${callRecommendationsModel.data!.exitedCalls![index].targetPrice}",
stoploss:

View File

@@ -245,7 +245,9 @@ class _SideMenuState extends State<SideMenu> {
),
selected: true,
onTap: () {
Get.toNamed(RouteName.kyc);
Get.toNamed(RouteName.kyc, arguments: {
"fromScreen": "sidemenu-flow",
});
},
),
Container(
@@ -276,7 +278,9 @@ class _SideMenuState extends State<SideMenu> {
selected: true,
onTap: () {
setState(() {
Get.toNamed(RouteName.updateriskprofile);
Get.toNamed(RouteName.updateriskprofile, arguments: {
"fromScreen": "sidemenu-flow",
});
});
},
),

View File

@@ -94,7 +94,9 @@ class _AddDetailsState extends State<AddDetails> {
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'];

View File

@@ -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<Kyc> {
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<Kyc> {
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<Kyc> {
}
}
@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(
@@ -122,17 +179,23 @@ class _KycState extends State<Kyc> {
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(
@@ -185,33 +248,46 @@ class _KycState extends State<Kyc> {
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(
@@ -276,33 +352,46 @@ class _KycState extends State<Kyc> {
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(
@@ -338,7 +427,15 @@ class _KycState extends State<Kyc> {
height: 15.h,
),
CustomTextFormField(
enabled:
fromScreen == "sidemenu-flow" ? false : true,
textCapV: TextCapitalization.characters,
textEditingController: pannumber,
inputFormatters: [
AlphaNumericTextFormatter(),
UpperCaseTextFormatter(),
LengthLimitingTextInputFormatter(10),
],
),
SizedBox(
height: 15.h,
@@ -352,15 +449,24 @@ class _KycState extends State<Kyc> {
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(
@@ -413,33 +519,47 @@ class _KycState extends State<Kyc> {
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(
@@ -505,33 +625,47 @@ class _KycState extends State<Kyc> {
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(
@@ -558,13 +692,15 @@ class _KycState extends State<Kyc> {
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,
),

View File

@@ -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<UpdateRiskProfile> {
List<int> answerIdList = [];
List<Map<String, List<String>>> dropHeader = [];
String fromScreen = Get.arguments["fromScreen"];
@override
void initState() {
RiskProfileApi().getRiskProfileData().then((value) {
@@ -47,8 +51,23 @@ class _UpdateRiskProfileState extends State<UpdateRiskProfile> {
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<UpdateRiskProfile> {
CommonBtn(
text: "Submit",
onTap: () {
log(riskProfileController
.selectedData.length
.toString());
questionIdList.clear();
answerIdList.clear();
if (riskProfileController
@@ -109,6 +131,7 @@ class _UpdateRiskProfileState extends State<UpdateRiskProfile> {
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<UpdateRiskProfile> {
jsonEncode(answerIdList),
}))
.then((value) {
Get.back();
Map<String, dynamic>
responseData =
Map<String, dynamic>.from(
@@ -179,7 +203,10 @@ class _UpdateRiskProfileState extends State<UpdateRiskProfile> {
.riskProfileQuestionAnswerModel
.data![index]
.question!,
"Select your goal",
riskProfileController
.riskProfileQuestionAnswerModel
.data![index]
.hint!,
index);
})),
],

View File

@@ -84,9 +84,13 @@ class _VerifyOTPState extends State<VerifyOTP> {
isProfileUpdated == 0
? Get.toNamed(RouteName.adddetails)
: isKycUpdated == 0
? Get.toNamed(RouteName.kyc)
? Get.toNamed(RouteName.kyc, arguments: {
"fromScreen": "login-flow",
})
: isriskProfileUpdated == 0
? Get.toNamed(RouteName.updateriskprofile)
? Get.toNamed(RouteName.updateriskprofile, arguments: {
"fromScreen": "login-flow",
})
: Get.toNamed(RouteName.mainscreen);
// Get.toNamed(RouteName.mainscreen);

View File

@@ -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<ResponseData<dynamic>> getKycUserApi() async {
final response =
await NetworkApiServices().getApi(ApiUrls.getKyc, isAuth: true);
if (response.status == ResponseStatus.SUCCESS) {
Map<String, dynamic> responseData =
Map<String, dynamic>.from(response.data);
if (responseData['status'] == "success") {
return response;
} else {
return ResponseData<dynamic>(
responseData['message'], ResponseStatus.FAILED);
}
}
return response;
}
}

View File

@@ -10,7 +10,7 @@ class RiskProfileApi {
Future<ResponseData<dynamic>> 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<String, dynamic> responseData =
Map<String, dynamic>.from(response.data);
@@ -42,4 +42,22 @@ class RiskProfileApi {
}
return response;
}
Future<ResponseData<dynamic>> getUserRiskProfileData() async {
final response = await NetworkApiServices().getApi(
ApiUrls.getRiskProfile,
);
// log(response.data.toString());
if (response.status == ResponseStatus.SUCCESS) {
Map<String, dynamic> responseData =
Map<String, dynamic>.from(response.data);
if (responseData['status'] == "success") {
return response;
} else {
return ResponseData<dynamic>(
responseData['message'], ResponseStatus.FAILED);
}
}
return response;
}
}