var mongoose = require('mongoose');
var Usuario = require('./Usuario');

module.exports = function() {

  // define uma modelagem de dados para cada projeto
  var projetoSchema = mongoose.Schema({
    
    _criador : {
      type : mongoose.Schema.Types.ObjectId,
      ref : 'Usuario'
    },
    time : [{
      _id : false,
      data_inclusao : {
        type : Date,
        default : Date.now
      },
      participante : {
        type : mongoose.Schema.Types.ObjectId,
        ref : 'Usuario'
      }
    }],
    // titulo do projeto
    titulo : {
      type: String,
      required: true
    },
    // descrição do projeto
    descricao : {
      type: String
    },
    // que tipo de requisitos que um participante do projeto precisa ter
    requisitos : {
      habilidadesEmFoco : [],
      tipoDeProfissional : String
    },
    // numero de participantes do projeto, o desejado e o que está atualmente
    numeroDeParticipantes : {
      desejado: Number,
      atual: {
        type: Number,
        default: 0
      }
    },
    dataCriacao : {
      type : Date,
      default : Date.now
    },
    // última modificação feita no projeto
    ultimaModificacao : {
      type : Date,
      default : Date.now
    }

  });

  projetoSchema.pre('save', function(next) {
    let habilidades = this.requisitos.habilidadesEmFoco[0];
    var regX = /#\w+/gi;
    this.requisitos.habilidadesEmFoco = habilidades.match(regX);
    next();
  });

  // retorna um modelo de dados com o nome Projetos
  return mongoose.model('Projetos', projetoSchema);

}
