157 lines
4.7 KiB
Dart
157 lines
4.7 KiB
Dart
import 'package:baligh_dashboard/widgets/app_toast.dart';
|
|
import 'package:baligh_dashboard/widgets/custom_button.dart';
|
|
import 'package:baligh_dashboard/widgets/custom_text_field.dart';
|
|
import 'package:bot_toast/bot_toast.dart';
|
|
import 'package:cloud_firestore/cloud_firestore.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
class AdminScreen extends StatefulWidget {
|
|
const AdminScreen({super.key});
|
|
|
|
@override
|
|
State<AdminScreen> createState() => _AdminScreenState();
|
|
}
|
|
|
|
class _AdminScreenState extends State<AdminScreen> {
|
|
TextEditingController usernameController = TextEditingController();
|
|
TextEditingController passwordController = TextEditingController();
|
|
|
|
String selectedRole = "التحرش";
|
|
List<String> availableRoles = [
|
|
"التحرش",
|
|
"التعنيف",
|
|
"الابتزاز",
|
|
"المخدرات",
|
|
"الرشوة",
|
|
];
|
|
|
|
bool isLoading = false;
|
|
|
|
@override
|
|
void dispose() {
|
|
usernameController.dispose();
|
|
passwordController.dispose();
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Directionality(
|
|
textDirection: TextDirection.rtl,
|
|
child: Scaffold(
|
|
body: SafeArea(
|
|
child: Center(
|
|
child: ConstrainedBox(
|
|
constraints: const BoxConstraints(
|
|
maxWidth: 500,
|
|
minWidth: 100,
|
|
),
|
|
child: ListView(
|
|
shrinkWrap: true,
|
|
padding: const EdgeInsets.all(15),
|
|
children: [
|
|
Text(
|
|
"اضافى مشرف",
|
|
style: Theme.of(context).textTheme.headlineLarge,
|
|
),
|
|
const SizedBox(
|
|
height: 50,
|
|
),
|
|
CustomTextField(
|
|
controller: usernameController,
|
|
labelText: "اسم المشرف",
|
|
inputType: TextInputType.text),
|
|
const SizedBox(
|
|
height: 10,
|
|
),
|
|
CustomTextField(
|
|
controller: passwordController,
|
|
labelText: "كلمة المرور",
|
|
inputType: TextInputType.text,
|
|
isPassword: true,
|
|
),
|
|
const SizedBox(
|
|
height: 10,
|
|
),
|
|
Row(
|
|
children: [
|
|
DropdownMenu<String>(
|
|
initialSelection: "التحرش",
|
|
label: const Text("نوع البلاغ"),
|
|
onSelected: (String? value) {
|
|
setState(() {
|
|
selectedRole = value ?? "التحرش";
|
|
});
|
|
},
|
|
dropdownMenuEntries: availableRoles
|
|
.map<DropdownMenuEntry<String>>((value) {
|
|
return DropdownMenuEntry<String>(
|
|
value: value,
|
|
label: value,
|
|
);
|
|
}).toList(),
|
|
),
|
|
],
|
|
),
|
|
const SizedBox(
|
|
height: 15,
|
|
),
|
|
CustomButton(
|
|
label: "اضافة المشرف",
|
|
isElevated: true,
|
|
onPressed: handleCreateAdmin,
|
|
isLoading: isLoading,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
Future<void> handleCreateAdmin() async {
|
|
if (passwordController.text.trim().isEmpty ||
|
|
usernameController.text.trim().isEmpty) {
|
|
BotToast.showCustomText(toastBuilder: (_) {
|
|
return const AppToast(text: "يجب ملئ جميع الحقول");
|
|
});
|
|
|
|
return;
|
|
}
|
|
|
|
setState(() {
|
|
isLoading = true;
|
|
});
|
|
|
|
try {
|
|
await FirebaseFirestore.instance.collection("admins").add({
|
|
"role": selectedRole,
|
|
"username": usernameController.text.trim(),
|
|
"password": passwordController.text.trim(),
|
|
"createdAt": FieldValue.serverTimestamp(),
|
|
});
|
|
|
|
setState(() {
|
|
isLoading = false;
|
|
usernameController.clear();
|
|
passwordController.clear();
|
|
});
|
|
// if (!mounted) return;
|
|
|
|
BotToast.showCustomText(toastBuilder: (_) {
|
|
return const AppToast(text: "تم اضافة مشرف");
|
|
});
|
|
} catch (e) {
|
|
print(e);
|
|
setState(() {
|
|
isLoading = false;
|
|
});
|
|
BotToast.showCustomText(toastBuilder: (_) {
|
|
return const AppToast(text: "حدث خطأ ما");
|
|
});
|
|
}
|
|
}
|
|
}
|