visitor password api

This commit is contained in:
mohammad
2024-08-20 10:44:15 +03:00
parent 5b9a6197e6
commit 0cf5053f8b
8 changed files with 170 additions and 17 deletions

View File

@ -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/utils/color_manager.dart';
import 'package:syncrow_web/utils/snack_bar.dart';
List<String> selectedDevices = [];
// Define the BLoC
class VisitorPasswordBloc
@ -17,14 +18,18 @@ class VisitorPasswordBloc
VisitorPasswordBloc() : super(VisitorPasswordInitial()) {
on<SelectUsageFrequency>(selectUsageFrequency);
on<FetchDevice>(_onFetchDevice);
on<SelectPasswordType>(selectAccessType);
on<SelectTimeVisitorPassword>(selectTimeVisitorPassword);
on<ToggleRepeatEvent>(toggleRepeat);
on<ToggleDaySelectionEvent>(toggleDaySelection);
on<SelectDeviceEvent>(selectDevice);
on<OnlineOneTimePasswordEvent>(postOnlineOneTimePassword);
on<OnlineMultipleTimePasswordEvent>(postOnlineMultipleTimePassword);
on<OfflineMultipleTimePasswordEvent>(postOfflineMultipleTimePassword);
on<OfflineOneTimePasswordEvent>(postOfflineOneTimePassword);
}
final TextEditingController userNameController = TextEditingController();
final TextEditingController emailController = TextEditingController();
@ -35,7 +40,10 @@ class VisitorPasswordBloc
final TextEditingController virtualAddressController = TextEditingController();
List<DeviceModel> data = [];
List<String> selectedDeviceIds = ['909e052c-6934-48f3-b22d-67ee04ad7265'];
List<String> selectedDeviceIds = [];
final forgetFormKey = GlobalKey<FormState>();
String accessTypeSelected = 'Online Password';
@ -191,20 +199,24 @@ class VisitorPasswordBloc
}
}
//online password
Future<void> postOnlineOneTimePassword(
OnlineOneTimePasswordEvent event,
Emitter<VisitorPasswordState> emit) async {
try {
print('selectedDevices$selectedDevices');
// emit(DeviceLoaded());
await AccessMangApi().postOnlineOneTime(
email: event.email,
devicesUuid: selectedDeviceIds,
devicesUuid: selectedDevices,
passwordName: event.passwordName);
// emit(TableLoaded(data));
} catch (e) {
emit(FailedState(e.toString()));
}
}
Future<void> postOnlineMultipleTimePassword(
OnlineMultipleTimePasswordEvent event,
Emitter<VisitorPasswordState> emit) async {
@ -224,7 +236,7 @@ class VisitorPasswordBloc
invalidTime:event.invalidTime ,
effectiveTime:event.effectiveTime ,
email: event.email,
devicesUuid: selectedDeviceIds,
devicesUuid: selectedDevices,
passwordName: event.passwordName
);
// 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(
SelectDeviceEvent event, Emitter<VisitorPasswordState> emit) {
if (selectedDeviceIds.contains(event.deviceId)) {
@ -240,7 +291,8 @@ class VisitorPasswordBloc
} else {
selectedDeviceIds.add(event.deviceId);
}
print(selectedDeviceIds);
selectedDevices=selectedDeviceIds;
print(selectedDevices);
}
String? validate(String? value) {

View File

@ -51,6 +51,7 @@ class GeneratePasswordEvent extends VisitorPasswordEvent {}
class FetchDevice extends VisitorPasswordEvent {}
//online password
class OnlineOneTimePasswordEvent extends VisitorPasswordEvent {
final String? email;
final String? passwordName;
@ -65,13 +66,33 @@ class OnlineMultipleTimePasswordEvent extends VisitorPasswordEvent {
final String? passwordName;
final String? invalidTime;
final String? 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
List<Object> get props => [email!,passwordName!,invalidTime!,effectiveTime!];
}
class SelectDeviceEvent extends VisitorPasswordEvent {
final String deviceId;
const SelectDeviceEvent(this.deviceId);

View File

@ -2,6 +2,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.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/default_button.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/constants/assets.dart';
import 'package:syncrow_web/utils/style.dart';
import '../../common/custom_table.dart';
class AddDeviceDialog extends StatelessWidget {
@ -155,7 +155,7 @@ class AddDeviceDialog extends StatelessWidget {
}
},
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));
},
withCheckBox: true,

View File

@ -308,8 +308,15 @@ class VisitorPasswordDialog extends StatelessWidget {
)
);
}
else if(visitorBloc.usageFrequencySelected=='Periodic'&&visitorBloc.accessTypeSelected=='Online Password') {
visitorBloc.add(OnlineMultipleTimePasswordEvent(
else if(visitorBloc.usageFrequencySelected=='One-Time'&&visitorBloc.accessTypeSelected=='Offline Password') {
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 ,
email: visitorBloc.emailController.text,
effectiveTime:visitorBloc.effectiveTimeTimeStamp.toString() ,