mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 07:07:19 +00:00
visitor password api
This commit is contained in:
@ -59,8 +59,8 @@ class MyApp extends StatelessWidget {
|
|||||||
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), // Set up color scheme
|
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), // Set up color scheme
|
||||||
useMaterial3: true, // Enable Material 3
|
useMaterial3: true, // Enable Material 3
|
||||||
),
|
),
|
||||||
home: VisitorPasswordDialog()
|
// home: VisitorPasswordDialog()
|
||||||
// home:isLoggedIn == 'Success' ? const HomePage() : const LoginPage(),
|
home:isLoggedIn == 'Success' ? const HomePage() : const LoginPage(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -234,7 +234,7 @@ class AccessManagementPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: state is TableLoaded
|
child: state is TableLoaded
|
||||||
? DynamicTable(
|
? DynamicTable(
|
||||||
withCheckBox: false,
|
withCheckBox: false,
|
||||||
size: size,
|
size: size,
|
||||||
// cellDecoration: containerDecoration,
|
// cellDecoration: containerDecoration,
|
||||||
|
@ -10,6 +10,7 @@ import 'package:syncrow_web/pages/visitor_password/model/schedule_model.dart';
|
|||||||
import 'package:syncrow_web/services/access_mang_api.dart';
|
import 'package:syncrow_web/services/access_mang_api.dart';
|
||||||
import 'package:syncrow_web/utils/color_manager.dart';
|
import 'package:syncrow_web/utils/color_manager.dart';
|
||||||
import 'package:syncrow_web/utils/snack_bar.dart';
|
import 'package:syncrow_web/utils/snack_bar.dart';
|
||||||
|
List<String> selectedDevices = [];
|
||||||
|
|
||||||
// Define the BLoC
|
// Define the BLoC
|
||||||
class VisitorPasswordBloc
|
class VisitorPasswordBloc
|
||||||
@ -17,14 +18,18 @@ class VisitorPasswordBloc
|
|||||||
VisitorPasswordBloc() : super(VisitorPasswordInitial()) {
|
VisitorPasswordBloc() : super(VisitorPasswordInitial()) {
|
||||||
on<SelectUsageFrequency>(selectUsageFrequency);
|
on<SelectUsageFrequency>(selectUsageFrequency);
|
||||||
on<FetchDevice>(_onFetchDevice);
|
on<FetchDevice>(_onFetchDevice);
|
||||||
|
|
||||||
on<SelectPasswordType>(selectAccessType);
|
on<SelectPasswordType>(selectAccessType);
|
||||||
on<SelectTimeVisitorPassword>(selectTimeVisitorPassword);
|
on<SelectTimeVisitorPassword>(selectTimeVisitorPassword);
|
||||||
on<ToggleRepeatEvent>(toggleRepeat);
|
on<ToggleRepeatEvent>(toggleRepeat);
|
||||||
on<ToggleDaySelectionEvent>(toggleDaySelection);
|
on<ToggleDaySelectionEvent>(toggleDaySelection);
|
||||||
on<SelectDeviceEvent>(selectDevice);
|
on<SelectDeviceEvent>(selectDevice);
|
||||||
|
|
||||||
on<OnlineOneTimePasswordEvent>(postOnlineOneTimePassword);
|
on<OnlineOneTimePasswordEvent>(postOnlineOneTimePassword);
|
||||||
on<OnlineMultipleTimePasswordEvent>(postOnlineMultipleTimePassword);
|
on<OnlineMultipleTimePasswordEvent>(postOnlineMultipleTimePassword);
|
||||||
|
|
||||||
|
on<OfflineMultipleTimePasswordEvent>(postOfflineMultipleTimePassword);
|
||||||
|
on<OfflineOneTimePasswordEvent>(postOfflineOneTimePassword);
|
||||||
|
|
||||||
}
|
}
|
||||||
final TextEditingController userNameController = TextEditingController();
|
final TextEditingController userNameController = TextEditingController();
|
||||||
final TextEditingController emailController = TextEditingController();
|
final TextEditingController emailController = TextEditingController();
|
||||||
@ -35,7 +40,10 @@ class VisitorPasswordBloc
|
|||||||
final TextEditingController virtualAddressController = TextEditingController();
|
final TextEditingController virtualAddressController = TextEditingController();
|
||||||
|
|
||||||
List<DeviceModel> data = [];
|
List<DeviceModel> data = [];
|
||||||
List<String> selectedDeviceIds = ['909e052c-6934-48f3-b22d-67ee04ad7265'];
|
List<String> selectedDeviceIds = [];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
final forgetFormKey = GlobalKey<FormState>();
|
final forgetFormKey = GlobalKey<FormState>();
|
||||||
|
|
||||||
String accessTypeSelected = 'Online Password';
|
String accessTypeSelected = 'Online Password';
|
||||||
@ -191,20 +199,24 @@ class VisitorPasswordBloc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//online password
|
||||||
|
|
||||||
Future<void> postOnlineOneTimePassword(
|
Future<void> postOnlineOneTimePassword(
|
||||||
OnlineOneTimePasswordEvent event,
|
OnlineOneTimePasswordEvent event,
|
||||||
Emitter<VisitorPasswordState> emit) async {
|
Emitter<VisitorPasswordState> emit) async {
|
||||||
try {
|
try {
|
||||||
|
print('selectedDevices$selectedDevices');
|
||||||
// emit(DeviceLoaded());
|
// emit(DeviceLoaded());
|
||||||
await AccessMangApi().postOnlineOneTime(
|
await AccessMangApi().postOnlineOneTime(
|
||||||
email: event.email,
|
email: event.email,
|
||||||
devicesUuid: selectedDeviceIds,
|
devicesUuid: selectedDevices,
|
||||||
passwordName: event.passwordName);
|
passwordName: event.passwordName);
|
||||||
// emit(TableLoaded(data));
|
// emit(TableLoaded(data));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
emit(FailedState(e.toString()));
|
emit(FailedState(e.toString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> postOnlineMultipleTimePassword(
|
Future<void> postOnlineMultipleTimePassword(
|
||||||
OnlineMultipleTimePasswordEvent event,
|
OnlineMultipleTimePasswordEvent event,
|
||||||
Emitter<VisitorPasswordState> emit) async {
|
Emitter<VisitorPasswordState> emit) async {
|
||||||
@ -224,7 +236,7 @@ class VisitorPasswordBloc
|
|||||||
invalidTime:event.invalidTime ,
|
invalidTime:event.invalidTime ,
|
||||||
effectiveTime:event.effectiveTime ,
|
effectiveTime:event.effectiveTime ,
|
||||||
email: event.email,
|
email: event.email,
|
||||||
devicesUuid: selectedDeviceIds,
|
devicesUuid: selectedDevices,
|
||||||
passwordName: event.passwordName
|
passwordName: event.passwordName
|
||||||
);
|
);
|
||||||
// emit(TableLoaded(data));
|
// emit(TableLoaded(data));
|
||||||
@ -233,6 +245,45 @@ class VisitorPasswordBloc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//offline password
|
||||||
|
Future<void> postOfflineOneTimePassword(
|
||||||
|
OfflineOneTimePasswordEvent event,
|
||||||
|
Emitter<VisitorPasswordState> emit) async {
|
||||||
|
try {
|
||||||
|
generate7DigitNumber();
|
||||||
|
// emit(DeviceLoaded());
|
||||||
|
await AccessMangApi().postOffLineOneTime(
|
||||||
|
email: event.email,
|
||||||
|
devicesUuid: selectedDevices,
|
||||||
|
passwordName: event.passwordName
|
||||||
|
);
|
||||||
|
// emit(TableLoaded(data));
|
||||||
|
} catch (e) {
|
||||||
|
emit(FailedState(e.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> postOfflineMultipleTimePassword(
|
||||||
|
OfflineMultipleTimePasswordEvent event,
|
||||||
|
Emitter<VisitorPasswordState> emit) async {
|
||||||
|
try {
|
||||||
|
generate7DigitNumber();
|
||||||
|
// emit(DeviceLoaded());
|
||||||
|
await AccessMangApi().postOffLineMultipleTime(
|
||||||
|
email: event.email,
|
||||||
|
devicesUuid: selectedDevices,
|
||||||
|
passwordName: event.passwordName,
|
||||||
|
invalidTime:event.invalidTime ,
|
||||||
|
effectiveTime:event.effectiveTime
|
||||||
|
);
|
||||||
|
// emit(TableLoaded(data));
|
||||||
|
} catch (e) {
|
||||||
|
emit(FailedState(e.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void selectDevice(
|
void selectDevice(
|
||||||
SelectDeviceEvent event, Emitter<VisitorPasswordState> emit) {
|
SelectDeviceEvent event, Emitter<VisitorPasswordState> emit) {
|
||||||
if (selectedDeviceIds.contains(event.deviceId)) {
|
if (selectedDeviceIds.contains(event.deviceId)) {
|
||||||
@ -240,7 +291,8 @@ class VisitorPasswordBloc
|
|||||||
} else {
|
} else {
|
||||||
selectedDeviceIds.add(event.deviceId);
|
selectedDeviceIds.add(event.deviceId);
|
||||||
}
|
}
|
||||||
print(selectedDeviceIds);
|
selectedDevices=selectedDeviceIds;
|
||||||
|
print(selectedDevices);
|
||||||
}
|
}
|
||||||
|
|
||||||
String? validate(String? value) {
|
String? validate(String? value) {
|
||||||
|
@ -51,6 +51,7 @@ class GeneratePasswordEvent extends VisitorPasswordEvent {}
|
|||||||
|
|
||||||
class FetchDevice extends VisitorPasswordEvent {}
|
class FetchDevice extends VisitorPasswordEvent {}
|
||||||
|
|
||||||
|
//online password
|
||||||
class OnlineOneTimePasswordEvent extends VisitorPasswordEvent {
|
class OnlineOneTimePasswordEvent extends VisitorPasswordEvent {
|
||||||
final String? email;
|
final String? email;
|
||||||
final String? passwordName;
|
final String? passwordName;
|
||||||
@ -65,13 +66,33 @@ class OnlineMultipleTimePasswordEvent extends VisitorPasswordEvent {
|
|||||||
final String? passwordName;
|
final String? passwordName;
|
||||||
final String? invalidTime;
|
final String? invalidTime;
|
||||||
final String? effectiveTime;
|
final String? effectiveTime;
|
||||||
|
|
||||||
const OnlineMultipleTimePasswordEvent({this.email,this.passwordName,this.invalidTime,this.effectiveTime});
|
const OnlineMultipleTimePasswordEvent({this.email,this.passwordName,this.invalidTime,this.effectiveTime});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [email!,passwordName!,invalidTime!,effectiveTime!];
|
||||||
|
}
|
||||||
|
|
||||||
|
//offline password
|
||||||
|
class OfflineOneTimePasswordEvent extends VisitorPasswordEvent {
|
||||||
|
final String? email;
|
||||||
|
final String? passwordName;
|
||||||
|
const OfflineOneTimePasswordEvent({this.email,this.passwordName});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [email!,passwordName!,];
|
||||||
|
}
|
||||||
|
|
||||||
|
class OfflineMultipleTimePasswordEvent extends VisitorPasswordEvent {
|
||||||
|
final String? email;
|
||||||
|
final String? passwordName;
|
||||||
|
final String? invalidTime;
|
||||||
|
final String? effectiveTime;
|
||||||
|
|
||||||
|
const OfflineMultipleTimePasswordEvent({this.email,this.passwordName,this.invalidTime,this.effectiveTime});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object> get props => [email!,passwordName!,invalidTime!,effectiveTime!];
|
List<Object> get props => [email!,passwordName!,invalidTime!,effectiveTime!];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class SelectDeviceEvent extends VisitorPasswordEvent {
|
class SelectDeviceEvent extends VisitorPasswordEvent {
|
||||||
final String deviceId;
|
final String deviceId;
|
||||||
const SelectDeviceEvent(this.deviceId);
|
const SelectDeviceEvent(this.deviceId);
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
|
import 'package:syncrow_web/pages/common/custom_table.dart';
|
||||||
import 'package:syncrow_web/pages/common/custom_web_textfield.dart';
|
import 'package:syncrow_web/pages/common/custom_web_textfield.dart';
|
||||||
import 'package:syncrow_web/pages/common/default_button.dart';
|
import 'package:syncrow_web/pages/common/default_button.dart';
|
||||||
import 'package:syncrow_web/pages/visitor_password/bloc/visitor_password_bloc.dart';
|
import 'package:syncrow_web/pages/visitor_password/bloc/visitor_password_bloc.dart';
|
||||||
@ -10,7 +11,6 @@ import 'package:syncrow_web/pages/visitor_password/bloc/visitor_password_state.d
|
|||||||
import 'package:syncrow_web/utils/color_manager.dart';
|
import 'package:syncrow_web/utils/color_manager.dart';
|
||||||
import 'package:syncrow_web/utils/constants/assets.dart';
|
import 'package:syncrow_web/utils/constants/assets.dart';
|
||||||
import 'package:syncrow_web/utils/style.dart';
|
import 'package:syncrow_web/utils/style.dart';
|
||||||
import '../../common/custom_table.dart';
|
|
||||||
|
|
||||||
|
|
||||||
class AddDeviceDialog extends StatelessWidget {
|
class AddDeviceDialog extends StatelessWidget {
|
||||||
@ -155,7 +155,7 @@ class AddDeviceDialog extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
onRowCheckboxChanged: (index, isSelected) {
|
onRowCheckboxChanged: (index, isSelected) {
|
||||||
final deviceId = state.data[index].uuid; // Adjust as per your actual data structure
|
final deviceId = state.data[index].uuid;
|
||||||
visitorBloc.add(SelectDeviceEvent(deviceId));
|
visitorBloc.add(SelectDeviceEvent(deviceId));
|
||||||
},
|
},
|
||||||
withCheckBox: true,
|
withCheckBox: true,
|
||||||
|
@ -308,8 +308,15 @@ class VisitorPasswordDialog extends StatelessWidget {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else if(visitorBloc.usageFrequencySelected=='Periodic'&&visitorBloc.accessTypeSelected=='Online Password') {
|
else if(visitorBloc.usageFrequencySelected=='One-Time'&&visitorBloc.accessTypeSelected=='Offline Password') {
|
||||||
visitorBloc.add(OnlineMultipleTimePasswordEvent(
|
visitorBloc.add(OfflineOneTimePasswordEvent(
|
||||||
|
passwordName:visitorBloc.userNameController.text ,
|
||||||
|
email: visitorBloc.emailController.text,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else if(visitorBloc.usageFrequencySelected=='Periodic'&&visitorBloc.accessTypeSelected=='Offline Password') {
|
||||||
|
visitorBloc.add(OfflineMultipleTimePasswordEvent(
|
||||||
passwordName:visitorBloc.userNameController.text ,
|
passwordName:visitorBloc.userNameController.text ,
|
||||||
email: visitorBloc.emailController.text,
|
email: visitorBloc.emailController.text,
|
||||||
effectiveTime:visitorBloc.effectiveTimeTimeStamp.toString() ,
|
effectiveTime:visitorBloc.effectiveTimeTimeStamp.toString() ,
|
||||||
|
@ -63,7 +63,7 @@ class AccessMangApi{
|
|||||||
}');
|
}');
|
||||||
|
|
||||||
final response = await HTTPService().post(
|
final response = await HTTPService().post(
|
||||||
path: ApiEndpoints.sendOfflineOneTime,
|
path: ApiEndpoints.sendOnlineOneTime,
|
||||||
body: jsonEncode({
|
body: jsonEncode({
|
||||||
"email": email,
|
"email": email,
|
||||||
"passwordName": passwordName,
|
"passwordName": passwordName,
|
||||||
@ -106,7 +106,7 @@ class AccessMangApi{
|
|||||||
print('createPassword =$body');
|
print('createPassword =$body');
|
||||||
|
|
||||||
final response = await HTTPService().post(
|
final response = await HTTPService().post(
|
||||||
path: ApiEndpoints.sendOfflineMultipleTime,
|
path: ApiEndpoints.sendOnlineMultipleTime,
|
||||||
body: jsonEncode(body),
|
body: jsonEncode(body),
|
||||||
showServerMessage: true,
|
showServerMessage: true,
|
||||||
expectedResponseModel: (json) {
|
expectedResponseModel: (json) {
|
||||||
@ -121,7 +121,76 @@ class AccessMangApi{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OffLine One Time Password
|
||||||
|
|
||||||
|
Future postOffLineOneTime({String? email,String? passwordName,List<String>? devicesUuid}) async {
|
||||||
|
try {
|
||||||
|
|
||||||
|
print('postOfflineOneTime List: ${
|
||||||
|
{
|
||||||
|
"email": email,
|
||||||
|
"passwordName": passwordName,
|
||||||
|
"devicesUuid": devicesUuid
|
||||||
|
}
|
||||||
|
}');
|
||||||
|
|
||||||
|
final response = await HTTPService().post(
|
||||||
|
path: ApiEndpoints.sendOffLineOneTime,
|
||||||
|
body: jsonEncode({
|
||||||
|
"email": email,
|
||||||
|
"passwordName": passwordName,
|
||||||
|
"devicesUuid": devicesUuid
|
||||||
|
}),
|
||||||
|
showServerMessage: true,
|
||||||
|
expectedResponseModel: (json) {
|
||||||
|
List<dynamic> jsonData = json;
|
||||||
|
print('postOfflineOneTime List: $json');
|
||||||
|
},
|
||||||
|
);
|
||||||
|
return response;
|
||||||
|
} catch (e) {
|
||||||
|
debugPrint('Error fetching $e');
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future postOffLineMultipleTime({
|
||||||
|
String? email,
|
||||||
|
String? passwordName,
|
||||||
|
String? effectiveTime,
|
||||||
|
String? invalidTime,
|
||||||
|
List<String>? devicesUuid
|
||||||
|
|
||||||
|
}) async {
|
||||||
|
try {
|
||||||
|
|
||||||
|
print('postOfflineOneTime List: ${
|
||||||
|
{
|
||||||
|
"email": email,
|
||||||
|
"passwordName": passwordName,
|
||||||
|
"devicesUuid": devicesUuid
|
||||||
|
}
|
||||||
|
}');
|
||||||
|
|
||||||
|
final response = await HTTPService().post(
|
||||||
|
path: ApiEndpoints.sendOffLineOneTime,
|
||||||
|
body: jsonEncode({
|
||||||
|
"email": email,
|
||||||
|
"devicesUuid":devicesUuid,
|
||||||
|
"passwordName": passwordName,
|
||||||
|
"effectiveTime": effectiveTime,
|
||||||
|
"invalidTime": invalidTime
|
||||||
|
}),
|
||||||
|
showServerMessage: true,
|
||||||
|
expectedResponseModel: (json) {
|
||||||
|
List<dynamic> jsonData = json;
|
||||||
|
print('postOfflineOneTime List: $json');
|
||||||
|
},
|
||||||
|
);
|
||||||
|
return response;
|
||||||
|
} catch (e) {
|
||||||
|
debugPrint('Error fetching $e');
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -13,8 +13,12 @@ abstract class ApiEndpoints {
|
|||||||
static const String getDevices = '$baseUrl/visitor-password/devices';
|
static const String getDevices = '$baseUrl/visitor-password/devices';
|
||||||
|
|
||||||
|
|
||||||
static const String sendOfflineOneTime = '$baseUrl/visitor-password/temporary-password/online/one-time';
|
static const String sendOnlineOneTime = '$baseUrl/visitor-password/temporary-password/online/one-time';
|
||||||
static const String sendOfflineMultipleTime = '$baseUrl/visitor-password/temporary-password/online/multiple-time';
|
static const String sendOnlineMultipleTime = '$baseUrl/visitor-password/temporary-password/online/multiple-time';
|
||||||
|
|
||||||
|
//offline Password
|
||||||
|
static const String sendOffLineOneTime = '$baseUrl/visitor-password/temporary-password/offline/one-time';
|
||||||
|
static const String sendOffLineMultipleTime = '$baseUrl/visitor-password/temporary-password/offline/multiple-time';
|
||||||
|
|
||||||
|
|
||||||
static const String getUser = '$baseUrl/user/{userUuid}';
|
static const String getUser = '$baseUrl/user/{userUuid}';
|
||||||
|
Reference in New Issue
Block a user