Skip to content

Commit

Permalink
Sosynpl[premieroctet#158 & premieroctet#159]: added current and comin…
Browse files Browse the repository at this point in the history
…g missions counts
  • Loading branch information
SeghirOumo committed Aug 2, 2024
1 parent a031662 commit 654f857
Show file tree
Hide file tree
Showing 3 changed files with 108 additions and 0 deletions.
28 changes: 28 additions & 0 deletions backend/web/server/plugins/sosynpl/functions.js
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,34 @@ CUSTOMERFREELANCEMODELS.forEach(model => {
instance: 'String',
},
})
declareVirtualField({
model, field: 'customer_current_missions_count', instance: 'Array', multiple: true,
caster: {
instance: 'ObjectID',
options: {ref:'mission'}
},
})
declareVirtualField({
model, field: 'freelance_current_missions_count', instance: 'Array', multiple: true,
caster: {
instance: 'ObjectID',
options: {ref:'mission'}
},
})
declareVirtualField({
model, field: 'customer_coming_missions_count', instance: 'Array', multiple: true,
caster: {
instance: 'ObjectID',
options: {ref:'mission'}
},
})
declareVirtualField({
model, field: 'freelance_coming_missions_count', instance: 'Array', multiple: true,
caster: {
instance: 'ObjectID',
options: {ref:'mission'}
},
})
})

//Evaluation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,47 @@ CustomerFreelanceSchema.virtual('freelance_reports', DUMMY_REF).get(function() {
: []
})

CustomerFreelanceSchema.virtual('freelance_current_missions_count', {
ref: 'mission',
localField: '_id',
foreignField: 'freelance',
match: {
start_date: {$lt: new Date()},
end_date: {$gt: new Date()},
},
count: true,
})

CustomerFreelanceSchema.virtual('customer_current_missions_count', {
ref: 'mission',
localField: '_id',
foreignField: 'customer',
match: {
start_date: {$lt: new Date()},
end_date: {$gt: new Date()},
},
count: true,
})

CustomerFreelanceSchema.virtual('freelance_coming_missions_count', {
ref: 'mission',
localField: '_id',
foreignField: 'freelance',
match: {
start_date: {$gt: new Date()},
},
count: true,
})

CustomerFreelanceSchema.virtual('customer_coming_missions_count', {
ref: 'mission',
localField: '_id',
foreignField: 'customer',
match: {
start_date: {$gt: new Date()},
},
count: true,
})
/* eslint-enable prefer-arrow-callback */


Expand Down
40 changes: 40 additions & 0 deletions backend/web/tests/sosynpl/customerFreelance.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
const mongoose = require('mongoose')
const { MONGOOSE_OPTIONS, loadFromDb } = require('../../server/utils/database')
require('../../../web/server/plugins/sosynpl/functions')
const User = require('../../server/models/User')
const { ROLE_CUSTOMER, ROLE_FREELANCE } = require('../../server/plugins/sosynpl/consts')
const moment = require('moment')
require('../../server/plugins/sosynpl/functions')
require('../../server/models/Sector')
require('../../server/models/Job')
require('../../server/models/Training')
require('../../server/models/Application')
require('../../server/models/JobFile')
require('../../server/models/Report')
require('../../server/models/Mission')
require('../../server/models/Quotation')

describe('Customer', () => {

beforeAll(async () => {
await mongoose.connect(`mongodb://localhost/sosynpl`, MONGOOSE_OPTIONS)
})

afterAll(async () => {
await mongoose.connection.close()
})

it('must return customer_applications', async () => {
const users = await loadFromDb({model:'customerFreelance', fields:['customer_current_missions_count',
'freelance_current_missions_count',
'customer_coming_missions_count',
'freelance_coming_missions_count',
'fullname']})
users.map(u=>console.table({user:u.fullname,
customer_current_missions: u.customer_current_missions_count,
freelance_current_missions: u.freelance_current_missions_count,
customer_coming_missions: u.customer_coming_missions_count,
freelance_coming_missions: u.freelance_coming_missions_count,
}))
})
})

0 comments on commit 654f857

Please sign in to comment.