UNPKG

@studyportals/sp-hs-misc

Version:

Miscellaneous code used in HouseStark's projects

139 lines 5.87 kB
import { StudyDto, VenueDto, OrganisationDto, CountryDto, CampaignDto, Currency, CampaignType, StudyLevel } from '@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 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 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 OrganisationDto(id, title, isPremium, organisationId); } createCountry(serviceLayerData) { const id = this.extractEntityId(serviceLayerData); const title = this.extractEntityTitle(serviceLayerData); const alphaTwoIsoCode = serviceLayerData["iso_code"] || ""; return new 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"]); return new CampaignDto(id, title, startDate, endDate, currency, budget, type); } 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 Currency.EUR; case "GBP": return Currency.GBP; case "USD": return Currency.USD; case "AUD": return Currency.AUD; case "CAD": return Currency.CAD; default: return Currency.Unknown; } } translateCampaignType(campaignType) { switch (campaignType) { case 'rbp': return CampaignType.RBP; case 'nrbp': return CampaignType.NRBP; case 'hybrid_ebp': return CampaignType.HYBRID_EBP; case 'full_ebp': return CampaignType.FULL_EBP; case 'free_trial': return CampaignType.FREE_TRIAL; } return CampaignType.UNKNOWN; } translateStudyLevel(studyLevel) { switch (studyLevel) { case 'bachelor': return StudyLevel.BACHELOR; case 'master': return StudyLevel.MASTER; case 'phd': return StudyLevel.PHD; case 'short': return StudyLevel.SHORT; case 'preparation': return StudyLevel.PREPARATION; default: return StudyLevel.UNKNOWN; } } } export { ServiceLayerDataModelsFactory }; //# sourceMappingURL=service-layer-data-models-factory.class.js.map