コード例 #1
0
 public async Task <User> GetUserByLoginDataAsync(string login)
 {
     using (var db = new DietManagerDB())
     {
         return(await db.Users.
                Where(u => u.UserName == login).
                SingleOrDefaultAsync());
     }
 }
コード例 #2
0
        public async Task <bool> AddMealIngredientAsync(MealIngredient mealIngredient)
        {
            using (var db = new DietManagerDB())
            {
                int result = await db.InsertAsync(mealIngredient);

                return(Convert.ToBoolean(result));
            }
        }
コード例 #3
0
 public async Task <bool> IsUsernameUniqueAsync(string username)
 {
     using (var db = new DietManagerDB())
     {
         return(!await db.Users.
                Where(u => u.UserName == username).
                AnyAsync());
     }
 }
コード例 #4
0
        public async Task <bool> AddMealIngredientNutritionsAsync(Nutrition nutritions)
        {
            using (var db = new DietManagerDB())
            {
                var result = await db.InsertAsync(nutritions);

                return(Convert.ToBoolean(result));
            }
        }
コード例 #5
0
        public virtual async Task <bool> UpdateAsync(T model)
        {
            using (var db = new DietManagerDB())
            {
                int rowsAffected = await db.UpdateAsync(model);

                return(rowsAffected == 1);
            }
        }
コード例 #6
0
        public async Task <int> CountAsync()
        {
            using (var db = new DietManagerDB())
            {
                var count = await db.Images.CountAsync();

                return(count);
            }
        }
コード例 #7
0
 private IQueryable <Guid> GetFriendsIdsQuery(DietManagerDB db, Guid userId)
 {
     return(db.Friends.
            LoadWith(f => f.InvitedUser).
            LoadWith(f => f.InvitingUser).
            Where(f => !f.InvitingUser.Deleted && !f.InvitedUser.Deleted).
            Where(f => f.InvitedUserId == userId || f.InvitingUserId == userId).
            Where(f => f.Status == FriendInvitationStatus.Accepted.ToString()).
            Select(f => f.InvitingUserId == userId ? f.InvitedUserId : f.InvitingUserId));
 }
コード例 #8
0
 public async Task <bool> ContainsAsync(Guid userId, Guid mealId)
 {
     using (var db = new DietManagerDB())
     {
         return(await db.Favourites.
                Where(f => f.UserId == userId).
                Where(f => f.MealId == mealId).
                AnyAsync());
     }
 }
コード例 #9
0
        public async Task <IEnumerable <Meal> > GetAllMealsAsync()
        {
            using (var db = new DietManagerDB())
            {
                var meals = await db.Meals.
                            ToListAsync();

                return(meals);
            }
        }
コード例 #10
0
 public async Task UpdateLastLoginDateAsync(Guid userId)
 {
     using (var db = new DietManagerDB())
     {
         await db.Users.
         Where(u => u.Id == userId).
         Set(u => u.LastLoginDate, DateTimeOffset.Now).
         UpdateAsync();
     }
 }
コード例 #11
0
 private async Task UpdateCreatedMealIngredientsCountAsync(Guid userId, int valueToAdd)
 {
     using (var db = new DietManagerDB())
     {
         await db.Users.
         Where(u => u.Id == userId).
         Set(u => u.CreatedMealIngredientsCount, u => u.CreatedMealIngredientsCount + valueToAdd).
         UpdateAsync();
     }
 }
コード例 #12
0
 public async Task <User> GetUserByIdAsync(Guid id)
 {
     using (var db = new DietManagerDB())
     {
         return(await db.Users.
                Where(u => u.Id == id).
                Where(u => !u.Deleted).
                FirstOrDefaultAsync());
     }
 }
コード例 #13
0
        public async Task <Image> GetImageByIdAsync(Guid id)
        {
            using (var db = new DietManagerDB())
            {
                var image = await db.Images.
                            FirstOrDefaultAsync(i => i.Id == id);

                return(image);
            }
        }
