|
|
|
|
@ -6,6 +6,7 @@ import 'package:test_sa/extensions/context_extension.dart';
|
|
|
|
|
import 'package:test_sa/extensions/int_extensions.dart';
|
|
|
|
|
import 'package:test_sa/extensions/text_extensions.dart';
|
|
|
|
|
import 'package:test_sa/extensions/widget_extensions.dart';
|
|
|
|
|
import 'package:test_sa/helper/utils.dart';
|
|
|
|
|
import 'package:test_sa/models/enums/user_types.dart';
|
|
|
|
|
import 'package:test_sa/models/enums/work_order_next_step.dart';
|
|
|
|
|
import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_models.dart';
|
|
|
|
|
@ -16,6 +17,8 @@ import 'package:test_sa/modules/cx_module/chat/chat_provider.dart';
|
|
|
|
|
import 'package:test_sa/modules/cx_module/chat/chat_widget.dart';
|
|
|
|
|
import 'package:test_sa/modules/cx_module/survey/survey_page.dart';
|
|
|
|
|
import 'package:test_sa/modules/loan_module/pages/create_loan_request_page.dart';
|
|
|
|
|
import 'package:test_sa/modules/loan_module/pages/loan_equipment_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/default_app_bar.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
|
|
|
|
|
@ -104,7 +107,9 @@ class _CMDetailPageState extends State<CMDetailPage> {
|
|
|
|
|
(provider.currentWorkOrder?.data?.workOrderContactPerson?.isNotEmpty ?? false)) {
|
|
|
|
|
return ChatWidget(
|
|
|
|
|
moduleId: widget.moduleId,
|
|
|
|
|
isShow: context.settingProvider.isUserFlowMedical && (context.userProvider.isEngineer || context.userProvider.isNurse) && provider.currentWorkOrder?.data?.assignedEmployee != null,
|
|
|
|
|
isShow: context.settingProvider.isUserFlowMedical &&
|
|
|
|
|
(context.userProvider.isEngineer || context.userProvider.isNurse) &&
|
|
|
|
|
provider.currentWorkOrder?.data?.assignedEmployee != null,
|
|
|
|
|
isReadOnly: _requestProvider.isReadOnlyRequest,
|
|
|
|
|
requestId: widget.requestId.toInt(),
|
|
|
|
|
assigneeEmployeeNumber: provider.currentWorkOrder?.data?.assignedEmployee!.employeeId!,
|
|
|
|
|
@ -115,23 +120,64 @@ class _CMDetailPageState extends State<CMDetailPage> {
|
|
|
|
|
return const SizedBox();
|
|
|
|
|
}
|
|
|
|
|
}),
|
|
|
|
|
isNurse
|
|
|
|
|
? IconButton(
|
|
|
|
|
icon: 'qr'.toSvgAsset(
|
|
|
|
|
height: 24,
|
|
|
|
|
width: 24,
|
|
|
|
|
),
|
|
|
|
|
onPressed: () {
|
|
|
|
|
ServiceRequestBottomSheet.getQRCodeBottomSheet(context: context);
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
: IconButton(
|
|
|
|
|
icon: const Icon(Icons.home),
|
|
|
|
|
onPressed: () {
|
|
|
|
|
// stopTimer();
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
if (isNurse)
|
|
|
|
|
IconButton(
|
|
|
|
|
icon: 'qr'.toSvgAsset(height: 24, width: 24),
|
|
|
|
|
onPressed: () {
|
|
|
|
|
ServiceRequestBottomSheet.getQRCodeBottomSheet(context: context);
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
else ...[
|
|
|
|
|
Selector<CMDetailProvider, bool>(
|
|
|
|
|
selector: (_, myModel) => myModel.isLoading, // Selects only the userName
|
|
|
|
|
builder: (_, isLoading, __) {
|
|
|
|
|
if (isLoading) {
|
|
|
|
|
return const SizedBox();
|
|
|
|
|
} else {
|
|
|
|
|
CMDetailProvider provider = Provider.of<CMDetailProvider>(context, listen: false);
|
|
|
|
|
//TODO need to verify the check with backend workOrderNextStepEnum
|
|
|
|
|
int? statusValue = provider.currentWorkOrder?.data?.status?.value;
|
|
|
|
|
WorkOrderNextStepEnum? workOrderNextStepEnum = provider.currentWorkOrder?.data?.nextStep?.workOrderNextStepEnum;
|
|
|
|
|
if (statusValue == 2 && workOrderNextStepEnum == WorkOrderNextStepEnum.activity) {
|
|
|
|
|
return Container(
|
|
|
|
|
padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 6),
|
|
|
|
|
margin: const EdgeInsets.only(left: 2),
|
|
|
|
|
decoration: BoxDecoration(color: context.isDark ? AppColor.neutral50 : AppColor.neutral30, borderRadius: BorderRadius.circular(16)),
|
|
|
|
|
child: Row(
|
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
|
children: [
|
|
|
|
|
const Icon(Icons.add, size: 20, color: AppColor.black1E),
|
|
|
|
|
Text(
|
|
|
|
|
"Loan",
|
|
|
|
|
style: AppTextStyles.bodyText2.copyWith(color: AppColor.black1E),
|
|
|
|
|
),
|
|
|
|
|
4.width,
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
).onPress(() async {
|
|
|
|
|
LoanProvider loanProvider = Provider.of<LoanProvider>(context, listen: false);
|
|
|
|
|
Utils.showLoading(context);
|
|
|
|
|
var data = await loanProvider.getLoanByWorkOrderId(widget.requestId);
|
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
|
if (data == null) {
|
|
|
|
|
CMDetailProvider cmProvider = Provider.of<CMDetailProvider>(context, listen: false);
|
|
|
|
|
Navigator.push(context, MaterialPageRoute(builder: (context) => CreateLoanRequestPage(workOrderId: widget.requestId, workOrder: cmProvider.currentWorkOrder!.data)));
|
|
|
|
|
} else {
|
|
|
|
|
Navigator.push(context, MaterialPageRoute(builder: (context) => LoanEquipmentDetailPage(loanId: data.id!)));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return const SizedBox();
|
|
|
|
|
}
|
|
|
|
|
}),
|
|
|
|
|
IconButton(
|
|
|
|
|
icon: const Icon(Icons.home),
|
|
|
|
|
onPressed: () {
|
|
|
|
|
// stopTimer();
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
body: DefaultTabController(
|
|
|
|
|
|