Beispiel #1
0
        public async Task <APIGatewayProxyResponse> LeaderBoard(APIGatewayProxyRequest request)
        {
            LeaderboardSearchRequest leaderboardRequest = JsonConvert.DeserializeObject <LeaderboardSearchRequest>(request.Body);
            // ask to dynamo ask for my selected data
            //            var requestModel = JsonConvert.DeserializeObject<Leaderboard>(request.Body);
            List <User> users = await _dynamoRepository.GetLeaderboard(leaderboardRequest);

            return(new APIGatewayProxyResponse
            {
                Headers = GetCorsHeaders(),
                StatusCode = 200,
                Body = JsonConvert.SerializeObject(users)
            });
        }
Beispiel #2
0
        public async Task <List <User> > GetLeaderboard(LeaderboardSearchRequest request)
        {
            var bevanList = await GetBevanList();

            Console.WriteLine("Non-filtered Bevan list count " + bevanList.Count());

            //Filter on channel
            bevanList = bevanList
                        .Where(b => b.Channel.Equals(request.Channel))
                        .Where(b => b.Timestamp >= request.StartDate && b.Timestamp <= request.EndDate);

            Console.WriteLine("Filtered Bevan list count " + bevanList.Count());
            var Users = await getUsers();

            var userRet = new List <User>();

            foreach (var bevanData in bevanList)
            {
                var receiverUser = Users.FirstOrDefault(u => u.id.Equals(bevanData.ReceiverId));
                var giverUser    = Users.FirstOrDefault(u => u.id.Equals(bevanData.GiverId));

                //sum of bevans of receiver user
                var sumOfBevans = request.Type == 0
                    ? bevanList.Where(b => b.ReceiverId.Equals(receiverUser?.id)).Sum(a => a.Count)
                    : bevanList.Where(b => b.GiverId.Equals(receiverUser?.id)).Sum(a => a.Count);

                if (receiverUser != null)
                {
                    receiverUser.totalbevans = sumOfBevans;
                    userRet.Add(receiverUser);
                }

                //sum of bevans of giver user
                sumOfBevans = request.Type == 0
                    ? bevanList.Where(b => b.ReceiverId.Equals(giverUser?.id)).Sum(a => a.Count)
                    : bevanList.Where(b => b.GiverId.Equals(giverUser?.id)).Sum(a => a.Count);

                if (giverUser != null)
                {
                    giverUser.totalbevans = sumOfBevans;
                    userRet.Add(giverUser);
                }
            }
            Console.WriteLine("Leaderboard users count" + userRet.Count());
            return(userRet.Distinct().OrderByDescending(x => x.totalbevans).ToList());
        }