· 6 years ago · Mar 12, 2020, 12:58 PM
1import 'package:flutter/material.dart';
2import 'package:ipartneragent/Model/get_hp_premium_details_model.dart';
3import 'package:ipartneragent/Model/health_protect_basic.dart';
4import 'package:ipartneragent/api_reponses/health_plan_master_response.dart';
5import 'package:ipartneragent/api_reponses/retail_login_response.dart';
6import 'package:flutter_secure_storage/flutter_secure_storage.dart';
7import 'package:ipartneragent/api_reponses/savedquoteResponse.dart';
8
9import 'package:ipartneragent/database/daos/ipartner_daos/state_list_dao.dart';
10import 'package:ipartneragent/database/dbs/ipartner_database.dart';
11import 'package:ipartneragent/database/entities/ipartner_entities/state_list_entity.dart';
12import 'package:ipartneragent/layouts/Health_Premiums/health_protect_premium.dart';
13import 'package:ipartneragent/layouts/Healtth_Wordings/health_protect_wording.dart';
14import 'package:ipartneragent/layouts/custom_platform/platform_alert_dialog.dart';
15import 'package:ipartneragent/layouts/health_policy_layout.dart';
16import 'package:ipartneragent/services/api_call.dart';
17
18import 'package:ipartneragent/utilities/Custom_TextStyles.dart';
19import 'package:ipartneragent/utilities/custom_colors.dart';
20import 'package:ipartneragent/utilities/custom_radio_text_group.dart';
21import 'package:ipartneragent/utilities/size_config.dart';
22import 'package:ipartneragent/widgets/colors.dart';
23import 'package:ipartneragent/widgets/constants.dart';
24import 'package:ipartneragent/widgets/custom_gradient_flat_button.dart';
25import 'package:step_slider/step_slider.dart';
26
27class HealthProtectQuotation extends StatefulWidget {
28 RetailLoginResponse retailLoginResponse;
29
30 HealthPlanMasterResponse healthPlanMasterResponse;
31
32 HealthProtectQuotation(
33 {@required this.healthPlanMasterResponse, this.retailLoginResponse});
34
35 @override
36 _HealthProtectQuotationState createState() => _HealthProtectQuotationState(
37 healthPlanMasterResponse, this.retailLoginResponse);
38}
39
40class _HealthProtectQuotationState extends State<HealthProtectQuotation> {
41 _HealthProtectQuotationState(
42 this.healthPlanMasterResponse, this.retailLoginResponse);
43
44 Key sliderKey = GlobalKey();
45
46 List<RadioWidgetModel> kerelaSelections = [
47 RadioWidgetModel(text: "Yes", isSelected: false),
48 RadioWidgetModel(text: "No", isSelected: false)
49 ];
50 List<RadioWidgetModel> addOn1Selections = [
51 RadioWidgetModel(text: "Yes", isSelected: false),
52 RadioWidgetModel(text: "No", isSelected: true)
53 ];
54 bool addOn1Status = true;
55
56 bool isAgeSelected;
57 bool isInfoButtonVisible = true;
58 int numberOfChildren;
59 double initialStep = 0;
60 bool yesSelected = false;
61 bool noSelected = true;
62 double selectedPremiumAmountGLobal = 00;
63
64 //bool isLoadingPremium;
65 bool isKerelaGSTSelected = false;
66 bool isKerelaSelected = false;
67 double annualSumInsured = 0.0;
68 int maxPremiumIndex;
69 double premiumAmount = 0;
70 int _currVal = 1;
71 String _currentAgeSelected = "Select Age of Eldest Member";
72 String _currentState;
73
74 // String _currentAge = "Select Age of Eldest Member";
75 RadioWidgetModel selectedPolicyTenure = RadioWidgetModel();
76 RadioWidgetModel selectedSubLimit =
77 RadioWidgetModel(text: "None", isSelected: true);
78 int numberOfSelectedChildren;
79 List<STATE_List> stateresponse = [];
80 RetailLoginResponse retailLoginResponse;
81 final HealthPlanMasterResponse healthPlanMasterResponse;
82
83 FlutterSecureStorage storage;
84 List<AdultResponse> adultResponseList = [];
85 List<AgeEldestDetail> ageList = [];
86 Set<double> premiumValuesRangeSet = {0};
87 List<double> premiumValuesRangeList = [0];
88 STATE_List selectedStateObject;
89 List<SubLimitResponse> subLimitResponseList;
90 IPartnerDatabase database;
91 StateListDao stateListDao;
92 HpSaveEditQuoteResponse primaryQuoteResponse = HpSaveEditQuoteResponse(
93 statusCode: 0, healthDetails: [HealthDetail(totalPremium: "0")]);
94 HpSaveEditQuoteResponse secondaryQuoteResponse = HpSaveEditQuoteResponse(
95 statusCode: 0, healthDetails: [HealthDetail(totalPremium: "0")]);
96 String saveEditQuoteResponseBody;
97 double annualSumInsured1 = 0;
98 double annualSumInsured2 = 0;
99
100 //bool isPlan1Selected;
101 //bool isPlan2Selected;
102 int noOfAdultsSelected;
103 int noOfKidsSelected;
104
105 // the variables for the list of years = and the sublimits to show to the use
106 List<RadioWidgetModel> availableYears = [];
107 List<RadioWidgetModel> availableSubLimits = [];
108
109 // bool showTable;
110 bool showTable = false;
111 bool isPlan1Selected = true;
112 bool isPlan2Selected = false;
113 bool isLoadingPremium = false;
114 bool isChild1Selected = true;
115 bool isChild2Selected = false;
116 bool isChild3Selected = false;
117 bool isAdult1Selected = false;
118 bool isAdult2Selected = false;
119 List<String> tenureSplitString = ["1"];
120
121 @override
122 void initState() {
123 // TODO: implement initState
124 super.initState();
125
126 asyncInit().then((stateList) {
127 setState(() {
128// Error handling if Status code of healthPlan master's status code is 0
129 (healthPlanMasterResponse.statusCode == 0 || healthPlanMasterResponse.statusCode == null) ? (){
130 PlatformAlertDialog(
131 title: "ICICI Lombard",
132 defaultActionText: "OK",
133 content: healthPlanMasterResponse.statusMessage,
134 action: PlatformAlertDialogAction(
135 onPressed: ()=>Navigator.pop(context),
136 child: Text('OK'),
137 ),
138 );
139 }()
140//If no error, proceeed with the apps flow.
141 :() {
142 showTable = false;
143 isPlan1Selected = true;
144 isPlan2Selected = false;
145 isLoadingPremium = false;
146 isChild1Selected = true;
147 isChild2Selected = false;
148 isChild3Selected = false;
149 isAdult1Selected = false;
150 isAdult2Selected = false;
151 noOfKidsSelected = int.parse(getNumberOfChildrenSelected(
152 isChild1Selected, isChild2Selected, isChild3Selected));
153 annualSumInsured = 0;
154 maxPremiumIndex =
155 healthPlanMasterResponse.sumInsuredDetails.length - 1;
156 _currentState = selectedStateObject.StateName;
157 print('Curent State: $_currentState');
158 adultResponseList = healthPlanMasterResponse.adultResponse;
159 numberOfChildren = getDefaultNumberOfChildren(adultResponseList[0]);
160 ageList = adultResponseList[0].ageEldestDetails;
161 getNumberOfChildrenSelected(
162 isChild1Selected, isChild2Selected, isChild3Selected);
163 print("Number of childeren: $numberOfChildren");
164 buildPRemiumAmountList(healthPlanMasterResponse);
165 subLimitResponseList = healthPlanMasterResponse.subLimitResponse;
166
167 annualSumInsured1 = 0;
168 annualSumInsured2 = 0;
169 if (healthPlanMasterResponse.tenure1YrVisible)
170 availableYears
171 .add(RadioWidgetModel(isSelected: true, text: "1 Year"));
172
173 if (healthPlanMasterResponse.tenure2YrVisible == true) {
174 (availableYears
175 .contains(RadioWidgetModel(isSelected: true, text: "1 Year")))
176 ? availableYears
177 .add(RadioWidgetModel(isSelected: false, text: "2 Years"))
178 : availableYears
179 .add(RadioWidgetModel(isSelected: true, text: "2 Years"));
180 }
181
182 if (healthPlanMasterResponse.tenure3YrVisible == true) {
183 (healthPlanMasterResponse.tenure1YrVisible == true ||
184 healthPlanMasterResponse.tenure2YrVisible == true)
185 ? availableYears
186 .add(RadioWidgetModel(isSelected: false, text: "3 Years"))
187 : RadioWidgetModel(isSelected: true, text: "3 Years");
188 }
189
190 print(availableYears);
191
192 selectedPolicyTenure =
193 availableYears.firstWhere((item) => item.isSelected == true);
194
195 availableSubLimits
196 .add(RadioWidgetModel(isSelected: true, text: "NONE"));
197 if (healthPlanMasterResponse.subLimitResponse
198 .contains(SubLimitResponse(subLimitValue: "A")))
199 availableSubLimits
200 .add(RadioWidgetModel(isSelected: false, text: "A"));
201 if (healthPlanMasterResponse.subLimitResponse
202 .contains(SubLimitResponse(subLimitValue: "B")))
203 availableSubLimits
204 .add(RadioWidgetModel(isSelected: false, text: "B"));
205 if (healthPlanMasterResponse.subLimitResponse
206 .contains(SubLimitResponse(subLimitValue: "C")))
207 availableSubLimits
208 .add(RadioWidgetModel(isSelected: false, text: "C"));
209
210 selectedSubLimit =
211 availableSubLimits.firstWhere((item) => item.isSelected == true);
212
213 print(availableSubLimits);
214 isAgeSelected = false;
215 }();
216 });
217
218 });
219 // initializeAllVariables();
220 // print('*******************INITIALIZE************************');
221 // print('${hpBasicInfoToJson(HpBasicInfo(
222 // numberOfAdults: int.parse(numberOfAdultsSelected()),
223 // numberOfKids: numberOfChildren,
224 // // sateResponse: selectedStateObject,
225 // subLimit: selectedSubLimit.text,
226 // ageOfEldestMember: _currentAge,
227 // amountInsured: int.parse(annualSumInsured1),
228 // tenure: selectedPolicyTenure.text
229
230 // ))}');
231 // print('*******************INITIALIZE************************');
232 }
233
234
235 Widget showErrorWidgetOnHealthPlanResponse(){
236 return (healthPlanMasterResponse.statusCode == 1) ?
237 Padding(
238 padding: const EdgeInsets.all(8.0),
239 child: Material(
240 color: Colors.black.withAlpha(7),
241 elevation: 0,
242 child: Container(
243 color: Colors.transparent,
244 height: 600,
245 width: double.infinity,
246 child: PlatformAlertDialog(
247 title: "ICICI Lombard",
248 defaultActionText: "OK",
249 content: healthPlanMasterResponse.statusMessage,
250 action: PlatformAlertDialogAction(
251 onPressed: ()=>Navigator.pop(context),
252 child: Text('OK'),
253 ),
254 ),
255 ),
256 ),
257 ):Container(
258 height: 500,
259 child:Center(child: CircularProgressIndicator())
260 );
261 }
262
263 void initializeAllVariables() {
264 setState(() {
265 _currentAgeSelected = "Select Age of Eldest Member";
266 showTable = false;
267 isPlan1Selected = true;
268 isPlan2Selected = false;
269 isLoadingPremium = false;
270 isChild1Selected = true;
271 isChild2Selected = false;
272 isChild3Selected = false;
273 isAdult1Selected = false;
274 isAdult2Selected = false;
275
276 annualSumInsured = 0;
277 maxPremiumIndex = healthPlanMasterResponse.sumInsuredDetails.length - 1;
278
279 _currentState = selectedStateObject.StateName;
280 print('Curent State: $_currentState');
281 adultResponseList = healthPlanMasterResponse.adultResponse;
282 numberOfChildren = getDefaultNumberOfChildren(adultResponseList[0]);
283 ageList = adultResponseList[0].ageEldestDetails;
284 getNumberOfChildrenSelected(
285 isChild1Selected, isChild2Selected, isChild3Selected);
286 print("Number of childeren: $numberOfChildren");
287 buildPRemiumAmountList(healthPlanMasterResponse);
288 subLimitResponseList = healthPlanMasterResponse.subLimitResponse;
289
290 annualSumInsured1 = 0;
291 annualSumInsured2 = 0;
292 if (healthPlanMasterResponse.tenure1YrVisible)
293 availableYears.add(RadioWidgetModel(isSelected: true, text: "1 Year"));
294
295 if (healthPlanMasterResponse.tenure2YrVisible == true) {
296 (availableYears
297 .contains(RadioWidgetModel(isSelected: true, text: "1 Year")))
298 ? availableYears
299 .add(RadioWidgetModel(isSelected: false, text: "2 Years"))
300 : availableYears
301 .add(RadioWidgetModel(isSelected: true, text: "2 Years"));
302 }
303
304 if (healthPlanMasterResponse.tenure3YrVisible == false) {
305 (healthPlanMasterResponse.tenure1YrVisible == true ||
306 healthPlanMasterResponse.tenure2YrVisible == true)
307 ? availableYears
308 .add(RadioWidgetModel(isSelected: false, text: "3 Years"))
309 : RadioWidgetModel(isSelected: true, text: "3 Years");
310 }
311
312 print(availableYears);
313
314 selectedPolicyTenure =
315 availableYears.firstWhere((item) => item.isSelected == true);
316
317 availableSubLimits.add(RadioWidgetModel(isSelected: true, text: "NONE"));
318 if (healthPlanMasterResponse.subLimitResponse
319 .contains(SubLimitResponse(subLimitValue: "A")))
320 availableSubLimits.add(RadioWidgetModel(isSelected: false, text: "A"));
321 if (healthPlanMasterResponse.subLimitResponse
322 .contains(SubLimitResponse(subLimitValue: "B")))
323 availableSubLimits.add(RadioWidgetModel(isSelected: false, text: "B"));
324 if (healthPlanMasterResponse.subLimitResponse
325 .contains(SubLimitResponse(subLimitValue: "C")))
326 availableSubLimits.add(RadioWidgetModel(isSelected: false, text: "C"));
327
328 selectedSubLimit =
329 availableSubLimits.firstWhere((item) => item.isSelected == true);
330
331 print(availableSubLimits);
332 isAgeSelected = false;
333 });
334 }
335
336 //The list to have various amount of premium values
337 void buildPRemiumAmountList(HealthPlanMasterResponse response) {
338 for (int i = 0; i < response.sumInsuredDetails.length; i++) {
339 setState(() {
340// premiumValuesRangeSet.add(response.sumInsuredDetails[i].sumAmount);
341 premiumValuesRangeList.add(response.sumInsuredDetails[i].sumAmount);
342 });
343 }
344//SOrt the list of all values from 0 to max value
345 for (int i = 0; i < premiumValuesRangeList.length; i++) {
346 for (int j = i + 1; j < premiumValuesRangeList.length; j++) {
347 if (premiumValuesRangeList[i] > premiumValuesRangeList[j]) {
348 double temp = premiumValuesRangeList[i];
349 premiumValuesRangeList[i] = premiumValuesRangeList[j];
350 premiumValuesRangeList[j] = temp;
351 }
352 }
353 }
354 setState(() {
355 premiumValuesRangeSet = premiumValuesRangeList.toSet();
356 });
357 print(premiumValuesRangeList);
358 print(premiumValuesRangeSet);
359 }
360
361 int getDefaultNumberOfChildren(AdultResponse adultResponse) {
362 int childDetailsLastIndex = adultResponse.childDetails.length - 1;
363
364 switch (adultResponse.childDetails[childDetailsLastIndex].noOfKids) {
365 case ("0"):
366 {
367 return 0;
368 }
369
370 case ("1"):
371 {
372 return 1;
373 }
374 case ("2"):
375 {
376 return 2;
377 }
378 case ("3"):
379 {
380 return 3;
381 }
382 }
383 storage = new FlutterSecureStorage();
384 }
385
386 Future<List<STATE_List>> asyncInit() async {
387 database =
388 await $FloorIPartnerDatabase.databaseBuilder('iPartner.db').build();
389
390 stateListDao = database.stateListDao;
391
392 var intrimList = await stateListDao.findAllStateList();
393 setState(() {
394 stateresponse = intrimList;
395 print('$stateresponse');
396 selectedStateObject = stateresponse[0];
397 });
398 return stateresponse;
399 }
400
401 bool ShowTableRow1;
402
403 @override
404 Widget build(BuildContext context) {
405 return Container(
406 margin: EdgeInsets.only(),
407 child: Column(children: [
408 Row(
409 crossAxisAlignment: CrossAxisAlignment.start,
410 children: <Widget>[
411 // Content on the Left Side
412 leftContainer(),
413 //Content on the Right Side
414 Expanded(child: rightContainer()),
415 ],
416 ),
417 SizedBox(
418 height: 20,
419 ),
420 Padding(
421 padding: EdgeInsets.symmetric(horizontal: 15),
422 child: Visibility(
423 replacement: (isLoadingPremium)
424 ? CircularProgressIndicator()
425 : SizedBox(
426 height: 0.1,
427 ),
428 visible: (showTable == false) ? false : true,
429 child: Table(
430 columnWidths: {
431 0: FractionColumnWidth(0.07),
432 2: FractionColumnWidth(0.3)
433 },
434 children: [
435 // Thes Column nmaes will go here:
436 TableRow(children: [
437 Text(''),
438 Center(
439 child: Text(
440 'Annual Sum Insured',
441 style: TextStyle(color: customcolor.textBorderColor),
442 ),
443 ),
444 Center(
445 child: Row(
446 mainAxisAlignment: MainAxisAlignment.spaceEvenly,
447 crossAxisAlignment: CrossAxisAlignment.start,
448 mainAxisSize: MainAxisSize.min,
449 children: [
450 Text('Premium',
451 style:
452 TextStyle(color: customcolor.textBorderColor)),
453 Visibility(
454 visible: isInfoButtonVisible,
455 child: GestureDetector(
456 onTap: () {
457// healthProtect_Wording(context);
458// },
459
460 //Makes sure every time the bottom sheet opens, keep "No" selected.
461
462 showModalBottomSheet(
463 context:
464 healthPolicyScaffoldKey.currentContext,
465 builder: (BuildContext bc) {
466 return StatefulBuilder(
467 builder: (BuildContext bc, setState) {
468 return Container(
469 decoration: BoxDecoration(
470 borderRadius:
471 BorderRadius.circular(15),
472 color: Color(0xffF8E2E0)),
473 height: 160,
474 child: Column(
475 children: <Widget>[
476 Material(
477 color: Color(0xffF8E2E5),
478 borderRadius:
479 BorderRadius.circular(15),
480 elevation: 10.0,
481 child: Container(
482 color: Color(0xffF8E2E5),
483
484 child: Table(
485 columnWidths: {
486 0: FractionColumnWidth(
487 0.9),
488 1: FractionColumnWidth(
489 0.1),
490 },
491 children: [
492 TableRow(children: [
493 Center(
494 child: Padding(
495 padding: EdgeInsets
496 .symmetric(
497 vertical: 5),
498 child: Text(
499 "Basic Covers",
500 style: TextStyle(
501 fontSize: 20,
502 color:
503 Colors.red,
504 fontWeight:
505 FontWeight
506 .bold),
507 ),
508 )),
509 Center(
510 child:
511 GestureDetector(
512 onTap: () =>
513 Navigator.pop(
514 context),
515 child: Image
516 .asset(
517 'assets/img/close_bg.png',
518 height:
519 35,
520 width: 50,
521 )))
522 ])
523 ],
524 ),
525
526// child: Row(
527//
528// children: <Widget>[
529// Padding(
530//
531// child: Text('Basic Covers'),
532// padding:EdgeInsets.only(left: 100),),
533//
534// Padding(
535// padding: EdgeInsets.only(left: 110,right: 10),
536// child: IconButton(icon: Icon(Icons.close),onPressed: (){}))
537// ],
538// mainAxisAlignment: MainAxisAlignment.spaceAround,
539// crossAxisAlignment: CrossAxisAlignment.center,
540// ),
541 ),
542 ),
543 SizedBox(
544 height: 10,
545 ),
546 Column(
547 crossAxisAlignment:
548 CrossAxisAlignment.start,
549 children: [
550 Padding(
551 padding:
552 EdgeInsets.only(
553 left: 20),
554 child: Text(
555 "Do you want to opt out of add-on-cover 1 ?",
556 style: TextStyle(
557 fontSize: 15,
558 color: customcolor
559 .redlighttext,
560 fontWeight:
561 FontWeight.bold,
562 ),
563 )),
564 SizedBox(
565 height: 15,
566 ),
567 Padding(
568 padding:
569 EdgeInsets.only(
570 left: 20),
571 child: Container(
572 height: 30,
573 child: Row(
574 children: <
575 Widget>[
576 GestureDetector(
577 child:
578 new Text(
579 "Yes",
580 style: TextStyle(
581 color: yesSelected
582 ? Colors
583 .black
584 : Color(
585 0xff858282),
586 fontWeight:
587 FontWeight
588 .bold,
589 fontSize:
590 16),
591 ),
592 onTap: () =>
593 setState(
594 () {
595 yesSelected =
596 true;
597 noSelected =
598 false;
599 }),
600 ),
601 SizedBox(
602 width: 20,
603 ),
604 Padding(
605 padding: const EdgeInsets
606 .only(
607 right:
608 05),
609 child:
610 GestureDetector(
611 child:
612 new Text(
613 "NO",
614 style: TextStyle(
615 color: (!yesSelected)
616 ? Colors
617 .black
618 : Color(
619 0xff858282),
620 fontWeight: FontWeight
621 .bold,
622 fontSize:
623 16),
624 ),
625 onTap: () =>
626 setState(
627 () {
628 noSelected =
629 true;
630 yesSelected =
631 false;
632 }),
633 ),
634 )
635 ],
636 ))),
637 Center(
638 child: FlatGradientButton(
639 height: 30,
640 text: "OK",
641 width: 100,
642 onPressed: () {
643 print(
644 "Yes Selected: $yesSelected");
645 print(
646 "No Selected: $noSelected");
647 calculatePremiums(
648 selectedPremiumAmountGLobal,
649 isKerelaGSTSelected,
650 addON1Status:
651 noSelected,
652 yearPremium: tenureSplitString[0]
653 );
654
655 Navigator.pop(
656 context);
657 },
658 ),
659 )
660 ])
661 ],
662 ),
663 );
664 });
665 });
666 },
667 child: Container(
668 width: 27,
669 height: 27,
670 decoration: BoxDecoration(
671 shape: BoxShape.circle,
672 color: Colors.green,
673 image: DecorationImage(
674 image:
675 AssetImage('assets/images/info.png'),
676 )),
677 )),
678 )
679 ],
680 ),
681 )
682 ]),
683
684 TableRow(
685 children: (secondaryQuoteResponse
686 .healthDetails[0].totalPremium !=
687 "Error" &&
688 secondaryQuoteResponse != null)
689 ? [
690 GestureDetector(
691 onTap: () {
692 setState(() {
693 if (isPlan1Selected) {
694 isPlan1Selected = false;
695 isPlan2Selected = true;
696 } else {
697 isPlan1Selected = true;
698 isPlan2Selected = false;
699 }
700
701 print("KIds: $noOfKidsSelected");
702 print("Adults: $noOfAdultsSelected");
703 print("AMOUNT: $annualSumInsured2");
704 (((noOfKidsSelected == 1 &&
705 noOfAdultsSelected == 0) ||
706 (noOfKidsSelected == 0 &&
707 noOfAdultsSelected == 1)) ||
708 (annualSumInsured2.floor() ==
709 300000 ||
710 annualSumInsured2.floor() ==
711 400000))
712 ? isInfoButtonVisible = false
713 : isInfoButtonVisible = true;
714 });
715 },
716 child: Padding(
717 padding: EdgeInsets.symmetric(vertical: 5),
718 child: Container(
719 decoration: BoxDecoration(
720 color: Colors.white,
721 border: Border.all(
722 color: customcolor.textBorderColor,
723 width: 0.9),
724 borderRadius: BorderRadius.circular(8)),
725 height: 28,
726 width: 28,
727 child: Center(
728 child: (isPlan1Selected)
729 ? Image.asset(
730 'assets/images/check.png',
731 scale: 2,
732 )
733 : Image.asset(
734 'assets/images/uncheck.png',
735 scale: 2,
736 ),
737 ),
738 ),
739 ),
740 ),
741 Padding(
742 padding: EdgeInsets.symmetric(
743 horizontal: 3, vertical: 5),
744 child: Container(
745 height: 30,
746 decoration: BoxDecoration(
747 border: Border.all(
748 color: customcolor.textBorderColor),
749 borderRadius: BorderRadius.circular(10)),
750 child: Center(
751 child: Text('${annualSumInsured2.floor()}'),
752 )),
753 ),
754 Padding(
755 padding:
756 EdgeInsets.only(left: 2, top: 5, bottom: 5),
757 child: Container(
758 height: 30,
759 decoration: BoxDecoration(
760 border: Border.all(
761 color: customcolor.textBorderColor),
762 borderRadius: BorderRadius.circular(10)),
763 child: Center(
764 child: (secondaryQuoteResponse
765 .healthDetails[0]
766 .totalPremium !=
767 null)
768 ? Text(
769 '${secondaryQuoteResponse.healthDetails[0].totalPremium}')
770 : SizedBox(
771 height: 20,
772 width: 20,
773 child: Center(
774 child: CircularProgressIndicator(
775 strokeWidth: 2,
776 ),
777 ),
778 ),
779 )),
780 )
781 ]
782 : [
783 SizedBox(
784 height: 0.1,
785 ),
786 SizedBox(
787 height: 0.1,
788 ),
789 SizedBox(
790 height: 0.1,
791 )
792 ]),
793
794 TableRow(children: [
795 GestureDetector(
796 onTap: () {
797 setState(() {
798 if (isPlan2Selected) {
799 isPlan2Selected = false;
800 isPlan1Selected = true;
801 } else {
802 isPlan2Selected = true;
803 isPlan1Selected = false;
804 }
805
806 print("KIds: $noOfKidsSelected");
807 print("Adults: $noOfAdultsSelected");
808 print("AMOUNT: $annualSumInsured1");
809 (((noOfKidsSelected == 1 && noOfAdultsSelected == 0) ||
810 (noOfKidsSelected == 0 &&
811 noOfAdultsSelected == 1)) ||
812 (annualSumInsured1.floor() == 300000 ||
813 annualSumInsured1.floor() == 400000))
814 ? isInfoButtonVisible = false
815 : isInfoButtonVisible = true;
816 });
817 },
818 child: Padding(
819 padding: EdgeInsets.symmetric(vertical: 5),
820 child: Container(
821 decoration: BoxDecoration(
822 color: Colors.white,
823 border: Border.all(
824 color: customcolor.textBorderColor, width: 0.9),
825 borderRadius: BorderRadius.circular(8)),
826 height: 28,
827 width: 28,
828 child: Center(
829 child: (isPlan2Selected)
830 ? Image.asset(
831 'assets/images/check.png',
832 scale: 2,
833 )
834 : Image.asset(
835 'assets/images/uncheck.png',
836 scale: 2,
837 ),
838 ),
839 ),
840 ),
841 ),
842 Padding(
843 padding: EdgeInsets.symmetric(horizontal: 3, vertical: 5),
844 child: Container(
845 height: 30,
846 decoration: BoxDecoration(
847 border:
848 Border.all(color: customcolor.textBorderColor),
849 borderRadius: BorderRadius.circular(10)),
850 child: Center(
851 child: Text('${annualSumInsured1.floor()}'),
852 )),
853 ),
854 Padding(
855 padding: EdgeInsets.only(top: 5, left: 2),
856 child: Container(
857 height: 30,
858 decoration: BoxDecoration(
859 border:
860 Border.all(color: customcolor.textBorderColor),
861 borderRadius: BorderRadius.circular(10)),
862 child: Center(
863 child: (primaryQuoteResponse.statusCode == 0)
864 ? Text('${primaryQuoteResponse.statusCode}')
865 : Text(
866 '${primaryQuoteResponse.healthDetails[0].totalPremium}'),
867 )),
868 )
869 ]),
870 ],
871 ),
872 ),
873 ),
874 SizedBox(
875 height: 10,
876 ),
877 stateSelector(),
878 SizedBox(
879 height: 20,
880 ),
881 Padding(
882 padding: EdgeInsets.only(left: 20),
883 child: Visibility(
884 visible: isKerelaSelected,
885 child: polarQuestionKerela(
886 questiontext: "Are you regeistered with GST ?",
887 questionContext: kerelaSelections),
888 ),
889 ),
890 SizedBox(
891 height: 20,
892 ),
893 FlatGradientButton(
894 text: 'Next',
895 height: 30,
896 width: 100,
897 onPressed: (isLoadingPremium == false && showTable == true)
898 ? () {
899 print('Kids: $noOfKidsSelected');
900 print('AdultS: $noOfAdultsSelected');
901 // Add Your Code here.
902
903 if (isAgeSelected) {
904 ((isKerelaSelected == true &&
905 kerelaSelections[0].isSelected == false &&
906 kerelaSelections[1].isSelected == false &&
907 showTable == true))
908 ? () {
909 PlatformAlertDialog(
910 title: 'ICICI Lombard',
911 content:
912 'Please Select if you are registered with GST or not',
913 defaultActionText: 'Ok',
914 action: PlatformAlertDialogAction(
915 child: Text('Ok'),
916 onPressed: () {
917//
918 Navigator.of(context).pop();
919 })).show(context);
920 }()
921 : () {
922 (isPlan1Selected)
923 ? Navigator.push(
924 context,
925 MaterialPageRoute(
926 builder: (context) =>
927 HealthProtectPremium(
928 savedquoate:
929 secondaryQuoteResponse,
930 hpBasicInfo: HpBasicInfo(
931 tenure:
932 selectedPolicyTenure.text,
933 amountInsured:
934 annualSumInsured2,
935 isGstRegistered:
936 isKerelaGSTSelected,
937 ageOfEldestMember:
938 _currentAgeSelected,
939 subLimit:
940 selectedSubLimit.text,
941 stateList:
942 selectedStateObject,
943 numberOfKids:
944 noOfKidsSelected,
945 numberOfAdults:
946 noOfAdultsSelected),
947 )))
948 : Navigator.push(
949 context,
950 MaterialPageRoute(
951 builder: (context) => HealthProtectPremium(
952 savedquoate: primaryQuoteResponse,
953 hpBasicInfo: HpBasicInfo(
954 tenure:
955 selectedPolicyTenure.text,
956 amountInsured:
957 annualSumInsured1,
958 ageOfEldestMember:
959 _currentAgeSelected,
960 subLimit: selectedSubLimit.text,
961 isGstRegistered:
962 isKerelaGSTSelected,
963 stateList: selectedStateObject,
964 numberOfKids: noOfKidsSelected,
965 numberOfAdults:
966 noOfAdultsSelected))));
967 }();
968 } else {
969 PlatformAlertDialog(
970 title: 'ICICI Lombard',
971 content: 'Please Select Age of Eldest member First',
972 defaultActionText: 'Ok',
973 action: PlatformAlertDialogAction(
974 child: Text('OK'),
975 onPressed: () {
976 setState(() {
977 isLoadingPremium = false;
978 showTable = false;
979 _currentAgeSelected = "Select Age of Eldest Member";
980 Navigator.pop(context);
981 });
982 },
983 ),
984 ).show(context);
985 }
986 }
987 : null,
988 ),
989 SizedBox(
990 height: 20,
991 )
992 ]),
993 );
994 }
995
996//-----------------------The Custom Widgets Go Here--------------+
997 Widget adult1() {
998 return GestureDetector(
999 onTap: () {
1000 setState(() {
1001// isAdult1Selected = !isAdult1Selected;
1002 // isAdult2Selected = false;
1003 isChild1Selected = false;
1004 if (isAdult1Selected == true && isAdult2Selected == true) {
1005 isAdult2Selected = false;
1006 annualSumInsured1 = 0;
1007 annualSumInsured2 = 0;
1008 annualSumInsured = 0;
1009 isAdult2Selected = false;
1010 _currentAgeSelected = "Select Age of Eldest Member";
1011 numberOfChildren = getDefaultNumberOfChildren(adultResponseList[1]);
1012 print('default Child: $numberOfChildren');
1013 ageList = adultResponseList[1].ageEldestDetails;
1014 } else if (isAdult1Selected == true && isAdult2Selected == false) {
1015 isAdult1Selected = false;
1016 numberOfChildren = getDefaultNumberOfChildren(adultResponseList[0]);
1017 _currentAgeSelected = "Select Age of Eldest Member";
1018 ageList = adultResponseList[0].ageEldestDetails;
1019 getNumberOfChildrenSelected(
1020 isChild1Selected, isChild2Selected, isChild3Selected);
1021 }
1022
1023 else {
1024 isAdult1Selected = true;
1025 _currentAgeSelected = "Select Age of Eldest Member";
1026 numberOfChildren = getDefaultNumberOfChildren(adultResponseList[1]);
1027 ageList = adultResponseList[1].ageEldestDetails;
1028 }
1029
1030 noOfAdultsSelected = int.parse(numberOfAdultsSelected());
1031 isLoadingPremium = false;
1032 showTable = false;
1033 });
1034 },
1035 child: Padding(
1036 padding: EdgeInsets.only(left: 0, top: 10, bottom: 15, right: 5),
1037 child: Container(
1038 width: 35,
1039 height: 35,
1040 child: (isAdult1Selected)
1041 ? Image(
1042 image: AssetImage('assets/images/man_check.png'),
1043 fit: BoxFit.fitHeight,
1044 )
1045 : Image(
1046 image: AssetImage('assets/images/man_uncheck.png'),
1047 fit: BoxFit.fitHeight,
1048 ),
1049 ),
1050 ),
1051 );
1052 }
1053
1054 Widget adult2() {
1055 return GestureDetector(
1056 onTap: () {
1057 setState(() {
1058
1059 annualSumInsured1 = 0;
1060 annualSumInsured2 = 0;
1061 annualSumInsured = 0;
1062 isAdult2Selected = true;
1063 isAdult1Selected = true;
1064 _currentAgeSelected = "Select Age of Eldest Member";
1065 numberOfChildren = getDefaultNumberOfChildren(adultResponseList[2]);
1066 ageList = adultResponseList[2].ageEldestDetails;
1067 noOfAdultsSelected = int.parse(numberOfAdultsSelected());
1068 isLoadingPremium = false;
1069 showTable = false;
1070 });
1071 },
1072 child: Padding(
1073 padding: EdgeInsets.only(left: 0, top: 10, bottom: 15, right: 5),
1074 child: Container(
1075 width: 35,
1076 height: 35,
1077 child: (isAdult2Selected)
1078 ? Image(
1079 image: AssetImage('assets/images/man_check.png'),
1080 fit: BoxFit.fitHeight,
1081 )
1082 : Image(
1083 image: AssetImage('assets/images/man_uncheck.png'),
1084 fit: BoxFit.fitHeight,
1085 ),
1086 ),
1087 ),
1088 );
1089 }
1090
1091 Widget child1() {
1092 return GestureDetector(
1093 onTap: () {
1094 setState(() {
1095 isChild1Selected = !isChild1Selected;
1096 getNumberOfChildrenSelected(
1097 isChild1Selected, isChild2Selected, isChild3Selected);
1098 noOfKidsSelected = int.parse(getNumberOfChildrenSelected(
1099 isChild1Selected, isChild2Selected, isChild3Selected));
1100 annualSumInsured = 0;
1101 _currentAgeSelected = "Select Age of Eldest Member";
1102 isLoadingPremium = false;
1103 showTable = false;
1104 });
1105 },
1106 child: Padding(
1107 padding: EdgeInsets.only(left: 0, top: 10, bottom: 15, right: 5),
1108 child: Container(
1109 width: 35,
1110 height: 35,
1111 child: (isChild1Selected)
1112 ? Image(
1113 image: AssetImage('assets/images/child_check.png'),
1114 fit: BoxFit.fitHeight,
1115 )
1116 : Image(
1117 image: AssetImage('assets/images/child_uncheck.png'),
1118 fit: BoxFit.fitHeight,
1119 ),
1120 ),
1121 ),
1122 );
1123 }
1124
1125 Widget child2() {
1126 return GestureDetector(
1127 onTap: () {
1128 setState(() {
1129 isChild2Selected = !isChild2Selected;
1130 getNumberOfChildrenSelected(
1131 isChild1Selected, isChild2Selected, isChild3Selected);
1132 noOfKidsSelected = int.parse(getNumberOfChildrenSelected(
1133 isChild1Selected, isChild2Selected, isChild3Selected));
1134 _currentAgeSelected = "Select Age of Eldest Member";
1135 annualSumInsured = 0;
1136 isLoadingPremium = false;
1137 showTable = false;
1138 });
1139 },
1140 child: Padding(
1141 padding: EdgeInsets.only(left: 0, top: 10, bottom: 15, right: 5),
1142 child: Container(
1143 width: 35,
1144 height: 35,
1145 child: (isChild2Selected)
1146 ? Image(
1147 image: AssetImage('assets/images/child_check.png'),
1148 fit: BoxFit.fitHeight,
1149 )
1150 : Image(
1151 image: AssetImage('assets/images/child_uncheck.png'),
1152 fit: BoxFit.fitHeight,
1153 ),
1154 ),
1155 ),
1156 );
1157 }
1158
1159 Widget child3() {
1160 return GestureDetector(
1161 onTap: () {
1162 setState(() {
1163 isChild3Selected = !isChild3Selected;
1164 getNumberOfChildrenSelected(
1165 isChild1Selected, isChild2Selected, isChild3Selected);
1166 noOfKidsSelected = int.parse(getNumberOfChildrenSelected(
1167 isChild1Selected, isChild2Selected, isChild3Selected));
1168 isLoadingPremium = false;
1169 annualSumInsured = 0;
1170 _currentAgeSelected = "Select Age of Eldest Member";
1171 showTable = false;
1172 });
1173 },
1174 child: Padding(
1175 padding: EdgeInsets.only(left: 0, top: 10, bottom: 15, right: 5),
1176 child: Container(
1177 height: 35,
1178 width: 35,
1179 child: (isChild3Selected)
1180 ? Image(
1181 image: AssetImage('assets/images/child_check.png'),
1182 fit: BoxFit.fitHeight,
1183 )
1184 : Image(
1185 image: AssetImage('assets/images/child_uncheck.png'),
1186 fit: BoxFit.fitHeight,
1187 ))));
1188 }
1189
1190//Yes-No question to select if customer is registered with gst in kerela or not.
1191 Widget polarQuestionKerela(
1192 {String questiontext, List<RadioWidgetModel> questionContext}) {
1193 return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
1194 Text(
1195 questiontext,
1196 style: TextStyle(
1197 color: customcolor.redlighttext,
1198 fontWeight: FontWeight.bold,
1199 fontSize: 11),
1200 ),
1201 Container(
1202 height: 50,
1203 child: Container(
1204 height: 30,
1205 child: ListView.builder(
1206 scrollDirection: Axis.horizontal,
1207 itemCount: questionContext.length,
1208 itemBuilder: (BuildContext context, int index) {
1209 return new InkWell(
1210 //highlightColor: Colors.red,
1211 splashColor: Colors.blueAccent,
1212 onTap: () {
1213 setState(() {
1214 questionContext
1215 .forEach((element) => element.isSelected = false);
1216 questionContext[index].isSelected = true;
1217
1218 (questionContext[index].text.toLowerCase() == "yes")
1219 ? () {
1220 setState(() {
1221 isKerelaGSTSelected = true;
1222 calculatePremiums(selectedPremiumAmountGLobal,
1223 isKerelaGSTSelected,
1224 addON1Status: noSelected,
1225 yearPremium: tenureSplitString[0]
1226 );
1227 });
1228 }()
1229 : () {
1230 setState(() {
1231 isKerelaGSTSelected = false;
1232 calculatePremiums(selectedPremiumAmountGLobal,
1233 isKerelaGSTSelected,
1234 addON1Status: noSelected,yearPremium: tenureSplitString[0]);
1235 });
1236 }();
1237 });
1238 },
1239 child: new AnswerRadioItem(questionContext[index]),
1240 );
1241 })),
1242 )
1243 ]);
1244 }
1245
1246//Yes-No question widget for asking user to opt out/not of addon1 Cover
1247
1248 Widget stateSelector() {
1249 String stateName;
1250 return Column(
1251 crossAxisAlignment: CrossAxisAlignment.start,
1252 children: <Widget>[
1253 Padding(
1254 padding: EdgeInsets.only(left: 20),
1255 child: Text(
1256 'Customer State (Applicable for GST)',
1257 style: CustomTextStyles.policyDetailHeadingTextStyle,
1258 ),
1259 ),
1260 GestureDetector(
1261 child: Container(
1262 margin: EdgeInsets.only(left: 20, right: 20),
1263 color: Colors.transparent,
1264 child: Row(
1265 mainAxisAlignment: MainAxisAlignment.spaceBetween,
1266 children: <Widget>[
1267 Flexible(
1268 child: Text(
1269 '$_currentState',
1270 overflow: TextOverflow.ellipsis,
1271 style: TextStyle(
1272 color: Color(0xff4b4b4b),
1273 fontWeight: FontWeight.bold,
1274 fontSize: 15),
1275 ),
1276 ),
1277 Padding(
1278 padding: EdgeInsets.only(right: 15),
1279 child: Icon(
1280 Icons.keyboard_arrow_down,
1281 size: SizeConfig.blockSizeHorizontal * 6,
1282 )),
1283 ],
1284 ),
1285 ),
1286 onTap: () async {
1287 String productName = await showDialog(
1288 barrierDismissible: false,
1289 context: context,
1290 builder: (BuildContext context) {
1291 return AlertDialog(
1292 shape: RoundedRectangleBorder(
1293 borderRadius: BorderRadius.all(Radius.circular(20.0))),
1294 title: Center(child: Text('Select Customer State')),
1295 content: StatefulBuilder(
1296 builder: (context, setState) {
1297 return SingleChildScrollView(
1298 child: Column(
1299 mainAxisSize: MainAxisSize.min,
1300 children: stateresponse.map((stateresponse) {
1301 return RadioListTile(
1302 controlAffinity:
1303 ListTileControlAffinity.trailing,
1304 selected: false,
1305 title: Text('${stateresponse.StateName}'),
1306 groupValue: _currVal,
1307 value: stateresponse.StateID,
1308 onChanged: (val) {
1309 setState(() {
1310 _currVal = val;
1311 selectedStateObject = stateresponse;
1312 (selectedStateObject.StateID == 62)
1313 ? () {
1314 isKerelaSelected = true;
1315 kerelaSelections = [
1316 RadioWidgetModel(
1317 text: "Yes",
1318 isSelected: false),
1319 RadioWidgetModel(
1320 text: "No", isSelected: false)
1321 ];
1322 print(
1323 'Kerela selected: $isKerelaSelected');
1324 }()
1325 : () {
1326 isKerelaSelected = false;
1327 isKerelaGSTSelected = false;
1328 print(
1329 'Kerela selected: $isKerelaSelected');
1330 (isAgeSelected)
1331 ? calculatePremiums(
1332 selectedPremiumAmountGLobal,
1333 isKerelaGSTSelected,
1334 yearPremium: tenureSplitString[0],
1335 addON1Status: addOn1Status
1336 )
1337 : PlatformAlertDialog(
1338 title: 'ICICI Lombard',
1339 content:
1340 '${primaryQuoteResponse.statusMessage}',
1341 defaultActionText: 'Ok',
1342 action:
1343 PlatformAlertDialogAction(
1344 child: Text('Ok'),
1345 onPressed: () {
1346 setState(() {
1347 isLoadingPremium =
1348 false;
1349 showTable =
1350 false;
1351 _currentAgeSelected =
1352 "Select Age of Eldest Member";
1353 });
1354 Navigator.of(
1355 context)
1356 .pop();
1357 })).show(context);
1358 }();
1359
1360 // print(
1361 // 'Selected State: ${selectedStateObject.stateName}');
1362 });
1363 print(
1364 'Selected this: ${stateresponse.StateName}');
1365 Navigator.of(context)
1366 .pop(selectedStateObject.StateName);
1367 },
1368 );
1369 }).toList(),
1370 ),
1371 );
1372 },
1373 ),
1374 );
1375 },
1376 );
1377 setState(() {
1378 _currentState = (productName != null)
1379 ? productName
1380 : stateresponse[0].StateName;
1381 print('selected value: $productName');
1382 });
1383 })
1384 ],
1385 );
1386 }
1387
1388 Widget leftContainer({AdultResponse AdultResponse}) {
1389 return Padding(
1390 padding: EdgeInsets.only(left: 15),
1391 child: Container(
1392 //margin: EdgeInsets.only(left:double 20),
1393 color: Colors.transparent,
1394
1395 width: SizeConfig.blockSizeVertical * 22,
1396 child: Column(
1397 mainAxisAlignment: MainAxisAlignment.start,
1398 mainAxisSize: MainAxisSize.min,
1399 crossAxisAlignment: CrossAxisAlignment.stretch,
1400 children: <Widget>[
1401 Text(
1402 "Number of Adults (21yrs and above)-",
1403 style: CustomTextStyles.policyDetailHeadingTextStyle,
1404 ),
1405 Text(
1406 "${numberOfAdultsSelected()}",
1407 style: CustomTextStyles.memberSelectionTextStlyle,
1408 ),
1409 Row(
1410 children: <Widget>[adult1(), adult2()],
1411 ),
1412 SizedBox(
1413 height: 10,
1414 ),
1415 Text(
1416 'Age of Eldest Member (yrs)',
1417 style: CustomTextStyles.memberSelectionTextStlyle,
1418 ),
1419 SizedBox(
1420 height: 10,
1421 ),
1422 GestureDetector(
1423 child: Container(
1424 color: Colors.transparent,
1425 child: Row(
1426 mainAxisAlignment: MainAxisAlignment.spaceBetween,
1427 children: <Widget>[
1428 Flexible(
1429 child: Text(
1430 '$_currentAgeSelected',
1431 overflow: TextOverflow.ellipsis,
1432 style: TextStyle(
1433 color: Color(0xff4b4b4b),
1434 fontWeight: FontWeight.bold,
1435 fontSize: 15),
1436 ),
1437 ),
1438 Padding(
1439 padding: EdgeInsets.only(right: 15),
1440 child: Icon(
1441 Icons.keyboard_arrow_down,
1442 size: SizeConfig.blockSizeHorizontal * 6,
1443 )),
1444 ],
1445 ),
1446 ),
1447 onTap: () async {
1448
1449
1450 setState(() {
1451 _currentAgeSelected = "Select Age of Eldest Member";
1452 annualSumInsured1 = 0;
1453 annualSumInsured2 = 0;
1454 annualSumInsured = 0;
1455 });
1456 setState(() {
1457 showTable = false;
1458 isLoadingPremium = false;
1459 _currentAgeSelected = "Select Age of Eldest Member";
1460 annualSumInsured1 = 0;
1461 annualSumInsured2 = 0;
1462 annualSumInsured = 0;
1463
1464 });
1465 _currentAgeSelected = await showDialog(
1466 context: context,
1467 builder: (BuildContext context) {
1468 return AlertDialog(
1469 shape: RoundedRectangleBorder(
1470 borderRadius:
1471 BorderRadius.all(Radius.circular(20.0))),
1472 title: Center(child: Text('Select Customer Age')),
1473 content: StatefulBuilder(
1474 builder: (context, setState) {
1475 return WillPopScope(
1476 onWillPop: () async {
1477 setState(() {
1478 _currentAgeSelected =
1479 "Select Age of Eldest Member";
1480 });
1481 return false;
1482 },
1483 child: SingleChildScrollView(
1484 child: Column(
1485 mainAxisSize: MainAxisSize.min,
1486 children: ageList.map((ageObject) {
1487 return RadioListTile(
1488 controlAffinity:
1489 ListTileControlAffinity.trailing,
1490 title: Text('${ageObject.ageValue}'),
1491 groupValue: _currentAgeSelected,
1492 value: ageObject.ageValue,
1493 onChanged: (val) {
1494 setState(() {
1495 _currentAgeSelected = val.toString();
1496// initialStep = 300000;
1497// print('InitialStep: $initialStep');
1498 annualSumInsured = 0;
1499 isAgeSelected = true;
1500 showTable = false;
1501 });
1502 print(
1503 'Selected this: ${ageObject.ageValue}');
1504 (_currentAgeSelected != null)
1505 ? _currentAgeSelected =
1506 _currentAgeSelected
1507 : _currentAgeSelected =
1508 "Select Age of Eldest Member";
1509 Navigator.of(context)
1510 .pop(_currentAgeSelected);
1511 },
1512 );
1513 }).toList(),
1514 ),
1515 ),
1516 );
1517 },
1518 ),
1519 );
1520 },
1521 );
1522 setState(() {
1523 _currentState = (_currentState != null)
1524 ? _currentState
1525 : 'Select Age of Eldest Member';
1526 print('selected value: $_currentState');
1527 updateMethod();
1528 });
1529
1530setState(() {
1531 buildPRemiumAmountList(healthPlanMasterResponse);
1532
1533 });
1534
1535 },
1536 ),
1537 SizedBox(
1538 height: 10,
1539 ),
1540 Text(
1541 'Annual Sum Insured',
1542 style: CustomTextStyles.memberSelectionTextStlyle,
1543 ),
1544 SizedBox(
1545 height: 3,
1546 ),
1547 Center(
1548 child: Text(
1549 '${annualSumInsured.floor()}',
1550 style: TextStyle(fontSize: 20),
1551 ),
1552 ),
1553
1554
1555 _currentAgeSelected == null ||
1556 _currentAgeSelected ==
1557 "Select Age of Eldest Member" ||
1558 _currentAgeSelected == ''?
1559 SliderTheme(
1560 data: SliderThemeData(
1561 overlayColor: Colors.transparent,
1562 trackHeight: 7,
1563 thumbColor: Color(0xff800020),
1564 activeTrackColor: Colors.grey,
1565 inactiveTrackColor: Colors.grey,
1566 thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7)),
1567 child: Slider(
1568 divisions: 10,
1569 max: 100,
1570 value: 0,
1571 onChanged: (val){
1572 validateSlider();
1573 },
1574
1575
1576 )):
1577
1578
1579 SliderTheme(
1580 data: SliderThemeData(
1581 overlayColor: Colors.transparent,
1582 trackHeight: 7,
1583 thumbColor: Color(0xff800020),
1584 activeTrackColor: Colors.grey,
1585 inactiveTrackColor: Colors.grey,
1586 thumbShape: RoundSliderThumbShape(enabledThumbRadius: 7)),
1587 child: StepSlider(
1588 key: sliderKey,
1589 min: premiumValuesRangeSet.first,
1590 max: premiumValuesRangeSet
1591 .elementAt(premiumValuesRangeSet.length - 1),
1592 steps: premiumValuesRangeSet,
1593 initialStep: initialStep,
1594 //premiumValuesRange.elementAt(0),s
1595//divisions: premiumValuesRange.length-1,
1596 animCurve: Curves.ease,
1597 //animDuration: Duration(seconds: 1),
1598// snapMode: SnapMode.value(10),
1599 hardSnap: true,
1600 onStepChanged: (stepValue) {
1601 setState(() {
1602 yesSelected = false;
1603 noSelected = true;
1604
1605 selectedPremiumAmountGLobal = stepValue;
1606 });
1607 calculatePremiums(
1608 selectedPremiumAmountGLobal, isKerelaGSTSelected,yearPremium: tenureSplitString[0],addON1Status: addOn1Status);
1609 })),
1610 Row(
1611 mainAxisAlignment: MainAxisAlignment.spaceBetween,
1612 children: <Widget>[
1613 Padding(
1614 padding: EdgeInsets.only(
1615 left: SizeConfig.blockSizeHorizontal * 3),
1616 child: Text('0', style: TextStyle(fontSize: 12))),
1617 Padding(
1618 padding: EdgeInsets.only(
1619 right: SizeConfig.blockSizeHorizontal * 4),
1620 child: Text(
1621 '${premiumValuesRangeList[premiumValuesRangeList.length - 1].floor()} ',
1622 style: TextStyle(fontSize: 12),
1623 ))
1624 ],
1625 ),
1626 ],
1627 ),
1628 ),
1629 );
1630 }
1631
1632
1633 void validateSlider(){
1634 if (_currentAgeSelected == null ||
1635 _currentAgeSelected ==
1636 "Select Age of Eldest Member" ||
1637 _currentAgeSelected == ''){
1638 PlatformAlertDialog(
1639 title: 'ICICI Lombard',
1640 content:
1641 'Please Select Age of Eldest member First',
1642 defaultActionText: 'Ok',
1643 action: PlatformAlertDialogAction(
1644 child: Text('Ok'),
1645 onPressed: () {
1646 setState(() {
1647 annualSumInsured = 0;
1648 isLoadingPremium = false;
1649 showTable = false;
1650 _currentAgeSelected =
1651 "Select Age of Eldest Member";
1652 isAgeSelected = false;
1653 Navigator.pop(context);
1654 });
1655 },
1656 )).show(context);
1657
1658 }
1659 }
1660
1661 calculatePremiums(double stepValue, bool isGSTRegistered,
1662 {bool addON1Status , String yearPremium, }) {
1663 print("recieved add on as : $addON1Status");
1664
1665 bool addOnPrimary = true;
1666 if (stepValue.floor() == 300000 || stepValue.floor() == 400000) {
1667 setState(() {
1668 addOnPrimary = true;
1669 });
1670 } else {
1671 setState(() {
1672 (addON1Status != null)
1673 ? addOnPrimary = addON1Status
1674 : addOnPrimary = true;
1675 });
1676 }
1677
1678 bool addOnSecondary = true;
1679
1680 List<dynamic> memeberList = [
1681 {"AddOnName": "Adult1", "AddOnAgeGroup": _currentAgeSelected}
1682 ];
1683
1684 if (stepValue == 0) {
1685 setState(() {
1686 annualSumInsured = 0;
1687 isLoadingPremium = false;
1688 showTable = false;
1689 });
1690 } else {
1691 setState(() {
1692 isLoadingPremium = true;
1693 showTable = false;
1694 print('isLOadingpremium: $isLoadingPremium');
1695 });
1696 if (isAgeSelected &&
1697 (_currentAgeSelected != null &&
1698 _currentAgeSelected != "Select Age of Eldest Member" &&
1699 _currentAgeSelected != '')) {
1700 setState(() {
1701 List a = [];
1702 a.addAll(premiumValuesRangeSet);
1703 annualSumInsured = stepValue;
1704 buildPRemiumAmountList(healthPlanMasterResponse);
1705 annualSumInsured1 = stepValue;
1706
1707// print('Adults: $numberOfAdultsSelected()');
1708// String kids = getNumberOfChildrenSelected(
1709// isChild1Selected,
1710// isChild2Selected,
1711// isChild3Selected);
1712// print('Kids: $kids');
1713 if (stepValue != a[a.length - 1]) {
1714 annualSumInsured2 = a[a.indexOf(stepValue) + 1];
1715
1716 noOfAdultsSelected = int.parse(numberOfAdultsSelected());
1717 noOfKidsSelected = int.parse(getNumberOfChildrenSelected(
1718 isChild1Selected, isChild2Selected, isChild3Selected));
1719
1720 GetHpPremiumDetailModel modelBody = GetHpPremiumDetailModel(
1721 productType: "CHI",
1722 userId: retailLoginResponse.userId,
1723 userType: "Agent",
1724 addOn1: addOnPrimary.toString(),
1725 addOn3: "false",
1726 addOn5: "false",
1727 addOn6: "false",
1728 noOfAdults: numberOfAdultsSelected(),
1729 noOfKids: getNumberOfChildrenSelected(
1730 isChild1Selected, isChild2Selected, isChild3Selected),
1731 ageGroup1: _currentAgeSelected,
1732 ageGroup2: "",
1733 ageGroup: _currentAgeSelected,
1734 chiProductName: "PROTECT",
1735 subLimit: null,
1736 yearPremium: yearPremium,
1737 isJammuKashmir: "false",
1738 volDedutible: "0",
1739 gstStateCode: selectedStateObject.GSTStateCode,
1740 insuredAmount: stepValue.floor().toString(),
1741 gstStateName: selectedStateObject.StateName,
1742 isGstRegistered: isGSTRegistered,
1743 members: memeberList,
1744 addOn6Members: []);
1745
1746 String body = getHpPremiumDetailModelToJson(modelBody);
1747
1748 print(body);
1749
1750 ApiCall.getEditQuoteResponse('IM-501267', 'manita54321', body)
1751 .then((responseBody) {
1752 setState(() {
1753 saveEditQuoteResponseBody = responseBody;
1754 primaryQuoteResponse =
1755 hpSaveEditQuoteResponseFromJson(saveEditQuoteResponseBody);
1756
1757 isLoadingPremium = true;
1758
1759 if (primaryQuoteResponse.statusCode == 0) {
1760 isLoadingPremium = false;
1761
1762 PlatformAlertDialog(
1763 title: 'ICICI Lombard',
1764 content: '${primaryQuoteResponse.statusMessage}',
1765 defaultActionText: 'Ok',
1766 action: PlatformAlertDialogAction(
1767 child: Text('Ok'),
1768 onPressed: () {
1769 setState(() {
1770 isLoadingPremium = false;
1771 showTable = false;
1772 _currentAgeSelected =
1773 "Select Age of Eldest Member";
1774 });
1775 Navigator.of(context).pop();
1776 })).show(context);
1777 }
1778 print(
1779 'Primary Response: ${hpSaveEditQuoteResponseToJson(primaryQuoteResponse)}');
1780 });
1781 }).whenComplete(() {
1782 //body when calling api for the next amountInsured.
1783 if (annualSumInsured2.floor == 300000 ||
1784 annualSumInsured2.floor() == 400000) {
1785 setState(() {
1786 addOnSecondary = true;
1787 });
1788 } else {
1789 setState(() {
1790// addOnSecondary = addON1Status;
1791 (addON1Status != null)
1792 ? addOnSecondary = addON1Status
1793 : addOnSecondary = true;
1794// if(addON1Status == true){addOnSecondary = false;}else{addOnSecondary = true;}
1795 });
1796 }
1797
1798 GetHpPremiumDetailModel modelBody1 = GetHpPremiumDetailModel(
1799 productType: "CHI",
1800 userId: retailLoginResponse.userId,
1801 userType: "Agent",
1802 addOn1: addOnSecondary.toString(),
1803 addOn3: "false",
1804 addOn5: "false",
1805 addOn6: "false",
1806 noOfAdults: numberOfAdultsSelected(),
1807 noOfKids: getNumberOfChildrenSelected(
1808 isChild1Selected, isChild2Selected, isChild3Selected),
1809 ageGroup1: _currentAgeSelected,
1810 ageGroup2: "",
1811 ageGroup: _currentAgeSelected,
1812 chiProductName: "PROTECT",
1813 subLimit: null,
1814 yearPremium: yearPremium,
1815 isJammuKashmir: "false",
1816 volDedutible: "0",
1817 gstStateCode: selectedStateObject.GSTStateCode,
1818 insuredAmount: annualSumInsured2.floor().toString(),
1819 gstStateName: selectedStateObject.StateName,
1820 isGstRegistered: isGSTRegistered,
1821 members: memeberList,
1822 addOn6Members: []);
1823
1824 String body1 = getHpPremiumDetailModelToJson(modelBody1);
1825 print("-----------------------------------------------------");
1826 print("Secondary body: $body1");
1827 print("---–––––––––––––––––––––––––––––––––––––––––––––––––––");
1828 ApiCall.getEditQuoteResponse('IM-501267', 'manita54321', body1)
1829 .then((responseBody) {
1830 setState(() {
1831 saveEditQuoteResponseBody = responseBody;
1832
1833 secondaryQuoteResponse = hpSaveEditQuoteResponseFromJson(
1834 saveEditQuoteResponseBody);
1835
1836 if (secondaryQuoteResponse.statusCode == 0) {
1837 secondaryQuoteResponse = HpSaveEditQuoteResponse(
1838 healthDetails: [HealthDetail(totalPremium: "Error")]);
1839 setState(() {
1840 isPlan2Selected = true;
1841 isPlan1Selected = false;
1842 });
1843 }
1844
1845 print('________*****************************');
1846 print('Seoncdary Response: $saveEditQuoteResponseBody}');
1847 print(
1848 'Secondary NUmber: ${secondaryQuoteResponse.healthDetails[0].totalPremium}');
1849 isLoadingPremium = true;
1850 showTable = false;
1851 });
1852 }).whenComplete(() {
1853 setState(() {
1854 if (secondaryQuoteResponse.statusCode == 0) {
1855 isPlan2Selected = true;
1856 }
1857
1858 isLoadingPremium = false;
1859 showTable = true;
1860
1861 ((noOfAdultsSelected == 1 && noOfKidsSelected == 0) ||
1862 (noOfAdultsSelected == 0 && noOfKidsSelected == 1) ||
1863 (annualSumInsured2.floor() == 300000 ||
1864 annualSumInsured2.floor() == 400000))
1865 ? isInfoButtonVisible = false
1866 : isInfoButtonVisible = true;
1867 });
1868 });
1869 });
1870 }
1871 //body for the actual selected amount; code reaches here when there is no adjacent value to the actual sum insured
1872 else {
1873 secondaryQuoteResponse = HpSaveEditQuoteResponse(
1874 healthDetails: [HealthDetail(totalPremium: "Error")]);
1875
1876 GetHpPremiumDetailModel modelBody = GetHpPremiumDetailModel(
1877 productType: "CHI",
1878 userId: retailLoginResponse.userId,
1879 userType: "Agent",
1880 addOn1: addOnPrimary.toString(),
1881 addOn3: "false",
1882 addOn5: "false",
1883 addOn6: "false",
1884 noOfAdults: numberOfAdultsSelected(),
1885 noOfKids: getNumberOfChildrenSelected(
1886 isChild1Selected, isChild2Selected, isChild3Selected),
1887 ageGroup1: _currentAgeSelected,
1888 ageGroup2: "",
1889 ageGroup: _currentAgeSelected,
1890 chiProductName: "PROTECT",
1891 subLimit: null,
1892 yearPremium: yearPremium,
1893 isJammuKashmir: "false",
1894 volDedutible: "0",
1895 gstStateCode: selectedStateObject.GSTStateCode,
1896 insuredAmount: stepValue.floor().toString(),
1897 gstStateName: selectedStateObject.StateName,
1898 isGstRegistered: isGSTRegistered,
1899 members: memeberList,
1900 addOn6Members: []);
1901 String body = getHpPremiumDetailModelToJson(modelBody);
1902
1903 print(body);
1904 ApiCall.getEditQuoteResponse('IM-501267', 'manita54321', body)
1905 .then((responseBody) {
1906 setState(() {
1907 saveEditQuoteResponseBody = responseBody;
1908 primaryQuoteResponse =
1909 hpSaveEditQuoteResponseFromJson(saveEditQuoteResponseBody);
1910
1911 isLoadingPremium = false;
1912
1913 if (primaryQuoteResponse.statusCode == 0) {
1914 isLoadingPremium = false;
1915
1916 PlatformAlertDialog(
1917 title: 'ICICI Lombard',
1918 content: '${primaryQuoteResponse.statusMessage}',
1919 defaultActionText: 'Ok',
1920 action: PlatformAlertDialogAction(
1921 child: Text('OK'),
1922 onPressed: () => setState(() {
1923 isLoadingPremium = false;
1924 showTable = false;
1925 _currentAgeSelected = '';
1926 Navigator.pop(context);
1927 })),
1928 ).show(context);
1929 }
1930 print(
1931 'Primary Response in Else Section: ${hpSaveEditQuoteResponseToJson(primaryQuoteResponse)}');
1932 });
1933 }).whenComplete(() {
1934 setState(() {
1935 isPlan2Selected = true;
1936 isPlan1Selected = false;
1937
1938 // print(saveEditQuoteResponseBody);
1939 isLoadingPremium = false;
1940 showTable = true;
1941
1942 ((noOfAdultsSelected == 1 && noOfKidsSelected == 0) ||
1943 (noOfAdultsSelected == 0 && noOfKidsSelected == 1) ||
1944 (annualSumInsured1 == 300000 ||
1945 annualSumInsured1 == 400000))
1946 ? isInfoButtonVisible = false
1947 : isInfoButtonVisible = true;
1948 });
1949 });
1950 }
1951 });
1952 } else {
1953 PlatformAlertDialog(
1954 title: 'ICICI Lombard',
1955 content: 'Please Select Age of Eldest member First',
1956 defaultActionText: 'Ok',
1957 action: PlatformAlertDialogAction(
1958 child: Text('Ok'),
1959 onPressed: () {
1960 setState(() {
1961 isLoadingPremium = false;
1962 showTable = false;
1963 _currentAgeSelected = "Select Age of Eldest Member";
1964 isAgeSelected = false;
1965 Navigator.pop(context);
1966 });
1967 },
1968 )).show(context);
1969 }
1970 }
1971 }
1972
1973 Widget rightContainer() {
1974 return Padding(
1975 padding: EdgeInsets.only(right: 5),
1976 child: Container(
1977 color: Colors.transparent,
1978 // `height: SizeConfig.blockSizeVertical * 30,`
1979 child: Column(
1980 mainAxisSize: MainAxisSize.min,
1981 crossAxisAlignment: CrossAxisAlignment.start,
1982 children: <Widget>[
1983 Padding(
1984 padding: EdgeInsets.only(top: 3),
1985 child: Text(
1986 "Number of Child (3m to 20 yrs) - $numberOfSelectedChildren",
1987 style: CustomTextStyles.policyDetailHeadingTextStyle,
1988 ),
1989 ),
1990 Row(
1991 children: <Widget>[
1992 Visibility(
1993 visible: (numberOfChildren == 0) ? false : true,
1994 child: child1()),
1995 Visibility(
1996 visible: (numberOfChildren == 2 || numberOfChildren == 3)
1997 ? true
1998 : false,
1999 child: child2()),
2000 Visibility(
2001 visible: (numberOfChildren == 3) ? true : false,
2002 child: child3())
2003 ],
2004 ),
2005 SizedBox(
2006 height: SizeConfig.blockSizeVertical * 2.2,
2007 ),
2008 Text(
2009 'Policy Tenure',
2010 style: CustomTextStyles.memberSelectionTextStlyle,
2011 ),
2012 SizedBox(
2013 height: 10,
2014 ),
2015
2016 Container(
2017 height: 50,
2018 width: double.infinity,
2019 child: ListView.builder(
2020 scrollDirection: Axis.horizontal,
2021 itemCount: availableYears.length,
2022 itemBuilder: (BuildContext context, int index) {
2023 return new InkWell(
2024 //highlightColor: Colors.red,
2025 splashColor: Colors.blueAccent,
2026 onTap: () {
2027 setState(() {
2028 availableYears
2029 .forEach((element) => element.isSelected = false);
2030 availableYears[index].isSelected = true;
2031 selectedPolicyTenure = availableYears[index];
2032 print(selectedPolicyTenure.text);
2033 tenureSplitString = selectedPolicyTenure.text.split(" ");
2034 calculatePremiums(selectedPremiumAmountGLobal, isKerelaGSTSelected,addON1Status: addOn1Status,yearPremium: tenureSplitString[0]);
2035 });
2036 },
2037 child: new RadioItem(availableYears[index]),
2038 );
2039 }),
2040 ),
2041//
2042 SizedBox(height: SizeConfig.blockSizeHorizontal * 2),
2043 Text(
2044 'Sub Limit',
2045 style: CustomTextStyles.memberSelectionTextStlyle,
2046 ),
2047
2048 Container(
2049 height: 50,
2050 width: double.infinity,
2051 child: ListView.builder(
2052 scrollDirection: Axis.horizontal,
2053 itemCount: availableSubLimits.length,
2054 itemBuilder: (BuildContext context, int index) {
2055 return new InkWell(
2056 //highlightColor: Colors.red,
2057 splashColor: Colors.blueAccent,
2058 onTap: () {
2059 setState(() {
2060 availableSubLimits
2061 .forEach((element) => element.isSelected = false);
2062 availableSubLimits[index].isSelected = true;
2063 selectedSubLimit = availableSubLimits[index];
2064 print(selectedSubLimit.text);
2065 });
2066 },
2067 child: new RadioItem(availableSubLimits[index]),
2068 );
2069 }),
2070 ),
2071 ],
2072 ),
2073 ),
2074 );
2075 }
2076
2077 //Method to make gfab enable or disavle
2078
2079 void showFoatingActionButton(bool value) => setState(() {
2080// healthPolicyScaffoldKey.currentState.setState((){
2081// Constants.showWordingsButton = value;
2082// });
2083 healthPolicyScaffoldKey.currentState
2084 .showBottomSheet((context) => Container(
2085 color: Colors.green,
2086 height: 100,
2087 ));
2088 print(healthPolicyScaffoldKey.currentState.hasFloatingActionButton);
2089 });
2090
2091//MEthod to give Numbr of children selected by use
2092
2093 String getNumberOfChildrenSelected(
2094 bool isChild1Selected, bool isChild2Selected, bool isChild3Selected) {
2095 List<bool> selectedList = [
2096 isChild1Selected,
2097 isChild2Selected,
2098 isChild3Selected
2099 ];
2100 int selectedNumber = 0;
2101 for (int i = 0; i < selectedList.length; i++) {
2102 if (selectedList[i]) {
2103 setState(() {
2104 selectedNumber++;
2105 });
2106 }
2107 }
2108 numberOfSelectedChildren = selectedNumber;
2109 print('Selected Children: $numberOfSelectedChildren');
2110 return numberOfSelectedChildren.toString();
2111 }
2112
2113 // Function to give Number of Adults selected
2114 String numberOfAdultsSelected() {
2115 int noOfAdults = 0;
2116 if (isAdult1Selected) {
2117 noOfAdults++;
2118 }
2119 if (isAdult2Selected) {
2120 noOfAdults++;
2121 }
2122 return noOfAdults.toString();
2123 }
2124
2125 Future<void> updateMethod(){
2126 Future.delayed(Duration(seconds: 2));
2127 setState(() {
2128 premiumValuesRangeSet = {0};
2129 });
2130 }
2131
2132
2133}
2134
2135class Groupmodel {
2136 final String text;
2137 final int index;
2138
2139 Groupmodel(this.text, this.index);
2140}
2141
2142// child: RangeSlider(
2143// min: 0,
2144//
2145// max: healthPlanMasterResponse.sumInsuredDetails[maxPremiumindex].sumAmount,
2146// divisions: healthPlanMasterResponse.sumInsuredDetails.length,
2147// inactiveColor: Colors.grey,
2148// values: ,
2149// onChanged: (value) {
2150// setState(() {
2151// premiumAmount = value;
2152// (premiumAmoun == d)
2153// ? annualSumInsured = 300000
2154// : (premiumAmount.floor() == 333333)
2155// ? annualSumInsured = 400000
2156// : (premiumAmount.floor() > 0 && premiumAmount.floor() > 333333)
2157// ? annualSumInsured = 500000
2158// : annualSumInsured = 0;
2159// });
2160// },
2161// ),