fix Medical profile

merge-requests/215/merge
Mohammad Aljammal 5 years ago
parent 4d8f42b517
commit 2059b76fc1

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -1283,5 +1283,8 @@ const Map localizedValues = {
"en": "This service allows you to view all the insurance cards that recorded during your visits to Al Habib Medical Group in addition to:", "en": "This service allows you to view all the insurance cards that recorded during your visits to Al Habib Medical Group in addition to:",
"ar": "خدمة بطاقات التامين: هذه الخدمة تمكنك من الاطلاع على جميع بطاقات التامين والتي تم تسجيلها اثناء زياراتك لمجموعة الحبيب الطبية بالاضافة الى:" "ar": "خدمة بطاقات التامين: هذه الخدمة تمكنك من الاطلاع على جميع بطاقات التامين والتي تم تسجيلها اثناء زياراتك لمجموعة الحبيب الطبية بالاضافة الى:"
}, },
"scan-now": {
"en": "If you have a card / Document Scan now",
"ar": "إذا كانت لديك بطاقة / مستند ارفقها الان"
},
}; };

@ -22,6 +22,8 @@ class InsuranceCardService extends BaseService {
List<InsuranceApprovalModel> get insuranceApproval => _insuranceApproval; List<InsuranceApprovalModel> get insuranceApproval => _insuranceApproval;
InsuranceCardDetailsModel insuranceCardDetails; InsuranceCardDetailsModel insuranceCardDetails;
List<InsuranceCardDetailsModel> insuranceCardDetailsList = List();
bool isHaveInsuranceCard = false;
GetAllSharedRecordsByStatusResponse getAllSharedRecordsByStatusResponse = GetAllSharedRecordsByStatusResponse getAllSharedRecordsByStatusResponse =
GetAllSharedRecordsByStatusResponse(); GetAllSharedRecordsByStatusResponse();
@ -142,12 +144,15 @@ class InsuranceCardService extends BaseService {
Future getPatientInsuranceDetails({String setupID, int projectID, String patientIdentificationID,int patientID}) async{ Future getPatientInsuranceDetails({String setupID, int projectID, String patientIdentificationID,int patientID}) async{
error = ""; error = "";
hasError = false;
insuranceCardDetails = null; insuranceCardDetails = null;
isHaveInsuranceCard = false;
await baseAppClient.post(GET_PATIENT_INSURANCE_DETAILS, await baseAppClient.post(GET_PATIENT_INSURANCE_DETAILS,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
insuranceCardDetails = null; insuranceCardDetailsList.clear();
isHaveInsuranceCard = true;
response['List_PatientInsuranceDetails'].forEach((item) { response['List_PatientInsuranceDetails'].forEach((item) {
insuranceCardDetails = InsuranceCardDetailsModel.fromJson(item); insuranceCardDetailsList.add(InsuranceCardDetailsModel.fromJson(item));
}); });
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;

@ -17,7 +17,6 @@ class _StatusFeedbackPageState extends State<StatusFeedbackPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<FeedbackViewModel>( return BaseView<FeedbackViewModel>(
allowAny: true,
onModelReady: (model) => model.getCOC(), onModelReady: (model) => model.getCOC(),
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
baseViewModel: model, baseViewModel: model,

@ -15,215 +15,328 @@ import 'package:provider/provider.dart';
import 'AttachInsuranceCardImageDialog.dart'; import 'AttachInsuranceCardImageDialog.dart';
class InsuranceCardUpdateDetails extends StatelessWidget { class InsuranceCardUpdateDetails extends StatelessWidget {
final InsuranceCardDetailsModel insuranceCardDetailsModel; final List<InsuranceCardDetailsModel> insuranceCardDetailsModel;
final String patientIdentificationID; final String patientIdentificationID;
final int patientID; final int patientID;
final String name; final String name;
const InsuranceCardUpdateDetails(
const InsuranceCardUpdateDetails({Key key, {Key key,
this.insuranceCardDetailsModel, this.insuranceCardDetailsModel,
this.patientIdentificationID, this.patientIdentificationID,
this.patientID, this.name}) this.patientID,
this.name})
: super(key: key); : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
return BaseView<InsuranceViewModel>( return BaseView<InsuranceViewModel>(
builder: (context, model, w) => builder: (context, model, w) => AppScaffold(
AppScaffold( isShowAppBar: true,
isShowAppBar: true, isShowDecPage: false,
isShowDecPage: false, appBarTitle: TranslationBase.of(context).cardDetail,
appBarTitle: TranslationBase.of(context).cardDetail, body: SingleChildScrollView(
body: SingleChildScrollView( child: Column(
child: Column( children: [
children: [ ...List.generate(
Padding( insuranceCardDetailsModel.length,
padding: const EdgeInsets.all(8.0), (index) => Padding(
child: Container( padding: const EdgeInsets.all(8.0),
width: double.maxFinite, child: Container(
margin: EdgeInsets.only(left: 8, right: 8, top: 8), width: double.maxFinite,
height:projectViewModel.isArabic?350: 270, margin: EdgeInsets.only(left: 8, right: 8, top: 8),
decoration: BoxDecoration( height: projectViewModel.isArabic ? 320 : 240,
borderRadius: BorderRadius.circular(25), decoration: BoxDecoration(
color: Color(0xff515B5D), borderRadius: BorderRadius.circular(25),
), color: Color(0xff515B5D),
child: Padding( ),
padding: const EdgeInsets.all(12.0), child: Padding(
child: Column( padding: const EdgeInsets.all(12.0),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
Text( children: [
insuranceCardDetailsModel.memberID, Text(
textScaleFactor: 2.1, insuranceCardDetailsModel[index].memberID,
style: TextStyle(color: Colors.white, textScaleFactor: 2.1,
letterSpacing: 8.0, style: TextStyle(
fontWeight: FontWeight.w400, color: Colors.white,
fontSize: 17), letterSpacing: 8.0,
), fontWeight: FontWeight.w400,
SizedBox( fontSize: 15),
height: 5, ),
), SizedBox(
Texts( height: 5,
insuranceCardDetailsModel.companyName, ),
color: Colors.white, Texts(
), insuranceCardDetailsModel[index].companyName,
SizedBox( fontSize: 14,
height: 25, color: Colors.white,
), ),
Row( SizedBox(
children: [ height: 25,
Expanded( ),
child: Column( Row(
crossAxisAlignment: CrossAxisAlignment children: [
.start, Expanded(
children: [ child: Column(
Texts(TranslationBase crossAxisAlignment: CrossAxisAlignment.start,
.of(context) children: [
.policyHolder, color: Colors.white), Texts(
Texts( TranslationBase.of(context).policyHolder,
insuranceCardDetailsModel.memberName, color: Colors.white,
color: Colors.white), fontSize: 14,
], ),
), Texts(
insuranceCardDetailsModel[index]
.memberName,
color: Colors.white,
fontSize: 14,
),
],
), ),
Expanded( ),
child: Column( Expanded(
children: [ child: Column(
Texts(TranslationBase children: [
.of(context) Texts(TranslationBase.of(context).policyNo,
.policyNo, color: Colors.white), color: Colors.white),
Texts(insuranceCardDetailsModel Texts(
.policyNumber, color: Colors.white), insuranceCardDetailsModel[index]
], .policyNumber,
), color: Colors.white),
],
),
),
],
),
SizedBox(
height: 25,
),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Texts(
TranslationBase.of(context)
.expiryDateTitle,
color: Colors.white,
fontSize: 12,
),
Texts(
insuranceCardDetailsModel[index].dOB,
color: Colors.white,
fontSize: 12,
),
],
),
),
Expanded(
child: Column(
children: [
Texts(
TranslationBase.of(context).classTitle,
color: Colors.white,
fontSize: 12,
),
Texts(
insuranceCardDetailsModel[index]
.subCategory,
color: Colors.white,
fontSize: 12,
),
],
),
),
Expanded(
child: Column(
children: [
Texts(
TranslationBase.of(context).approval,
color: Colors.white,
fontSize: 12,
),
Texts(
insuranceCardDetailsModel[index]
.approvalLimit
.toString(),
color: Colors.white,
fontSize: 12,
),
],
), ),
], ),
), ],
SizedBox( )
height: 25, ],
), ),
Row( ),
mainAxisAlignment: MainAxisAlignment.start, ),
children: [ ),
Expanded( ),
if(insuranceCardDetailsModel.isEmpty)
Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
margin: EdgeInsets.all(10.0),
child: Card(
margin: EdgeInsets.fromLTRB(
8.0, 16.0, 8.0, 8.0),
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(10),
),
child: Container(
width: MediaQuery.of(context).size.width,
padding: EdgeInsets.all(10.0),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
flex: 3,
child: Container(
margin: EdgeInsets.only(
top: 2.0,
left: 10.0,
right: 20.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment crossAxisAlignment:
CrossAxisAlignment
.start, .start,
children: [ children: <Widget>[
Texts( Texts(
TranslationBase name,
.of(context) fontSize: 14,
.expiryDateTitle, color: Colors.black,
color: Colors.white), fontWeight:
Texts(insuranceCardDetailsModel.dOB, FontWeight.w500,
color: Colors.white), ),
], SizedBox(
), height: 8,
), ),
Expanded(
child: Column(
children: [
Texts(TranslationBase
.of(context)
.classTitle, color: Colors.white),
Texts( Texts(
insuranceCardDetailsModel.subCategory, TranslationBase.of(
color: Colors.white), context)
], .fileno +
), ": " +patientID.toString(),
), fontSize: 14,
Expanded( color: Colors.black,
child: Column( fontWeight:
children: [ FontWeight.w500,
Texts(TranslationBase )
.of(context)
.approval, color: Colors.white),
Texts(insuranceCardDetailsModel
.approvalLimit
.toString(), color: Colors.white),
], ],
), ),
), ),
], ),
) ],
], ),
), ),
), ),
), ),
) SizedBox(height: 150,),
], Image.asset('assets/images/no-data-found.png',width: 80,height: 80,),
),
),
bottomSheet: Container(
width: double.infinity,
height: MediaQuery
.of(context)
.size
.height * 0.21,
child: Container(
margin: EdgeInsets.only(left: 8, right: 8),
child: Column(
children: [
SizedBox(height: 8,), SizedBox(height: 8,),
SecondaryButton( Texts(TranslationBase.of(context).noDataAvailable)
textColor: Colors.white,
label: TranslationBase
.of(context)
.agree
.toUpperCase(),
color: Theme
.of(context)
.primaryColor,
onTap: () async {
GifLoaderDialogUtils.showMyDialog(context);
await model.uploadInsuranceCard(patientIdentificationID: patientIdentificationID,patientID: patientID);
GifLoaderDialogUtils.hideDialog(context);
if (model.state == ViewState.ErrorLocal ) {
AppToast.showErrorToast(message: model.error);
} else {
AppToast.showSuccessToast(message: TranslationBase.of(context).requestSent);
}
},
),
SizedBox(height: 12,),
SecondaryButton(
textColor: Colors.white,
label: TranslationBase
.of(context)
.disagree
.toUpperCase(),
color: Colors.grey[800],
onTap: () async {
confirmSelectFamilyDialog(context: context, name: name, fileNo: patientID.toString(),model: model);
},
)
], ],
)
],
),
),
bottomSheet: Container(
width: double.infinity,
height:insuranceCardDetailsModel.isEmpty? MediaQuery.of(context).size.height * 0.14:MediaQuery.of(context).size.height * 0.21,
child: Container(
margin: EdgeInsets.only(left: 8, right: 8),
child: Column(
children: [
SizedBox(
height: 8,
), ),
), if(insuranceCardDetailsModel.isEmpty)
SecondaryButton(
textColor: Colors.white,
label: TranslationBase.of(context).scanNow.toUpperCase(),
color: Theme.of(context).primaryColor,
onTap: () async {
confirmAttachInsuranceCardImageDialogDialog(
context: context,
name: name,
fileNo: patientID.toString(),
model: model);
},
),
if(insuranceCardDetailsModel.isNotEmpty)
SecondaryButton(
textColor: Colors.white,
label: TranslationBase.of(context).agree.toUpperCase(),
color: Theme.of(context).primaryColor,
onTap: () async {
GifLoaderDialogUtils.showMyDialog(context);
await model.uploadInsuranceCard(
patientIdentificationID: patientIdentificationID,
patientID: patientID);
GifLoaderDialogUtils.hideDialog(context);
if (model.state == ViewState.ErrorLocal) {
AppToast.showErrorToast(message: model.error);
} else {
AppToast.showSuccessToast(
message: TranslationBase.of(context).requestSent);
}
},
),if(insuranceCardDetailsModel.isNotEmpty)
SizedBox(
height: 12,
),if(insuranceCardDetailsModel.isNotEmpty)
SecondaryButton(
textColor: Colors.white,
label: TranslationBase.of(context).disagree.toUpperCase(),
color: Colors.grey[800],
onTap: () async {
confirmAttachInsuranceCardImageDialogDialog(
context: context,
name: name,
fileNo: patientID.toString(),
model: model);
},
)
],
), ),
), ),
),
),
); );
} }
void confirmSelectFamilyDialog({BuildContext context, String name, String fileNo,InsuranceViewModel model}) { void confirmAttachInsuranceCardImageDialogDialog(
{BuildContext context,
String name,
String fileNo,
InsuranceViewModel model}) {
showDialog( showDialog(
context: context, context: context,
child: AttachInsuranceCardImageDialog( child: AttachInsuranceCardImageDialog(
fileNo: fileNo, fileNo: fileNo,
name: name, name: name,
image: (file, image) async{ image: (file, image) async {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
await model.uploadInsuranceCard(patientIdentificationID: patientIdentificationID,patientID: patientID,image: image); await model.uploadInsuranceCard(
patientIdentificationID: patientIdentificationID,
patientID: patientID,
image: image);
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (model.state == ViewState.ErrorLocal || if (model.state == ViewState.ErrorLocal ||
model.state == ViewState.Error) { model.state == ViewState.Error) {
AppToast.showErrorToast(message: model.error); AppToast.showErrorToast(message: model.error);
} else { } else {
AppToast.showSuccessToast(message: TranslationBase.of(context).requestSent); AppToast.showSuccessToast(
message: TranslationBase.of(context).requestSent);
} }
Navigator.pop(context); Navigator.pop(context);
}, },

@ -137,8 +137,7 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
BorderRadius.circular(10), BorderRadius.circular(10),
), ),
child: Container( child: Container(
width: width: MediaQuery.of(context).size.width,
MediaQuery.of(context).size.width,
padding: EdgeInsets.all(10.0), padding: EdgeInsets.all(10.0),
child: Row( child: Row(
crossAxisAlignment: crossAxisAlignment:
@ -468,13 +467,12 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
patientIdentificationID: patientIdentificationID) patientIdentificationID: patientIdentificationID)
.then((value) { .then((value) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (_insuranceCardService.insuranceCardDetails != null) { if (!_insuranceCardService.hasError && _insuranceCardService.isHaveInsuranceCard) {
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
page: InsuranceCardUpdateDetails( page: InsuranceCardUpdateDetails(
insuranceCardDetailsModel: insuranceCardDetailsModel: _insuranceCardService.insuranceCardDetailsList,
_insuranceCardService.insuranceCardDetails,
patientID: patientID, patientID: patientID,
patientIdentificationID: patientIdentificationID, patientIdentificationID: patientIdentificationID,
name: name, name: name,

@ -516,7 +516,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
// ); // );
// themeNotifier.setTheme(defaultTheme); // themeNotifier.setTheme(defaultTheme);
} }
void checkUserStatus(token, {isLoader}) async { void checkUserStatus(token, {isLoader = true}) async {
if (isLoader) if (isLoader)
//GifLoaderDialogUtils.showMyDialog(context); //GifLoaderDialogUtils.showMyDialog(context);
authService authService

@ -214,6 +214,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
SizedBox( SizedBox(
height: 12, height: 12,
), ),
if(model.user!=null)
NewTextFields( NewTextFields(
hintText: TranslationBase.of(context).depositorEmail, hintText: TranslationBase.of(context).depositorEmail,
initialValue: model.user.emailAddress, initialValue: model.user.emailAddress,

@ -1,6 +1,7 @@
import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart';
import 'package:diplomaticquarterapp/core/model/sick_leave/sick_leave.dart'; import 'package:diplomaticquarterapp/core/model/sick_leave/sick_leave.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/patient_sick_leave_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/patient_sick_leave_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -9,6 +10,7 @@ import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.d
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class PatientSickLeavePage extends StatefulWidget { class PatientSickLeavePage extends StatefulWidget {
@override @override
@ -19,12 +21,16 @@ class _PatientSickLeavePageState extends State<PatientSickLeavePage> {
List<ImagesInfo> imagesInfo = List(); List<ImagesInfo> imagesInfo = List();
@override @override
Widget build(BuildContext context) { void initState() {
imagesInfo.add(ImagesInfo( imagesInfo.add(ImagesInfo(
imageEn: imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/sick-leaves/en/0.png',
'https://hmgwebservices.com/Images/MobileApp/imges-info/sick-leaves/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/sick-leaves/ar/0.png'));
imageAr: super.initState();
'https://hmgwebservices.com/Images/MobileApp/imges-info/sick-leaves/ar/0.png')); }
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return BaseView<PatientSickLeaveViewMode>( return BaseView<PatientSickLeaveViewMode>(
onModelReady: (model) => model.getSickLeave(), onModelReady: (model) => model.getSickLeave(),
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
@ -40,21 +46,13 @@ class _PatientSickLeavePageState extends State<PatientSickLeavePage> {
itemCount: model.sickLeaveList.length, itemCount: model.sickLeaveList.length,
itemBuilder: (context, index) => DoctorCard( itemBuilder: (context, index) => DoctorCard(
name: model.sickLeaveList[index].doctorName, name: model.sickLeaveList[index].doctorName,
date: DateUtil.getMonthDayYearDateFormatted( date:projectViewModel.isArabic? DateUtil.getMonthDayYearDateFormattedAr(model.sickLeaveList[index].requestDate):DateUtil.getMonthDayYearDateFormatted(model.sickLeaveList[index].requestDate),
model.sickLeaveList[index].requestDate),
profileUrl: model.sickLeaveList[index].doctorImageURL, profileUrl: model.sickLeaveList[index].doctorImageURL,
rat: model.sickLeaveList[index].actualDoctorRate.toDouble(), rat: model.sickLeaveList[index].actualDoctorRate.toDouble(),
subName: model.sickLeaveList[index].projectName, subName: model.sickLeaveList[index].projectName,
isInOutPatient: model.sickLeaveList[index].isInOutPatient, isInOutPatient: model.sickLeaveList[index].isInOutPatient,
onEmailTap: () { onEmailTap: () {
showConfirmMessage(model, index); showConfirmMessage(model, index);
// model.sendSickLeaveEmail(
// message: TranslationBase.of(context).emailSentSuccessfully,
// requestNo: model.sickLeaveList[index].requestNo,
// doctorName: model.sickLeaveList[index].doctorName,
// projectName: model.sickLeaveList[index].projectName,
// setupID: model.sickLeaveList[index].setupID,
// projectID: model.sickLeaveList[index].projectID);
}, },
), ),
), ),

@ -179,7 +179,7 @@ class PrescriptionItemsPage extends StatelessWidget {
), ),
bottomSheet: Container( bottomSheet: Container(
width: double.infinity, width: double.infinity,
height: MediaQuery.of(context).size.height * 0.12, height: MediaQuery.of(context).size.height * 0.14,
color: Colors.grey[100], color: Colors.grey[100],
child: Column( child: Column(
children: <Widget>[ children: <Widget>[

@ -54,8 +54,8 @@ class RadiologyDetailsPage extends StatelessWidget {
bottomSheet: Container( bottomSheet: Container(
width: double.infinity, width: double.infinity,
height: finalRadiology.dIAPACSURL != "" height: finalRadiology.dIAPACSURL != ""
? MediaQuery.of(context).size.height * 0.2 ? MediaQuery.of(context).size.height * 0.25
: MediaQuery.of(context).size.height * 0.15, : MediaQuery.of(context).size.height * 0.14,
color: Colors.grey[100], color: Colors.grey[100],
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,

@ -1065,6 +1065,7 @@ class TranslationBase {
String get requestSent => localizedValues['request-sent'][locale.languageCode]; String get requestSent => localizedValues['request-sent'][locale.languageCode];
String get attachInsuraceImage => localizedValues['attach-insurace-image'][locale.languageCode]; String get attachInsuraceImage => localizedValues['attach-insurace-image'][locale.languageCode];
String get infoInsurCards => localizedValues['info-insur-cards'][locale.languageCode]; String get infoInsurCards => localizedValues['info-insur-cards'][locale.languageCode];
String get scanNow => localizedValues['scan-now'][locale.languageCode];
} }

@ -21,7 +21,7 @@ class AppExpandableNotifier extends StatefulWidget {
this.bodyWidget, this.bodyWidget,
this.title, this.title,
this.collapsed, this.collapsed,
this.isExpand}); this.isExpand = false});
_AppExpandableNotifier createState() => _AppExpandableNotifier(); _AppExpandableNotifier createState() => _AppExpandableNotifier();
} }

Loading…
Cancel
Save