invitations completed for single contact number

dev
Sneha 1 year ago
parent 2bcacdcb92
commit ed1ff5101b

@ -242,6 +242,7 @@ class AppSettings {
static String bpCaluculateUrl = host + 'insertBP'; static String bpCaluculateUrl = host + 'insertBP';
static String sugarCaluculateUrl = host + 'insertSugar'; static String sugarCaluculateUrl = host + 'insertSugar';
static String profilePicUrl = host + 'users/profile-picture'; static String profilePicUrl = host + 'users/profile-picture';
static String inviteFriendUrl = host + 'sendInviteLink';
static String updateProfileUrl = host + 'update/currentUser'; static String updateProfileUrl = host + 'update/currentUser';
static String updateLocationUrl = host + 'updateLocation'; static String updateLocationUrl = host + 'updateLocation';
static String uploadPicUrl = host + 'uploads'; static String uploadPicUrl = host + 'uploads';
@ -610,6 +611,40 @@ class AppSettings {
} }
} }
static Future<bool> 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<bool> updateProfile(payload) async { static Future<bool> updateProfile(payload) async {
var uri = Uri.parse(updateProfileUrl + '/' + customerId); var uri = Uri.parse(updateProfileUrl + '/' + customerId);
try { try {

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:healthcare_user/common/settings.dart'; import 'package:healthcare_user/common/settings.dart';
import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart'; import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart';
import 'package:intl/intl.dart';
class Invitations extends StatefulWidget { class Invitations extends StatefulWidget {
const Invitations({Key? key}) : super(key: key); const Invitations({Key? key}) : super(key: key);
@ -11,7 +11,6 @@ class Invitations extends StatefulWidget {
} }
class _InvitationsState extends State<Invitations> { class _InvitationsState extends State<Invitations> {
TextEditingController mobileNumberController = TextEditingController(); TextEditingController mobileNumberController = TextEditingController();
TextEditingController nameController = TextEditingController(); TextEditingController nameController = TextEditingController();
@ -36,39 +35,141 @@ class _InvitationsState extends State<Invitations> {
child: TextFormField( child: TextFormField(
cursorColor: greyColor, cursorColor: greyColor,
controller: nameController, 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( Container(
child: TextFormField( child: TextFormField(
cursorColor: greyColor, cursorColor: greyColor,
controller: mobileNumberController, controller: mobileNumberController,
keyboardType: TextInputType.number, 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(
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<String, dynamic>();
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( Container(
child: Text('Or',style: TextStyle(color: primaryColor,fontWeight: FontWeight.bold,fontSize: 20),), 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( TextButton(
child: const Text( child: const Text(
'Select from contacts', 'Select from contacts',
style: TextStyle(decoration: TextDecoration.underline,color: primaryColor,fontSize: 20), style: TextStyle(
decoration: TextDecoration.underline,
color: primaryColor,
fontSize: 20),
), ),
onPressed: () async{ onPressed: () async {
Contact? contact = await _contactPicker.selectContact(); Contact? contact =
await _contactPicker.selectContact();
setState(() { setState(() {
_contact = contact; _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, dynamic>();
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");
}
}, },
) )
], ],
) ))))));
)))));
} }
} }

@ -59,15 +59,13 @@ class _UpdateMyLocationState extends State<UpdateMyLocation> {
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: Column( child: Column(
children: [ children: [
Container( Row(
child: Row(
children: [ children: [
Text('Current Location :',style: labelTextStyle(),), Text('Current Location :',style: labelTextStyle(),),
SizedBox(width:MediaQuery.of(context).size.width * .02,), SizedBox(width:MediaQuery.of(context).size.width * .02,),
Text(AppSettings.userAddress,style:wrapTextStyleBlack(),) Expanded(child: Text(AppSettings.userAddress,style:valuesTextStyle(),))
], ],
), ),
),
SizedBox(height:MediaQuery.of(context).size.height * .04,), SizedBox(height:MediaQuery.of(context).size.height * .04,),
Container( Container(
width:double.infinity, width:double.infinity,

Loading…
Cancel
Save