You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
7.9 KiB
Dart
165 lines
7.9 KiB
Dart
3 years ago
|
import 'dart:collection';
|
||
|
import 'dart:convert';
|
||
|
|
||
|
import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidPaymentInfoResponse.dart';
|
||
|
import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidTestProceduresResponse.dart';
|
||
|
import 'package:diplomaticquarterapp/services/covid-drivethru/covid-drivethru.dart';
|
||
|
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
||
|
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
|
||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||
|
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
||
|
import 'package:flutter/cupertino.dart';
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:flutter/services.dart';
|
||
|
|
||
|
import 'covid-payment-details.dart';
|
||
|
class CovidDirveThruQuestions extends StatefulWidget{
|
||
|
final String projectId;
|
||
|
final List<CovidTestProceduresResponse> proceduresList;
|
||
|
CovidDirveThruQuestions({@required this.projectId, @required this.proceduresList});
|
||
|
|
||
|
@override
|
||
|
CovidDirveThruQuestionsState createState() => CovidDirveThruQuestionsState();
|
||
|
|
||
|
}
|
||
|
class CovidDirveThruQuestionsState extends State<CovidDirveThruQuestions>{
|
||
|
List qa;
|
||
|
|
||
|
@override
|
||
|
void initState() {
|
||
|
super.initState();
|
||
|
qa = getQuestionsFromJson();
|
||
|
}
|
||
|
|
||
|
TranslationBase localize;
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
localize = TranslationBase.of(context);
|
||
|
var isArabic = localize.isArabic();
|
||
|
return AppScaffold(
|
||
|
appBarTitle: TranslationBase.of(context).covidTest,
|
||
|
isShowAppBar: true,
|
||
|
body: Column(
|
||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||
|
children: [
|
||
|
Padding(
|
||
|
padding: const EdgeInsets.all(20),
|
||
|
child: Text(localize.covidSelectProcedure, style: TextStyle(fontSize: 17, letterSpacing: 1, fontWeight: FontWeight.bold)),
|
||
|
),
|
||
|
Expanded(
|
||
|
child: ListView.separated(
|
||
|
padding: EdgeInsets.symmetric(horizontal: 20),
|
||
|
itemCount: qa.length,
|
||
|
itemBuilder: (ctx, idx){
|
||
|
var obj = qa[idx];
|
||
|
var qtext = isArabic ? obj["questionAR"] : obj["questionEN"];
|
||
|
|
||
|
return Padding(
|
||
|
padding: const EdgeInsets.symmetric(vertical: 10),
|
||
|
child: Column(
|
||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||
|
children: [
|
||
|
Text(qtext, style: TextStyle(fontSize: 15, letterSpacing: 1.5)),
|
||
|
Row(
|
||
|
children: [
|
||
|
Radio<int>(
|
||
|
value: 1,
|
||
|
groupValue: obj["ans"],
|
||
|
onChanged: (newValue){
|
||
|
setState(() {
|
||
|
obj["ans"] = newValue;
|
||
|
});
|
||
|
}
|
||
|
),
|
||
|
Text(localize.yes),
|
||
|
],
|
||
|
),
|
||
|
|
||
|
Row(
|
||
|
children: [
|
||
|
Radio<int>(
|
||
|
value: 0,
|
||
|
groupValue: obj["ans"],
|
||
|
onChanged: (newValue){
|
||
|
setState(() {
|
||
|
obj["ans"] = newValue;
|
||
|
});
|
||
|
}
|
||
|
),
|
||
|
Text(localize.no),
|
||
|
],
|
||
|
)
|
||
|
],
|
||
|
),
|
||
|
);
|
||
|
},
|
||
|
separatorBuilder: (ctx, idx) => Divider(height: 0.25, color: Colors.grey.withOpacity(0.5)),
|
||
|
)
|
||
|
),
|
||
|
Padding(
|
||
|
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
|
||
|
child: FractionallySizedBox(
|
||
|
widthFactor: 1,
|
||
|
child: MaterialButton(
|
||
|
height: 50,
|
||
|
color: Theme.of(context).appBarTheme.color,
|
||
|
disabledColor: Theme.of(context).appBarTheme.color.withOpacity(0.25),
|
||
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10) ),
|
||
|
child: Text(localize.next, style: TextStyle(color: Colors.white, fontSize: 13, letterSpacing: 1),),
|
||
|
onPressed: next
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
],
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
next() async{
|
||
|
bool all = true;
|
||
|
qa.forEach((element) {
|
||
|
all = all && (element["ans"] == 1 || element["ans"] == 0);
|
||
|
});
|
||
|
if(all)
|
||
|
getPaymentInfo(context,widget.projectId);
|
||
|
else
|
||
|
AppToast.showErrorToast(message: localize.pleaseSelectAllQuestionToContinue);
|
||
|
}
|
||
|
|
||
|
List getQuestionsFromJson(){
|
||
|
var questionsJson =
|
||
|
"""
|
||
|
[{"id":1,"questionEN":"Is the test intended for travel?","questionAR":"هل تجري التحليل بغرض السفر؟","ans":2},{"id":2,"questionEN":"Coming from outside KSA within last 2 weeks?","questionAR":"هل قدمت من خارج المملكة خلال الأسبوعين الماضيين؟","ans":2},{"id":3,"questionEN":"Do you currently have fever?","questionAR":"هل تعاني حاليا من حرارة؟","ans":2},{"id":4,"questionEN":"Did you have fever in last 2 weeks?","questionAR":"هل عانيت من حرارة في الأسبوعين الماضيين؟","ans":2},{"id":5,"questionEN":"Do you have a sore throat?","questionAR":"هل لديك التهاب في الحلق؟","ans":2},{"id":6,"questionEN":"Do you have a runny nose?","questionAR":"هل لديك سيلان بالأنف؟"},{"id":7,"questionEN":"Do you have a cough?","questionAR":"هل لديك سعال؟","ans":2},{"id":8,"questionEN":"Do you have shortness of breath?","questionAR":"هل تعانين من ضيق في التنفس؟","ans":2},{"id":9,"questionEN":"Do you have nausea?","questionAR":"هل تعانين من غثيان؟","ans":2},{"id":10,"questionEN":"Do you have vomiting?","questionAR":"هل تعاني من القيء؟","ans":2},{"id":11,"questionEN":"Do you have a headache?","questionAR":"هل تعاني من صداع في الرأس؟","ans":2},{"id":12,"questionEN":"Do you have muscle pain?","questionAR":"هل تعانين من آلام عضلية؟","ans":2},{"id":13,"questionEN":"Do you have joint pain?","questionAR":"هل تعانين من آلام المفاصل؟","ans":2},{"id":14,"questionEN":"Do you have diarrhea?","questionAR":"هل لديك اسهال؟","ans":2}]""";
|
||
|
var map = json.decode(questionsJson) as List;
|
||
|
return map;
|
||
|
}
|
||
|
|
||
|
getPaymentInfo(BuildContext context, String projectID) {
|
||
|
CovidDriveThruService service = new CovidDriveThruService();
|
||
|
CovidPaymentInfoResponse covidPaymentInfoResponse =
|
||
|
new CovidPaymentInfoResponse();
|
||
|
GifLoaderDialogUtils.showMyDialog(context);
|
||
|
service.getCovidPaymentInformation(context, int.parse(projectID), widget.proceduresList[0].procedureID)
|
||
|
.then((res) {
|
||
|
GifLoaderDialogUtils.hideDialog(context);
|
||
|
if (res['MessageStatus'] == 1) {
|
||
|
// setState(() {
|
||
|
// covidPaymentInfoResponse =
|
||
|
// CovidPaymentInfoResponse.fromJson(res['COVID19_PatientShare']);
|
||
|
// });
|
||
|
Navigator.push(
|
||
|
context,
|
||
|
FadePage(
|
||
|
page: CovidPaymentDetails(
|
||
|
covidPaymentInfoResponse: covidPaymentInfoResponse,
|
||
|
projectID: int.parse(projectID),
|
||
|
proceduresList: widget.proceduresList,
|
||
|
)));
|
||
|
} else {}
|
||
|
}).catchError((err) {
|
||
|
print(err);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
}
|