diff --git a/src/components/FacilityGroupActionsPopover.vue b/src/components/FacilityGroupActionsPopover.vue index e23b9b0a..8ff09904 100644 --- a/src/components/FacilityGroupActionsPopover.vue +++ b/src/components/FacilityGroupActionsPopover.vue @@ -93,6 +93,9 @@ export default defineComponent({ } try { + //First delete all the Inactive FacilityGroupMember records + await this.deleteInactiveFacilityGroupAssociations(this.group.facilityGroupId); + const resp = await FacilityService.deleteFacilityGroup({ facilityGroupId: this.group.facilityGroupId }) as any @@ -111,6 +114,24 @@ export default defineComponent({ } popoverController.dismiss() }, + async deleteInactiveFacilityGroupAssociations(groupId: string) { + const members = await FacilityService.fetchInactiveFacilityGroupAssociations(groupId); + let promises = [] as any; + members.forEach((member:any) => { + promises.push(FacilityService.removeFacilityFromGroup({ + facilityGroupId: member.facilityGroupId, + facilityId: member.facilityId, + fromDate: member.fromDate + })); + }); + await Promise.all(promises).then(responses => { + responses.forEach(response => { + if (hasError(response)) { + throw response.data; + } + }); + }) + } }, setup() { const store = useStore(); diff --git a/src/services/FacilityService.ts b/src/services/FacilityService.ts index d9bfdf7a..cd530946 100644 --- a/src/services/FacilityService.ts +++ b/src/services/FacilityService.ts @@ -67,6 +67,38 @@ const fetchFacilityGroupInformation = async(facilityIds: Array): Promise return facilitiesGroupInformation; } +const fetchInactiveFacilityGroupAssociations = async (groupId: string): Promise => { + let facilitiesGroupMembers = [] + + const params = { + inputFields: { + facilityGroupId: groupId, + thruDate: DateTime.now().toMillis(), + thruDate_op: 'opLessThan' + }, + fieldList: ['facilityGroupId', 'facilityId', "fromDate", "thruDate"], + entityName: "FacilityGroupMember", + viewSize: 100 + } + + try { + const resp = await api({ + url: "performFind", + method: "post", + data: params + }) as any; + + if (!hasError(resp) && resp.data.count > 0) { + facilitiesGroupMembers = resp.data.docs + } else { + throw resp.data; + } + } catch (err) { + logger.error(err) + } + return facilitiesGroupMembers; +} + const fetchFacilitiesOrderCount = async(facilityIds: Array): Promise => { let facilitiesOrderCount = {}, resp: any; try { @@ -216,6 +248,14 @@ const addFacilityToGroup = async (payload: any): Promise => { }) } +const removeFacilityFromGroup = async (payload: any): Promise => { + return api({ + url: "service/removeFacilityFromGroup", + method: "post", + data: payload + }) +} + const associateCalendarToFacility = async (payload: any): Promise => { return api({ url: "service/createFacilityCalendar", @@ -685,6 +725,7 @@ export const FacilityService = { fetchFacilityGroupInformation, fetchFacilityMappings, fetchFacilityOrderCounts, + fetchInactiveFacilityGroupAssociations, fetchJobData, fetchOrderCountsByFacility, getFacilityProductStores, @@ -692,6 +733,7 @@ export const FacilityService = { getFacilityParties, getPartyRoleAndPartyDetails, removeFacilityCalendar, + removeFacilityFromGroup, removePartyFromFacility, updateFacility, updateFacilityGroup,