コード例 #14
0
        public async Task <bool> RemoveFriendAsync(Guid userId, Guid friendId)
        {
            using (var db = new DietManagerDB())
            {
                var rowsAffected = await db.Friends.
                                   Where(f => (f.InvitingUserId == userId && f.InvitedUserId == friendId) || (f.InvitedUserId == userId && f.InvitingUserId == friendId)).
                                   DeleteAsync();

                return(rowsAffected == 1);
            }
        }
コード例 #15
0
        public async Task <bool> UpdateUserAvatar(Guid userId, Guid?newAvatarId)
        {
            using (var db = new DietManagerDB())
            {
                int rowsAffected = await db.Users.
                                   Where(u => u.Id == userId).
                                   Set(u => u.ImageId, newAvatarId).
                                   UpdateAsync();

                return(rowsAffected == 1);
            }
        }
コード例 #16
0
        public async Task <bool> MarkAsSeenAsync(IEnumerable <int> activityIds)
        {
            using (var db = new DietManagerDB())
            {
                int rowsAffected = await GetActivitiesQuery(db).
                                   Where(ua => activityIds.Contains(ua.Id)).
                                   Set(ua => ua.SeenByAdmin, true).
                                   UpdateAsync();

                return(rowsAffected == activityIds.Count());
            }
        }
コード例 #17
0
        public async Task <MealIngredient> GetMealIngredientByIdAsync(Guid id)
        {
            using (var db = new DietManagerDB())
            {
                var mealIngredient = await db.MealIngredients.
                                     LoadWith(mi => mi.Nutrition).
                                     Where(m => !m.Deleted).
                                     FirstOrDefaultAsync(m => m.Id == id);

                return(mealIngredient);
            }
        }
コード例 #18
0
        public async Task <bool> AddMealIngredientsAsync(IEnumerable <MealIngredient> mealIngredients)
        {
            return(await Task.Run(() =>
            {
                using (var db = new DietManagerDB())
                {
                    var result = db.BulkCopy(mealIngredients);

                    return result.RowsCopied == mealIngredients.Count();
                }
            }));
        }
コード例 #19
0
        public async Task <bool> MarkAsDeletedAsync(Guid mealIngredientId)
        {
            using (var db = new DietManagerDB())
            {
                int rowsAffected = await db.MealIngredients.
                                   Where(m => m.Id == mealIngredientId).
                                   Set(m => m.Deleted, true).
                                   UpdateAsync();

                return(rowsAffected == 1);
            }
        }
コード例 #20
0
        public async Task <Meal> GetMealByIdAsync(Guid id)
        {
            using (var db = new DietManagerDB())
            {
                var meal = await db.Meals.
                           LoadWith(m => m.Creator).
                           Where(m => !m.Deleted).
                           FirstOrDefaultAsync(m => m.Id == id);

                return(meal);
            }
        }
コード例 #21
0
 public async Task <IEnumerable <UserAchievement> > GetUsersAchievementsAsync(Guid userId)
 {
     using (var db = new DietManagerDB())
     {
         return(await db.UserAchievements.
                LoadWith(ua => ua.Achievement).
                Where(ua => ua.UserId == userId).
                OrderBy(ua => ua.Achievement.Category).
                ThenBy(ua => ua.Achievement.Type).
                ThenBy(ua => ua.Achievement.Value).
                ToListAsync());
     }
 }
コード例 #22
0
        public async Task <bool> MarkAsReadAsync(IEnumerable <Guid> achievementIds, Guid userId)
        {
            using (var db = new DietManagerDB())
            {
                var rowsAffectedCount = await db.UserAchievements.
                                        Where(ua => achievementIds.Contains(ua.AchievementId)).
                                        Where(ua => ua.UserId == userId).
                                        Set(ua => ua.Seen, true).
                                        UpdateAsync();

                return(achievementIds.Count() == rowsAffectedCount);
            }
        }
