This commit is contained in:
arnaucode
2017-02-03 08:56:51 +01:00
parent c4b7414770
commit 112745d6fa
1585 changed files with 450241 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
var mongoose = require('mongoose');
var mongooseUniqueValidator = require('mongoose-unique-validator');
var Schema = mongoose.Schema;
var contactSchema = new Schema({
name: {type: String, required: true,},
subject: {type: String, required: true, select: false},
email: {type: String, required: true, unique: true},
description: {type: String}
});
contactSchema.plugin(mongooseUniqueValidator);
module.exports = mongoose.model('contactModel', contactSchema);

View File

@@ -0,0 +1,27 @@
var mongoose = require('mongoose');
var mongooseUniqueValidator = require('mongoose-unique-validator');
var Schema = mongoose.Schema;
var conversationSchema = new Schema({
userA: {
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
},
userB: {
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
},
messages: [{
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
},
content: {type: String},
date: {type: Date}
}],
modifiedDate: {type: Date}
});
conversationSchema.plugin(mongooseUniqueValidator);
module.exports = mongoose.model('conversationModel', conversationSchema);

View File

@@ -0,0 +1,46 @@
var mongoose = require('mongoose');
var mongooseUniqueValidator = require('mongoose-unique-validator');
var Schema = mongoose.Schema;
var dietSchema = new Schema({
title: {type: String},
description: {type: String},
startingDay: {type: Date},
price: { type: Number },
image: { type: String },
clients: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
}],
chef: {
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
},
days: [{
date: {type: Date}, //Ha de ser realmente un día que empiezas por ejemplo 12/12/2016 para poder ir completando según la fecha, comer comes cada día
title: {type: String},
description: {type: String},
meals: [{
title: {type: String},
img: {type: String},
submeals: [{
title: {type: String},
description: {type: String},
amount: {
unit: {type: String},
quantity: {type: Number}
},
nutritional: {
kcal: {type: Number},
proteins: {type: Number},
carbohidrates: {type: Number},
fats: {type: Number},
vitamins: {type: Number}
}
}]
}],
done: {type: Boolean, default: false}
}]
});
dietSchema.plugin(mongooseUniqueValidator);
module.exports = mongoose.model('dietModel', dietSchema);

View File

@@ -0,0 +1,22 @@
var mongoose = require('mongoose');
var mongooseUniqueValidator = require('mongoose-unique-validator');
var Schema = mongoose.Schema;
var publicationSchema = new Schema({
title: {type: String, required: true},
content: {type: String, required: true},
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
},
photo: {type: String},//link a la imatge, en plan, l'user corrent pel carrer tot feliç
date: {type: Date},
likes: [{
type:mongoose.Schema.Types.ObjectId,
ref: 'userModel'
}]
});
publicationSchema.plugin(mongooseUniqueValidator);
module.exports = mongoose.model('publicationModel', publicationSchema);

View File

@@ -0,0 +1,37 @@
var mongoose = require('mongoose');
var mongooseUniqueValidator = require('mongoose-unique-validator');
var Schema = mongoose.Schema;
var routineSchema = new Schema({
title: {type: String},
description: {type: String},
startingDay: {type: Date},
discipline: {type: String},
price: { type: Number },//si és gratis, es posa q val 0, així els users ho veuen amb bons ulls
image: { type: String },
client: {
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
},
trainer: {
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
},
days: [{
title: {type: String},
description: {type: String},
exercises: [{
title: {type: String},
description: {type: String},
img: {type: String},
weight: {type: String},
distance: {type: String},
reps: {type: String},
series: {type: String}
}],
done: {type: String, default: false}//si ha complert el dia
}]
})
;
routineSchema.plugin(mongooseUniqueValidator);
module.exports = mongoose.model('routineModel', routineSchema);

25
server/models/runModel.js Normal file
View File

@@ -0,0 +1,25 @@
var mongoose = require('mongoose');
var mongooseUniqueValidator = require('mongoose-unique-validator');
var Schema = mongoose.Schema;
var runSchema = new Schema({
title: {type: String},
photo: {type: String},
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
},
datestart: {type: Date},
datefinish: {type: Date},
distance: {type: Number},
positions: [{
date: {type: Date},
lat: {type: Number},
long: {type: Number},
distance: {type: Number}
}]
});
runSchema.plugin(mongooseUniqueValidator);
module.exports = mongoose.model('runModel', runSchema);

140
server/models/userModel.js Normal file
View File

@@ -0,0 +1,140 @@
var mongoose = require('mongoose');
var mongooseUniqueValidator = require('mongoose-unique-validator');
var Schema = mongoose.Schema;
var userSchema = new Schema({
name: {type: String, required: true, unique: true},
role: {type: String, required: true},
password: {type: String, select: false},
tokens: [{
userAgent: {type: String},
token: {type: String},
os: {type: String},
browser: {type: String},
device: {type: String},
os_version: {type: String},
browser_version: {type: String},
ip: {type: String},
lastLogin: {type: Date},
birthdate: {type: Date},
}],
testimonial: {type :String},//Para la landing page, sera como una review del sitio
email: {type: String, required: true, unique: true},
description: {type: String},
direction: {type: String},
city: {type: String},
avatar: {type: String},
background: {type: String},
attributes: {
height: {type: Number},
weight: {type: Number},
gender: {type: String},//Home, Dona, Altres -->com a mínim aquestes 3 opcions, més endavant tenim el debat de com s'enfoca
age: {type: Number}
},
publications: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'publicationModel'
}],
runs: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'runModel'
}],
totalkm: {type: Number},
conversations: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'conversationModel'
}],
diets: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'dietModel'
}],
trainers: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
}],
routines: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'routineModel'
}],// trainermodel
disciplines : [{
name: {type: String}
}],
specialties : [{
name: {type: String}
}],
clients: [{
client: {
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
},
petitionMessage: {type: String},
date: {type: Date}
}],
clientsPetitions: [{
clientid: {
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
},
message: {type: String},
state: {type: String}//pendent, accepted, declined
}],
valoration: {type:String}, //La media de todas las valoraciones
valorations: [{
clientid: {
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
},
date: {type: Date},
message: {type: String},//missatge de valoració
value: {type: Number}//per exemple sistema d'estrelles sobre 5
}],//end of trainermodel
points: {
total: {type: Number},
history: [{
concept: {type: String},
date: {type: Date},
value: {type: Number}
}]
},
marks: [{
title: {type: String},
unit: {type: String},//si són kg, km
best: {
date: {type: Date},
value: {type: String}
},
days:[{
date: {type: Date},
value: {type: String}
}]
}],
notifications: [{
state: {type: String},//viewed, pendent
message: {type: String},
link: {type: String},//aquí oju, a la app i a la web calen links diferents, però ho podem fer posant sempre a la app i a la web el prefix del link (#!/app) o (#/app/), i després afegint-hi la pàgina on volem enviar el routing, per exemple (dashboard)
icon: {type: String},
date: {type: Date},
dateviewed: {type: Date}
}],
followers: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
}],
following: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'userModel'
}],
google: {
id: {type: String},
token: {type: String},
email: {type: String},
name: {type: String},
},
twitter: {
id: {type: String},
token: {type: String},
email: {type: String},
name: {type: String},
}
});
userSchema.plugin(mongooseUniqueValidator);
module.exports = mongoose.model('userModel', userSchema);