baligh_dashboard/lib/screens/admin_screen.dart
Abdullah Salah cf9784f468 First Commit
2024-12-26 09:10:35 +03:00

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: "حدث خطأ ما");
});
}
}
}