Skip to content

Commit

Permalink
Merge pull request #252 from bcgov/ofmcc-1773-inclusion-policy-bug-fix
Browse files Browse the repository at this point in the history
ofmcc-1773 - refactor inclusion policy update in Account Management
  • Loading branch information
vietle-cgi authored Jun 21, 2024
2 parents c0eac1c + f7af5d9 commit 6b0bbc8
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 38 deletions.
4 changes: 2 additions & 2 deletions frontend/src/components/messages/NewRequestDialog.vue
Original file line number Diff line number Diff line change
Expand Up @@ -681,7 +681,7 @@ export default {
await this.updateAssistanceRequest(assistanceRequestId, payload)
await this.updateAssistanceRequestInStore(assistanceRequestId)
} catch (error) {
this.setFailureAlert(`Failed to close Assistance Request - ${error}`)
this.setFailureAlert('Failed to close Assistance Request', error)
throw error
}
},
Expand All @@ -694,7 +694,7 @@ export default {
}
await this.replyToAssistanceRequest(payload)
} catch (error) {
this.setFailureAlert(`Failed to create auto reply for Assistance Request - ${error}`)
this.setFailureAlert('Failed to create auto reply for Assistance Request', error)
throw error
}
},
Expand Down
47 changes: 25 additions & 22 deletions frontend/src/components/organizations/OrganizationInfo.vue
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@
:readonly="!editMode"
:uploadedDocuments="uploadedDocumentsEdit"
@deleteUploadedDocument="deleteUploadedDocument" />
<v-alert density="compact" v-if="showUploadDocumentsAlert" type="error" class="w-76 mt-1">
<v-alert v-if="showUploadDocumentsAlert" density="compact" type="error" class="w-76 mt-1">
Please upload at least one document. To proceed, invoke 'Add File' button, 'Select a file' to upload. Then 'Save' to complete the process.
</v-alert>
</v-col>
Expand All @@ -184,8 +184,8 @@
</v-col>
</template>
<v-col v-if="editMode" class="d-flex justify-end pt-0">
<AppButton id="cancel-edit" :primary="false" size="large" width="100px" :loading="loadingInclusionPolicy" @click="toggleEditMode()" class="mr-6">Cancel</AppButton>
<AppButton id="save" size="large" width="100px" :loading="loadingInclusionPolicy" @click="save()">Save</AppButton>
<AppButton id="cancel-edit" :primary="false" size="large" width="100px" :loading="loadingInclusionPolicy" class="mr-6" @click="toggleEditMode()">Cancel</AppButton>
<AppButton id="save" size="large" width="100px" :loading="loadingInclusionPolicy" :disabled="invalidInclusionPolicy" @click="save()">Save</AppButton>
</v-col>
</v-col>
</v-row>
Expand All @@ -198,15 +198,13 @@
</template>

