assign to me & cancel added for asset transfer.

design_3.0_eng_role_module
Sikander Saleem 1 week ago
parent b14130e6c7
commit 8db4094716

@ -313,6 +313,8 @@ class URLs {
static get getAssetTransferById => "$_baseUrl/AssetTransfer/GetAssetTransferNewById"; // get
static get createAssetTransferRequest => "$_baseUrl/AssetTransfer/AddAssetTransferMobileNew"; // post
static get updateDeviceTransfer => "$_baseUrl/AssetTransfer/UpdateEngineerAssetTransferNew"; // get
static get assetTransferAssignEngineerToHimself => "$_baseUrl/AssetTransfer/AssignEngineerToHimself"; // get
static get assetTransferEngineerReject => "$_baseUrl/AssetTransfer/EngineerReject"; // get
// employee
static get getEmployees => "$_baseUrl/Lookups/GetLookup?lookupEnum=33"; // get

@ -222,4 +222,51 @@ class DeviceTransferProvider extends ChangeNotifier {
return -1;
}
}
Future<DeviceTransfer?> assignEngineerToHimselfInternal(num id, String empId) async {
try {
Map<String, dynamic> body = {"assetTransferId": id, "senderAssignEmployeeId": empId, "receiverAssignEmployeeId": empId};
Response response = await ApiManager.instance.post(URLs.assetTransferAssignEngineerToHimself, body: body);
if (response.statusCode >= 200 && response.statusCode < 300) {
return DeviceTransfer.fromJson(json.decode(response.body)["data"]);
} else {
return null;
}
} catch (error) {
return null;
}
}
Future<DeviceTransfer?> assignEngineerToHimselfExternal(num id, bool isSender, String empId) async {
try {
Map<String, dynamic> body = {"assetTransferId": id};
if (isSender) {
body["senderAssignEmployeeId"] = empId;
} else {
body["receiverAssignEmployeeId"] = empId;
}
Response response = await ApiManager.instance.post(URLs.assetTransferAssignEngineerToHimself, body: body);
if (response.statusCode >= 200 && response.statusCode < 300) {
return DeviceTransfer.fromJson(json.decode(response.body)["data"]);
} else {
return null;
}
} catch (error) {
return null;
}
}
Future<DeviceTransfer?> engineerReject(Map<String, dynamic> body) async {
try {
Response response = await ApiManager.instance.post(URLs.assetTransferEngineerReject, body: body);
if (response.statusCode >= 200 && response.statusCode < 300) {
// gasRefillModel = DeviceTransfer.fromJson(json.decode(response.body)["data"]);
return DeviceTransfer.fromJson(json.decode(response.body)["data"]);
} else {
return null;
}
} catch (error) {
return null;
}
}
}

