diff --git a/lib/main.dart b/lib/main.dart index a1ae6ac3..119c7816 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,9 +1,11 @@ import 'package:doctor_app_flutter/providers/auth_provider.dart'; import 'package:doctor_app_flutter/providers/patients_provider.dart'; +import 'package:doctor_app_flutter/providers/projects_provider.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; import './routes.dart'; + void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @@ -14,7 +16,7 @@ class MyApp extends StatelessWidget { providers: [ ChangeNotifierProvider.value(value: PatientsProvider()), ChangeNotifierProvider.value(value: AuthProvider()), - + ChangeNotifierProvider.value(value: ProjectsProvider()), ], child: MaterialApp( title: 'Flutter Demo', diff --git a/lib/providers/auth_provider.dart b/lib/providers/auth_provider.dart index c84b7077..30235a96 100644 --- a/lib/providers/auth_provider.dart +++ b/lib/providers/auth_provider.dart @@ -5,16 +5,19 @@ import 'package:http/http.dart' as http; import '../models/user_model.dart'; -const LOGIN_URL = 'https://hmgwebservices.com/Services/Sentry.svc/REST/MemberLogIN_New'; -const INSERT_DEVICE_IMEI = 'https://hmgwebservices.com/Services/Sentry.svc/REST/DoctorApplication_INSERTDeviceIMEI'; +const LOGIN_URL = + 'https://hmgwebservices.com/Services/Sentry.svc/REST/MemberLogIN_New'; +const INSERT_DEVICE_IMEI = + 'https://hmgwebservices.com/Services/Sentry.svc/REST/DoctorApplication_INSERTDeviceIMEI'; + class AuthProvider with ChangeNotifier { Future login(UserModel userInfo) async { Map requestHeaders = { 'Content-type': 'application/json', 'Accept': 'application/json', }; - const url =LOGIN_URL; - + const url = LOGIN_URL; + try { final response = await http.post(url, headers: requestHeaders, @@ -31,25 +34,24 @@ class AuthProvider with ChangeNotifier { return Future.value(json.decode(response.body)); } catch (error) { print(error); + throw error; } } - - Future insertDeviceImei( imei) async { + Future insertDeviceImei(imei) async { Map requestHeaders = { 'Content-type': 'application/json', 'Accept': 'application/json', }; - const url =INSERT_DEVICE_IMEI; - + const url = INSERT_DEVICE_IMEI; + try { final response = await http.post(url, - headers: requestHeaders, - body: json.encode(imei)); + headers: requestHeaders, body: json.encode(imei)); return Future.value(json.decode(response.body)); } catch (error) { print(error); + throw error; } } - } diff --git a/lib/providers/patients_provider.dart b/lib/providers/patients_provider.dart index dfdc8848..4f02560c 100644 --- a/lib/providers/patients_provider.dart +++ b/lib/providers/patients_provider.dart @@ -37,14 +37,9 @@ class PatientsProvider with ChangeNotifier { "IsLoginForDoctorApp": patient.IsLoginForDoctorApp, "PatientOutSA": patient.PatientOutSA })); - // var response = await http.post(url, body: {'name': 'doodle', 'color': 'blue'}); - print('Response status: ${response.statusCode}'); - print('Response body: ${response.body}'); - // notifyListeners(); return Future.value(json.decode(response.body)); } catch (error) { - print(error.toString()); - print('error'); + throw error; } } } diff --git a/lib/providers/projects_provider.dart b/lib/providers/projects_provider.dart new file mode 100644 index 00000000..9dca87db --- /dev/null +++ b/lib/providers/projects_provider.dart @@ -0,0 +1,35 @@ +import 'dart:convert'; + +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart' as http; + +const GET_PROJECTS = + 'https://hmgwebservices.com/Services/Lists.svc/REST/GetProjectForDoctorAPP'; + +class ProjectsProvider with ChangeNotifier { + Future getProjectsList() async { + Map requestHeaders = { + 'Content-type': 'application/json', + 'Accept': 'application/json', + }; + const url = GET_PROJECTS; + var info = { + "LanguageID": 2, + "stamp": "2020-02-26T13:51:44.111Z", + "IPAdress": "11.11.11.11", + "VersionID": 1.2, + "Channel": 9, + "TokenID": "", + "SessionID": "i1UJwCTSqt", + "IsLoginForDoctorApp": true + }; + try { + final response = await http.post(url, + headers: requestHeaders, body: json.encode(info)); + return Future.value(json.decode(response.body)); + } catch (error) { + throw error; + // print('error'); + } + } +} diff --git a/lib/widgets/auth/login_form.dart b/lib/widgets/auth/login_form.dart index ecdb6e8d..8892cf5a 100644 --- a/lib/widgets/auth/login_form.dart +++ b/lib/widgets/auth/login_form.dart @@ -1,3 +1,4 @@ +import 'package:doctor_app_flutter/providers/projects_provider.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart'; @@ -23,6 +24,7 @@ class _LoginFormState extends State { final loginFormKey = GlobalKey(); String _platformImei = 'Unknown'; String uniqueId = "Unknown"; + var projectsList = []; var userInfo = UserModel( UserID: '', @@ -42,6 +44,9 @@ class _LoginFormState extends State { @override Widget build(BuildContext context) { + if (projectsList.length == 0) { + getProjectsList(); + } AuthProvider authProv = Provider.of(context); return LayoutBuilder(builder: (ctx, constraints) { @@ -121,31 +126,60 @@ class _LoginFormState extends State { SizedBox( height: 20, ), - TextFormField( - decoration: InputDecoration( - prefixIcon: Image.asset('assets/images/hospital_icon.png'), - hintText: 'Select Project', - hintStyle: TextStyle( - fontSize: - isSmallScreen ? 14 : constraints.maxWidth * 0.024), - enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(20)), - borderSide: BorderSide(color: Hexcolor('#CCCCCC')), - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(10.0)), - borderSide: - BorderSide(color: Theme.of(context).primaryColor), - ) - //BorderRadius.all(Radius.circular(20)); - ), - validator: (value) { - if (value.isEmpty) { - return 'Please enter some text'; - } - return null; - }, + // TextFormField( + // decoration: InputDecoration( + // prefixIcon: Image.asset('assets/images/hospital_icon.png'), + // hintText: 'Select Project', + // hintStyle: TextStyle( + // fontSize: + // isSmallScreen ? 14 : constraints.maxWidth * 0.024), + // enabledBorder: OutlineInputBorder( + // borderRadius: BorderRadius.all(Radius.circular(20)), + // borderSide: BorderSide(color: Hexcolor('#CCCCCC')), + // ), + // focusedBorder: OutlineInputBorder( + // borderRadius: BorderRadius.all(Radius.circular(10.0)), + // borderSide: + // BorderSide(color: Theme.of(context).primaryColor), + // ) + // //BorderRadius.all(Radius.circular(20)); + // ), + // validator: (value) { + // if (value.isEmpty) { + // return 'Please enter some text'; + // } + // return null; + // }, + // ), + // + Container( + decoration: BoxDecoration( + + borderRadius: BorderRadius.all(Radius.circular(10.0)), + // border: Border.all(color: Theme.of(context).primaryColor), + ), + width: double.infinity, + child: DropdownButton( + value: userInfo.ProjectID, + iconSize: 24, + elevation: 16, + selectedItemBuilder: (BuildContext context) { + return projectsList.map((item) { + return Text(item['Desciption']); + }).toList(); + }, + items: projectsList.map((item) { + return DropdownMenuItem( + child: Text('${item['Desciption']}'), + value: item['ID'], + ); + }).toList(), + onChanged: (val) { + userInfo.ProjectID = val; + }, + ), ), + SizedBox( height: 20, ), @@ -209,7 +243,6 @@ class _LoginFormState extends State { loginFormKey.currentState.validate(); loginFormKey.currentState.save(); authProv.login(userInfo).then((res) { - print(res['MobileNumber']); if (res['MessageStatus'] == 1) { insertDeviceImei(res, authProv); // call insert imei @@ -218,7 +251,6 @@ class _LoginFormState extends State { } else { // handel error } - print(_platformImei + '_platformImei0'); Navigator.of(context).pushNamed(HOME); }).catchError((err) { print('$err'); @@ -237,11 +269,13 @@ class _LoginFormState extends State { "DoctorTitle": "Mr.", "ClinicName": "MED", "ProjectName": "", - "DoctorImageURL": "UNKNOWN" + "DoctorImageURL": "UNKNOWN", + "LogInTokenID": res['LogInTokenID'], + "VersionID": 1.2 }; authProv.insertDeviceImei(imeiInfo).then((res) { if (res['MessageStatus'] == 1) { - setSharedPref('platformImei',_platformImei); + setSharedPref('platformImei', _platformImei); // save imei on shared preferance } else { // handel error @@ -278,10 +312,24 @@ class _LoginFormState extends State { Future setSharedPref(key, value) async { Future _prefs = SharedPreferences.getInstance(); final SharedPreferences prefs = await _prefs; - print(key); - print(value); + prefs.setInt(key, value).then((bool success) { return; }); } + + getProjectsList() { + ProjectsProvider projectsProv = Provider.of(context); + projectsProv.getProjectsList().then((res) { + if (res['MessageStatus'] == 1) { + setState(() { + projectsList = res['ListProject']; + }); + } else { + // handel error + } + }).catchError((err) { + print(err); + }); + } }