src/helpers/import/BulkImport.js
import BulkImportModel from '../../models/import/BulkImport';
import { serviceFactory } from '../../utilities/factories/ServiceFactory';
import Helper from '../Helper';
import { aggregate } from '../../utilities/ClassUtility';
/**
* Helper class representing an bulkImport.
*
* @extends {BulkImportModel}
* @extends {Helper}
*
* @example
* import { BulkImport } from 'clinical6';
*
* const bulkImport = new BulkImport({
* data: {
* type: 'import_wizard__bulk_imports',
* attributes: {
* platform_model: 'Trials::Site',
* separator: '|'
* },
* relationships: {
* generic_file: {
* data: {
* id: 1,
* type: 'generic_files'
* }
* }
* }
* }
* });
*/
class BulkImport extends aggregate(BulkImportModel, Helper) {
/**
* Constructor for helper class representing an BulkImport
*
* @param {Object} json - json api response from server
*/
constructor(json = {}) {
super(json);
this.deserializeRelationshipStubs(json);
this.syncRelationships(json);
}
/** @type {String} - The type */
static get type() {
return 'import_wizard__bulk_imports';
}
/** @type {GenericFile} */
get genericFile() {
return this._relationships.generic_file;
}
/** @type {GenericFile} */
set genericFile(genericFile) {
/** @type {GenericFile} */
this._relationships.generic_file = genericFile;
}
/** @type {Status} */
get status() {
return this._relationships.status;
}
/** @type {Status} */
set status(status) {
/** @type {Status} */
this._relationships.status = status;
}
/**
* Saves a bulkImport (insert if id doesn't exist, update if it does)
* @return {Promise<BulkImport>} - Returns a promise via ajax call.
*
* @example
* import { BulkImport, clinical6 } from 'clinical6';
*
* const bulkImport = new BulkImport({
* platform_model: 'Trials::Site',
* separator: '|'
* });
* bulkImport.genericFile = new GenericFile({ id: 1 });
* bulkImport.save();
*/
save() {
const service = serviceFactory.get(this.type);
return (this.id) ? service.update(this) : service.insert(this);
}
}
export default BulkImport;