186 lines
6.5 KiB
Dart
186 lines
6.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:sefer_admin1/constant/colors.dart';
|
|
import 'package:sefer_admin1/constant/style.dart';
|
|
import 'package:sefer_admin1/controller/employee_controller/employee_controller.dart';
|
|
import 'package:sefer_admin1/controller/functions/launch.dart';
|
|
import 'package:sefer_admin1/views/widgets/elevated_btn.dart';
|
|
import 'package:sefer_admin1/views/widgets/my_scafold.dart';
|
|
import 'package:sefer_admin1/views/widgets/my_textField.dart';
|
|
|
|
import '../../../constant/links.dart';
|
|
import '../../../controller/functions/upload_image copy.dart';
|
|
|
|
class EmployeePage extends StatelessWidget {
|
|
const EmployeePage({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
Get.put(EmployeeController());
|
|
return GetBuilder<EmployeeController>(builder: (employeeController) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: Text('Employee Page'.tr),
|
|
),
|
|
body: ListView.builder(
|
|
itemCount: employeeController
|
|
.employee.length, // Set the item count based on the employee list
|
|
itemBuilder: (context, index) {
|
|
// Get the employee data for the current index
|
|
var employee = employeeController.employee[index];
|
|
|
|
// Return a widget to display the employee information
|
|
return Padding(
|
|
padding: const EdgeInsets.all(3.0),
|
|
child: Container(
|
|
decoration: AppStyle.boxDecoration1,
|
|
child: ListTile(
|
|
trailing: IconButton(
|
|
onPressed: () {
|
|
Get.to(() => EmployeeDetails(
|
|
index: index,
|
|
));
|
|
},
|
|
icon: Icon(
|
|
Icons.shop_two,
|
|
color: employee['status'].toString().contains('ممتاز')
|
|
? AppColor.greenColor
|
|
: AppColor.accentColor,
|
|
),
|
|
),
|
|
title: Column(
|
|
children: [
|
|
Text(employee['name']),
|
|
Text(
|
|
'Phone: ${employee['phone']}\nEducation: ${employee['education']}'),
|
|
Text('Status: ${employee['status']}'),
|
|
],
|
|
), // Display employee name
|
|
onTap: () {
|
|
// Add any action you want when the employee is tapped
|
|
},
|
|
leading: IconButton(
|
|
onPressed: () {
|
|
makePhoneCall(employee['phone'].toString());
|
|
// launchCommunication(
|
|
// 'phone', employee['phone'].toString(), '');
|
|
},
|
|
icon: const Icon(Icons.phone),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
},
|
|
),
|
|
floatingActionButton: FloatingActionButton(
|
|
onPressed: () {
|
|
employeeController.id = employeeController.generateRandomId(8);
|
|
Get.to(
|
|
employeeFields(employeeController),
|
|
);
|
|
}, // Icon to display
|
|
backgroundColor: Colors.blue, // Button color (optional)
|
|
tooltip: 'Add Employee',
|
|
child: const Icon(Icons.add), // Tooltip text when long-pressed
|
|
),
|
|
);
|
|
});
|
|
}
|
|
|
|
Scaffold employeeFields(EmployeeController employeeController) {
|
|
return Scaffold(
|
|
appBar: AppBar(),
|
|
body: Form(
|
|
key: employeeController.formKey,
|
|
child: SizedBox(
|
|
height: 500,
|
|
child: ListView(
|
|
children: [
|
|
MyElevatedButton(
|
|
title: 'front id',
|
|
onPressed: () async {
|
|
await ImageController().choosImage(AppLink.uploadEgypt,
|
|
'idFrontEmployee', employeeController.id);
|
|
}),
|
|
MyElevatedButton(
|
|
title: 'back id',
|
|
onPressed: () async {
|
|
await ImageController().choosImage(AppLink.uploadEgypt,
|
|
'idbackEmployee', employeeController.id);
|
|
}),
|
|
MyTextForm(
|
|
controller: employeeController.name,
|
|
label: 'name',
|
|
hint: 'name',
|
|
type: TextInputType.name),
|
|
MyTextForm(
|
|
controller: employeeController.education,
|
|
label: 'education',
|
|
hint: 'education',
|
|
type: TextInputType.name),
|
|
MyTextForm(
|
|
controller: employeeController.site,
|
|
label: 'site',
|
|
hint: 'site',
|
|
type: TextInputType.name),
|
|
MyTextForm(
|
|
controller: employeeController.phone,
|
|
label: 'phone',
|
|
hint: 'phone',
|
|
type: TextInputType.phone),
|
|
MyTextForm(
|
|
controller: employeeController.status,
|
|
label: 'status',
|
|
hint: 'status',
|
|
type: TextInputType.name),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
bottomNavigationBar: MyElevatedButton(
|
|
title: 'upload',
|
|
onPressed: () async {
|
|
if (employeeController.formKey.currentState!.validate()) {
|
|
await employeeController.addEmployee();
|
|
}
|
|
},
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
class EmployeeDetails extends StatelessWidget {
|
|
const EmployeeDetails({super.key, required this.index});
|
|
final int index;
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MyScafolld(
|
|
title: 'Details',
|
|
isleading: true,
|
|
body: [
|
|
GetBuilder<EmployeeController>(builder: (employeeController) {
|
|
return Column(
|
|
children: [
|
|
SizedBox(
|
|
height: 200,
|
|
width: 400,
|
|
child: Image.network(
|
|
'https://sefer.click/sefer/card_image/idFrontEmployee-${employeeController.employee[index]['id']}.jpg'),
|
|
),
|
|
const SizedBox(
|
|
height: 10,
|
|
),
|
|
SizedBox(
|
|
height: 200,
|
|
width: 400,
|
|
child: Image.network(
|
|
'https://sefer.click/sefer/card_image/idFrontEmployee-${employeeController.employee[index]['id']}.jpg'),
|
|
)
|
|
],
|
|
);
|
|
})
|
|
],
|
|
);
|
|
}
|
|
}
|