@ -8,8 +8,11 @@ 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/widget_extensions.dart';
import 'package:test_sa/helper/utils.dart';
import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/modules/cx_module/chat/chat_widget.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/views/widgets/bottom_sheets/rejection_reason_bottom_sheet.dart';
import 'package:test_sa/views/widgets/images/files_list.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
@ -191,7 +194,15 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
_internalRequestDetailsCard() {
bool isCurrentEngineerEligibleForEdit = _model?.senderAssignedEmployeeId == _userProvider!.user?.userID;
bool isCurrentRequestEditAble = (!(_model?.senderMachineStatusValue == 3));
bool isCurrentRequestEditAble = (!(_model?.senderMachineStatusValue == 5));
bool isCurrentRequestInProgress = (_model?.senderMachineStatusValue == 1);
// bool isCurrentRequestClosed = isSender ? ((_model?.senderMachineStatusValue == 3)) : ((_model?.receiverMachineStatusValue == 3));
bool isCurrentRequestOpen = _model?.senderMachineStatusValue == 4;
bool engineerCanAssignToHimself = (_userProvider!.user?.type == UsersTypes.engineer) && isCurrentRequestOpen && context.settingProvider.isUserFlowMedical;
bool engineerCanCancel = (_userProvider!.user?.type == UsersTypes.engineer) && isCurrentRequestInProgress && isCurrentEngineerEligibleForEdit && context.settingProvider.isUserFlowMedical;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@ -257,6 +268,42 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
_buildTextWidget(_model?.senderComment ?? ''),
],
if (engineerCanAssignToHimself) ...[
16.height,
AppFilledButton(
onPressed: () async {
Utils.showLoading(context);
await Provider.of<DeviceTransferProvider>(context, listen: false).assignEngineerToHimselfInternal(_model!.id!.toInt(), context.userProvider.user!.userID!);
Utils.hideLoading(context);
setState(() {});
},
label: 'Assign To Me',
),
] else if (engineerCanCancel) ...[
16.height,
AppFilledButton(
label: context.translation.cancel,
buttonColor: AppColor.white60,
textColor: AppColor.black10,
loading: false,
onPressed: () async {
context.showBottomSheet(
RejectionReasonBottomSheet(
onRejectPressed: (int reasonId, String comment) async {
await Future.delayed(const Duration(milliseconds: 500));
var data = await Provider.of<DeviceTransferProvider>(context, listen: false)
.engineerReject({"assetTransferId": _model!.id!.toInt(), "rejectReasonId": reasonId, "rejectComment": comment});
return data != null;
},
onRefreshed: () {
setState(() {});
},
),
title: "Rejection Reason".addTranslation);
},
)
]
],
).toShadowContainer(context);
@ -267,6 +314,11 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
bool isCurrentEngineerEligibleForEdit = isSender ? _model?.senderAssignedEmployeeId == _userProvider!.user?.userID : _model?.receiverAssignedEmployeeId == _userProvider!.user?.userID;
bool isCurrentRequestClosed = isSender ? ((_model?.senderMachineStatusValue == 3)) : ((_model?.receiverMachineStatusValue == 3));
bool isCurrentRequestOpen = isSender ? ((_model?.senderMachineStatusValue == 4)) : ((_model?.receiverMachineStatusValue == 4));
bool engineerCanAssignToHimself = (_userProvider!.user?.type == UsersTypes.engineer) && isCurrentRequestOpen && context.settingProvider.isUserFlowMedical;
bool engineerCanCancel = (_userProvider!.user?.type == UsersTypes.engineer) && isCurrentEngineerEligibleForEdit && context.settingProvider.isUserFlowMedical;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@ -287,7 +339,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
isShow: context.settingProvider.isUserFlowMedical && (isSender ? _deviceTransfer.senderMachineStatusValue! : _deviceTransfer.receiverMachineStatusValue!) != 0,
isReadOnly: (isSender ? _deviceTransfer.senderMachineStatusValue! : _deviceTransfer.receiverMachineStatusValue) != 1,
requestId: widget.model.id!.toInt(),
assigneeEmployeeNumber: isSender ? _deviceTransfer.senderAssignedEmployeeNumber! : _deviceTransfer.receiverAssignedEmployeeNumber!,
assigneeEmployeeNumber: isSender ? _deviceTransfer.senderAssignedEmployeeNumber : _deviceTransfer.receiverAssignedEmployeeNumber,
myLoginUserID: context.userProvider.user!.employeeId ?? context.userProvider.user!.username!,
contactEmployeeINumber: _deviceTransfer.assetTransferContactPersons!.first.employeeNumber,
),
@ -319,6 +371,41 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
_buildTextWidget(comment),
],
if (engineerCanAssignToHimself) ...[
16.height,
AppFilledButton(
onPressed: () async {
Utils.showLoading(context);
await Provider.of<DeviceTransferProvider>(context, listen: false).assignEngineerToHimselfExternal(_model!.id!.toInt(), isSender, context.userProvider.user!.userID!);
Utils.hideLoading(context);
setState(() {});
},
label: 'Assign To Me',
),
] else if (engineerCanCancel) ...[
16.height,
AppFilledButton(
label: context.translation.cancel,
buttonColor: AppColor.white60,
textColor: AppColor.black10,
loading: false,
onPressed: () async {
context.showBottomSheet(
RejectionReasonBottomSheet(
onRejectPressed: (int reasonId, String comment) async {
await Future.delayed(const Duration(milliseconds: 500));
var data = await Provider.of<DeviceTransferProvider>(context, listen: false)
.engineerReject({"assetTransferId": _model!.id!.toInt(), "rejectReasonId": reasonId, "rejectComment": comment});
return data != null;
},
onRefreshed: () {
setState(() {});
},
),
title: "Rejection Reason".addTranslation);
},
)
]
],
).toShadowContainer(context);

Loading…
Cancel
Save