function condition(condition) { return new Function('value', 'data', 'return ' + condition); } function required(value, data) { return !!value; } function oneRequired(fields) { return function (value, data) { for (let i in fields) { let field = fields[i]; if (!!parseInt(data[field])) { return true; } } return false; }; } function is_integer(value, data) { return /^[0-9]+$/.test(value); } function is_float(value, data) { return /^\d*\.?\d*$/.test(value); } function toggleRequired(value, data) { console.log('toggleRequired', value, data, value === 0 || value === 1); return value === 0 || value === 1; } function postcodecheck(postcode, number, straat, plaats) { return function(value, data) { return new Promise((resolve, reject) => { if (!postcode && !number) { resolve(true); return; } const url = 'https://e.centraalbeheer.nl/3/4/1551/14/ywGHtAzFX00yJRGBp6hr6emLo-4s0k_kB4_PidVm_o0xDxD3Sx6T7P4DjucxhSAJ?huisnummer='+number+'&postcode='+postcode; try { axios.get(url).then((response) => { // handle success if (response.data && response.data.plaats && response.data.straat) { data[straat] = response.data.straat; data[plaats] = response.data.plaats; resolve(true); } resolve(false); }, (reason) => { resolve(false); }); } catch (e) { return false; } }); }; } function kentekencheck(kenteken, merk, handelsnaam) { return function(value, data) { return new Promise((resolve, reject) => { if (!kenteken) { resolve(true); return; } const url = 'https://e.centraalbeheer.nl/3/4/1551/14/ywGHtAzFX00yJRGBp6hr6emLo-4s0k_kB4_PidVm_o2VSlsQMCJ_CPOnflU8FTLc?kenteken='+kenteken.replace(/[^a-z0-9A-Z]/g, '').toUpperCase(); try { axios.get(url).then((response) => { // handle success if (response.data && response.data[0] && response.data[0].merk && response.data[0].handelsbenaming) { data[merk] = response.data[0].merk; data[handelsnaam] = response.data[0].handelsbenaming; resolve(true); } resolve(false); }, (reason) => { resolve(false); }); } catch (e) { return false; } }); }; } function kvkcheck(kvknummer, bedrijfsnaam) { return function(value, data) { return new Promise((resolve, reject) => { if (!kvknummer) { resolve(true); return; } const url = 'https://e.centraalbeheer.nl/3/4/1551/14/ywGHtAzFX00yJRGBp6hr6emLo-4s0k_kB4_PidVm_o1wHaJzvmcKzNvi0thdOTL0?kvk='+kvknummer; try { axios.get(url).then((response) => { // handle success if (response.data && response.data.data && response.data.data.items && response.data.data.items[0] && response.data.data.items[0].tradeNames.businessName) { data[bedrijfsnaam] = response.data.data.items[0].tradeNames.businessName; resolve(true); } resolve(false); }, (reason) => { resolve(false); }); } catch (e) { return false; } }); }; } function email(email) { const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return !email || re.test(String(email).toLowerCase()); } function url(url) { const re = /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$/; return !url || re.test(String(url).toLowerCase()); } function phone(phone) { var vast_nummer = /^(((0)[1-9]{2}[0-9][-]?[1-9][0-9]{5})|((\\+31|0|0031)[1-9][0-9][-]?[1-9][0-9]{6}))$/; var mobiel_nummer = /^(((\\+31|0|0031)6){1}[1-9]{1}[0-9]{7})$/i; return !phone || (vast_nummer.test(phone) || mobiel_nummer.test(phone)); } function relatienummer(relatienummer) { const re = /^[0-9]{6,9}$/; return !relatienummer || re.test(String(relatienummer).toLowerCase()); } /* * Returns 1 if the IBAN is valid * Returns FALSE if the IBAN's length is not as should be (for CY the IBAN Should be 28 chars long starting with CY ) * Returns any other number (checksum) when the IBAN is invalid (check digits do not match) */ function iban(input) { if (!input) return true; var CODE_LENGTHS = { AD: 24, AE: 23, AT: 20, AZ: 28, BA: 20, BE: 16, BG: 22, BH: 22, BR: 29, CH: 21, CR: 21, CY: 28, CZ: 24, DE: 22, DK: 18, DO: 28, EE: 20, ES: 24, FI: 18, FO: 18, FR: 27, GB: 22, GI: 23, GL: 18, GR: 27, GT: 28, HR: 21, HU: 28, IE: 22, IL: 23, IS: 26, IT: 27, JO: 30, KW: 30, KZ: 20, LB: 28, LI: 21, LT: 20, LU: 20, LV: 21, MC: 27, MD: 24, ME: 22, MK: 19, MR: 27, MT: 31, MU: 30, NL: 18, NO: 15, PK: 24, PL: 28, PS: 29, PT: 25, QA: 29, RO: 24, RS: 22, SA: 24, SE: 24, SI: 19, SK: 24, SM: 27, TN: 24, TR: 26, AL: 28, BY: 28, CR: 22, EG: 29, GE: 22, IQ: 23, LC: 32, SC: 31, ST: 25, SV: 28, TL: 23, UA: 29, VA: 22, VG: 24, XK: 20 }; var iban = String(input).toUpperCase().replace(/[^A-Z0-9]/g, ''), // keep only alphanumeric characters code = iban.match(/^([A-Z]{2})(\d{2})([A-Z\d]+)$/), // match and capture (1) the country code, (2) the check digits, and (3) the rest digits; // check syntax and length if (!code || iban.length !== CODE_LENGTHS[code[1]]) { return false; } // rearrange country code and check digits, and convert chars to ints digits = (code[3] + code[1] + code[2]).replace(/[A-Z]/g, function (letter) { return letter.charCodeAt(0) - 55; }); // final check return mod97(digits); } function mod97(string) { var checksum = string.slice(0, 2), fragment; for (var offset = 2; offset < string.length; offset += 7) { fragment = String(checksum) + string.substring(offset, offset + 7); checksum = parseInt(fragment, 10) % 97; } return checksum; } // window.methods.fileRequired = function(fileList) { // console.log('fileRequired', fileList); // return fileList && fileList.length > 0; // }; // // window.methods.fileSize = function(maxFileSize) { // return function(fileList) { // console.log('fileSize', maxFileSize, fileList); // if (fileList && fileList.length > 0) { // let valid = true; // for (let i = 0; i < fileList.length; i++) { // valid = valid && fileList[i].size <= (maxFileSize * 1024 * 1024); // } // return valid; // } // return true; // }; // }; // // window.methods.fileType = function(allowedFileType) { // return function(fileList) { // console.log('fileType', allowedFileType, fileList); // if (fileList && fileList.length > 0) { // let valid = true; // let regex = new RegExp('^'+allowedFileType.replace(/\*/g, '.*')+'$', 'i'); // for (let i = 0; i < fileList.length; i++) { // valid = valid && regex.test(fileList[i].type); // } // return valid; // } // return true; // }; // };