Source: lib/organization.js

'use strict';

var debug = require('debug')('schemas:organization');

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var extend = require('mongoose-schema-extend');
var parentModel = require('./profile');

/**
 * Organization
 * @description http://ruschema.org/Organization
 * @name Organization
 * @version  0.0.1
 * @constructor
 *
 * @see http://ruschema.org/Organization
 * @see http://devsmash.com/blog/password-authentication-with-mongoose-and-bcrypt
 * @see http://devsmash.com/blog/implementing-max-login-attempts-with-mongoose
 *
 */
var Model = function () {

  /**
   * Получение базовой коллекции
   * @type {Mongoose.Schema}
   */
  var Parent = mongoose.model('Profile').schema;

  /**
   * Расширение схемы Parent
   * @type {Mongoose.Schema}
   * @private
   */
  var _Schema = Parent.extend(
    {
      /** @lends Organization.prototype */

      /**
       *  Физический адрес
       */
      address: {},

      /**
       *  Общая оценка, основанная на наборе рейтингов,
       *  отзывов и оценок.
       */
      aggregateRating: {},

      /**
       *  Марка (бренд) продукта.
       *
       */
      brand: {},

      /**
       *  Контактная информация человека.
       */
      contactPoint: {},

      /**
       *  онтактная информация человека или организации.
       *  (В единственном числе contactPoint).
       */
      contactPoints: [],

      /**
       *  E-mail адрес.
       */
      email: {},

      /**
       *  Человек работающий в организации.
       */
      employee: {},

      /**
       * Люди работающиие в организации.
       * (В единственном числе employee).
       */
      employees: [],

      /**
       *  Мероприятия, проводящиеся в этом месте
       *  или этой организацией.
       */
      event: {},

      /**
       * Мероприятия, проводящиеся
       * в этом месте или этой организацией.
       * (В единственном числе event).
       */
      events: [],

      /**
       *  Номер факса
       */
      faxNumber: {},

      /**
       * Основатель организации.
       */
      founder: {},

      /**
       *  Основатели организации.
       *  (В единственном числе founder).
       */
      founders: [],

      /**
       *   Дата основания организации.
       */
      foundingDate: Date,

      /**
       *  Description
       */
      hasPOS: {},

      /**
       *  Количество специфических взаимодействий пользователя
       *  с описываемой записью — например, 20 UserLikes,
       *  5 UserComments или 300 UserDownloads.
       *  Тип взаимодействия должен быть
       *  одним из подтипов UserInteraction.
       */
      interactionCount: {},

      /**
       *  Оффициальное имя организации,
       *  например зарегистрированое ее имя
       */
      legalName: {},

      /**
       *  Местоположение события или организации.
       *  Если организация (или филиал) располагаются в торговом центре,
       *  то его название необходимо указывать в этом поле.
       */
      location: {},

      /**
       *  URL картинки, являющейся логотипом.
       */
      logo: {},

      /**
       *   Указатель на продукты или услуги,
       *   предложенные организацией или частным лицом.
       */
      makesOffer: {},

      /**
       *  Член этой организации.
       */
      member: {},

      /**
       * Члены этой организации. (В единственном числе member).
       */
      members: [],

      /**
       * Продукты, принадлежашие организации или человеку.
       */
      owns: [],

      /**
       *  Отзыв о записи.
       */
      rewiew: [],

      /**
       *  Отзывы, обзоры.(в единственном числе review)
       */
      rewiews: [],

      /**
       *  Указатель продуктов или услуг, необходимые организации или человеку (спрос)
       */
      seeks: {},

      /**
       *  Номер телефона.
       */
      telephone: {},

      /**
       *  ИНН(идентификационный номер налогоплательщика)
       *  организации или физического лица.
       */
      vatID: {}
    }
  );

  return mongoose.model('Organization', _Schema);

};

module.exports = new Model();