import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:rrispat_app/src/features/auth/domains/models/auth_model.dart';
import 'package:rrispat_app/src/shared/shared_views.dart';
import 'package:rrispat_app/src/shared/widgets/rr_header.dart';
import '../../controllers/auth_controller.dart';
class AddUserWidget extends ConsumerStatefulWidget {
const AddUserWidget({super.key});
@override
ConsumerState<ConsumerStatefulWidget> createState() => _AddUserPageState();
}
class _AddUserPageState extends ConsumerState<AddUserWidget> {
TextEditingController phoneNumberController = TextEditingController();
TextEditingController fullNameController = TextEditingController();
final _gKey = GlobalKey<FormState>();
String code = "";
AuthModel authModel = AuthModel(
uid: "",
fcmToken: "",
phoneNumber: "",
fullName: "",
division: "",
department: "",
isActive: true,
isDefaultPin: true,
isSuperAdmin: false,
devices: const [],
deviceHistory: const [],
apps: const [],
createdAt: DateTime.now(),
updatedAt: DateTime.now(),
);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: const RRHeader(),
body: Padding(
padding: const EdgeInsets.all(5.0),
child: Form(
key: _gKey,
child: ListView(
children: [
const SizedBox(
height: 10,
),
fullNameWidget(),
const SizedBox(
height: 10,
),
phoneWidget(),
FilledButton(
onPressed: () {
if (_gKey.currentState!.validate()) {
createUser(
context,
authModel.copyWith(
fullName: fullNameController.text,
phoneNumber: code + phoneNumberController.text,
),
);
}
},
child: const Text("Submit"),
),
],
),
),
),
);
}
Widget fullNameWidget() {
return TextFormField(
controller: fullNameController,
keyboardType: TextInputType.text,
style: Theme.of(context).textTheme.titleMedium,
textCapitalization: TextCapitalization.words,
decoration: InputDecoration(
hintText: "Enter Full Name",
label: const Text("Full Name"),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
validator: (value) {
if (value == null || value.isEmpty) {
return "Enter Full Name";
}
return null;
},
);
}
Widget phoneWidget() {
return TextFormField(
controller: phoneNumberController,
keyboardType: TextInputType.phone,
maxLength: 10,
style: Theme.of(context).textTheme.titleMedium,
decoration: InputDecoration(
prefix: const Text("+91"),
hintText: "Enter Phone Number",
label: const Text("Phone Number"),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
validator: (value) {
if (value == null || value.isEmpty) {
return "Enter a valid PhoneNumber";
} else if (value.length < 10) {
return "Phone Number length must be 10";
}
return null;
},
);
}
Future<void> createUser(BuildContext context, AuthModel auth) async {
return showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text("Confirm User",
style: Theme.of(context).textTheme.titleLarge),
content: SizedBox(
height: 100,
child: Column(
children: [
const SizedBox(
height: 10,
),
Table(
children: [
TableRow(children: [
TableCell(
child: Text("Full Name",
style: Theme.of(context).textTheme.labelLarge)),
TableCell(
child: Text(auth.fullName,
style: Theme.of(context).textTheme.bodyMedium)),
]),
TableRow(children: [
TableCell(
child: Text("Phone Number",
style: Theme.of(context).textTheme.labelLarge)),
TableCell(
child: Text(auth.phoneNumber,
style: Theme.of(context).textTheme.bodyMedium)),
]),
],
),
const SizedBox(
height: 30,
),
],
),
),
actions: [
OutlinedButton(
onPressed: () {
context.pop(true);
},
child: Text("Cancel",
style: Theme.of(context).textTheme.titleMedium)),
ElevatedButton(
onPressed: () {
ref.read(authControllerProvider).createUser(ref, auth);
context.goNamed(HomeView.routeName);
},
child: Text("Confirm",
style: Theme.of(context).textTheme.titleMedium))
],
);
},
);
}
}