"use strict"; let paramStatus = { pending: 765220001, uploaded: 765220002, verified: 765220003 } let endPoint, fileSelect, fileUpload, fileUploadDiv, pnlErrors, pnlSuccess, hidFieldUploaded; var portal = portal || {}; portal.Upload = { load: async function () { if (!(DocumentTypes === undefined) && portalParams !== undefined) { $(".section-title").attr("style", "font-size:15px"); portal.Upload.clearPanel(); endPoint = portalParams.endPoint; fileSelect = document.getElementById("fileSelect"); fileUpload = $('#fileUpload'); pnlSuccess = $('#pnlSuccess'); pnlErrors = $('#pnlSuccess'); fileUploadDiv = $('#fileUploadDiv'); fileSelect.addEventListener("click", await portal.Upload.uploadFiles); await portal.Upload.tableCreation(); var nextButton = document.getElementById("NextButton"); nextButton.addEventListener("click", function () { sessionStorage.setItem('hidFieldUploaded_' + portal.Upload.getParameterByName('sessionid'), null); }); } }, tableCreation: async function () { if (portalParams !== undefined) { $('#intro').append(portalParams.intro); } let fieldTypes = await portal.Upload.callCommonApi("FileUploadStatus", $('#EntityFormView_EntityName').val(), $("#EntityFormView_EntityID").val()); for (let i = 0; i < DocumentTypes.length; i++) { let status = fieldTypes.filter(x => x.fieldName == DocumentTypes[i].Field)[0].fieldValue; if (status != paramStatus.uploaded && status != paramStatus.verified) { if (DocumentTypes[i].Description != null && DocumentTypes[i].Description != "") { $('#myTable').append('' + DocumentTypes[i].Label + "
" + DocumentTypes[i].Description + '
Upload now'); } else { $('#myTable').append('' + DocumentTypes[i].Label + 'Upload now'); } if (status == paramStatus.pending || status == 0) { $('#NextButton').hide(); $("#Finished").prop("checked", false); } } else { $('#myTable').append('' + DocumentTypes[i].Label + 'Complete ☑'); if (status != paramStatus.pending || status != 0) { $('#NextButton').show(); $("#Finished").prop("checked", true); } } } }, showFileUpload: function (type, field, fieldType, fileTypes, allowMultiple) { $('#fileUploadDiv').show(); $('#hidDocumentType').val(type); $('#hidFieldToUpdate').val(field); $('#hidFieldToUpdateType').val(fieldType); if (fileTypes === undefined || fileTypes === "null") { fileTypes = ""; } $('#hidFileTypes').val(fileTypes); $('#fileUpload').attr("accept", fileTypes); if (allowMultiple.toLowerCase() == "true") { $('#fileUpload').attr("multiple", "multiple"); } else { $('#fileUpload').removeAttr("multiple"); } }, uploadFiles: async function () { portal.Upload.clearPanel(); var files = document.querySelector('[type=file]').files; if (files.length === 0) { $('#pnlErrors').show(); $('#pnlErrors').append("Please select the type of document you wish to upload."); return; } var url = endPoint; url = url.replace("{type}", $('#hidDocumentType').val()); url = url.replace("{id}", $("#EntityFormView_EntityID").val()); // Even though the parameter name given as Customer id, it has to be Entity id we've to pass url = url.replace("{entity}", $('#EntityFormView_EntityName').val()); // const formData = new FormData(); let isError = false; hidFieldUploaded = (sessionStorage.getItem('hidFieldUploaded_' + portal.Upload.getParameterByName('sessionid')) != null) ? sessionStorage.getItem('hidFieldUploaded_' + portal.Upload.getParameterByName('sessionid')) : ''; let hidFieldTypes = $('#hidFileTypes').val(); for (let i = 0; i < files.length && !isError; i++) { let file = files[i]; if (hidFieldUploaded.contains(file.name)) { isError = true; $('#pnlErrors').show(); $('#pnlErrors').append("You have already uploaded the file named " + file.name + "."); $("#fileUpload").val(null); break; } else if (!hidFieldTypes.toUpperCase().contains(file.name.toUpperCase().split('.').pop())) { isError = true; $('#pnlErrors').show(); $('#pnlErrors').append("Your files were not the correct type, please try again."); $("#fileUpload").val(null); break; } else if (file.size / 1024 > portalParams.maxFileSize) { isError = true; $('#pnlErrors').show(); $('#pnlErrors').append(portalParams.maxFileErrorMessage); $("#fileUpload").val(null); break; } else { //formData.append('files[]', file); hidFieldUploaded = hidFieldUploaded + ";" + file.name; sessionStorage.setItem('hidFieldUploaded_' + portal.Upload.getParameterByName('sessionid'), hidFieldUploaded); } } if (isError) return; $('#loader').show(); for (let i = 0; i < files.length && !isError; i++) { let file = files[i]; const formData = new FormData(); formData.append('files[]', file); await portal.Upload.uploadPost(url, formData); } await portal.Upload.setPhotoUploadStatus(); $("#Finished").prop("checked", true); $('#fileUploadDiv').hide(); }, uploadPost: async function (url, formData) { await fetch(url, { method: 'POST', body: formData, keepalive: true }).then( response => response.json() ).catch( error => alert("There was a problem uploading your files, please try again.") ); }, callCommonApi: async function (apiName, logicalName, entityId) { var queryString = "&logicalName=" + logicalName + "&id=" + entityId + "&fieldArray=" + DocumentTypes.map(a => a.Field).join(','); var commonApiUrl = "/bcp-apis/?api="; return new Promise(function (resolve, reject) { webapi.safeAjax({ cache: false, type: "GET", url: commonApiUrl + apiName + queryString, contentType: "application/json", dataType: 'json', success: function (res, status, xhr) { resolve(res); } }); }); }, setPhotoUploadStatus: async function () { var pluralName = await PaPortal.Utilities.GetPluralName($('#EntityFormView_EntityName').val()); var url1= "/_api/" + pluralName; var url2 ="(" + $("#EntityFormView_EntityID").val() + ")/" ; var url3= $('#hidFieldToUpdate').val(); return new Promise(function (resolve, reject) { webapi.safeAjax({ type: "PUT", //url: "/_api/" + pluralName + "(" + $("#EntityFormView_EntityID").val() + ")?$select=" + $('#hidFieldToUpdate').val(), // url: "/_api/" + pluralName + "(" + $("#EntityFormView_EntityID").val() + ")/" + $('#hidFieldToUpdate').val(), url:url1 + url2 + url3, contentType: "application/json", data: JSON.stringify({ "value": paramStatus.uploaded }), success: function (res) { $('#fileUploadDiv').hide(); $('#pnlSuccess').show(); $('#pnlSuccess').append('The file upload was successful.'); $('#myTable tr').remove(); $('#intro').empty(); portal.Upload.tableCreation(); $('#loader').hide(); $("#fileUpload").val(null); }, error:function (res) { $('#fileUploadDiv').hide(); $('#loader').hide(); alert("The following error has occurred while completing the process : " + res.responseJSON.error.message); } }); }) }, clearPanel: function () { $('#pnlErrors').hide(); $('#pnlSuccess').hide(); $('#pnlErrors').empty(); $('#pnlSuccess').empty(); }, getParameterByName: function (name, url = window.location.href) { name = name.replace(/[\[\]]/g, '\\$&'); var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, ' ')); }, }