diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index ed2bba1..d7da819 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -18,8 +18,8 @@ var PACKAGES_ORDERS = '/api/orders'; var PACKAGES_ORDER_HISTORY = '/api/orders/items'; var PACKAGES_TAMARA_OPT = '/api/orders/paymentoptions/tamara'; // var BASE_URL = 'http://10.50.100.198:2018/'; -// var BASE_URL = 'https://uat.hmgwebservices.com/'; -var BASE_URL = 'https://hmgwebservices.com/'; +var BASE_URL = 'https://uat.hmgwebservices.com/'; +// var BASE_URL = 'https://hmgwebservices.com/'; // var BASE_URL = 'http://10.201.204.103/'; // var BASE_URL = 'https://orash.cloudsolutions.com.sa/'; // var BASE_URL = 'https://vidauat.cloudsolutions.com.sa/'; diff --git a/lib/features/hmg_services/models/hmg_services.dart b/lib/features/hmg_services/models/hmg_services.dart new file mode 100644 index 0000000..2c33381 --- /dev/null +++ b/lib/features/hmg_services/models/hmg_services.dart @@ -0,0 +1,16 @@ +import 'dart:ui'; + +import 'package:flutter/material.dart'; + +class HmgServices { + int action; + String title; + String subTitle; + String icon; + bool isLogin; + bool isLocked; + Color bgColor; + Color textColor; + String route; + HmgServices(this.action, this.title, this.subTitle, this.icon, this.isLogin, {this.isLocked = false, this.bgColor = Colors.white, this.textColor = Colors.black, this.route=''}); +} diff --git a/lib/presentation/e_referral/e_referral_page_home.dart b/lib/presentation/e_referral/e_referral_page_home.dart new file mode 100644 index 0000000..bacca47 --- /dev/null +++ b/lib/presentation/e_referral/e_referral_page_home.dart @@ -0,0 +1,97 @@ +import 'dart:ui'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_model.dart'; +import 'package:hmg_patient_app_new/presentation/e_referral/new_referral.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:provider/provider.dart'; + +class EReferralPage extends StatefulWidget { + const EReferralPage({super.key}); + + @override + _EReferralPageState createState() => _EReferralPageState(); +} + +class _EReferralPageState extends State + { + + + @override + void initState() { + super.initState(); + } + + @override + void dispose() { + super.dispose(); + } + bool isNewReferral = true; + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: CollapsingListView( + title:"E Referral".needTranslation, + child: SingleChildScrollView( + child: Consumer(builder: (context, model, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 16.h), + Row( + children: [ + CustomButton( + text: "New Referral".needTranslation, + onPressed: () { + isNewReferral =true; + setState(() { + + }); + }, + backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, + borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withOpacity(0.2), + textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, + fontSize: 12, + fontWeight: FontWeight.w500, + borderRadius: 10, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, + ), + SizedBox(width: 8.h), + CustomButton( + text: "Search Referral".needTranslation, + onPressed: () { + isNewReferral =false; + }, + backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, + borderColor: model.isSortByClinic ? AppColors.textColor.withOpacity(0.2) : AppColors.primaryRedColor, + textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, + fontSize: 12, + fontWeight: FontWeight.w500, + borderRadius: 10, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, + ), + ], + ).paddingSymmetrical(24.h, 0.h), + SizedBox(height: 20.h), + isNewReferral ? NewEReferral() : SizedBox(), + ], + ); + }), + ), + ), + ); + + + + + } +} diff --git a/lib/presentation/e_referral/new_referral.dart b/lib/presentation/e_referral/new_referral.dart new file mode 100644 index 0000000..4ed9b8e --- /dev/null +++ b/lib/presentation/e_referral/new_referral.dart @@ -0,0 +1,172 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; + +class NewEReferral extends StatefulWidget { + NewEReferral(); + + @override + _NewEReferralState createState() => _NewEReferralState(); +} + +class _NewEReferralState extends State with TickerProviderStateMixin { + late PageController _controller; + int _currentIndex = 0; + int pageSelected = 2; + + // CreateEReferralRequestModel createEReferralRequestModel = new CreateEReferralRequestModel(); + + @override + void initState() { + super.initState(); + _controller = new PageController(); + } + + @override + void dispose() { + super.dispose(); + } + + changePageViewIndex(pageIndex) { + _controller.jumpToPage(pageIndex); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Container( + height: double.infinity, + child: Column( + children: [ + Container( + width: double.infinity, + padding: EdgeInsets.only(left: 12,right: 12,top: 12), + child: Row( + children: [ + Expanded( + child: showProgress( + title: "Requester Info".needTranslation, + status: _currentIndex == 0 + ? "InProgress".needTranslation + : _currentIndex > 0 + ? "Completed".needTranslation + : "Locked".needTranslation, + color: _currentIndex == 0 ? AppColors.infoColor : AppColors.successColor, + ), + ), + Expanded( + child: showProgress( + title:"Patient Info".needTranslation, + status: _currentIndex == 1 + ? "InProgress".needTranslation + : _currentIndex > 1 + ? "Completed".needTranslation + : "Locked".needTranslation, + color: _currentIndex == 1 + ? AppColors.infoColor + : _currentIndex > 1 + ? AppColors.successColor + : AppColors.greyColor, + ), + ), + showProgress( + title: "Other Info".needTranslation, + status: _currentIndex == 2 ? "InProgress".needTranslation :"Locked".needTranslation, + color: _currentIndex == 2 + ? AppColors.infoColor + : _currentIndex > 3 + ? AppColors.successColor + : AppColors.greyColor, + isNeedBorder: false, + ), + ], + ), + ), + Expanded( + child: PageView( + physics: NeverScrollableScrollPhysics(), + controller: _controller, + onPageChanged: (index) { + setState(() { + _currentIndex = index; + }); + }, + scrollDirection: Axis.horizontal, + children: [ + // NewEReferralStepOnePage( + // changePageViewIndex: changePageViewIndex, + // createEReferralRequestModel: createEReferralRequestModel, + // ), + // NewEReferralStepTowPage( + // changePageViewIndex: changePageViewIndex, + // createEReferralRequestModel: createEReferralRequestModel, + // ), + // NewEReferralStepThreePage( + // changePageViewIndex: changePageViewIndex, + // createEReferralRequestModel: createEReferralRequestModel, + // ), + ], + ), + ), + ], + ), + ), + ); + } + + Widget showProgress({required String title, required String status, required Color color, bool isNeedBorder = true}) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + width: 26, + height: 26, + // decoration: containerRadius(color, 200), + child: Icon( + Icons.done, + color: Colors.white, + size: 16, + ), + ), + if (isNeedBorder) + Expanded( + child: Padding( + padding: const EdgeInsets.all(8.0), + child:Divider(), + )), + ], + ), + // mHeight(8), + Text( + title, + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w600, + letterSpacing: -0.44, + ), + ), + // mHeight(2), + Container( + padding: EdgeInsets.all(5), + // decoration: containerRadius(color.withOpacity(0.2), 4), + child: Text( + status, + style: TextStyle( + fontSize: 8, + fontWeight: FontWeight.w600, + letterSpacing: -0.32, + color: color, + ), + ), + ), + ], + ) + ], + ); + } +} diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index f79aae0..dc0803b 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -1,11 +1,26 @@ import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/features/hmg_services/models/hmg_services.dart'; +import 'package:hmg_patient_app_new/presentation/hmg_services/services_view.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; -class ServicesPage extends StatelessWidget { +class ServicesPage extends StatefulWidget { const ServicesPage({super.key}); + @override + State createState() => _ServicesPageState(); +} + +class _ServicesPageState extends State { + List hmgServices = []; + + @override + void initState() { + hmgServices.add(HmgServices(11,"E Referral Services".needTranslation, "".needTranslation, "assets/images/svg/e-referral.svg", true, bgColor: Colors.orangeAccent, textColor: Colors.black, route: "/ereferralPage")); + super.initState(); + } + @override Widget build(BuildContext context) { return CollapsingListView( @@ -16,7 +31,29 @@ class ServicesPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Medical & Care Services".needTranslation.toText18(isBold: true) + "Medical & Care Services".needTranslation.toText18(isBold: true), + SizedBox(height: 20,), + Padding( + padding: const EdgeInsets.only( + left: 16, + right: 16, + top: 0, + ), + child: GridView.builder( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 4, // 4 icons per row + crossAxisSpacing: 16, + mainAxisSpacing: 24, + childAspectRatio: 0.75, + ), + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: hmgServices.length, + padding: EdgeInsets.zero, + itemBuilder: (BuildContext context, int index) { + return ServiceGridView(hmgServices[index], index, false); + }, + )) ], ), ), diff --git a/lib/presentation/hmg_services/services_view.dart b/lib/presentation/hmg_services/services_view.dart new file mode 100644 index 0000000..25fd365 --- /dev/null +++ b/lib/presentation/hmg_services/services_view.dart @@ -0,0 +1,62 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/features/hmg_services/models/hmg_services.dart'; +import 'package:hmg_patient_app_new/routes/app_routes.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; + + +class ServiceGridView extends StatelessWidget { + HmgServices hmgServices; + int index; + bool isHomePage; + bool isLocked; + ServiceGridView(this.hmgServices, this.index, this.isHomePage, {super.key, this.isLocked = false}); + static final NavigationService _navigationService = getIt.get(); + @override + Widget build(BuildContext context) { + return InkWell( + onTap: () { + _navigationService.pushAndReplace(hmgServices.route); + }, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + height: 48, + width: 48, + padding: EdgeInsets.all(0), + margin: EdgeInsets.all(0), + decoration: BoxDecoration( + color: hmgServices.bgColor, + borderRadius: BorderRadius.circular(12), + ), + child:Utils.buildSvgWithAssets ( + icon: hmgServices.icon, + height: 21, + width: 21, + fit: BoxFit.none, + ), + ), + const SizedBox(height: 5), + hmgServices.title.toText12( + fontWeight: FontWeight.w500, + color:hmgServices.textColor, + + ), + // Text( + // hmgServices.subTitle, + // textAlign: TextAlign.left, + // style: TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.w500, + // color: hmgServices.textColor, + // )), + // ) + ], + )); + } + +} diff --git a/lib/routes/app_routes.dart b/lib/routes/app_routes.dart index 5a93216..47a19a9 100644 --- a/lib/routes/app_routes.dart +++ b/lib/routes/app_routes.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/presentation/authentication/login.dart'; import 'package:hmg_patient_app_new/presentation/authentication/register.dart'; import 'package:hmg_patient_app_new/presentation/authentication/register_step2.dart'; +import 'package:hmg_patient_app_new/presentation/e_referral/e_referral_page_home.dart'; import 'package:hmg_patient_app_new/presentation/home/landing_page.dart'; import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart'; @@ -14,13 +15,14 @@ class AppRoutes { static const String registerStepTwo = '/registerStepTwo'; static const String landingScreen = '/landingScreen'; static const String medicalFilePage = '/medicalFilePage'; - + static const String ereferralPage = '/ereferralPage'; static Map get routes => { initialRoute: (context) => SplashPage(), loginScreen: (context) => LoginScreen(), landingScreen: (context) => LandingNavigation(), register: (context) => RegisterNew(), registerStepTwo: (context) => RegisterNewStep2(), - medicalFilePage: (context) => MedicalFilePage(), + medicalFilePage: (context) => MedicalFilePage(), + ereferralPage: (context) => EReferralPage() }; }