UNPKG

@studyportals/sp-hs-misc

Version:

Miscellaneous code used in HouseStark's projects

147 lines 6.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServiceLayerDataModelsFactory = void 0; const sp_millennium_falcon_1 = require("@studyportals/sp-millennium-falcon"); /** * Creates new instances of models using data provided * by the Service Layer. */ class ServiceLayerDataModelsFactory { createStudy(serviceLayerData) { const id = this.extractEntityId(serviceLayerData); const title = this.extractEntityTitle(serviceLayerData); const isPremium = this.extractEntityPremiumness(serviceLayerData); const organisationId = this.extractGoverningOrganisationId(serviceLayerData); const degree = this.extractStudyDegree(serviceLayerData); const level = this.translateStudyLevel(serviceLayerData["level"]); return new sp_millennium_falcon_1.StudyDto(id, title, isPremium, organisationId, level, degree); } createVenue(serviceLayerData) { const id = this.extractEntityId(serviceLayerData); const title = this.extractEntityTitle(serviceLayerData); const isPremium = this.extractEntityPremiumness(serviceLayerData); const organisationId = this.extractGoverningOrganisationId(serviceLayerData); return new sp_millennium_falcon_1.VenueDto(id, title, isPremium, organisationId); } createOrganisation(serviceLayerData) { const id = this.extractEntityId(serviceLayerData); const title = this.extractEntityTitle(serviceLayerData); const isPremium = this.extractEntityPremiumness(serviceLayerData); const organisationId = this.extractParentOrganisationId(serviceLayerData); return new sp_millennium_falcon_1.OrganisationDto(id, title, isPremium, organisationId); } createCountry(serviceLayerData) { const id = this.extractEntityId(serviceLayerData); const title = this.extractEntityTitle(serviceLayerData); const alphaTwoIsoCode = serviceLayerData["iso_code"] || ""; return new sp_millennium_falcon_1.CountryDto(id, title, alphaTwoIsoCode); } createCampaign(serviceLayerData) { const id = this.extractEntityId(serviceLayerData); const title = this.extractEntityTitle(serviceLayerData); const startDate = this.extractDateFromProperty(serviceLayerData, "start_date") || new Date(0); const endDate = this.extractDateFromProperty(serviceLayerData, "end_date"); const budget = +serviceLayerData["budget_total"] / 100; const currency = this.translateCurrency(serviceLayerData["currency"]); const type = this.translateCampaignType(serviceLayerData["type"]); const externalNotes = serviceLayerData["external_notes"]; return new sp_millennium_falcon_1.CampaignDto(id, title, startDate, endDate, currency, budget, type, externalNotes); } extractEntityId(serviceLayerData) { if (serviceLayerData["id"]) { return serviceLayerData["id"]; } throw new Error("The entity's ID has not been specified"); } extractEntityTitle(serviceLayerData) { return serviceLayerData["title"] || serviceLayerData["name"] || ""; } extractEntityPremiumness(serviceLayerData) { const premiumsArray = serviceLayerData["premiums"]; if (premiumsArray && premiumsArray.includes("display_premium")) { return true; } return false; } extractGoverningOrganisationId(serviceLayerData) { return this.extractLastKeyFromMapOrDefaultToNull(serviceLayerData["organisations_lineage"]); } extractParentOrganisationId(serviceLayerData) { return this.extractLastKeyFromMapOrDefaultToNull(serviceLayerData["lineage"]); } extractLastKeyFromMapOrDefaultToNull(map) { if (map && 0 !== map.length) { const organisationLineageIds = map[map.length - 1]; const organisationId = Object.keys(organisationLineageIds)[0]; return organisationId; } return null; } extractDateFromProperty(data, propertyIdentifier) { const dateInMilliseconds = data[propertyIdentifier]; if (!dateInMilliseconds || dateInMilliseconds === "") { return undefined; } return new Date(+dateInMilliseconds * 1000); } extractStudyDegree(data) { const degreeSpecified = data["degree"] && data["degree"].length > 0; return degreeSpecified ? data["degree_formatted"] : data["degree_type"].trim() || data["degree_formatted"]; } translateCurrency(currencyAsString) { switch (currencyAsString) { case "EUR": return sp_millennium_falcon_1.Currency.EUR; case "GBP": return sp_millennium_falcon_1.Currency.GBP; case "USD": return sp_millennium_falcon_1.Currency.USD; case "AUD": return sp_millennium_falcon_1.Currency.AUD; case "CAD": return sp_millennium_falcon_1.Currency.CAD; default: return sp_millennium_falcon_1.Currency.Unknown; } } translateCampaignType(campaignType) { switch (campaignType) { case 'rbp': return sp_millennium_falcon_1.CampaignType.RBP; case 'nrbp': return sp_millennium_falcon_1.CampaignType.NRBP; case 'advanced_nrbp': return sp_millennium_falcon_1.CampaignType.ADVANCED_NRBP; case 'rbp_cpl': return sp_millennium_falcon_1.CampaignType.RBP_CPL; case 'hybrid_ebp': return sp_millennium_falcon_1.CampaignType.HYBRID_EBP; case 'full_ebp': return sp_millennium_falcon_1.CampaignType.FULL_EBP; case 'free_trial': return sp_millennium_falcon_1.CampaignType.FREE_TRIAL; } return sp_millennium_falcon_1.CampaignType.UNKNOWN; } translateStudyLevel(studyLevel) { switch (studyLevel) { case 'bachelor': return sp_millennium_falcon_1.StudyLevel.BACHELOR; case 'master': return sp_millennium_falcon_1.StudyLevel.MASTER; case 'phd': return sp_millennium_falcon_1.StudyLevel.PHD; case 'short': return sp_millennium_falcon_1.StudyLevel.SHORT; case 'preparation': return sp_millennium_falcon_1.StudyLevel.PREPARATION; default: return sp_millennium_falcon_1.StudyLevel.UNKNOWN; } } } exports.ServiceLayerDataModelsFactory = ServiceLayerDataModelsFactory; //# sourceMappingURL=service-layer-data-models-factory.class.js.map