total working hours added on task detail.

design_3.0_task_module_new_merge
Sikander Saleem 2 weeks ago
parent b17d6db327
commit ceee6d689d

@ -162,7 +162,7 @@ class AllRequestsProvider extends ChangeNotifier {
}
final type = typeTransaction == null
? search?.typeTransaction == null || (search?.typeTransaction?.isEmpty ?? false)
? getStatues(context)
? [1, 2, 3, 4, 5, 6, 7]
: search!.typeTransaction
: [typeTransaction];
List<int> status = (search?.statuses == null || (search?.statuses?.isEmpty ?? false)) ? (((search?.isArchived ?? false) ? [3] : [1, 2, 4])) : search!.statuses!;

@ -1,3 +1,4 @@
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/api_routes/urls.dart';
@ -8,12 +9,15 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/models/new_models/task_request/task_request_model.dart';
import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart';
import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import 'package:test_sa/new_views/common_widgets/working_time_tile.dart';
import 'package:test_sa/providers/task_request_provider/task_request_provider.dart';
import 'package:test_sa/views/widgets/images/files_list.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
import 'package:test_sa/views/widgets/total_working_time_detail_bottomsheet.dart';
import '../../../../controllers/providers/api/user_provider.dart';
import '../../../../models/enums/user_types.dart';
@ -121,6 +125,7 @@ class _TaskRequestDetailsViewState extends State<TaskRequestDetailsView> {
],
),
],
showWorkingTime(taskModel?.taskJobActivityEngineerTimers ?? []),
if ((taskProvider.taskRequestModel?.taskJobContactPersons ?? []).isNotEmpty) ...[contactInfoCard(context, taskProvider.taskRequestModel!)],
if (taskProvider.taskRequestModel?.callComment != null) ...[
const Divider().defaultStyle(context),
@ -166,6 +171,53 @@ class _TaskRequestDetailsViewState extends State<TaskRequestDetailsView> {
);
}
Widget showWorkingTime(List<TaskJobActivityEngineerTimer> timer) {
double totalWorkingHours = timer.fold<double>(0.0, (sum, item) {
if (item.startDate == null || item.endDate == null) return sum;
try {
final start = DateTime.parse(item.startDate!);
final end = DateTime.parse(item.endDate!);
final diffInHours = end.difference(start).inSeconds / 3600.0; // convert to hours
return sum + diffInHours;
} catch (_) {
return sum;
}
});
String totalHourString = (totalWorkingHours > 0.0) ? ServiceRequestUtils.formatTotalWorkingHours(totalWorkingHours) : totalWorkingHours.toString();
return RichText(
text: TextSpan(
text: "${context.translation.totalWorkingTime}: ",
style: TextStyle(
fontSize: 14.toScreenWidth, fontWeight: FontWeight.w500, fontStyle: FontStyle.normal, decoration: TextDecoration.none, color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
children: [
TextSpan(text: "$totalHourString ", style: AppTextStyles.bodyText),
const WidgetSpan(
child: Icon(Icons.info_outline_rounded, color: AppColor.primary10, size: 14),
),
],
),
).onPress(() => showModalBottomSheet(
context: context,
isDismissible: true,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(top: Radius.circular(20)),
),
clipBehavior: Clip.antiAliasWithSaveLayer,
builder: (BuildContext context) => TotalWorkingTimeDetailBottomSheet(
timerList: timer.map((e) {
return TimerHistoryModel(
id: e.id,
startTime: e.startDate,
endTime: e.endDate,
workingHours: e.totalWorkingHour,
);
}).toList()),
));
}
Widget contactInfoCard(BuildContext context, TaskData? taskModel) {
return Column(
mainAxisSize: MainAxisSize.min,

@ -72,7 +72,7 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
types[context.translation.recurrentWo] = 5;
}
if (context.settingProvider.isUserFlowMedical && isEngineer) {
if (context.settingProvider.isUserFlowMedical) {
types['Recall and Alert'] = 7;
}
final statuses = {

@ -47,7 +47,7 @@ class _MyRequestsPageState extends State<MyRequestsPage> {
//TODO unCommit this to enable task
requestsList.add(Request(6, context.translation.taskRequest));
//after confirm name add this to translation...
if (context.settingProvider.isUserFlowMedical && Provider.of<UserProvider>(context, listen: false).user!.type != UsersTypes.normal_user) {
if (context.settingProvider.isUserFlowMedical) {
requestsList.add(Request(7, 'Recall and Alert'));
}

Loading…
Cancel
Save