You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			140 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			140 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Dart
		
	
| import 'package:flutter/material.dart';
 | |
| import 'package:provider/provider.dart';
 | |
| import 'package:test_sa/controllers/providers/api/ppm_provider.dart';
 | |
| import 'package:test_sa/extensions/context_extension.dart';
 | |
| import 'package:test_sa/extensions/int_extensions.dart';
 | |
| import 'package:test_sa/extensions/string_extensions.dart';
 | |
| import 'package:test_sa/extensions/text_extensions.dart';
 | |
| import 'package:test_sa/extensions/widget_extensions.dart';
 | |
| import 'package:test_sa/models/plan_preventive_visit/plan_preventive_visit_model.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/views/widgets/loaders/app_loading.dart';
 | |
| import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
 | |
| import 'package:test_sa/views/widgets/requests/request_status.dart';
 | |
| 
 | |
| import '../../../../../controllers/providers/api/user_provider.dart';
 | |
| import '../../../../../models/enums/user_types.dart';
 | |
| import '../../../../../new_views/app_style/app_color.dart';
 | |
| import '../../../../../new_views/common_widgets/app_filled_button.dart';
 | |
| import 'update_ppm/update_ppm.dart';
 | |
| 
 | |
| class PpmDetailsPage extends StatefulWidget {
 | |
|   static const String id = "/visit-details";
 | |
| 
 | |
|   // final RequestsDetails request;
 | |
|   final int requestId;
 | |
| 
 | |
|   const PpmDetailsPage({Key? key, required this.requestId}) : super(key: key);
 | |
| 
 | |
|   @override
 | |
|   _PpmDetailsPageState createState() {
 | |
|     return _PpmDetailsPageState();
 | |
|   }
 | |
| }
 | |
| 
 | |
