diff --git a/src/pages/BandiPreInstructor/components/AllBandiPreInstructorTableAsync/index.js b/src/pages/BandiPreInstructor/components/AllBandiPreInstructorTableAsync/index.js index 67b90f1..823f916 100644 --- a/src/pages/BandiPreInstructor/components/AllBandiPreInstructorTableAsync/index.js +++ b/src/pages/BandiPreInstructor/components/AllBandiPreInstructorTableAsync/index.js @@ -6,6 +6,7 @@ import translationStrings from '../../../../translationStringsForComponents'; // api import BandoService from '../../../../service/bando-service'; +import ApplicationService from '../../../../service/application-service'; // tools import getTimeParsedFromString from '../../../../helpers/getTimeParsedFromString'; @@ -23,6 +24,8 @@ import ProperBandoLabel from '../../../../components/ProperBandoLabel'; import { Dropdown } from 'primereact/dropdown'; import { Tag } from 'primereact/tag'; import { Calendar } from 'primereact/calendar'; +import { storeSet } from '../../../../store'; + const AllBandiPreInstructorTableAsync = () => { const [localAsyncRequest, setLocalAsyncRequest] = useState(false); @@ -86,10 +89,37 @@ const AllBandiPreInstructorTableAsync = () => { }; const actionsBodyTemplate = (rowData) => { - return - - - + return ( + + + + + handleDownloadRanking(rowData.id)}/> + + ) + } + + const downloadSuccessCallback = (resp, callId) => { + const file = new Blob([resp], { type: 'text/csv' }); + const url = window.URL.createObjectURL(file); + const link = document.createElement('a'); + link.href = url; + link.setAttribute('download', `call-${callId}-applications-report.csv`); + document.body.appendChild(link); + link.click(); + link.remove(); + setLocalAsyncRequest(false); + } + + const downloadErrorCallback = (resp) => { + setLocalAsyncRequest(false); + } + + const handleDownloadRanking = (callId)=>{ + setLocalAsyncRequest(true); + ApplicationService.downloadRanking(callId, + (resp)=>downloadSuccessCallback(resp,callId), + downloadErrorCallback) } const statusBodyTemplate = (rowData) => { diff --git a/src/service/application-service.js b/src/service/application-service.js index aeb016d..a6e1ea2 100644 --- a/src/service/application-service.js +++ b/src/service/application-service.js @@ -67,4 +67,8 @@ export default class ApplicationService { static reAdmitApplication = (id, callback, errCallback) => { NetworkService.put(`${API_BASE_URL}/application/${id}/readmit`, {}, callback, errCallback); }; + + static downloadRanking = (callId, callback, errCallback)=> { + NetworkService.getBlob(`${API_BASE_URL}/application/call/${callId}/ranking-csv`, callback, errCallback); + } }