diff --git a/lib/common/settings.dart b/lib/common/settings.dart index 01603df..24fdcc6 100644 --- a/lib/common/settings.dart +++ b/lib/common/settings.dart @@ -242,6 +242,7 @@ class AppSettings { static String bpCaluculateUrl = host + 'insertBP'; static String sugarCaluculateUrl = host + 'insertSugar'; static String profilePicUrl = host + 'users/profile-picture'; + static String inviteFriendUrl = host + 'sendInviteLink'; static String updateProfileUrl = host + 'update/currentUser'; static String updateLocationUrl = host + 'updateLocation'; static String uploadPicUrl = host + 'uploads'; @@ -610,6 +611,40 @@ class AppSettings { } } + static Future inviteFriend(payload) async { + + var uri = Uri.parse(inviteFriendUrl); + uri = uri.replace(query: 'customerId=$customerId'); + var response = await http.post(uri, + body: json.encode(payload), headers: await buildRequestHeaders()); + + if (response.statusCode == 200) { + try { + var _response = json.decode(response.body); + print(_response); + return true; + } catch (e) { + // display error toast + return false; + } + } else if (response.statusCode == 401) { + bool status = await AppSettings.resetToken(); + if (status) { + response = await http.post(uri, + body: json.encode(payload), headers: await buildRequestHeaders()); + if (response.statusCode == 200) { + return true; + } else { + return false; + } + } else { + return false; + } + } else { + return false; + } + } + static Future updateProfile(payload) async { var uri = Uri.parse(updateProfileUrl + '/' + customerId); try { diff --git a/lib/invitations/invitations.dart b/lib/invitations/invitations.dart index 74dd7aa..0f00666 100644 --- a/lib/invitations/invitations.dart +++ b/lib/invitations/invitations.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:healthcare_user/common/settings.dart'; import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart'; - +import 'package:intl/intl.dart'; class Invitations extends StatefulWidget { const Invitations({Key? key}) : super(key: key); @@ -11,7 +11,6 @@ class Invitations extends StatefulWidget { } class _InvitationsState extends State { - TextEditingController mobileNumberController = TextEditingController(); TextEditingController nameController = TextEditingController(); @@ -36,39 +35,141 @@ class _InvitationsState extends State { child: TextFormField( cursorColor: greyColor, controller: nameController, - decoration: textFormFieldDecoration(Icons.phone,'Enter Name'), - + decoration: textFormFieldDecoration( + Icons.phone, 'Enter Name'), ), ), - SizedBox(height:MediaQuery.of(context).size.height * .02,), + SizedBox( + height: MediaQuery.of(context).size.height * .02, + ), Container( child: TextFormField( cursorColor: greyColor, controller: mobileNumberController, keyboardType: TextInputType.number, - decoration: textFormFieldDecoration(Icons.phone,'Enter MobileNumber'), - + decoration: textFormFieldDecoration( + Icons.phone, 'Enter MobileNumber'), ), ), - SizedBox(height:MediaQuery.of(context).size.height * .02,), + SizedBox( + height: MediaQuery.of(context).size.height * .04, + ), Container( - child: Text('Or',style: TextStyle(color: primaryColor,fontWeight: FontWeight.bold,fontSize: 20),), + width: double.infinity, + height: + MediaQuery.of(context).size.height * .05, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + primary: buttonColors, // background + onPrimary: Colors.black, // foreground + ), + onPressed: () async { + if (nameController.text != '' && + mobileNumberController.text != '') { + AppSettings.preLoaderDialog(context); + + var now = new DateTime.now(); + String formattedDate = DateFormat('yyyy-MM-dd – kk:mm').format(now); + + var payload = new Map(); + + + + payload["name"] = nameController.text; + payload["phone"] = mobileNumberController.text; + payload["dateAndTime"] = formattedDate; + bool invitationStatus = await AppSettings.inviteFriend(payload); + + try{ + if(invitationStatus){ + Navigator.of(context, rootNavigator: true).pop(); + AppSettings.longSuccessToast("Invitation sent successfully"); + nameController.clear(); + mobileNumberController.clear(); + } + else{ + Navigator.of(context, rootNavigator: true).pop(); + AppSettings.longFailedToast("Failed invite your friend"); + } + } + catch(e){ + AppSettings.longFailedToast("Failed invite your friend"); + } + } + else { + AppSettings.longFailedToast("details should not be empty"); + } + }, + child: const Text('Invite'), + )), + SizedBox( + height: MediaQuery.of(context).size.height * .02, + ), + Container( + child: Text( + 'Or', + style: TextStyle( + color: primaryColor, + fontWeight: FontWeight.bold, + fontSize: 20), + ), + ), + SizedBox( + height: MediaQuery.of(context).size.height * .02, ), - SizedBox(height:MediaQuery.of(context).size.height * .02,), TextButton( child: const Text( 'Select from contacts', - style: TextStyle(decoration: TextDecoration.underline,color: primaryColor,fontSize: 20), + style: TextStyle( + decoration: TextDecoration.underline, + color: primaryColor, + fontSize: 20), ), - onPressed: () async{ - Contact? contact = await _contactPicker.selectContact(); + onPressed: () async { + Contact? contact = + await _contactPicker.selectContact(); setState(() { _contact = contact; }); + AppSettings.preLoaderDialog(context); + + var now = new DateTime.now(); + String formattedDate = DateFormat('yyyy-MM-dd – kk:mm').format(now); + + var payload = new Map(); + + String contactNumber=_contact!.phoneNumbers.toString(); + String newContact= contactNumber.substring( 1, contactNumber.length - 1 ).trim(); + + String stringAfterRemovingWhiteSpace = ''; + for (int i = 0; i < newContact.length; i++) { + if (!newContact[i].contains(' ')) { + stringAfterRemovingWhiteSpace = stringAfterRemovingWhiteSpace + "" + newContact[i]; + } + } + + payload["name"] =_contact!.fullName; + payload["phone"] = stringAfterRemovingWhiteSpace; + payload["dateAndTime"] = formattedDate; + bool invitationStatus = await AppSettings.inviteFriend(payload); + + try{ + if(invitationStatus){ + Navigator.of(context, rootNavigator: true).pop(); + AppSettings.longSuccessToast("Invitation sent successfully"); + + } + else{ + Navigator.of(context, rootNavigator: true).pop(); + AppSettings.longFailedToast("Failed invite your friend"); + } + } + catch(e){ + AppSettings.longFailedToast("Failed invite your friend"); + } }, ) ], - ) - ))))); + )))))); } } diff --git a/lib/updates/update_location.dart b/lib/updates/update_location.dart index d058850..175f845 100644 --- a/lib/updates/update_location.dart +++ b/lib/updates/update_location.dart @@ -59,14 +59,12 @@ class _UpdateMyLocationState extends State { padding: EdgeInsets.all(10), child: Column( children: [ - Container( - child: Row( - children: [ - Text('Current Location :',style: labelTextStyle(),), - SizedBox(width:MediaQuery.of(context).size.width * .02,), - Text(AppSettings.userAddress,style:wrapTextStyleBlack(),) - ], - ), + Row( + children: [ + Text('Current Location :',style: labelTextStyle(),), + SizedBox(width:MediaQuery.of(context).size.width * .02,), + Expanded(child: Text(AppSettings.userAddress,style:valuesTextStyle(),)) + ], ), SizedBox(height:MediaQuery.of(context).size.height * .04,), Container(