コード例 #23
0
 public async Task <int> GetNumberOfFriendsAsync(Guid userId)
 {
     using (var db = new DietManagerDB())
     {
         return(await db.Friends.
                LoadWith(f => f.InvitingUser).
                LoadWith(f => f.InvitedUser).
                Where(f => !f.InvitingUser.Deleted && !f.InvitedUser.Deleted).
                Where(f => f.InvitingUserId == userId || f.InvitedUserId == userId).
                Where(f => f.Status == FriendInvitationStatus.Accepted.ToString()).
                CountAsync());
     }
 }
コード例 #24
0
        public async Task <bool> SetFriendInvitationStatusAsync(Guid invitingUserId, Guid invitedUserId, FriendInvitationStatus status)
        {
            using (var db = new DietManagerDB())
            {
                var updateResult = await db.Friends.
                                   Where(f => (f.InvitingUserId == invitingUserId && f.InvitedUserId == invitedUserId)).
                                   Where(f => f.Status != status.ToString()).
                                   Set(f => f.Status, status.ToString()).
                                   UpdateAsync();

                return(Convert.ToBoolean(updateResult));
            }
        }
コード例 #25
0
        public override async Task <bool> UpdateAsync(MealScheduleEntry model)
        {
            using (var db = new DietManagerDB())
            {
                var result = await db.MealScheduleEntries.
                             Where(m => m.Id == model.Id).
                             Where(m => m.UserId == model.UserId).
                             Set(m => m.Date, model.Date).
                             UpdateAsync();

                return(result == 1);
            }
        }
コード例 #26
0
        public async Task <ICollection <UserActivity> > GetUsersFriendsActivitiesAsync(Guid userId, int index, int takeAmount)
        {
            using (var db = new DietManagerDB())
            {
                var activitiesQuery = GetActivitiesQuery(db).
                                      Where(ua => GetFriendsIdsQuery(db, userId).Contains(ua.UserId)).
                                      OrderByDescending(ua => ua.Id).
                                      Skip(index).
                                      Take(takeAmount);

                return(await activitiesQuery.ToListAsync());
            }
        }
コード例 #27
0
        public async Task <ICollection <UserActivity> > GetAllActivitiesAsync(int index, int takeAmount)
        {
            using (var db = new DietManagerDB())
            {
                var activitiesQuery = GetActivitiesQuery(db).
                                      Where(ua => !ua.SeenByAdmin).
                                      OrderByDescending(ua => ua.Id).
                                      Skip(index).
                                      Take(takeAmount);

                return(await activitiesQuery.ToListAsync());
            }
        }
コード例 #28
0
        public async Task <bool> AddAchievementsAsync(IEnumerable <Achievement> achievements)
        {
            _achievmentsCacheContainer.Fill(achievements);

            return(await Task.Run(() =>
            {
                using (var db = new DietManagerDB())
                {
                    var rowsCopied = db.BulkCopy(achievements);

                    return achievements.Count() == (int)rowsCopied.RowsCopied;
                }
            }));
        }
コード例 #29
0
        public async Task <IEnumerable <Achievement> > GetAllAsync()
        {
            using (var db = new DietManagerDB())
            {
                var achievements = await db.Achievements.ToListAsync();

                if (achievements.Any())
                {
                    _achievmentsCacheContainer.Fill(achievements);
                }

                return(achievements);
            }
        }
コード例 #30
0
        public async Task <ICollection <UserActivity> > GetUserActivitiesAsync(Guid userId, int index, int takeAmount)
        {
            using (var db = new DietManagerDB())
            {
                var activitiesQuery = GetActivitiesQuery(db).
                                      Where(ua => userId == ua.UserId).
                                      Where(ua => !ua.Meal.Deleted).
                                      OrderBy(ua => ua.Id).
                                      Skip(index).
                                      Take(takeAmount);

                return(await activitiesQuery.ToListAsync());
            }
        }