|
|
|
|
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/models/all_requests_and_count_model.dart';
|
|
|
|
|
import 'package:test_sa/models/new_models/dashboard_detail.dart';
|
|
|
|
|
import 'package:test_sa/modules/asset_delivery_module/pages/asset_delivery_page.dart';
|
|
|
|
|
import 'package:test_sa/modules/asset_inventory_module/pages/asset_inventory_page.dart';
|
|
|
|
|
import 'package:test_sa/modules/demo_module/demo_detail_view_page.dart';
|
|
|
|
|
import 'package:test_sa/new_views/app_style/app_color.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/requests/request_status.dart';
|
|
|
|
|
|
|
|
|
|
class DemoRequestItemView extends StatelessWidget {
|
|
|
|
|
final Data? requestData;
|
|
|
|
|
final RequestsDetails? requestDetails;
|
|
|
|
|
final bool showShadow;
|
|
|
|
|
|
|
|
|
|
const DemoRequestItemView({Key? key, this.requestData, this.requestDetails, this.showShadow = true}) : super(key: key);
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
if (requestData != null) {
|
|
|
|
|
return Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
children: [
|
|
|
|
|
Row(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
children: [
|
|
|
|
|
StatusLabel(
|
|
|
|
|
label: requestData!.statusName!,
|
|
|
|
|
textColor: AppColor.demoRequestStatusTextColor(context, requestData?.statusValue ?? 0),
|
|
|
|
|
backgroundColor: AppColor.demoRequestStatus(context, requestData?.statusValue ?? 0),
|
|
|
|
|
),
|
|
|
|
|
1.width.expanded,
|
|
|
|
|
Text(
|
|
|
|
|
requestData!.transactionDate?.toServiceRequestCardFormat ?? "",
|
|
|
|
|
textAlign: TextAlign.end,
|
|
|
|
|
style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
// 8.height,
|
|
|
|
|
(requestData?.typeTransaction ?? 'Demo Request').heading5(context),
|
|
|
|
|
infoWidget(label: 'Request No'.addTranslation, value: requestData?.requestNo ?? '-', context: context),
|
|
|
|
|
infoWidget(label: context.translation.requestType, value: requestData?.requestTypeName, context: context),
|
|
|
|
|
// infoWidget(label: 'No of Sites'.addTranslation, value: requestData?.numberOfSites != null ? requestData?.numberOfSites.toString() : '-', context: context),
|
|
|
|
|
8.height,
|
|
|
|
|
Row(
|
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
|
children: [
|
|
|
|
|
Text(
|
|
|
|
|
context.translation.viewDetails,
|
|
|
|
|
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
|
|
|
|
|
),
|
|
|
|
|
4.width,
|
|
|
|
|
Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
).toShadowContainer(context, withShadow: showShadow).onPress(() async {
|
|
|
|
|
Navigator.of(context).push(MaterialPageRoute(
|
|
|
|
|
builder: (_) => DemoDetailViewPage(
|
|
|
|
|
demoId: requestData!.id!,
|
|
|
|
|
)));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
children: [
|
|
|
|
|
Row(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
children: [
|
|
|
|
|
StatusLabel(
|
|
|
|
|
label: requestDetails!.status!,
|
|
|
|
|
textColor: AppColor.demoRequestStatusTextColor(context, requestDetails?.statusValue ?? 0),
|
|
|
|
|
backgroundColor: AppColor.demoRequestStatus(context, requestDetails?.statusValue ?? 0),
|
|
|
|
|
),
|
|
|
|
|
1.width.expanded,
|
|
|
|
|
Text(
|
|
|
|
|
requestDetails!.date?.toServiceRequestCardFormat ?? "",
|
|
|
|
|
textAlign: TextAlign.end,
|
|
|
|
|
style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
// 8.height,
|
|
|
|
|
(requestDetails?.nameOfType ?? 'Demo Request').heading5(context),
|
|
|
|
|
// infoWidget(label: context.translation.requestType, value: requestDetails!.requestType, context: context),
|
|
|
|
|
infoWidget(label: context.translation.requestNo, value: requestDetails!.requestNo, context: context),
|
|
|
|
|
infoWidget(label: context.translation.site, value: requestDetails!.site, context: context),
|
|
|
|
|
Row(
|
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
|
children: [
|
|
|
|
|
Text(
|
|
|
|
|
context.translation.viewDetails,
|
|
|
|
|
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
|
|
|
|
|
),
|
|
|
|
|
4.width,
|
|
|
|
|
Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
).toShadowContainer(context, withShadow: showShadow).onPress(() async {
|
|
|
|
|
Navigator.of(context).push(MaterialPageRoute(
|
|
|
|
|
builder: (_) => DemoDetailViewPage(
|
|
|
|
|
demoId: requestDetails!.id!,
|
|
|
|
|
)));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget infoWidget({required String label, String? value, required BuildContext context}) {
|
|
|
|
|
if (value != null && value.isNotEmpty) {
|
|
|
|
|
return '$label: $value'.bodyText(context);
|
|
|
|
|
}
|
|
|
|
|
return const SizedBox();
|
|
|
|
|
}
|
|
|
|
|
}
|