@studyportals/sp-hs-misc
Version:
Miscellaneous code used in HouseStark's projects
142 lines • 6.48 kB
JavaScript
"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"]);
return new sp_millennium_falcon_1.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 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 '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