| class _PpmDetailsPageState extends State<PpmDetailsPage> {
 | |
|   UserProvider? userProvider;
 | |
| 
 | |
|   PpmProvider? ppmProvider;
 | |
| 
 | |
|   @override
 | |
|   void initState() {
 | |
|     getVisitData();
 | |
|     super.initState();
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   void dispose() {
 | |
|     super.dispose();
 | |
|   }
 | |
| 
 | |
|   Future<void> getVisitData() async {
 | |
|     ppmProvider = Provider.of<PpmProvider>(context, listen: false);
 | |
|     await ppmProvider?.getPlanPreventiveVisitById(widget.requestId);
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     userProvider ??= Provider.of<UserProvider>(context, listen: false);
 | |
|     // ppmProvider ??= Provider.of<PpmProvider>(context, listen: false);
 | |
|     // ppmProvider!.getPlanPreventiveVisitById(widget.request.id!);
 | |
|     return Scaffold(
 | |
|       appBar: DefaultAppBar(title: context.translation.preventiveMaintenance),
 | |
|       body: Consumer<PpmProvider>(builder: (context, ppmProvider, child) {
 | |
|         PlanPreventiveVisit? planPreventiveVisit = ppmProvider.planPreventiveVisit;
 | |
|         return ppmProvider.isLoading
 | |
|             ? const ALoading()
 | |
|             : planPreventiveVisit != null
 | |
|                 ? Column(children: [
 | |
|                     SingleChildScrollView(
 | |
|                       child: Column(
 | |
|                         crossAxisAlignment: CrossAxisAlignment.start,
 | |
|                         children: [
 | |
|                           Row(
 | |
|                             children: [
 | |
|                               // if (widget.request.priority != null)
 | |
|                               //   StatusLabel(
 | |
|                               //     label: widget.request.priority,
 | |
|                               //     textColor: AppColor.getRequestStatusTextColorByName(context, widget.request.priority!),
 | |
|                               //     backgroundColor: AppColor.getRequestStatusColorByName(context, widget.request.priority!),
 | |
|                               //   ),
 | |
|                               // if (planPreventiveVisit?.visitStatus != null) 8.width,
 | |
|                               StatusLabel(
 | |
|                                 label: planPreventiveVisit?.visitStatus!.name!,
 | |
|                                 id: planPreventiveVisit?.visitStatus?.id ?? 0,
 | |
|                                 textColor: AppColor.getRequestStatusTextColorByName(context, planPreventiveVisit.visitStatus!.name!),
 | |
|                                 backgroundColor: AppColor.getRequestStatusColorByName(context, planPreventiveVisit.visitStatus!.name!),
 | |
|                               ),
 | |
|                               // 1.width.expanded,
 | |
|                             ],
 | |
|                           ),
 | |
|                           8.height,
 | |
|                           planPreventiveVisit.assetName!.cleanupWhitespace.capitalizeFirstOfEach.heading5(context),
 | |
|                           8.height,
 | |
|                           '${context.translation.assetNumber}:  ${planPreventiveVisit.asset!.assetNumber}'.bodyText(context),
 | |
|                           '${context.translation.assetSN}: ${planPreventiveVisit.asset!.assetSerialNo}'.bodyText(context),
 | |
|                           '${context.translation.requestNo}: ${planPreventiveVisit.visitNo}'.bodyText(context),
 | |
|                           const Divider().defaultStyle(context),
 | |
|                           //     '${context.translation.expectDate}:  ${planPreventiveVisit.expectedDate?.toAssetDetailsFormat ?? ""}'.bodyText(context), //todo @baha,
 | |
|                           '${context.translation.actualDate}: ${planPreventiveVisit.acutalDateOfVisit?.toIso8601String().toAssetDetailsFormat ?? ""}'.bodyText(context), //todo @baha,
 | |
|                           const Divider().defaultStyle(context),
 | |
|                           '${context.translation.assignedEmployee}:  ${planPreventiveVisit.assignedEmployee?.userName ?? ""}'.bodyText(context), //todo @baha,
 | |
|                           '${context.translation.site}:  ${planPreventiveVisit.siteName?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context), //todo @baha,
 | |
|                           '${context.translation.building}:  ${planPreventiveVisit.buildingName?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context), //todo @baha,
 | |
|                           '${context.translation.floor}:  ${planPreventiveVisit.floorName?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context), //todo @baha,
 | |
|                           '${context.translation.department}:  ${planPreventiveVisit.departmentName?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context), //todo @baha,
 | |
|                           '${context.translation.room}:  ${(planPreventiveVisit.roomName ?? "").cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context), //todo @baha,
 | |
|                         ],
 | |
|                       ).toShadowContainer(context).paddingAll(16),
 | |
|                     ).expanded,
 | |
|                     if (userProvider!.user!.type == UsersTypes.engineer && (!ppmProvider.isReadOnly)) ...[
 | |
|                       FooterActionButton.footerContainer(
 | |
|                         child: AppFilledButton(
 | |
|                           onPressed: () async {
 | |
|                             await Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdatePpm(ppm: null, planPreventiveVisit: planPreventiveVisit)));
 | |
|                             getVisitData();
 | |
|                           },
 | |
|                           label: context.translation.updateWorkOrder,
 | |
|                         ),
 | |
|                         context: context,
 | |
|                       )
 | |
|                     ] else ...[
 | |
|                       // FooterActionButton.footerContainer(
 | |
|                       //   context: context,
 | |
|                       //   child: AppFilledButton(
 | |
|                       //     onPressed: () async {
 | |
|                       //       await Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdatePpm(ppm: null, planPreventiveVisit: planPreventiveVisit)));
 | |
|                       //       getVisitData();
 | |
|                       //     },
 | |
|                       //     label: context.translation.viewDetails,
 | |
|                       //   ),
 | |
|                       // )
 | |
|                     ]
 | |
|                   ])
 | |
|                 : const Center(child: NoDataFound());
 | |
|       }),
 | |
|     );
 | |
|   }
 | |
| }
 |