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.
519 lines
22 KiB
Dart
519 lines
22 KiB
Dart
import 'package:diplomaticquarterapp/core/model/pharmacies/PointsAmountPerYear.dart';
|
|
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/lacum-viewmodel.dart';
|
|
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
|
|
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
|
import 'package:diplomaticquarterapp/pages/pharmacies/screens/lacum-registration-page.dart';
|
|
import 'package:diplomaticquarterapp/pages/pharmacies/screens/lacum-setting-page.dart';
|
|
import 'package:diplomaticquarterapp/pages/pharmacies/screens/lacum-transfer-page.dart';
|
|
import 'package:diplomaticquarterapp/pages/pharmacies/screens/lakum-points-year-page.dart';
|
|
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/lacum-banner-widget.dart';
|
|
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
|
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
import 'lacum-activitaion-vida-page.dart';
|
|
|
|
class LakumMainPage extends StatelessWidget {
|
|
ProjectViewModel projectViewModel;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final mediaQuery = MediaQuery.of(context);
|
|
projectViewModel = Provider.of(context);
|
|
|
|
return BaseView<LacumViewModel>(
|
|
onModelReady: (model) async {
|
|
await model.getLacumData(projectViewModel.user.patientIdentificationNo);
|
|
if (model.lacumInformation.yahalaAccountNo == 0 || model.lacumInformation.yahalaAccountNo == null) {
|
|
navigateToLakumRegister(context);
|
|
} else {
|
|
if (model.lacumInformation.status == "Hold") {
|
|
Navigator.pushReplacement(context, FadePage(page: LakumActivationVidaPage()));
|
|
}
|
|
}
|
|
},
|
|
builder: (_, model, wi) => AppScaffold(
|
|
appBarTitle: TranslationBase.of(context).lakum,
|
|
isShowAppBar: true,
|
|
isPharmacy: true,
|
|
showPharmacyCart: false,
|
|
isShowDecPage: false,
|
|
showHomeAppBarIcon: false,
|
|
isBottomBar: true,
|
|
backgroundColor: Colors.white,
|
|
baseViewModel: model,
|
|
appBarIcons: _buildAppBarICons(context, model),
|
|
// preferredSize: mediaQuery.size.height * 0.20,
|
|
body: Container(
|
|
width: double.infinity,
|
|
child: SingleChildScrollView(
|
|
child: (model.lacumGroupInformation != null && model.lacumGroupInformation.lakumInquiryInformationObjVersion != null)
|
|
? Column(
|
|
children: [
|
|
Stack(
|
|
children: [
|
|
Container(
|
|
height: mediaQuery.size.height * 0.15,
|
|
color: Colors.green,
|
|
),
|
|
Column(
|
|
children: [
|
|
SizedBox(
|
|
height: mediaQuery.size.height * 0.02,
|
|
),
|
|
Container(width: mediaQuery.size.width * 1, height: mediaQuery.size.width * .6, child: LakumBannerWidget(model, mediaQuery, true)),
|
|
],
|
|
)
|
|
],
|
|
),
|
|
SizedBox(
|
|
height: 12,
|
|
),
|
|
LakumHomeButtons(mediaQuery, model, projectViewModel),
|
|
SizedBox(
|
|
height: 12,
|
|
),
|
|
Container(
|
|
height: 110,
|
|
margin: EdgeInsets.symmetric(horizontal: 16, vertical: 12.0),
|
|
child: ListView(
|
|
scrollDirection: Axis.horizontal,
|
|
children: <Widget>[
|
|
LacumPointsWidget(mediaQuery, 1, TranslationBase.of(context).balance, model.lacumGroupInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount,
|
|
model.lacumGroupInformation.lakumInquiryInformationObjVersion.pointsBalance, null),
|
|
SizedBox(
|
|
width: 8,
|
|
),
|
|
LacumPointsWidget(mediaQuery, 2, TranslationBase.of(context).gained, model.lacumGroupInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount,
|
|
model.lacumGroupInformation.lakumInquiryInformationObjVersion.gainedPoints, model.lacumGroupInformation.lakumInquiryInformationObjVersion.gainedPointsAmountPerYear),
|
|
SizedBox(
|
|
width: 8,
|
|
),
|
|
LacumPointsWidget(
|
|
mediaQuery,
|
|
3,
|
|
TranslationBase.of(context).consumed,
|
|
model.lacumGroupInformation.lakumInquiryInformationObjVersion.consumedPointsAmount != null
|
|
? num.parse(model.lacumGroupInformation.lakumInquiryInformationObjVersion.consumedPointsAmount)
|
|
: 0,
|
|
model.lacumGroupInformation.lakumInquiryInformationObjVersion.consumedPoints,
|
|
model.lacumGroupInformation.lakumInquiryInformationObjVersion.consumedPointsAmountPerYear),
|
|
SizedBox(
|
|
width: 8,
|
|
),
|
|
LacumPointsWidget(mediaQuery, 4, TranslationBase.of(context).transferred, 0, model.lacumGroupInformation.lakumInquiryInformationObjVersion.transferPoints,
|
|
model.lacumGroupInformation.lakumInquiryInformationObjVersion.transferPointsAmountPerYear),
|
|
],
|
|
),
|
|
),
|
|
// LacumPointsWidget(
|
|
// mediaQuery,
|
|
// 3,
|
|
// TranslationBase.of(context).consumed,
|
|
// model.lacumGroupInformation.lakumInquiryInformationObjVersion.consumedPointsAmount != null
|
|
// ? int.parse(model.lacumGroupInformation.lakumInquiryInformationObjVersion.consumedPointsAmount)
|
|
// : 0,
|
|
// model.lacumGroupInformation.lakumInquiryInformationObjVersion.consumedPoints,
|
|
// model.lacumGroupInformation.lakumInquiryInformationObjVersion.consumedPointsAmountPerYear),
|
|
SizedBox(
|
|
width: 8,
|
|
),
|
|
SizedBox(
|
|
height: 8,
|
|
width: double.infinity,
|
|
child: Container(
|
|
color: Color(0xffefefef),
|
|
),
|
|
),
|
|
Container(
|
|
margin: EdgeInsets.symmetric(vertical: 16, horizontal: 8),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
children: [
|
|
Row(
|
|
children: [
|
|
Image.asset(
|
|
"assets/images/pharmacy_module/lakum/expired_icon.png",
|
|
fit: BoxFit.fill,
|
|
width: 25,
|
|
height: 25,
|
|
),
|
|
Padding(
|
|
padding: EdgeInsets.symmetric(horizontal: 8),
|
|
child: Texts(
|
|
TranslationBase.of(context).expiryPoints,
|
|
// "Expired",
|
|
fontSize: 14,
|
|
),
|
|
)
|
|
],
|
|
),
|
|
Texts(
|
|
"${model.lacumGroupInformation.lakumInquiryInformationObjVersion.expiredPoints} ${TranslationBase.of(context).lakumPoint} ",
|
|
fontWeight: FontWeight.bold,
|
|
fontSize: 14,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
// Texts(
|
|
// "${model.lacumGroupInformation.lakumInquiryInformationObjVersion.expiredPoints} Points",
|
|
// fontWeight: FontWeight.bold,
|
|
// fontSize: 14,
|
|
// ),
|
|
Container(
|
|
margin: EdgeInsets.symmetric(vertical: 16, horizontal: 8),
|
|
child: Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
|
|
Row(
|
|
children: [
|
|
Image.asset(
|
|
"assets/images/pharmacy_module/lakum/waiting_gained_icon.png",
|
|
fit: BoxFit.fill,
|
|
width: 20,
|
|
height: 25,
|
|
),
|
|
Padding(
|
|
padding: EdgeInsets.symmetric(horizontal: 8),
|
|
child: Texts(
|
|
TranslationBase.of(context).Waitinggained,
|
|
// "Waiting gained",
|
|
fontSize: 14,
|
|
),
|
|
)
|
|
],
|
|
),
|
|
Texts(
|
|
"${model.lacumGroupInformation.lakumInquiryInformationObjVersion.waitingPoints} ${TranslationBase.of(context).lakumPoint}",
|
|
fontWeight: FontWeight.bold,
|
|
fontSize: 14,
|
|
),
|
|
])),
|
|
// Texts(
|
|
// "${model.lacumGroupInformation.lakumInquiryInformationObjVersion.waitingPoints} Points",
|
|
// fontWeight: FontWeight.bold,
|
|
// fontSize: 14,
|
|
// ),
|
|
Container(
|
|
margin: EdgeInsets.symmetric(vertical: 16, horizontal: 8),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
children: [
|
|
Row(
|
|
children: [
|
|
Image.asset(
|
|
"assets/images/pharmacy_module/lakum/will_be_expired_icon.png",
|
|
fit: BoxFit.fill,
|
|
width: 25,
|
|
height: 25,
|
|
),
|
|
Padding(
|
|
padding: EdgeInsets.symmetric(horizontal: 8),
|
|
child: Texts(
|
|
TranslationBase.of(context).WillBeExpired,
|
|
// "Will Be Expired",
|
|
fontSize: 14,
|
|
),
|
|
)
|
|
],
|
|
),
|
|
Texts(
|
|
"${model.lacumGroupInformation.lakumInquiryInformationObjVersion.pointsWillBeExpired} ${TranslationBase.of(context).lakumPoint}",
|
|
fontWeight: FontWeight.bold,
|
|
fontSize: 14,
|
|
),
|
|
],
|
|
),
|
|
// Texts(
|
|
// "${model.lacumGroupInformation.lakumInquiryInformationObjVersion.pointsWillBeExpired} Points",
|
|
// fontWeight: FontWeight.bold,
|
|
// fontSize: 14,
|
|
// ),
|
|
),
|
|
|
|
SizedBox(
|
|
height: 2,
|
|
width: double.infinity,
|
|
child: Container(
|
|
color: Color(0xffefefef),
|
|
),
|
|
),
|
|
],
|
|
)
|
|
: Container(),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
navigateToLakumRegister(BuildContext context) {
|
|
Navigator.pushReplacement(context, FadePage(page: LakumRegistrationPage(projectViewModel.user.patientIdentificationNo)));
|
|
}
|
|
|
|
List<Widget> _buildAppBarICons(BuildContext context, LacumViewModel model) {
|
|
return [
|
|
IconButton(
|
|
icon: Icon(Icons.settings),
|
|
color: Colors.white,
|
|
onPressed: () {
|
|
Navigator.push(context, FadePage(page: LakumSettingPage(model.lacumInformation, model.lacumGroupInformation))).then((result) => {model.getLacumGroupData(projectViewModel.user.patientIdentificationNo)});
|
|
},
|
|
),
|
|
];
|
|
}
|
|
}
|
|
|
|
class LakumHomeButtons extends StatelessWidget {
|
|
final MediaQueryData mediaQuery;
|
|
final LacumViewModel model;
|
|
ProjectViewModel projectViewModel;
|
|
|
|
LakumHomeButtons(this.mediaQuery, this.model, this.projectViewModel);
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Container(
|
|
margin: EdgeInsets.symmetric(horizontal: 16),
|
|
child: Row(
|
|
children: [
|
|
Expanded(
|
|
child: InkWell(
|
|
// onTap: () {
|
|
// print("Account activate click");
|
|
// Navigator.push(
|
|
// context, FadePage(page: LakumActivationVidaPage()))
|
|
// .then((result) => {model.getLacumGroupData()});
|
|
// },
|
|
child: Container(
|
|
padding: EdgeInsets.symmetric(horizontal: 8),
|
|
decoration: BoxDecoration(
|
|
shape: BoxShape.rectangle,
|
|
borderRadius: BorderRadius.circular(8),
|
|
border: Border.fromBorderSide(BorderSide(
|
|
color: Color(0xffe1e1e1),
|
|
width: 0.4,
|
|
)),
|
|
color: Color(0xffe1e1e1)),
|
|
height: mediaQuery.size.height * 0.08,
|
|
child: Row(
|
|
children: [
|
|
Image.asset(
|
|
"assets/images/pharmacy_module/lakum/Account_activation_icon.png",
|
|
fit: BoxFit.fill,
|
|
width: 30,
|
|
height: 30,
|
|
),
|
|
Expanded(
|
|
child: Container(
|
|
padding: EdgeInsets.symmetric(horizontal: 16),
|
|
child: Texts(
|
|
TranslationBase.of(context).accountActivation,
|
|
fontSize: 14,
|
|
fontWeight: FontWeight.bold,
|
|
),
|
|
),
|
|
)
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
SizedBox(
|
|
width: 8,
|
|
),
|
|
Expanded(
|
|
child: InkWell(
|
|
onTap: () {
|
|
Navigator.push(context, FadePage(page: LacumTransferPage(model.lacumInformation, model.lacumGroupInformation))).then((result) {
|
|
model.getLacumGroupData(projectViewModel.user.patientIdentificationNo);
|
|
});
|
|
},
|
|
child: Container(
|
|
padding: EdgeInsets.symmetric(horizontal: 8),
|
|
decoration: BoxDecoration(
|
|
shape: BoxShape.rectangle,
|
|
borderRadius: BorderRadius.circular(8),
|
|
border: Border.fromBorderSide(BorderSide(
|
|
color: Color(0xffe1e1e1),
|
|
width: 0.4,
|
|
)),
|
|
color: Color(0xffe1e1e1)),
|
|
height: mediaQuery.size.height * 0.08,
|
|
child: Row(
|
|
children: [
|
|
Image.asset(
|
|
"assets/images/pharmacy_module/lakum/akum_transfer.png",
|
|
// "assets/images/pharmacy_module/lakum/Lakum_transfer_icon.png",
|
|
fit: BoxFit.fill,
|
|
width: 35,
|
|
height: 30,
|
|
),
|
|
Expanded(
|
|
child: Container(
|
|
padding: EdgeInsets.symmetric(horizontal: 16),
|
|
child: Texts(
|
|
TranslationBase.of(context).lakumTransfer,
|
|
fontSize: 14,
|
|
fontWeight: FontWeight.bold,
|
|
),
|
|
),
|
|
)
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
class LacumPointsWidget extends StatelessWidget {
|
|
final MediaQueryData mediaQuery;
|
|
final int pointType; // 1. balance, 2. gained, 3. consume, 4. transfer
|
|
final String title;
|
|
final num riyal;
|
|
final num point;
|
|
Color titleColor;
|
|
final List<PointsAmountPerYear> pointsAmountPerYear;
|
|
|
|
LacumPointsWidget(this.mediaQuery, this.pointType, this.title, this.riyal, this.point, this.pointsAmountPerYear) {
|
|
if (pointType == 1) {
|
|
titleColor = Color(0xffefefef);
|
|
} else if (pointType == 2) {
|
|
// titleColor = Color(0xff004bcc);
|
|
titleColor = Color(0xff339933);
|
|
} else if (pointType == 3) {
|
|
titleColor = Colors.grey;
|
|
} else {
|
|
titleColor = Color(0xffffa500);
|
|
}
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return InkWell(
|
|
onTap: () {
|
|
if (pointType != 1) {
|
|
if (pointsAmountPerYear != null && pointsAmountPerYear.length > 0) {
|
|
Navigator.push(context, FadePage(page: LakumPointsYearPage(pointsAmountPerYear)));
|
|
} else {
|
|
AppToast.showErrorToast(message: TranslationBase.of(context).lakumMsg);
|
|
// show snackBar No Details Points are there
|
|
}
|
|
}
|
|
},
|
|
child: Container(
|
|
width: mediaQuery.size.width / 2 - 25,
|
|
padding: EdgeInsets.only(top: 12, left: 8, right: 8, bottom: 8),
|
|
decoration: BoxDecoration(
|
|
shape: BoxShape.rectangle,
|
|
borderRadius: BorderRadius.circular(8),
|
|
border: Border.fromBorderSide(BorderSide(
|
|
color: Color(0xffe1e1e1),
|
|
width: 0.4,
|
|
)),
|
|
color: pointType == 1 ? Color(0xff339933) : Color(0xffefefef),
|
|
),
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Container(
|
|
margin: EdgeInsets.only(bottom: 10.0),
|
|
child: Column(
|
|
children: [
|
|
Row(
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
children: [
|
|
Container(
|
|
child: Texts(
|
|
title,
|
|
fontSize: 14,
|
|
fontWeight: FontWeight.bold,
|
|
color: titleColor,
|
|
),
|
|
),
|
|
if (pointType != 1)
|
|
Icon(
|
|
Icons.arrow_forward,
|
|
color: titleColor,
|
|
)
|
|
],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
Expanded(
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
children: [
|
|
if (pointType != 4)
|
|
Expanded(
|
|
child: Column(
|
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Texts(
|
|
TranslationBase.of(context).sar,
|
|
fontSize: 13,
|
|
fontWeight: FontWeight.bold,
|
|
color: pointType == 1 ? Colors.white : Colors.black,
|
|
),
|
|
SizedBox(
|
|
height: 4,
|
|
),
|
|
Texts(
|
|
"$riyal",
|
|
fontSize: 13,
|
|
fontWeight: FontWeight.bold,
|
|
color: pointType == 1 ? Colors.white : Colors.black,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
if (pointType != 4)
|
|
SizedBox(
|
|
child: Container(
|
|
color: pointType == 1 ? Colors.white : Colors.grey,
|
|
),
|
|
width: 1,
|
|
),
|
|
Expanded(
|
|
child: Container(
|
|
margin: EdgeInsets.only(left: 8, right: 8),
|
|
child: Column(
|
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Texts(
|
|
TranslationBase.of(context).points,
|
|
fontSize: 12,
|
|
fontWeight: FontWeight.bold,
|
|
color: pointType == 1 ? Colors.white : Colors.black,
|
|
),
|
|
SizedBox(
|
|
height: 4,
|
|
),
|
|
Texts(
|
|
"$point",
|
|
fontSize: 12,
|
|
fontWeight: FontWeight.bold,
|
|
color: pointType == 1 ? Colors.white : Colors.black,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
)
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|