Spaces:
Runtime error
Runtime error
var mongoose = require('mongoose'); | |
var Schema = mongoose.Schema; | |
var ClientSchema = new Schema( | |
{ | |
email: { type: String, required: true, unique: true }, | |
company: { type: Schema.Types.ObjectId, ref: 'Company' }, | |
lastname: String, | |
firstname: String, | |
phone: String, | |
cell: String, | |
title: String, | |
}, | |
{ timestamps: true }, | |
); | |
/* | |
*** Statics *** | |
*/ | |
// Get all clients | |
ClientSchema.statics.getAll = () => { | |
return new Promise((resolve, reject) => { | |
var query = Client.find().populate('company', '-_id name'); | |
query.select('email lastname firstname phone cell title'); | |
query | |
.exec() | |
.then(rows => { | |
resolve(rows); | |
}) | |
.catch(err => { | |
reject(err); | |
}); | |
}); | |
}; | |
// Create client | |
ClientSchema.statics.create = (client, company) => { | |
return new Promise(async (resolve, reject) => { | |
if (company) { | |
var Company = mongoose.model('Company'); | |
var query = Company.findOneAndUpdate( | |
{ name: company }, | |
{}, | |
{ upsert: true, new: true }, | |
); | |
var companyRow = await query.exec(); | |
if (companyRow) client.company = companyRow._id; | |
} | |
var query = new Client(client); | |
query | |
.save(company) | |
.then(row => { | |
resolve({ | |
_id: row._id, | |
email: row.email, | |
firstname: row.firstname, | |
lastname: row.lastname, | |
title: row.title, | |
phone: row.phone, | |
cell: row.cell, | |
company: row.company, | |
}); | |
}) | |
.catch(err => { | |
if (err.code === 11000) | |
reject({ | |
fn: 'BadParameters', | |
message: 'Client email already exists', | |
}); | |
else reject(err); | |
}); | |
}); | |
}; | |
// Update client | |
ClientSchema.statics.update = (clientId, client, company) => { | |
return new Promise(async (resolve, reject) => { | |
if (company) { | |
var Company = mongoose.model('Company'); | |
var query = Company.findOneAndUpdate( | |
{ name: company }, | |
{}, | |
{ upsert: true, new: true }, | |
); | |
var companyRow = await query.exec(); | |
if (companyRow) client.company = companyRow.id; | |
} | |
var query = Client.findOneAndUpdate({ _id: clientId }, client); | |
query | |
.exec() | |
.then(rows => { | |
if (rows) resolve(rows); | |
else reject({ fn: 'NotFound', message: 'Client Id not found' }); | |
}) | |
.catch(err => { | |
if (err.code === 11000) | |
reject({ | |
fn: 'BadParameters', | |
message: 'Client email already exists', | |
}); | |
else reject(err); | |
}); | |
}); | |
}; | |
// Delete client | |
ClientSchema.statics.delete = clientId => { | |
return new Promise((resolve, reject) => { | |
var query = Client.findOneAndDelete({ _id: clientId }); | |
query | |
.exec() | |
.then(rows => { | |
if (rows) resolve(rows); | |
else reject({ fn: 'NotFound', message: 'Client Id not found' }); | |
}) | |
.catch(err => { | |
reject(err); | |
}); | |
}); | |
}; | |
/* | |
*** Methods *** | |
*/ | |
var Client = mongoose.model('Client', ClientSchema); | |
module.exports = Client; | |