@studyportals/sp-hs-misc
Version:
Miscellaneous code used in HouseStark's projects
183 lines (178 loc) • 8.28 kB
JavaScript
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
/**
* Creates new instances of models using data provided
* by the Service Layer.
*/
//# sourceMappingURL=service-layer-data-models-factory.class.js.map
var ServiceLayerDataModelsFactory = function () {
function ServiceLayerDataModelsFactory() {
_classCallCheck(this, ServiceLayerDataModelsFactory);
}
_createClass(ServiceLayerDataModelsFactory, [{
key: "createStudy",
value: function createStudy(serviceLayerData) {
var id = this.extractEntityId(serviceLayerData);
var title = this.extractEntityTitle(serviceLayerData);
var isPremium = this.extractEntityPremiumness(serviceLayerData);
var organisationId = this.extractGoverningOrganisationId(serviceLayerData);
var degree = this.extractStudyDegree(serviceLayerData);
var level = this.translateStudyLevel(serviceLayerData["level"]);
return new StudyDto(id, title, isPremium, organisationId, level, degree);
}
}, {
key: "createVenue",
value: function createVenue(serviceLayerData) {
var id = this.extractEntityId(serviceLayerData);
var title = this.extractEntityTitle(serviceLayerData);
var isPremium = this.extractEntityPremiumness(serviceLayerData);
var organisationId = this.extractGoverningOrganisationId(serviceLayerData);
return new VenueDto(id, title, isPremium, organisationId);
}
}, {
key: "createOrganisation",
value: function createOrganisation(serviceLayerData) {
var id = this.extractEntityId(serviceLayerData);
var title = this.extractEntityTitle(serviceLayerData);
var isPremium = this.extractEntityPremiumness(serviceLayerData);
var organisationId = this.extractParentOrganisationId(serviceLayerData);
return new OrganisationDto(id, title, isPremium, organisationId);
}
}, {
key: "createCountry",
value: function createCountry(serviceLayerData) {
var id = this.extractEntityId(serviceLayerData);
var title = this.extractEntityTitle(serviceLayerData);
var alphaTwoIsoCode = serviceLayerData["iso_code"] || "";
return new CountryDto(id, title, alphaTwoIsoCode);
}
}, {
key: "createCampaign",
value: function createCampaign(serviceLayerData) {
var id = this.extractEntityId(serviceLayerData);
var title = this.extractEntityTitle(serviceLayerData);
var startDate = this.extractDateFromProperty(serviceLayerData, "start_date") || new Date(0);
var endDate = this.extractDateFromProperty(serviceLayerData, "end_date");
var budget = +serviceLayerData["budget_total"] / 100;
var currency = this.translateCurrency(serviceLayerData["currency"]);
var type = this.translateCampaignType(serviceLayerData["type"]);
var externalNotes = serviceLayerData["external_notes"];
return new CampaignDto(id, title, startDate, endDate, currency, budget, type, externalNotes);
}
}, {
key: "extractEntityId",
value: function extractEntityId(serviceLayerData) {
if (serviceLayerData["id"]) {
return serviceLayerData["id"];
}
throw new Error("The entity's ID has not been specified");
}
}, {
key: "extractEntityTitle",
value: function extractEntityTitle(serviceLayerData) {
return serviceLayerData["title"] || serviceLayerData["name"] || "";
}
}, {
key: "extractEntityPremiumness",
value: function extractEntityPremiumness(serviceLayerData) {
var premiumsArray = serviceLayerData["premiums"];
if (premiumsArray && premiumsArray.includes("display_premium")) {
return true;
}
return false;
}
}, {
key: "extractGoverningOrganisationId",
value: function extractGoverningOrganisationId(serviceLayerData) {
return this.extractLastKeyFromMapOrDefaultToNull(serviceLayerData["organisations_lineage"]);
}
}, {
key: "extractParentOrganisationId",
value: function extractParentOrganisationId(serviceLayerData) {
return this.extractLastKeyFromMapOrDefaultToNull(serviceLayerData["lineage"]);
}
}, {
key: "extractLastKeyFromMapOrDefaultToNull",
value: function extractLastKeyFromMapOrDefaultToNull(map) {
if (map && 0 !== map.length) {
var organisationLineageIds = map[map.length - 1];
var organisationId = Object.keys(organisationLineageIds)[0];
return organisationId;
}
return null;
}
}, {
key: "extractDateFromProperty",
value: function extractDateFromProperty(data, propertyIdentifier) {
var dateInMilliseconds = data[propertyIdentifier];
if (!dateInMilliseconds || dateInMilliseconds === "") {
return undefined;
}
return new Date(+dateInMilliseconds * 1000);
}
}, {
key: "extractStudyDegree",
value: function extractStudyDegree(data) {
var degreeSpecified = data["degree"] && data["degree"].length > 0;
return degreeSpecified ? data["degree_formatted"] : data["degree_type"].trim() || data["degree_formatted"];
}
}, {
key: "translateCurrency",
value: function 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;
}
}
}, {
key: "translateCampaignType",
value: function translateCampaignType(campaignType) {
switch (campaignType) {
case 'rbp':
return CampaignType.RBP;
case 'nrbp':
return CampaignType.NRBP;
case 'advanced_nrbp':
return CampaignType.ADVANCED_NRBP;
case 'rbp_cpl':
return CampaignType.RBP_CPL;
case 'hybrid_ebp':
return CampaignType.HYBRID_EBP;
case 'full_ebp':
return CampaignType.FULL_EBP;
case 'free_trial':
return CampaignType.FREE_TRIAL;
}
return CampaignType.UNKNOWN;
}
}, {
key: "translateStudyLevel",
value: function 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;
}
}
}]);
return ServiceLayerDataModelsFactory;
}();