API's implementation 1.0

development_mirza
mirza.shafique 3 years ago
parent 5b155690b1
commit 0ba98d1d32

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

@ -4,8 +4,8 @@ class ApiConsts {
//static String baseUrl = "http://10.200.204.20:2801/"; // Local server //static String baseUrl = "http://10.200.204.20:2801/"; // Local server
//static String baseUrl = 'https://hmgwebservices.com/'; static String baseUrl = 'https://hmgwebservices.com/';
static String baseUrl = 'https://uat.hmgwebservices.com/'; // static String baseUrl = 'https://uat.hmgwebservices.com/';
static String baseUrlServices = baseUrl + "/Services/"; // server static String baseUrlServices = baseUrl + "/Services/"; // server
// static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server
static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/";

@ -1,3 +1,23 @@
enum APPSTATUS { loading, unAuthenticated, authenticated, unverified } enum APPSTATUS {
enum AuthMethodTypes { sms, whatsApp, fingerPrint, faceID, moreOptions } loading,
enum ViewState { idle, busy, error, busyLocal, errorLocal } unAuthenticated,
authenticated,
unverified,
}
enum AuthMethodTypes {
sms,
whatsApp,
fingerPrint,
faceID,
moreOptions,
}
enum ViewState {
hide,
idle,
busy,
error,
busyLocal,
errorLocal,
}

@ -37,7 +37,7 @@ class AppState {
languageID: 2, languageID: 2,
stamp: "", stamp: "",
iPAdress: "9.9.9.9", iPAdress: "9.9.9.9",
versionID: 8.3, versionID: 9,
channel: 9, channel: 9,
sessionID: "BlUSkYymTt", sessionID: "BlUSkYymTt",
isLoginForDoctorApp: true, isLoginForDoctorApp: true,

@ -7,6 +7,7 @@ import 'package:hmg_nurses/config/app_state.dart';
import 'package:hmg_nurses/config/dependencies.dart'; import 'package:hmg_nurses/config/dependencies.dart';
import 'package:hmg_nurses/config/routes.dart'; import 'package:hmg_nurses/config/routes.dart';
import 'package:hmg_nurses/provider/dashboard_provider_model.dart'; import 'package:hmg_nurses/provider/dashboard_provider_model.dart';
import 'package:hmg_nurses/provider/login_provider_model.dart';
import 'package:hmg_nurses/theme/app_theme.dart'; import 'package:hmg_nurses/theme/app_theme.dart';
import 'package:injector/injector.dart'; import 'package:injector/injector.dart';
import 'package:logger/logger.dart'; import 'package:logger/logger.dart';
@ -53,6 +54,9 @@ Future<void> main() async {
providers: <SingleChildWidget>[ providers: <SingleChildWidget>[
ChangeNotifierProvider<DashboardProviderModel>( ChangeNotifierProvider<DashboardProviderModel>(
create: (_) => DashboardProviderModel(), create: (_) => DashboardProviderModel(),
),
ChangeNotifierProvider<LoginProviderModel>(
create: (_) => LoginProviderModel(),
) )
], ],
child: MyApp(), child: MyApp(),

@ -12,10 +12,12 @@ class BaseViewModel extends ChangeNotifier {
String error = ""; String error = "";
//TODO add the user login model when we need it //TODO add the user login model when we need it
void setOnlyState(ViewState viewState) {
_state = viewState;
}
void setState(ViewState viewState) { void setState(ViewState viewState) {
_state = viewState; _state = viewState;
notifyListeners(); notifyListeners();
} }

@ -0,0 +1,22 @@
import 'package:hmg_nurses/classes/enums.dart';
import 'package:hmg_nurses/model/login/project_info_model.dart';
import 'package:hmg_nurses/provider/base_vm.dart';
import 'package:hmg_nurses/services/api_repo/login_api_repo.dart';
import 'package:injector/injector.dart';
class LoginProviderModel extends BaseViewModel {
LoginProviderModel() {
setOnlyState(ViewState.hide);
}
final ILoginApiRepo _loginApiRepo = Injector.appInstance.get<ILoginApiRepo>();
late List<ProjectInfoModel> assignedBranches;
getAssignedBranches(String userId) async {
setState(ViewState.busy);
assignedBranches = await _loginApiRepo.getProjectInfo(userId);
print(assignedBranches.length);
setState(ViewState.idle);
}
}

@ -1,13 +1,23 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hmg_nurses/classes/colors.dart'; import 'package:hmg_nurses/classes/colors.dart';
import 'package:hmg_nurses/classes/enums.dart';
import 'package:hmg_nurses/classes/utils.dart';
import 'package:hmg_nurses/config/routes.dart'; import 'package:hmg_nurses/config/routes.dart';
import 'package:hmg_nurses/extensions/int_extensions.dart';
import 'package:hmg_nurses/generated/locale_keys.g.dart'; import 'package:hmg_nurses/generated/locale_keys.g.dart';
import 'package:hmg_nurses/model/login/imei_details_model.dart';
import 'package:hmg_nurses/model/login/project_info_model.dart';
import 'package:hmg_nurses/provider/login_provider_model.dart';
import 'package:hmg_nurses/widgets/button/default_button.dart'; import 'package:hmg_nurses/widgets/button/default_button.dart';
import 'package:hmg_nurses/widgets/cupertino_picker.dart'; import 'package:hmg_nurses/widgets/cupertino_picker.dart';
import 'package:hmg_nurses/widgets/input_widget.dart'; import 'package:hmg_nurses/widgets/input_widget.dart';
import 'package:injector/injector.dart';
import 'package:provider/provider.dart';
import 'package:sizer/sizer.dart'; import 'package:sizer/sizer.dart';
import '../../services/api_repo/login_api_repo.dart';
class LoginPage extends StatefulWidget { class LoginPage extends StatefulWidget {
const LoginPage({Key? key}) : super(key: key); const LoginPage({Key? key}) : super(key: key);
@ -16,6 +26,10 @@ class LoginPage extends StatefulWidget {
} }
class _LoginPageState extends State<LoginPage> { class _LoginPageState extends State<LoginPage> {
final ILoginApiRepo _loginApiRepo = Injector.appInstance.get<ILoginApiRepo>();
int branchID=0;
final loginFormKey = GlobalKey<FormState>(); final loginFormKey = GlobalKey<FormState>();
var projectIdController = TextEditingController(); var projectIdController = TextEditingController();
var userIdController = TextEditingController(); var userIdController = TextEditingController();
@ -23,8 +37,24 @@ class _LoginPageState extends State<LoginPage> {
SizedBox buildSpacer20h() => SizedBox(height: 3.h); SizedBox buildSpacer20h() => SizedBox(height: 3.h);
@override
void initState() {
super.initState();
checkLastSession();
}
checkLastSession() async {
try {
Utils.showLoading();
List<GetIMEIDetailsModel> deviceInfo = await _loginApiRepo.getDeviceInfoByIMEI();
Utils.showToast(deviceInfo.length.toString());
Utils.showLoading();
} catch (e) {}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final provider = Provider.of<LoginProviderModel>(context);
return Scaffold( return Scaffold(
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
@ -64,19 +94,48 @@ class _LoginPageState extends State<LoginPage> {
isEnableBorder: true, isEnableBorder: true,
), ),
buildSpacer20h(), buildSpacer20h(),
CustomTextField(LocaleKeys.password.tr(), passwordController, isTextIsPassword: true),
buildSpacer20h(),
CustomTextField( CustomTextField(
LocaleKeys.branch.tr(), LocaleKeys.password.tr(),
projectIdController, passwordController,
hasSelection: true, isTextIsPassword: true,
isEnable: false, onChange: (v) {
onClick: () => CustomCupertinoPicker.showCupertinoPicker(context, [], () {}), if (v.length > 0) {
provider.getAssignedBranches(userIdController.text);
}
},
),
buildSpacer20h(),
Consumer<LoginProviderModel>(
builder: (_, data, w) {
return data.state == ViewState.hide
? Container()
: data.state == ViewState.busy
? const Center(child: CircularProgressIndicator())
: CustomTextField(
LocaleKeys.branch.tr(),
projectIdController,
hasSelection: true,
isEnable: false,
onClick: () => CustomCupertinoPicker.showCupertinoPicker(
context,
provider.assignedBranches,
(index) {
projectIdController.text=provider.assignedBranches[index].facilityName!;
branchID=provider.assignedBranches[index].facilityId as int;
print(branchID);
provider.notifyListeners();
},
),
);
},
),
buildSpacer20h(),
SizedBox(
height: 12.h,
), ),
buildSpacer20h()
]), ]),
), ),
) ),
], ],
), ),
), ),
@ -96,7 +155,9 @@ class _LoginPageState extends State<LoginPage> {
Navigator.pushNamed(context, AppRoutes.loginMethodsPage); Navigator.pushNamed(context, AppRoutes.loginMethodsPage);
}, colors: const [MyColors.redColor, MyColors.redColor]), }, colors: const [MyColors.redColor, MyColors.redColor]),
), ),
SizedBox(height: 3.h) SizedBox(
height: 3.h,
)
], ],
), ),
), ),

