kahuna/public/js/common/usageRightsUtils.js (62 lines of code) (raw):

// -using config lease definitions to create leases for image based on chosen rights category- export function createCategoryLeases(leaseDefs, image) { const leaseTypes = ["allow-use", "deny-use", "allow-syndication", "deny-syndication"]; const leases = []; leaseDefs.forEach((leaseDef) => { //-establish start date: TODAY | UPLOAD | TAKEN | TXDATE- const startDteType = leaseDef.startDate ?? "NONE"; let startDate = undefined; switch (startDteType) { case ("TODAY"): startDate = new Date(); break; case ("UPLOAD"): startDate = new Date(image.data.uploadTime); break; case ("TAKEN"): if (image.data.metadata.dateTaken) { startDate = new Date(image.data.metadata.dateTaken); } break; case ("TXDATE"): if (image.data.metadata.domainMetadata && image.data.metadata.domainMetadata.programmes && image.data.metadata.domainMetadata.programmes.originalTxDate) { startDate = new Date(image.data.metadata.domainMetadata.programmes.originalTxDate); } break; } // -check we have acceptable type and startDate- if (leaseTypes.includes(leaseDef.type ?? "") && startDate) { const lease = {}; lease["access"] = leaseDef.type; lease["createdAt"] = (new Date()).toISOString(); lease["leasedBy"] = "Usage_Rights_Category"; lease["startDate"] = startDate.toISOString(); lease["notes"] = leaseDef.notes ?? ""; if (leaseDef.duration) { let endDate = startDate; endDate.setFullYear(endDate.getFullYear() + leaseDef.duration); lease["endDate"] = endDate.toISOString(); } lease["mediaId"] = image.data.id; leases.push(lease); } }); return leases; } /* ****************************************************************************** Remove any leases from image that have same type as any rights-cat applied leases ********************************************************************************* */ export function removeCategoryLeases(categories, image, removeRights) { const mtchCats = categories.filter(cat => cat.value === removeRights); if (mtchCats.length === 0) { return []; } const removeCat = mtchCats[0]; if (removeCat.leases.length === 0) { return []; } const removeLeases = []; image.data.leases.data.leases.forEach(lease => { const mtches = removeCat.leases.filter(catLease => catLease.type === lease.access); if (mtches.length > 0) { removeLeases.push(lease); } }); return removeLeases; }