verify asset detail card added on detail screen

design_3.0_latest
WaseemAbbasi22 1 year ago
parent 898eac0ee8
commit f45e0e4f80

5
.gitignore vendored

@ -32,6 +32,7 @@ migrate_working_dir/
.pub/
/build/
# Web related
lib/generated_plugin_registrant.dart
@ -41,6 +42,10 @@ app.*.symbols
# Obfuscation related
app.*.map.json
# Ignore gradle.properties file
android/gradle.properties
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile

@ -1,3 +1,4 @@
org.gradle.jvmargs=-Xmx2048m
android.useAndroidX=true
android.enableJetifier=true
org.gradle.java.home=/Users/waseem/Library/Java/JavaVirtualMachines/jbr-17.0.12/Contents/Home

@ -1,6 +1,6 @@
#Fri Jun 23 08:50:38 CEST 2017
#Tue Oct 15 10:26:35 AST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip

@ -51,6 +51,7 @@
"emailExist": "البريد الالكتروني موجود بالفعل",
"phoneNumberExist": "رقم الهاتف موجود بالفعل",
"next": "التالي",
"assetSituation": "حالة الأصول",
"back": "السابق",
"search": "بحث",
"searchByName": "بحث بالاسم",

@ -18,6 +18,7 @@
"name": "Name",
"email": "Email",
"retirementType": "Retirement Type",
"assetSituation": "Asset Situation",
"phoneNumber": "Phone Number",
"password": "Password",
"confirmPassword": "Confirm Password",

@ -236,4 +236,19 @@ class AppColor {
return blueStatus(context);
}
}
static Color getEquipmentStatusColor(BuildContext context, int id) {
switch (id) {
case 368:
//partially Down
return greenStatus(context);
case 369:
// Completely Down
return redStatus(context);
case 790:
//UP
return blueStatus(context);
default:
return blueStatus(context);
}
}
}

@ -26,7 +26,6 @@ class FaultDescriptionProvider extends ChangeNotifier {
late Response response;
try {
response = await ApiManager.instance.get(URLs.getFaultDescription+"?assetId=$assetId",);
List<FaultDescription> list = [];
if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received

@ -0,0 +1,25 @@
import 'package:flutter/material.dart';
class ServiceRequestUtils{
static int calculateAndAssignWorkingHours({
required DateTime? startTime,
required DateTime? endTime,
required TextEditingController workingHoursController,
required Function(int) updateModel, // A callback to update the model
}) {
print('end date i got is ${endTime}');
if (startTime != null && endTime != null) {
Duration difference = endTime.difference(startTime);
int hours = difference.inHours;
// Update the controller and model
workingHoursController.text = hours.toString();
updateModel(hours); // Call the function to update the model
return hours;
} else {
return -1; // Indicating invalid input
}
}
}

@ -0,0 +1,66 @@
import 'package:flutter/material.dart';
import 'package:provider/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/new_views/app_style/app_color.dart';
import 'package:test_sa/service_request_latest/request_detail_provider.dart';
import 'package:test_sa/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart';
import 'package:test_sa/service_request_latest/views/components/verify_arrival_view.dart';
import 'package:test_sa/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
class AssetDetailCard extends StatelessWidget {
const AssetDetailCard({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Consumer<RequestDetailProvider>(builder: (context, RequestDetailProvider requestDetailProvider, snapshot) {
return Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14),
color: AppColor.white10,
),
padding: EdgeInsets.symmetric(horizontal: 12.toScreenWidth, vertical: 14.toScreenHeight),
margin: EdgeInsets.only(top: 10.toScreenHeight),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
StatusLabel(
label: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.equipmentStatus?.name,
id: requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.id ?? 0,
radius: 4,
textColor: AppColor.white10,
backgroundColor: AppColor.getEquipmentStatusColor(context, requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.id ?? 0),
),
"edit_icon".toSvgAsset(height: 21, width: 21).onPress(() {
Navigator.push(context, MaterialPageRoute(builder: (context) => const VerifyAssetDetails()));
}),
]),
6.height,
context.translation.assetSituation.heading6(context).custom(color: AppColor.black20),
6.height,
Text(
'${context.translation.returnToService}: ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.returnToService?.toAssetDetailsFormat}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
6.height,
Text(
'${context.translation.loanAvailability}: ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAvailability?.name}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
6.height,
Text(
'${context.translation.failureReason}: ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.failureReason?.name}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
],
),
);
});
}
}