@ -5,7 +5,7 @@ import 'package:hmg_nurses/generated/locale_keys.g.dart';
import 'package:sizer/sizer.dart'; import 'package:sizer/sizer.dart';
class CustomCupertinoPicker { class CustomCupertinoPicker {
static TextStyle textStyle(context) => TextStyle(color: Theme.of(context).primaryColor); static TextStyle textStyle(context) => TextStyle(color: Colors.black);
static int cupertinoPickerIndex = 0; static int cupertinoPickerIndex = 0;
@ -21,7 +21,7 @@ class CustomCupertinoPicker {
children: items.map((item) { children: items.map((item) {
return Text( return Text(
'${item.facilityName}', '${item.facilityName}',
style: TextStyle(fontSize: 12.sp), style: TextStyle(fontSize: 12.sp, color: Colors.black),
); );
}).toList(), }).toList(),
); );
@ -29,43 +29,48 @@ class CustomCupertinoPicker {
static showCupertinoPicker(context, List items, onSelectFun) { static showCupertinoPicker(context, List items, onSelectFun) {
showModalBottomSheet( showModalBottomSheet(
isDismissible: false, isDismissible: false,
context: context, context: context,
builder: (BuildContext builder) { builder: (BuildContext builder) {
return Container( return Container(
height: 40.h, height: 40.h,
color: const Color(0xfff7f7f7), color: const Color(0xfff7f7f7),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Container( Container(
color: const Color(0xfff7f7f7), color: const Color(0xfff7f7f7),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[ children: <Widget>[
CupertinoButton( CupertinoButton(
child: Text(LocaleKeys.userID.tr(), style: textStyle(context)), child: Text(LocaleKeys.userID.tr(), style: textStyle(context)),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
}, },
),
CupertinoButton(
child: Text(
LocaleKeys.userID.tr(),
style: textStyle(context),
), ),
CupertinoButton( onPressed: () {
child: Text( Navigator.pop(context);
LocaleKeys.userID.tr(), onSelectFun(cupertinoPickerIndex);
style: textStyle(context), },
), )
onPressed: () { ],
Navigator.pop(context);
onSelectFun(cupertinoPickerIndex);
},
)
],
),
), ),
Container(height: 3.h, color: const Color(0xfff7f7f7), child: buildPickerItems(context, items, onSelectFun)) ),
], Container(
), height: 30.h,
); color: const Color(0xfff7f7f7),
}); child: buildPickerItems(context, items, onSelectFun),
)
],
),
);
},
);
} }
} }

@ -36,7 +36,7 @@ class _LoadingDialogState extends State<LoadingDialog> {
textDirection: TextDirection.rtl, textDirection: TextDirection.rtl,
child: Center( child: Center(
child: Image.asset( child: Image.asset(
"assets/images/logos/loading_mohemm_logo.gif", "assets/images/loading_mohemm_logo.gif",
height: 96.0, height: 96.0,
width: 96.0, width: 96.0,
), ),

Loading…
Cancel
Save