@publidata/utils-data-manager
Version:
Collection of methods to extract data from publidata
93 lines (90 loc) • 3.94 kB
JavaScript
const { getModel } = require("@publidata/utils-mapper");
const constant = require("./assets/constant");
const PublidataObject = require("./PublidataObject");
const PublidataObjectService = require("./PublidataObject/Service");
const PublidataObjectFacility = require("./PublidataObject/Facility");
const PublidataObjectFacilityCovid = require("./PublidataObject/Facility/Covid");
const PublidataObjectRisk = require("./PublidataObject/Risk");
const PublidataObjectCity = require("./PublidataObject/City");
const PublidataObjectSector = require("./PublidataObject/Sector");
const PublidataObjectServiceWasteCollection = require("./PublidataObject/Service/WasteCollection");
const PublidataObjectServiceCanteenMenu = require("./PublidataObject/Service/CanteenMenu");
const PublidataObjectMeal = require("./PublidataObject/Meal");
const PublidataObjectDocument = require("./PublidataObject/Document");
const PublidataObjectPost = require("./PublidataObject/Post");
const PublidataObjectNews = require("./PublidataObject/Post/News");
const PublidataObjectSlot = require("./PublidataObject/Slot");
const PublidataObjectItem = require("./PublidataObject/Item");
const PublidataObjectElected = require("./PublidataObject/Elected");
const PublidataObjectAccount = require("./PublidataObject/Account");
const PublidataObjectAlert = require("./PublidataObject/Alert");
const instanciatePublidataObject = (object, instance, dataManager) => {
const {
OBJECT_TYPE_MEAL,
OBJECT_TYPE_SERVICE,
OBJECT_TYPE_FACILITY,
OBJECT_TYPE_RISK,
OBJECT_TYPE_NODE,
OBJECT_MODEL_WASTE,
OBJECT_MODEL_MENU,
OBJECT_TYPE_DOCUMENT,
OBJECT_TYPE_POST,
OBJECT_TYPE_CITY,
OBJECT_TYPE_ELECTED,
OBJECT_TYPE_SECTOR,
OBJECT_TYPE_SLOT,
OBJECT_TYPE_ITEM,
OBJECT_TYPE_ACCOUNT,
OBJECT_TYPE_ALERT
} = constant;
if (!object) return object;
const type = object._type;
const model = getModel(object, false, false);
if (object.isPublidataObject) return object;
const params = [object, instance, dataManager];
if (type === OBJECT_TYPE_SERVICE) {
if (model === OBJECT_MODEL_WASTE) {
return new PublidataObjectServiceWasteCollection(...params);
} else if (model === OBJECT_MODEL_MENU) {
return new PublidataObjectServiceCanteenMenu(...params);
}
return new PublidataObjectService(...params);
} else if (type === OBJECT_TYPE_FACILITY || type === OBJECT_TYPE_NODE) {
const publidataObjectFacility = new PublidataObjectFacility(...params);
if (publidataObjectFacility.covidFaceMask)
return new PublidataObjectFacilityCovid(...params);
return publidataObjectFacility;
} else if (type === OBJECT_TYPE_MEAL) {
return new PublidataObjectMeal(...params);
} else if (type === OBJECT_TYPE_DOCUMENT) {
return new PublidataObjectDocument(...params);
} else if (type === OBJECT_TYPE_RISK) {
return new PublidataObjectRisk(...params);
} else if (type === OBJECT_TYPE_CITY) {
return new PublidataObjectCity(...params);
} else if (type === OBJECT_TYPE_SECTOR) {
return new PublidataObjectSector(...params);
} else if (type === OBJECT_TYPE_POST) {
return new PublidataObjectPost(...params);
} else if (type === OBJECT_TYPE_SLOT) {
return new PublidataObjectSlot(...params);
} else if (type === OBJECT_TYPE_ITEM) {
return new PublidataObjectItem(...params);
} else if (type === "news") {
return new PublidataObjectNews(...params);
} else if (type === OBJECT_TYPE_ELECTED) {
return new PublidataObjectElected(...params);
} else if (type === OBJECT_TYPE_ACCOUNT) {
return new PublidataObjectAccount(...params);
} else if (type === OBJECT_TYPE_ALERT) {
return new PublidataObjectAlert(...params);
}
return new PublidataObject(...params);
};
module.exports = {
instanciatePublidataObject,
PublidataObject,
PublidataObjectService,
PublidataObjectFacility,
PublidataObjectServiceWasteCollection
};