@@ -8,15 +8,16 @@ const uuid = require('uuid/v4')
8
8
const config = require ( 'config' )
9
9
const helper = require ( '../common/helper' )
10
10
const logger = require ( '../common/logger' )
11
+ const statisticsService = require ( './StatisticsService' )
11
12
const errors = require ( '../common/errors' )
12
13
const constants = require ( '../../app-constants' )
13
14
const HttpStatus = require ( 'http-status-codes' )
14
15
15
16
const esClient = helper . getESClient ( )
16
17
17
18
const MEMBER_FIELDS = [ 'userId' , 'handle' , 'handleLower' , 'firstName' , 'lastName' , 'tracks' , 'status' ,
18
- 'addresses' , 'description' , 'email' , 'homeCountryCode' , 'competitionCountryCode' , 'photoURL' , 'createdAt ' ,
19
- 'createdBy' , 'updatedAt' , 'updatedBy' ]
19
+ 'addresses' , 'description' , 'email' , 'homeCountryCode' , 'competitionCountryCode' , 'photoURL' , 'maxRating ' ,
20
+ 'createdAt' , ' createdBy', 'updatedAt' , 'updatedBy' ]
20
21
21
22
const INTERNAL_MEMBER_FIELDS = [ 'newEmail' , 'emailVerifyToken' , 'emailVerifyTokenDate' , 'newEmailVerifyToken' ,
22
23
'newEmailVerifyTokenDate' , 'handleSuggest' ]
@@ -58,11 +59,11 @@ function omitMemberAttributes (currentUser, mb) {
58
59
*/
59
60
async function getMember ( currentUser , handle , query ) {
60
61
// validate and parse query parameter
61
- const selectFields = helper . parseCommaSeparatedString ( query . fields , MEMBER_FIELDS )
62
+ const selectFields = helper . parseCommaSeparatedString ( query . fields , MEMBER_FIELDS ) || MEMBER_FIELDS
62
63
// query member from Elasticsearch
63
64
const esQuery = {
64
- index : config . ES . ES_INDEX ,
65
- type : config . ES . ES_TYPE ,
65
+ index : config . ES . MEMBER_PROFILE_ES_INDEX ,
66
+ type : config . ES . MEMBER_PROFILE_ES_TYPE ,
66
67
size : constants . ES_SEARCH_MAX_SIZE , // use a large size to query all records
67
68
body : {
68
69
query : {
@@ -80,6 +81,21 @@ async function getMember (currentUser, handle, query) {
80
81
} else {
81
82
members = _ . map ( members . hits . hits , '_source' )
82
83
}
84
+ // get the 'maxRating' from stats
85
+ if ( _ . includes ( selectFields , 'maxRating' ) ) {
86
+ for ( let i = 0 ; i < members . length ; i += 1 ) {
87
+ const memberStatsFields = { "fields" : "userId,groupId,handleLower,maxRating" }
88
+ const memberStats = await statisticsService . getMemberStats ( currentUser , members [ i ] . handleLower ,
89
+ memberStatsFields , false )
90
+ if ( memberStats [ 0 ] ) {
91
+ if ( memberStats [ 0 ] . hasOwnProperty ( "maxRating" ) ) {
92
+ members [ i ] . maxRating = memberStats [ 0 ] . maxRating
93
+ } else {
94
+ members [ i ] . maxRating = { }
95
+ }
96
+ }
97
+ }
98
+ }
83
99
// clean member fields according to current user
84
100
members = cleanMember ( currentUser , members )
85
101
// select fields
0 commit comments