diff --git a/lib/modules/loan_module/models/loan_installation_pullout_form_model.dart b/lib/modules/loan_module/models/loan_installation_pullout_form_model.dart index 11b48644..bcbbff31 100644 --- a/lib/modules/loan_module/models/loan_installation_pullout_form_model.dart +++ b/lib/modules/loan_module/models/loan_installation_pullout_form_model.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'dart:typed_data'; +import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/modules/loan_module/models/loan_form_model.dart'; class LoanInstallationPullOutFormModel { @@ -8,9 +9,20 @@ class LoanInstallationPullOutFormModel { DateTime? date; Uint8List? signature; List? loanAttachment; + TimerModel? timerModel = TimerModel(); + DateTime? startTime; + DateTime? endTime; + double? totalHours; LoanInstallationPullOutFormModel({ this.loanAttachment, + this.timerModel, + this.snNo, + this.signature, + this.date, + this.startTime, + this.endTime, + this.totalHours, }); Map toJson() { @@ -20,6 +32,9 @@ class LoanInstallationPullOutFormModel { 'InstallationDate': date?.toIso8601String(), "loanAttachments": loanAttachment != null ? loanAttachment!.map((v) => v.toJson()).toList() : [], "signature": signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature!)}" : null, + 'startTime': startTime?.toIso8601String(), + 'endTime': endTime?.toIso8601String(), + 'totalHours': totalHours, }; } } diff --git a/lib/modules/loan_module/pages/installation_pullout_form_view.dart b/lib/modules/loan_module/pages/installation_pullout_form_view.dart index a0379ee2..11a3cbfd 100644 --- a/lib/modules/loan_module/pages/installation_pullout_form_view.dart +++ b/lib/modules/loan_module/pages/installation_pullout_form_view.dart @@ -1,3 +1,4 @@ +import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -7,6 +8,7 @@ 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/generic_attachment_model.dart'; +import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/modules/loan_module/models/loan_installation_pullout_form_model.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; @@ -16,10 +18,13 @@ import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/e_signature/e_signature.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; +import 'package:test_sa/views/widgets/timer/app_timer.dart'; class InstallationPullOutFormView extends StatefulWidget { final bool isPullout; - const InstallationPullOutFormView({super.key,required this.isPullout}); + final String? createdDate; + + const InstallationPullOutFormView({super.key, required this.isPullout, this.createdDate}); @override State createState() => _InstallationPullOutFormViewState(); @@ -76,13 +81,24 @@ class _InstallationPullOutFormViewState extends State - (v == null || v.isEmpty) ? 'Required' : null, + validator: (v) => (v == null || v.isEmpty) ? 'Required' : null, ), 8.height, ], ADatePicker( - label: widget.isPullout?"Installation Date".addTranslation:"Installation Date".addTranslation, + label: !widget.isPullout ? "Installation Date".addTranslation : "Validation Date".addTranslation, hideShadow: true, backgroundColor: AppColor.fieldBgColor(context), to: DateTime.now().add(const Duration(days: 365)), @@ -118,11 +133,32 @@ class _InstallationPullOutFormViewState extends State URLs.getFileUrl(e.attachmentName ?? '') ?? '').toList() ?? []), + ], + ], + ).toShadowContainer(context, borderRadius: 20), + ); + } + + Widget detailContent({required BuildContext context, required String label, required String heading}) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + heading.bodyText(context).custom(color: AppColor.neutral120), + 6.height, + //TODO Need to check which value need to show here + label.bodyText(context).custom(color: AppColor.neutral120), + ], + ); + } +} diff --git a/lib/modules/loan_module/pages/loan_equipment_detail_page.dart b/lib/modules/loan_module/pages/loan_equipment_detail_page.dart index 1878a1fe..00dc04eb 100644 --- a/lib/modules/loan_module/pages/loan_equipment_detail_page.dart +++ b/lib/modules/loan_module/pages/loan_equipment_detail_page.dart @@ -8,6 +8,7 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/modules/loan_module/models/loan_attachment_model.dart'; +import 'package:test_sa/modules/loan_module/pages/pullout_detail_page.dart'; import 'package:test_sa/modules/loan_module/provider/loan_provider.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; @@ -86,17 +87,21 @@ class LoanEquipmentDetailPage extends StatelessWidget { ).toShadowContainer(context, padding: 12), ], ).expanded, - if (context.userProvider.isEngineer&&(snapshot.data?.loanStatusValue == 5 || snapshot.data?.loanStatusValue == 8)) + if (context.userProvider.isEngineer && (snapshot.data?.loanStatusValue == 5 || snapshot.data?.loanStatusValue == 8)) FooterActionButton.footerContainer( context: context, child: AppFilledButton( onPressed: () async { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => InstallationPullOutFormView( - isPullout: snapshot.data?.loanStatusValue == 8, - ))); + if (snapshot.data?.loanStatusValue == 5) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => PullOutDetailsPage( + loanData: snapshot.data, + ))); + return; + } + Navigator.push(context, MaterialPageRoute(builder: (context) => const InstallationPullOutFormView(isPullout: false))); }, label: snapshot.data?.loanStatusValue == 5 ? 'Installation Report' : 'PullOut Report', ), diff --git a/lib/modules/loan_module/pages/pullout_detail_page.dart b/lib/modules/loan_module/pages/pullout_detail_page.dart new file mode 100644 index 00000000..09b81048 --- /dev/null +++ b/lib/modules/loan_module/pages/pullout_detail_page.dart @@ -0,0 +1,80 @@ +import 'package:flutter/material.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/modules/loan_module/models/loan_request_model.dart'; +import 'package:test_sa/modules/loan_module/pages/installation_pullout_form_view.dart'; +import 'package:test_sa/modules/loan_module/pages/intallation_details_view.dart'; +import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; + +class PullOutDetailsPage extends StatefulWidget { + final LoanRequestModel? loanData; + + PullOutDetailsPage({Key? key, required this.loanData}) : super(key: key); + + @override + _PullOutDetailsPageState createState() { + return _PullOutDetailsPageState(); + } +} + +class _PullOutDetailsPageState extends State { + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Theme.of(context).scaffoldBackgroundColor, + appBar: DefaultAppBar( + title: 'Loan Request'.addTranslation, + ), + body: DefaultTabController( + length: 2, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + margin: EdgeInsets.only(left: 16.toScreenWidth, right: 16.toScreenWidth, top: 12.toScreenHeight), + decoration: BoxDecoration(color: context.isDark ? AppColor.neutral50 : AppColor.white10, borderRadius: BorderRadius.circular(10)), + child: TabBar( + padding: EdgeInsets.symmetric(vertical: 4.toScreenHeight, horizontal: 4.toScreenWidth), + labelColor: context.isDark ? AppColor.neutral30 : AppColor.black20, + unselectedLabelColor: context.isDark ? AppColor.neutral30 : AppColor.black20, + unselectedLabelStyle: AppTextStyles.bodyText, + labelStyle: AppTextStyles.bodyText, + indicatorPadding: EdgeInsets.zero, + indicatorSize: TabBarIndicatorSize.tab, + dividerColor: Colors.transparent, + indicator: BoxDecoration(color: context.isDark ? AppColor.neutral60 : AppColor.neutral110, borderRadius: BorderRadius.circular(7)), + onTap: (index) { + // setState(() {}); + }, + tabs: [ + Tab(text: 'Installation'.addTranslation, height: 57.toScreenHeight), + Tab(text: 'Pull Out'.addTranslation, height: 57.toScreenHeight), + ], + ), + ), + 12.height, + TabBarView( + children: [ + Align( + alignment: Alignment.topCenter, + child: InstallationDetailsView( + loanData: widget.loanData!, + ), + ), + const InstallationPullOutFormView(isPullout: true), + ], + ).expanded, + ], + ), + )); + } +}