@ -15,6 +15,7 @@ import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/service_request_latest/request_detail_provider.dart';
import 'package:test_sa/service_request_latest/views/components/action_button/footer_action_button.dart';
import 'package:test_sa/service_request_latest/views/components/asset_detail_card.dart';
import 'package:test_sa/service_request_latest/views/components/initial_visit_card.dart';
import 'package:test_sa/service_request_latest/views/components/timer_widget.dart';
import 'package:test_sa/service_request_latest/views/forms/asset_retired/asset_retired.dart';
@ -47,6 +48,7 @@ class WorkOrderDetailView extends StatelessWidget {
children: [
workOrderDetailCard(context, requestProvider.currentWorkOrder!.data!, _userProvider),
initialVisitCard(requestDetailProvider: requestProvider, userProvider: _userProvider),
assetDetailCard(requestDetailProvider: requestProvider, userProvider: _userProvider),
20.height,
],
),
@ -318,6 +320,29 @@ class WorkOrderDetailView extends StatelessWidget {
}
}
}
Widget assetDetailCard({required RequestDetailProvider requestDetailProvider, required UserProvider userProvider}) {
//TODO add proper check to hide and show that widget
// if (requestDetailProvider.currentWorkOrder!.data!.needAVisitDateTime != null &&
// userProvider.user?.type == UsersTypes.engineer &&
// requestDetailProvider.currentWorkOrder?.data?.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.verifyAssetDetail) {
WorkOrderData currentWorkOrderData = requestDetailProvider.currentWorkOrder!.data!;
requestDetailProvider.engineerUpdateWorkOrderHelperModel = EngineerUpdateWorkOrderHelperModel(
workOrderId: currentWorkOrderData.requestId,
equipmentStatus: currentWorkOrderData.equipmentStatus,
loanAvailability: currentWorkOrderData.loanAvailablity,
failureReason: currentWorkOrderData.failureReasone,
// faultDescription: currentWorkOrderData.fa,
solution: currentWorkOrderData.solution?.name,
returnToService: currentWorkOrderData.returnToService,
serviceType: currentWorkOrderData.serviceType,
);
// requestDetailProvider.updateNeedVisitHelperModel(requestDetailProvider.needVisitHelperModel);
return const AssetDetailCard();
// }
// else {
// return const SizedBox();
// }
}
}
// class RequestDetailView extends StatefulWidget {

@ -28,7 +28,7 @@ import 'package:test_sa/views/widgets/equipment/pick_asset.dart';
import '../../../../../../models/lookup.dart';
import '../../../../../../new_views/common_widgets/default_app_bar.dart';
//TODO Have some details need to confirm from backend failure reason, fault description, solutions...
//TODO Have some details need to confirm from backend fault description,
class VerifyAssetDetails extends StatefulWidget {
static const String id = "/verify-asset-detail";
@ -75,7 +75,9 @@ class _VerifyAssetDetailsState extends State<VerifyAssetDetails> with TickerProv
_faultDescriptionProvider = Provider.of<ServiceRequestFaultDescriptionProvider>(context, listen: false);
_equipmentStatusProvider = Provider.of<EquipmentStatusProvider>(context, listen: false);
_equipmentStatusProvider!.reset();
_equipmentStatusProvider!.getDate();
WidgetsBinding.instance.addPostFrameCallback((_) {
_equipmentStatusProvider!.getDate();
});
_reasonProvider?.serviceRequestId = _requestDetailProvider?.currentWorkOrder!.data!.requestId.toString();
WorkOrderData currentWorkOrderData = _requestDetailProvider!.currentWorkOrder!.data!;
_requestDetailProvider?.engineerUpdateWorkOrderHelperModel = EngineerUpdateWorkOrderHelperModel(

Loading…
Cancel
Save