Manual Reference Source Test

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;