bug fixes

design_3.0_latest
WaseemAbbasi22 1 year ago
parent 501c78dc09
commit c1ec32fa33

@ -163,11 +163,14 @@ class FirebaseNotificationManger {
});
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('notification i got is ${message.toMap()}');
if (Platform.isAndroid) {
NotificationManger.showNotification(
title: message.notification?.title ?? "", subtext: message.notification?.body ?? "", hashcode: int.tryParse("1234" ?? "") ?? 1, payload: json.encode(message.data), context: context);
}
if(message.data["notificationType"]!='NurseConfirmArrive'){
NotificationManger.showNotification(
title: message.notification?.title ?? "", subtext: message.notification?.body ?? "", hashcode: int.tryParse("1234" ?? "") ?? 1, payload: json.encode(message.data), context: context);
}
}
return;
});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {

@ -115,9 +115,10 @@ class AllRequestsProvider extends ChangeNotifier {
SearchAllRequestsModel? searchedModel;
Future<int> getAllRequests(BuildContext context, {int? typeTransaction, SearchAllRequestsModel? search}) async {
print('loading value is $isAllLoading');
if (isAllLoading == true) return -2;
isAllLoading = true;
if (_allRequestsAndCount == null) notifyListeners();
if (_allRequestsAndCount == null) notifyListeners();
Response response;
try {
if (search != null) {

@ -70,6 +70,7 @@ class _DashboardViewState extends State<DashboardView> {
if (isFCM) {
FirebaseNotificationManger.initialized(context);
NotificationManger.initialisation((notificationDetails) {
print('i am called with notification details ${notificationDetails.toString()}');
FirebaseNotificationManger.handleMessage(context, json.decode(notificationDetails.payload!));
}, (id, title, body, payload) async {});

@ -121,6 +121,7 @@ class RequestsDetails {
String? date;
String? siteTransferFrom;
String? siteTransferTo;
int? transactionType;
RequestsDetails({
this.id,
@ -144,6 +145,7 @@ class RequestsDetails {
this.siteTransferFrom,
this.siteTransferTo,
this.date,
this.transactionType
});
RequestsDetails.fromJson(Map<String, dynamic> json) {
@ -168,6 +170,7 @@ class RequestsDetails {
date = json['date'];
siteTransferFrom = json['siteTransferFrom'];
siteTransferTo = json['siteTransferTo'];
transactionType = json['transactionType'];
}
Map<String, dynamic> toJson() {
@ -193,6 +196,7 @@ class RequestsDetails {
data['date'] = date;
data['siteTransferFrom'] = siteTransferFrom;
data['siteTransferTo'] = siteTransferTo;
data['transactionType'] = transactionType;
return data;
}
}

@ -535,6 +535,8 @@ class WorkOrderHistory {
WorkOrderHistory({
required this.id,
required this.workorderStatus,
this.assetVerificationType,
this.photoVerfication,
required this.activityStatus,
required this.date,
required this.timeDifference,
@ -549,9 +551,11 @@ class WorkOrderHistory {
int? id;
Lookup? workorderStatus;
Lookup? assetVerificationType;
dynamic activityStatus;
DateTime? date;
String timeDifference ='';
String? photoVerfication;
WorkOrderAssignedEmployee? user;
Lookup? step;
DateTime? fixRemotlyStartTime;
@ -564,7 +568,9 @@ class WorkOrderHistory {
return WorkOrderHistory(
id: json["id"],
workorderStatus: json["workorderStatus"] == null ? null : Lookup.fromJson(json["workorderStatus"]),
assetVerificationType: json["assetVerificationType"] == null ? null : Lookup.fromJson(json["assetVerificationType"]),
activityStatus: json["activityStatus"],
photoVerfication: json["photoVerfication"],
date: DateTime.tryParse(json["date"] ?? ""),
user: json["user"] == null ? null : WorkOrderAssignedEmployee.fromJson(json["user"]),
step: json["step"] == null ? null : Lookup.fromJson(json["step"]),
@ -580,6 +586,8 @@ class WorkOrderHistory {
Map<String, dynamic> toJson() => {
"id": id,
"workorderStatus": workorderStatus?.toJson(),
"assetVerificationType": assetVerificationType?.toJson(),
"photoVerfication": photoVerfication,
"activityStatus": activityStatus,
"date": date?.toIso8601String(),
"user": user?.toJson(),

@ -56,7 +56,7 @@ class ServiceRequestItemView extends StatelessWidget {
// '${context.translation.assetNumber}: ${request.assetNo}'.bodyText(context),
// '${context.translation.requestType}: ${requestData!.requestTypeName}'.bodyText(context),
'${context.translation.requestNo}: ${requestData!.requestNo}'.bodyText(context),
if (requestData?.statusName == 'Cancelled') ...[
if (requestData?.statusName == 'Canceled') ...[
'${context.translation.rejectionReason}: ${requestData!.rejectReason}'.bodyText(context),
],
8.height,

@ -25,10 +25,10 @@ class RequestItemViewList extends StatelessWidget {
shrinkWrap: true,
itemBuilder: (cxt, index) {
if (isLoading) return const SizedBox().toRequestShimmer(cxt, isLoading);
bool isServiceRequest = list[index].nameOfType == "ServiceRequest";
bool isGasRefill = list[index].nameOfType == "GasRefill";
bool isAssetTransfer = list[index].nameOfType == "AssetTransfer";
bool isPPMs = list[index].nameOfType == "PPMs";
bool isServiceRequest = list[index].transactionType == 1;
bool isGasRefill = list[index].transactionType == 2;
bool isAssetTransfer = list[index].transactionType == 3;
bool isPPMs = list[index].transactionType == 4;
return isServiceRequest
? ServiceRequestItemView(requestDetails: list[index])

@ -739,6 +739,7 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
body: activityMaintenanceHelperModel!.toJson(),
);
stateCode = response.statusCode;
print('response of activity maintenace part is ${response.body}');
if (response.statusCode >= 200 && response.statusCode < 300) {
// currentWorkOrder = WorkOrderDetail.fromJson(json.decode(response.body));
// updateCurrentWorkOrder(currentWorkOrder);

@ -154,8 +154,10 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
children: [
StatusLabel(
label: activity.activityStatus?.name,
textColor: AppColor.getHistoryLogStatusTextColorByName(activity.activityStatus!.name!),
backgroundColor: AppColor.getHistoryLogStatusColorByName(activity.activityStatus!.name!),
textColor: AppColor.white10,
// textColor: AppColor.getHistoryLogStatusTextColorByName(activity.activityStatus!.name!),
// backgroundColor: AppColor.getHistoryLogStatusColorByName(activity.activityStatus!.name!),
backgroundColor: AppColor.primary10,
),
"drag_icon".toSvgAsset(height: 12, width: 23, color: AppColor.neutral160),
if (userProvider.user!.type == UsersTypes.engineer && requestDetailProvider.currentWorkOrder?.data?.status?.value != 5 && requestDetailProvider.currentWorkOrder?.data?.status?.value != 3)
@ -246,6 +248,7 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
}
Widget maintenanceActivityCard({required ServiceRequestDetailProvider requestDetailProvider, required UserProvider userProvider, required BuildContext context, required Activities activity}) {
print('activity i got is ${activity.toJson()}');
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
@ -256,8 +259,10 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
//TODO will be here when fixed from backend..
StatusLabel(
label: activity.activityStatus?.name,
textColor: AppColor.getHistoryLogStatusTextColorByName(activity.activityStatus!.name!),
backgroundColor: AppColor.getHistoryLogStatusColorByName(activity.activityStatus!.name!),
textColor: AppColor.white10,
// textColor: AppColor.getHistoryLogStatusTextColorByName(activity.activityStatus!.name!),
// backgroundColor: AppColor.getHistoryLogStatusColorByName(activity.activityStatus!.name!),
backgroundColor: AppColor.primary10,
),
"drag_icon".toSvgAsset(height: 12, width: 23, color: AppColor.neutral160),
if (userProvider.user!.type == UsersTypes.engineer && requestDetailProvider.currentWorkOrder?.data?.status?.value != 5 && requestDetailProvider.currentWorkOrder?.data?.status?.value != 3)

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/api_routes/urls.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';
@ -9,6 +10,7 @@ import 'package:test_sa/models/new_models/work_order_detail_model.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/service_request_latest/service_request_detail_provider.dart';
import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart';
import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
@ -73,8 +75,6 @@ class HistoryLogView extends StatelessWidget {
child: Column(children: items),
);
}),
],
));
});
@ -98,8 +98,31 @@ class HistoryLogView extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (object.assetVerificationType?.value == 4 && object.photoVerfication != null) ...[
Padding(
padding: EdgeInsets.symmetric(vertical: 12.toScreenWidth),
child: InteractiveViewer(child: Image.network(URLs.getFileUrl(object.photoVerfication ?? '')!, height: 143.toScreenHeight)),
).onPress(() async {
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => Scaffold(
body: SafeArea(
child: Stack(
children: [
InteractiveViewer(child: Image.network(URLs.getFileUrl(object.photoVerfication ?? '')!)).center,
const ABackButton(),
],
),
),
),
),
);
}),
],
object.step!.name!.bodyText(context).custom(color: AppColor.black10),
object.timeDifference.isNotEmpty ? object.timeDifference.tinyFont(context).custom(color: context.isDark ? AppColor.neutral30 : AppColor.neutral120) : const SizedBox(),
],
),
),
@ -123,7 +146,7 @@ class HistoryLogView extends StatelessWidget {
String statusText(String status) {
if (status == "new" || status == "open") {
return "Open Request".addTranslation;
} else if (status == "in progress") {
} else if (status == "in progress") {
return "Status update to In Progress".addTranslation;
} else if (status == "closed") {
return "Status update to Closed".addTranslation;

@ -1,4 +1,5 @@
import 'dart:convert';
import 'dart:developer';
import 'dart:io';
import 'package:flutter/material.dart';
@ -225,16 +226,6 @@ class _VerifyArrivalViewState extends State<VerifyArrivalView> {
requestDetailProvider.isVerifyArrivalBottomSheetOpen=false;
});
bool ?isArrived = await ServiceRequestUtils.listenForApproval();
// bool? isArrived = (await showModalBottomSheet(
// context: context,
// useSafeArea: true,
// isScrollControlled: true,
// isDismissible: false,
// backgroundColor: Colors.transparent,
// builder: (context) => RequestApprovalBottomSheet(),
// ));
print('value of arrived i got is ${isArrived}');
// return ;
if (requestDetailProvider.isVerifyArrivalBottomSheetOpen) {
if (isArrived == null) {
"Requester not confirmed you arrival".showToast;
@ -252,7 +243,7 @@ class _VerifyArrivalViewState extends State<VerifyArrivalView> {
}
}
else{
print('bottomsheet closed ...');
log('bottomsheet closed ...');
}
}
}

@ -86,7 +86,6 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
//TODO add check...
// enable: !isCurrentUserIsAssistantEmp,
onSelect: (employee) {
print('on select called...${employee?.toJson()}');
if (employee == null) {
requestDetailProvider.activityMaintenanceHelperModel?.assistantEmployees = [];
} else {
@ -122,11 +121,11 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate = selectedDateTime;
requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel);
ServiceRequestUtils.calculateAndAssignWorkingHours(
startTime: requestDetailProvider.activityMaintenanceHelperModel?.startTime,
endTime: requestDetailProvider.activityMaintenanceHelperModel?.endTime,
startTime: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate,
endTime: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate,
workingHoursController: _workingHoursController,
updateModel: (hours){
requestDetailProvider.activityMaintenanceHelperModel!.modelAssistantEmployees!.workingHours=hours;
});
}
});
@ -160,7 +159,13 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
}
requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate = selectedDateTime;
requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel);
// assignWorkingHours(requestDetailProvider: requestDetailProvider);
ServiceRequestUtils.calculateAndAssignWorkingHours(
startTime: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate,
endTime: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate,
workingHoursController: _workingHoursController,
updateModel: (hours){
requestDetailProvider.activityMaintenanceHelperModel!.modelAssistantEmployees!.workingHours=hours;
});
}
});
},

@ -33,7 +33,6 @@ class _ServiceRequestDetailMainState extends State<ServiceRequestDetailMain> {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
getInitialData();
});
@ -43,8 +42,6 @@ class _ServiceRequestDetailMainState extends State<ServiceRequestDetailMain> {
bool isNurse = (Provider.of<UserProvider>(context, listen: false).user?.type) == UsersTypes.normal_user;
_requestProvider = Provider.of<ServiceRequestDetailProvider>(context, listen: false);
await _requestProvider.getWorkOrderById(id: widget.requestId);
print('nextstep i got is ${_requestProvider.currentWorkOrder?.data?.nextStep?.workOrderNextStepEnum}');
print('loading value is ${_requestProvider.isLoading}');
if (isNurse && (_requestProvider.currentWorkOrder?.data?.nextStep?.workOrderNextStepEnum == WorkOrderNextStepEnum.waitingForRequesterToConfirm)) {
ServiceRequestBottomSheet.nurseVerifyArrivalBottomSheet(context: context);
}
@ -67,13 +64,12 @@ class _ServiceRequestDetailMainState extends State<ServiceRequestDetailMain> {
bool isNurse = (Provider.of<UserProvider>(context, listen: false).user?.type) == UsersTypes.normal_user;
return WillPopScope(
onWillPop: () async {
// Implement custom back button handling logic here
ServiceRequestDetailProvider requestDetailProvider = Provider.of<ServiceRequestDetailProvider>(context, listen: false);
if (requestDetailProvider.timer != null && requestDetailProvider.timer!.isActive) {
requestDetailProvider.stopTimer();
}
stopTimer();
return true; // Return true if you want to allow popping the screen, false otherwise
return true;
},
child: Scaffold(
backgroundColor: AppColor.neutral100,

Loading…
Cancel
Save