コード例 #1
0
        public async Task <IEnumerable <Point> > GetPointsByUserDataAsync(UserData data)
        {
            var duplicatedUserData = await _userDataRepository.GetDuplicatedUserDataOrDefault(data);

            IEnumerable <Point> points;

            if (duplicatedUserData != null)
            {
                if (!_memoryCache.TryGetValue(duplicatedUserData.UserDataId, out points))
                {
                    points = await _pointsRepository.GetPointsByUserData(duplicatedUserData);

                    SavePointsToCache(duplicatedUserData, points);
                }
            }

            else
            {
                await _userDataRepository.CreateItem(data);

                points = CalculatePointsByUserData(data);
                await _pointsRepository.AddPointsRange(points);

                SavePointsToCache(data, points);
            }

            return(points);
        }