Merge remote-tracking branch 'origin/design_3.0_TM_Module_bug_fixes' into design_3.0_TM_Module_bug_fixes

design_3.0_task_module_new
WaseemAbbasi22 5 months ago
commit cfdf41233c

@ -84,6 +84,9 @@ class FirebaseNotificationManger {
static void handleMessage(context, Map<String, dynamic> messageData) {
if (messageData["requestType"] != null && messageData["requestNumber"] != null) {
Widget? serviceClass;
String? transactionType = messageData["transactionType"]?.toString();
// PPM=1,
// ServiceRequestEngineer = 3,
// AssetTransfer=7,
@ -91,31 +94,31 @@ class FirebaseNotificationManger {
// GasRefill=9,
// TechnicalRetirmentWO = 11,
// Recurrent = 12,
switch (messageData["transactionType"]) {
case 1:
switch (transactionType) {
case "1":
serviceClass = PpmDetailsPage(requestId: int.parse(messageData["requestNumber"].toString()));
break;
//these three request are same corrective maintenance....
case 3:
serviceClass = ServiceRequestDetailMain(requestId: messageData["requestNumber"] ?? '');
case "3":
serviceClass = ServiceRequestDetailMain(requestId: int.parse(messageData["requestNumber"].toString()));
break;
case 8:
serviceClass = ServiceRequestDetailMain(requestId: messageData["requestNumber"] ?? '');
case "8":
serviceClass = ServiceRequestDetailMain(requestId: int.parse(messageData["requestNumber"].toString()));
break;
case 11:
serviceClass = ServiceRequestDetailMain(requestId: messageData["requestNumber"] ?? '');
case "11":
serviceClass = ServiceRequestDetailMain(requestId: int.parse(messageData["requestNumber"].toString()));
break;
case 7:
case "7":
serviceClass = DeviceTransferDetails(model: DeviceTransfer(id: int.parse(messageData["requestNumber"].toString())));
break;
case 9:
case "9":
serviceClass = GasRefillDetailsPage(
priority: messageData["priority"],
date: messageData["createdOn"],
model: GasRefillModel(id: int.parse(messageData["requestNumber"].toString())),
);
break;
case 12:
case "12":
serviceClass = RecurrentWorkOrderView(taskId: int.parse(messageData["requestNumber"].toString()));
//Didn't handle task request yet...
// case 6:

@ -295,7 +295,7 @@ class UserProvider extends ChangeNotifier {
"userId": userId,
};
try {
response = await ApiManager.instance.post(URLs.getSwipeLastTransactionUrl, body: body);
response = await ApiManager.instance.post(URLs.getSwipeLastTransactionUrl, body: body,showToast: false);
if (response.statusCode >= 200 && response.statusCode < 300) {
swipeTransactionModel = SwipeTransaction.fromJson(json.decode(response.body)['data']);

@ -945,7 +945,7 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
isLoading = true;
notifyListeners();
try {
final response = await ApiManager.instance.post(URLs.sendOtpUrl + "$workOrderId", body: {});
final response = await ApiManager.instance.post(URLs.sendOtpUrl + "$workOrderId", body: {},showToast: false);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {}
isLoading = false;

@ -49,7 +49,7 @@ class _VerifyArrivalViewState extends State<VerifyArrivalView> {
//backgroundColor: const Color(0xfff8f9fb),
body: Consumer<ServiceRequestDetailProvider>(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) {
return SafeArea(
child: requestDetailProvider.isArrivalLoading
child: requestDetailProvider.isArrivalLoading || requestDetailProvider.isLoading
? const CircularProgressIndicator(color: AppColor.primary10).center
: requestDetailProvider.arrivalTypeList.isEmpty
? const NoDataFound().center
@ -62,6 +62,7 @@ class _VerifyArrivalViewState extends State<VerifyArrivalView> {
icon: item.verificationTypes!.icon ?? '',
heading: item.verificationTypes!.name ?? '',
subHeading: item.description ?? '',
// isLoading: requestDetailProvider.isLoading,
onTap: () {
onItemTap(requestDetailProvider: requestDetailProvider, context: context, verificationTypeId: item.verificationTypes?.value);
});
@ -72,7 +73,7 @@ class _VerifyArrivalViewState extends State<VerifyArrivalView> {
);
}
Widget customListItem({required String icon, required String heading, required String subHeading, required VoidCallback onTap}) {
Widget customListItem({required String icon, required String heading, required String subHeading, required VoidCallback onTap, bool isLoading = false}) {
return GestureDetector(
onTap: onTap, // Handles the tap
child: Card(
@ -81,33 +82,29 @@ class _VerifyArrivalViewState extends State<VerifyArrivalView> {
),
color: Colors.white,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start, // Align items at the top
crossAxisAlignment: CrossAxisAlignment.center, // Align items at the top
children: [
// Icon Section
icon
.toSvgAsset(
width: 32,
color: AppColor.neutral120,
height: 29,
)
.paddingOnly(top: 8),
14.width,
icon.toSvgAsset(width: 30, color: AppColor.neutral120, height: 30).paddingOnly(top: 0),
12.width,
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
heading,
style: AppTextStyles.heading6.copyWith(color: AppColor.neutral50),
),
7.height,
6.height,
Text(
subHeading,
style: AppTextStyles.bodyText2.copyWith(color: AppColor.neutral120),
),
],
).paddingOnly(end: 50),
),
),
12.width,
SizedBox(width: 24, height: 24, child: isLoading ? const CircularProgressIndicator(color: AppColor.primary10, strokeWidth: 2) : const SizedBox())
],
).paddingAll(12),
),
@ -150,7 +147,7 @@ class _VerifyArrivalViewState extends State<VerifyArrivalView> {
}
break;
case 3:
requestDetailProvider.sendOtp(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!);
await requestDetailProvider.sendOtp(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!);
Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) => const VerifyOtpView()),

@ -18,10 +18,7 @@ class VerifyOtpView extends StatelessWidget {
final defaultPinTheme = PinTheme(
width: 51.toScreenWidth,
height: 63.toScreenHeight,
textStyle: const TextStyle(
fontSize: 22,
color: Colors.black,
),
textStyle: const TextStyle(fontSize: 22, color: Colors.black),
decoration: BoxDecoration(
color: AppColor.neutral100,
borderRadius: BorderRadius.circular(10),

@ -111,10 +111,7 @@ class _ExternalMaintenanceRequestState extends State<ExternalMaintenanceRequest>
borderRadius: BorderRadius.circular(10),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
),
child: Icon(
Icons.add,
color: context.isDark ? null : AppColor.neutral60,
),
child: Icon(Icons.add, color: context.isDark ? null : AppColor.neutral60),
).onPress(requestDetailProvider.activityMaintenanceHelperModel?.supplier?.suppliername == null
? null
: () async {

@ -257,7 +257,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
labelStyle: AppTextStyles.textFieldLabelStyle,
suffixIcon: "clock".toSvgAsset(width: 20, color: context.isDark ? AppColor.neutral10 : null).paddingOnly(end: 16),
initialValue: requestDetailProvider.activityMaintenanceHelperModel?.travelHours?.toString(),
textInputType: TextInputType.number,
textInputType: const TextInputType.numberWithOptions(decimal: true),
onChange: (value) {
requestDetailProvider.activityMaintenanceHelperModel?.travelHours = num.parse(value); // int.tryParse(value);
},

@ -6,10 +6,11 @@ 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/models/device/model_definition.dart';
import 'package:test_sa/models/device/supplier.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/models/device/model_definition.dart';
import 'package:test_sa/models/device/supplier.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/building.dart';
import 'package:test_sa/models/new_models/department.dart';
@ -25,12 +26,10 @@ import 'package:test_sa/providers/ppm_asset_availability_provider.dart';
import 'package:test_sa/providers/ppm_electrical_safety_provider.dart';
import 'package:test_sa/providers/ppm_service_provider.dart';
import 'package:test_sa/providers/ppm_task_status_provider.dart';
import 'package:test_sa/views/widgets/bottom_sheets/asset_detail_bottom_sheet.dart';
import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
import 'package:test_sa/views/widgets/images/multi_image_picker.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/views/widgets/timer/app_timer.dart';
class WoInfoForm extends StatefulWidget {
@ -63,9 +62,7 @@ class _WoInfoFormState extends State<WoInfoForm> {
double totalWorkingHours =
widget.planPreventiveVisit.preventiveVisitTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endDateTime!).difference(DateTime.parse(item.startDateTime!)).inSeconds) ?? 0;
return Consumer<PpmProvider>(builder: (context, ppmProvider, child) {
return ListView(
padding: const EdgeInsets.only(left: 16, right: 16, top: 8, bottom: 16),
children: [
@ -109,7 +106,7 @@ class _WoInfoFormState extends State<WoInfoForm> {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
widget.planPreventiveVisit.assetName!.bodyText(context).custom(color: AppColor.black10),
widget.planPreventiveVisit.assetName!.bodyText(context).custom(color: AppColor.black10).expanded,
"info_icon".toSvgAsset(height: 17, width: 17).onPress(
() {
// There is only limited information for asset is returned from backend to show all info need to return the whole model from backend...
@ -171,7 +168,8 @@ class _WoInfoFormState extends State<WoInfoForm> {
SingleItemDropDownMenu<Lookup, PpmTaskStatusProvider>(
context: context,
showShadow: false,
initialValue: widget.planPreventiveVisit.taskStatus == null ? null : Lookup(name: widget.planPreventiveVisit.taskStatus?.name ?? "", id: widget.planPreventiveVisit.taskStatus?.id),
initialValue:
widget.planPreventiveVisit.taskStatus == null ? null : Lookup(name: widget.planPreventiveVisit.taskStatus?.name ?? "", id: widget.planPreventiveVisit.taskStatus?.id),
title: context.translation.pmTestResult,
backgroundColor: AppColor.neutral100,
onSelect: (value) {
@ -331,8 +329,8 @@ class _WoInfoFormState extends State<WoInfoForm> {
floor: Floor(name: model.floorName),
site: Site(custName: model.siteName),
supplier: Supplier(suppliername: model.supplierName),
modelDefinition: ModelDefinition(modelName: model.model, manufacturerName: model.manufacturer),
room: Rooms(value: int.tryParse(model.roomName??'')),
modelDefinition: ModelDefinition(modelName: model.model, manufacturerName: model.manufacturer, assetName: model.assetName),
room: Rooms(value: int.tryParse(model.roomName ?? '')),
department: Department(departmentName: model.departmentName),
);
return AssetDetailBottomSheet(asset);

@ -104,7 +104,7 @@ class _AddSupplierEngineerBottomSheetState extends State<AddSupplierEngineerBott
8.height,
AppTextFormField(
labelText: "Email".addTranslation,
textInputType: TextInputType.name,
textInputType: TextInputType.emailAddress,
onChange: (text) {
engineer.email = text.isEmpty ? null : text;
},

Loading…
Cancel
Save