sc-android-app/lib/screens/sales_task_screen.dart
2024-09-09 16:58:17 +05:30

149 lines
4.5 KiB
Dart

import 'package:cheminova/screens/add_sales_product_screen.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:cheminova/models/Daily_Task_Response.dart';
import 'package:cheminova/widgets/common_app_bar.dart';
import 'package:cheminova/widgets/common_background.dart';
import 'package:cheminova/widgets/common_drawer.dart';
import '../constants/constant.dart';
import '../provider/daily_task_provider.dart';
class SalesTaskScreen extends StatefulWidget {
const SalesTaskScreen({super.key});
@override
_SalesTaskScreenState createState() => _SalesTaskScreenState();
}
class _SalesTaskScreenState extends State<SalesTaskScreen> {
late DailyTaskProvider _dailyTaskProvider;
@override
void initState() {
super.initState();
_dailyTaskProvider = DailyTaskProvider();
apiCall();
}
void apiCall() async {
await _dailyTaskProvider.getTask(type: 'New', isAddPending: true);
await _dailyTaskProvider.getTask(type: 'Pending', isAddPending: true);
}
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (context) => _dailyTaskProvider,
child: Scaffold(
extendBodyBehindAppBar: true,
appBar: _buildAppBar(),
drawer: const CommonDrawer(),
body: CommonBackground(
child: SafeArea(
child: _buildTaskList(),
),
),
),
);
}
CommonAppBar _buildAppBar() {
return CommonAppBar(
backgroundColor: Colors.transparent,
elevation: 0,
actions: [
IconButton(
onPressed: () => Navigator.pop(context),
icon: Image.asset('assets/Back_attendance.png'),
padding: const EdgeInsets.only(right: 20),
),
],
title: const Text(
'Sales Tasks',
style: TextStyle(color: Colors.black87, fontSize: 20),
),
);
}
Widget _buildTaskList() {
return Consumer<DailyTaskProvider>(
builder: (context, value, child) {
if (value.isLoading) {
return const Center(child: CircularProgressIndicator());
}
final salesTasks = value.newTasksList
.where((task) =>
task.task?.toLowerCase() == 'Update Sales Data'.toLowerCase())
.toList();
if (salesTasks.isEmpty) {
return const Center(
child: Text(
'NO TASK',
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: Colors.black87,
),
),
);
}
return ListView.separated(
padding: const EdgeInsets.all(16),
itemCount: salesTasks.length,
separatorBuilder: (context, index) => const SizedBox(height: 8),
itemBuilder: (context, index) => _buildTaskCard(salesTasks[index]),
);
},
);
}
Widget _buildTaskCard(Tasks tasksList) {
return InkWell(
onTap: () {
if (tasksList.sId != null && tasksList.addedFor != null) {
Navigator.push(
navigatorKey.currentContext!,
MaterialPageRoute(
builder: (context) => AddSalesProductScreen(
distributorType: tasksList.addedFor!,
inventoryId: tasksList.sId,
tradeName: tasksList.tradeName ?? '',
pdRdId: tasksList.addedForId!)));
}
},
child: Card(
color: Colors.white,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
child: ListTile(
leading: const Icon(Icons.attach_money, color: Colors.greenAccent),
title: Text(
tasksList.task ?? '',
style: const TextStyle(
color: Colors.black87,
fontWeight: FontWeight.w700,
fontSize: 16,
fontFamily: 'Anek',
),
),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Distributor: ${tasksList.addedFor ?? ""}'),
Text('Trader Name: ${tasksList.tradeName ?? ''}'),
if (tasksList.taskDueDate != null)
Text(
'Due Date: ${DateFormat('dd/MM/yyyy').format(DateTime.parse(tasksList.taskDueDate!))}'),
Text('Priority: ${tasksList.taskPriority}'),
],
),
trailing: const Icon(Icons.arrow_forward_ios, color: Colors.black87),
),
),
);
}
}