Files
2024-10-21 10:22:26 +03:30

53 lines
1.9 KiB
JavaScript

const mongoose = require('mongoose');
const mongoosePaginate = require('mongoose-paginate-v2');
function image(img) {
if (img) return '/uploads/images/election/' + img
}
const CandidatesSchema = mongoose.Schema({
firstName: String,
lastName: String,
bornDate : {type: Date , default: null},
education: {type: String, default: null},
nationalCode : {type: String, default: null},
resume : {type: String, default: null},
profilePic : {type: String, get: image, default: null},
_creator :{type: mongoose.Schema.Types.ObjectId, ref: 'User'},
_updatedBy: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
});
const VotersSchema = mongoose.Schema({
firstName: String,
lastName: String,
nationalCode : String,
password: String,
scope:{type: Array, default: ['voter']},
username: {type: String, unique: true},
mobileNumber: {type: String, default: null},
job: {type: String, default: null},
voted: {type: Boolean, default: false},
_creator :{type: mongoose.Schema.Types.ObjectId, ref: 'User'},
_updatedBy: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
});
const ElectionSchema = mongoose.Schema({
title: String,
description : {type : String , default : null},
catId: {type: mongoose.Schema.Types.ObjectId, ref: 'Category'},
allCat: [{type: mongoose.Schema.Types.ObjectId, ref: 'Category'}],
rootParent: {type: mongoose.Schema.Types.ObjectId, ref: 'Category'},
candidates : [CandidatesSchema],
voters : [VotersSchema],
votes : {type : Array , default : []},
startDate : Date,
endDate : Date,
publish: {type: Boolean, default: false},
_creator :{type: mongoose.Schema.Types.ObjectId, ref: 'User'},
_updatedBy: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
});
ElectionSchema.plugin(mongoosePaginate);
module.exports = mongoose.model('Election', ElectionSchema);