<script>
import alertMixin from '@/mixins/alertMixin'
import AppLabel from '@/components/ui/AppLabel.vue'
import AppButton from '@/components/ui/AppButton.vue'
import AppDocumentUpload from '@/components/ui/AppDocumentUpload.vue'
import { isEmpty } from 'lodash'
export default {
components: { AppButton, AppLabel, AppDocumentUpload },
mixins: [alertMixin],
props: {
editable: {
type: Boolean,
Expand Down Expand Up @@ -242,45 +240,50 @@ export default {
uploadedDocumentsEdit: [],
documentsToUpload: [],
documentsToDelete: [],
showUploadDocumentsAlert: false,
loadingInclusionPolicy: false,
}
},
async updated() {
computed: {
documentsExistOrBeingAdded() {
return !isEmpty(this.documentsToUpload) || !isEmpty(this.uploadedDocumentsEdit)
},
invalidInclusionPolicy() {
return this.organizationEdit?.hasInclusionPolicy && !this.documentsExistOrBeingAdded
},
showUploadDocumentsAlert() {
return this.editMode && this.invalidInclusionPolicy
},
},
updated() {
this.initializeData()
},
methods: {
async initializeData() {
this.organizationEdit = { ...this.organization, hasInclusionPolicy: this.organization.hasInclusionPolicy || false }
initializeData() {
this.organizationEdit.hasInclusionPolicy = this.organization.hasInclusionPolicy ?? false
this.uploadedDocumentsEdit = JSON.parse(JSON.stringify(this.uploadedDocuments))
},
documentsExistOrBeingAdded() {
return !isEmpty(this.documentsToUpload) || !isEmpty(this.uploadedDocumentsEdit)
},
async save() {
if (this.organizationEdit?.hasInclusionPolicy && !this.documentsExistOrBeingAdded()) {
this.showUploadDocumentsAlert = true
return
}
if (!this.organizationEdit.hasInclusionPolicy && this.organization.hasInclusionPolicy) {
save() {
if (!this.organizationEdit.hasInclusionPolicy) {
this.documentsToUpload = []
this.documentsToDelete = this.uploadedDocuments.map((document) => document.documentId)
}
this.loadingInclusionPolicy = true
await this.$emit('saveInclusionPolicyData', this.organizationEdit, this.documentsToUpload, this.documentsToDelete, this.onSaveCompleteCallBack)
this.$emit('saveInclusionPolicyData', this.organizationEdit?.hasInclusionPolicy, this.documentsToUpload, this.documentsToDelete, this.onSaveCompleteCallBack)
},
onSaveCompleteCallBack() {
this.initializeData()
this.resetDocuments()
this.editMode = false
this.showUploadDocumentsAlert = false
this.loadingInclusionPolicy = false
},
toggleEditMode() {
this.editMode = !this.editMode
this.showUploadDocumentsAlert = false
if (!this.editMode) {
this.initializeData()
this.resetDocuments()
Expand Down
29 changes: 15 additions & 14 deletions frontend/src/views/account-mgmt/ManageOrganizationView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -200,25 +200,26 @@ export default {
}
},
async saveOrganization(updatedOrganization) {
async saveInclusionPolicyData(hasInclusionPolicy, documentsToUpload, documentsToDelete, onSaveCompleteCallBack) {
try {
delete updatedOrganization.goodStandingStatus
await OrganizationService.updateOrganization(this.organization.organizationId, updatedOrganization)
this.organization = updatedOrganization
await this.processDocuments(documentsToUpload, documentsToDelete)
await this.getInclusionPolicyDocuments()
// hasInclusionPolicy should always be false if there is no uploaded document in CRM
const updatedHasInclusionPolicy = this.uploadedDocuments?.length > 0 ? hasInclusionPolicy : false
if (updatedHasInclusionPolicy !== this.organization.hasInclusionPolicy) {
const payload = {
hasInclusionPolicy: updatedHasInclusionPolicy,
}
await OrganizationService.updateOrganization(this.organization?.organizationId, payload)
this.organization.hasInclusionPolicy = updatedHasInclusionPolicy
}
onSaveCompleteCallBack()
this.setSuccessAlert('Inclusion Policy updated successfully')
} catch (error) {
this.setFailureAlert('Failed update Inclusion Policy on Organization: ' + this.organization.organizationId, error)
return
this.setFailureAlert('Failed update Inclusion Policy on Organization', error)
}
},
async saveInclusionPolicyData(updatedOrganization, documentsToUpload, documentsToDelete, onSaveCompleteCallBack) {
await this.saveOrganization(updatedOrganization)
await this.processDocuments(documentsToUpload, documentsToDelete)
await this.getInclusionPolicyDocuments()
onSaveCompleteCallBack()
this.setSuccessAlert('Inclusion Policy updated successfully')
},
async processDocuments(documentsToUpload, documentsToDelete) {
try {
if (!isEmpty(documentsToUpload)) {
Expand Down

0 comments on commit 6b0bbc8

Please sign in to comment.