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 = 'https://hmgwebservices.com/';
static String baseUrl = 'https://uat.hmgwebservices.com/';
static String baseUrl = 'https://hmgwebservices.com/';
// static String baseUrl = 'https://uat.hmgwebservices.com/';
static String baseUrlServices = baseUrl + "/Services/"; // server
// static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server
static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/";

@ -1,3 +1,23 @@
enum APPSTATUS { loading, unAuthenticated, authenticated, unverified }
enum AuthMethodTypes { sms, whatsApp, fingerPrint, faceID, moreOptions }
enum ViewState { idle, busy, error, busyLocal, errorLocal }
enum APPSTATUS {
loading,
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,
stamp: "",
iPAdress: "9.9.9.9",
versionID: 8.3,
versionID: 9,
channel: 9,
sessionID: "BlUSkYymTt",
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/routes.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:injector/injector.dart';
import 'package:logger/logger.dart';
@ -53,6 +54,9 @@ Future<void> main() async {
providers: <SingleChildWidget>[
ChangeNotifierProvider<DashboardProviderModel>(
create: (_) => DashboardProviderModel(),
),
ChangeNotifierProvider<LoginProviderModel>(
create: (_) => LoginProviderModel(),
)
],
child: MyApp(),

@ -12,10 +12,12 @@ class BaseViewModel extends ChangeNotifier {
String error = "";
//TODO add the user login model when we need it
void setOnlyState(ViewState viewState) {
_state = viewState;
}
void setState(ViewState viewState) {
_state = viewState;
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:flutter/material.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/extensions/int_extensions.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/cupertino_picker.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 '../../services/api_repo/login_api_repo.dart';
class LoginPage extends StatefulWidget {
const LoginPage({Key? key}) : super(key: key);
@ -16,6 +26,10 @@ class LoginPage extends StatefulWidget {
}
class _LoginPageState extends State<LoginPage> {
final ILoginApiRepo _loginApiRepo = Injector.appInstance.get<ILoginApiRepo>();
int branchID=0;
final loginFormKey = GlobalKey<FormState>();
var projectIdController = TextEditingController();
var userIdController = TextEditingController();
@ -23,8 +37,24 @@ class _LoginPageState extends State<LoginPage> {
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
Widget build(BuildContext context) {
final provider = Provider.of<LoginProviderModel>(context);
return Scaffold(
body: SingleChildScrollView(
child: Column(
@ -64,19 +94,48 @@ class _LoginPageState extends State<LoginPage> {
isEnableBorder: true,
),
buildSpacer20h(),
CustomTextField(LocaleKeys.password.tr(), passwordController, isTextIsPassword: true),
buildSpacer20h(),
CustomTextField(
LocaleKeys.branch.tr(),
projectIdController,
hasSelection: true,
isEnable: false,
onClick: () => CustomCupertinoPicker.showCupertinoPicker(context, [], () {}),
LocaleKeys.password.tr(),
passwordController,
isTextIsPassword: true,
onChange: (v) {
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);
}, 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';
class CustomCupertinoPicker {
static TextStyle textStyle(context) => TextStyle(color: Theme.of(context).primaryColor);
static TextStyle textStyle(context) => TextStyle(color: Colors.black);
static int cupertinoPickerIndex = 0;
@ -21,7 +21,7 @@ class CustomCupertinoPicker {
children: items.map((item) {
return Text(
'${item.facilityName}',
style: TextStyle(fontSize: 12.sp),
style: TextStyle(fontSize: 12.sp, color: Colors.black),
);
}).toList(),
);
@ -29,43 +29,48 @@ class CustomCupertinoPicker {
static showCupertinoPicker(context, List items, onSelectFun) {
showModalBottomSheet(
isDismissible: false,
context: context,
builder: (BuildContext builder) {
return Container(
height: 40.h,
color: const Color(0xfff7f7f7),
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Container(
color: const Color(0xfff7f7f7),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
CupertinoButton(
child: Text(LocaleKeys.userID.tr(), style: textStyle(context)),
onPressed: () {
Navigator.pop(context);
},
isDismissible: false,
context: context,
builder: (BuildContext builder) {
return Container(
height: 40.h,
color: const Color(0xfff7f7f7),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
color: const Color(0xfff7f7f7),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
CupertinoButton(
child: Text(LocaleKeys.userID.tr(), style: textStyle(context)),
onPressed: () {
Navigator.pop(context);
},
),
CupertinoButton(
child: Text(
LocaleKeys.userID.tr(),
style: textStyle(context),
),
CupertinoButton(
child: Text(
LocaleKeys.userID.tr(),
style: textStyle(context),
),
onPressed: () {
Navigator.pop(context);
onSelectFun(cupertinoPickerIndex);
},
)
],
),
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,
child: Center(
child: Image.asset(
"assets/images/logos/loading_mohemm_logo.gif",
"assets/images/loading_mohemm_logo.gif",
height: 96.0,
width: 96.0,
),

Loading…
Cancel
Save