From a68f687f0cda9b9708e48388830eb2ddab358749 Mon Sep 17 00:00:00 2001 From: priyanshee1604 Date: Thu, 13 Feb 2025 16:18:19 +0530 Subject: [PATCH] Improved: The code by parallel API calls and showed toast only once for all responses.(#339) --- src/views/ManageFacilities.vue | 99 +++++++++++++--------------------- 1 file changed, 36 insertions(+), 63 deletions(-) diff --git a/src/views/ManageFacilities.vue b/src/views/ManageFacilities.vue index a5a5c8f..6ef4b24 100644 --- a/src/views/ManageFacilities.vue +++ b/src/views/ManageFacilities.vue @@ -315,50 +315,20 @@ const facilitiesToAdd = this.selectedFacilities.filter((facility: any) => !memberFacilityIds.includes(facility.facilityId)) const selectedFacilityIds = this.selectedFacilities ? new Set(this.selectedFacilities.map((facility:any) => facility.facilityId)) as any : []; const facilitiesToRemove = this.memberFacilities.filter((facility: any) => !selectedFacilityIds.has(facility.facilityId)) - - if(facilitiesToRemove.length > 0){ - try{ - const removeResponse = await FacilityService.updateFacilitiesToGroup({ - "payload": { - "facilityList": facilitiesToRemove.map((facility: any) => ({ - "facilityGroupId": this.facilityGroupId, - "facilityId": facility.facilityId, - "fromDate": facility.fromDate, - "thruDate": DateTime.now().toMillis() - })) - } - }) - - if(hasError(removeResponse)){ - throw removeResponse - } - showToast(translate("Member facilities updated successfully.")) - }catch(error){ - showToast(translate("Failed to update some member facilities.")) - } - } - if(facilitiesToAdd.length > 0){ - try{ - const addResponse = await FacilityService.addFacilitiesToGroup({ - "payload": { - "facilityList": facilitiesToAdd.map((facility: any) => ({ - "facilityGroupId": this.facilityGroupId, - "facilityId": facility.facilityId, - "sequenceNum": facility.sequenceNum - })) - } - }) - - if(hasError(addResponse)){ - throw addResponse - } - showToast(translate("Member facilities updated successfully.")) - }catch(error){ - showToast(translate("Failed to update some member facilities.")) - } - } - + const facilitiesToRemoveList = facilitiesToRemove.map((facility: any) => ({ + "facilityGroupId": this.facilityGroupId, + "facilityId": facility.facilityId, + "fromDate": facility.fromDate, + "thruDate": DateTime.now().toMillis() + })) + + const facilitiesToAddList = facilitiesToAdd.map((facility: any) => ({ + "facilityGroupId": this.facilityGroupId, + "facilityId": facility.facilityId, + "sequenceNum": facility.sequenceNum + })) + const facilityIdsToAdd = facilitiesToAdd ? new Set(facilitiesToAdd.map((facility:any) => facility.facilityId)) as any : []; const existingFacilityMembers = this.selectedFacilities.filter((facility:any) => !facilityIdsToAdd.has(facility.facilityId)) const diffMemberFacilitySequencing = existingFacilityMembers.filter((facility: any) => this.memberFacilities.some((memberFacility: any) => memberFacility.facilityId === facility.facilityId && memberFacility.sequenceNum !== facility.sequenceNum)) @@ -368,28 +338,31 @@ return memberInfo; }, {}) - if(diffMemberFacilitySequencing.length > 0){ - try{ - const sequenceUpdateResponse = await FacilityService.updateFacilitiesToGroup({ - "payload": { - "facilityList": diffMemberFacilitySequencing.map((memberFacility: any) => ({ - "facilityGroupId": this.facilityGroupId, - "facilityId": memberFacility.facilityId, - "fromDate": memberFacilityDetail[memberFacility.facilityId].fromDate, - "sequenceNum": memberFacility.sequenceNum - })) - } - }) + const diffMemberFacilitySequencingList = diffMemberFacilitySequencing.map((memberFacility: any) => ({ + "facilityGroupId": this.facilityGroupId, + "facilityId": memberFacility.facilityId, + "fromDate": memberFacilityDetail[memberFacility.facilityId].fromDate, + "sequenceNum": memberFacility.sequenceNum + })) - if(hasError(sequenceUpdateResponse)){ - throw sequenceUpdateResponse - } - showToast(translate("Member facilities updated successfully.")) - }catch(error){ - showToast(translate("Failed to update some member facilities.")) - } + const facilitiesToUpdateList = [...facilitiesToRemoveList, ...diffMemberFacilitySequencingList] + const requestPayload = [] + + if(facilitiesToUpdateList.length > 0){ + requestPayload.push(FacilityService.updateFacilitiesToGroup({ "payload": { "facilityList": facilitiesToUpdateList}})) } - + + if (facilitiesToAddList.length > 0) { + requestPayload.push(FacilityService.addFacilitiesToGroup({ "payload": { "facilityList": facilitiesToAddList } })); + } + + const responses = await Promise.allSettled(requestPayload) + if(responses.some((response: any) => response.status === 'rejected')){ + showToast(translate("Failed to update some member facilities.")) + } else { + showToast(translate("Member facilities updated successfully.")) + } + this.isFacilityMembersModified = false; this.router.push({ path: `/tabs/find-groups` }) },