Exemple #1
0
        public async Task <bool> DeleteTrainingAsync(int trainingId)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                try {
                    Training training = await ctx.Training.FirstAsync(t => t.Id == trainingId);

                    List <Exercise> exercisesForTraining = ctx.TrainingExercises.Where(te => te.TrainingId == trainingId)
                                                           .Select(te => te.Exercise).ToList();
                    Console.WriteLine("Training " + trainingId + " has " + exercisesForTraining.Count + " exercises");
                    foreach (var exercise in exercisesForTraining)
                    {
                        if (GetNumberOfTrainingsForExercise(exercise.Id) == 1)
                        {
                            ctx.Exercise.Remove(exercise);
                        }
                    }
                    ctx.Training.Remove(training);
                    await ctx.SaveChangesAsync();
                }
                catch (Exception e) {
                    return(false);
                }

                return(true);
            }
        }
Exemple #2
0
        private int GetNumberOfCommonFriends(int firstUserId, int secondUserId)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                List <int> firstUserFriendIds = new List <int>();
                List <int> temp = ctx.Friendships.Where(fr => fr.FirstUserId == firstUserId)
                                  .Select(fr => fr.SecondUserId).ToList();
                firstUserFriendIds.AddRange(temp);
                temp = ctx.Friendships.Where(fr => fr.SecondUserId == firstUserId)
                       .Select(fr => fr.FirstUserId).ToList();
                firstUserFriendIds.AddRange(temp);


                List <int> secondUserFriendIds = new List <int>();
                temp = ctx.Friendships.Where(fr => fr.FirstUserId == secondUserId)
                       .Select(fr => fr.SecondUserId).ToList();
                secondUserFriendIds.AddRange(temp);
                temp = ctx.Friendships.Where(fr => fr.SecondUserId == secondUserId)
                       .Select(fr => fr.FirstUserId).ToList();
                secondUserFriendIds.AddRange(temp);

                int numberOfCommonFriends = 0;
                foreach (var friendId in firstUserFriendIds)
                {
                    if (secondUserFriendIds.Contains(friendId))
                    {
                        numberOfCommonFriends++;
                    }
                }

                return(numberOfCommonFriends);
            }
        }
Exemple #3
0
 private bool UserFollowsGym(int userId, int gymId)
 {
     using (ShapeAppDbContext ctx = new ShapeAppDbContext())
     {
         return(ctx.UserActions.Any(ua => ua.SenderId == userId && ua.ReceiverId == gymId && ua.IsFollowPage));
     }
 }
Exemple #4
0
 private int GetTotalNumberOfFriendsForUser(int userId)
 {
     using (ShapeAppDbContext ctx = new ShapeAppDbContext())
     {
         return(ctx.Friendships.Count(fr => fr.FirstUserId == userId || fr.SecondUserId == userId));
     }
 }
Exemple #5
0
 private int GetTotalNumberOfFollowersForGym(int gymId)
 {
     using (ShapeAppDbContext ctx = new ShapeAppDbContext())
     {
         return(ctx.UserActions.Count(ua => ua.ReceiverId == gymId && ua.IsFollowPage));
     }
 }
Exemple #6
0
        public List <UserShortVersion> GetAllLikesForPost(int postId)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                try {
                    List <User> postLikeUsers = ctx.PostActions.Where(pa =>
                                                                      pa.PostId == postId && pa.IsLike).Select(pa => pa.User).ToList();

                    if (!postLikeUsers.Any())
                    {
                        return(null);
                    }

                    List <UserShortVersion> users = new List <UserShortVersion>();
                    foreach (var user in postLikeUsers)
                    {
                        users.Add(new UserShortVersion {
                            UserId       = user.Id,
                            UserFullName = user.Name
                        });
                    }
                    return(users);
                }
                catch (Exception e) {
                    return(null);
                }
            }
        }
Exemple #7
0
        private List <User> GetCommonFollowersFriends(int userId, int gymId)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                List <User> userFriends = new List <User>();
                userFriends.Add(ctx.Users.First(u => u.Id == userId));
                List <User> temp = ctx.Friendships.Where(fr => fr.FirstUserId == userId)
                                   .Select(fr => fr.SecondUser).ToList();
                userFriends.AddRange(temp);
                temp = ctx.Friendships.Where(fr => fr.SecondUserId == userId)
                       .Select(fr => fr.FirstUser).ToList();
                userFriends.AddRange(temp);

                List <User> gymFollowers = ctx.UserActions.Where(ua => ua.ReceiverId == gymId && ua.IsFollowPage)
                                           .Select(ua => ua.Sender).ToList();

                List <User> commonFollowersFriends = new List <User>();
                foreach (var gymFollower in gymFollowers)
                {
                    if (userFriends.Contains(gymFollower))
                    {
                        commonFollowersFriends.Add(gymFollower);
                    }
                }

                return(commonFollowersFriends);
            }
        }
Exemple #8
0
        public List <int> GetLatestPostsByUser(int userId, int offset)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                List <int> postsDb = ctx.Posts.Where(p => p.Owner.Id == userId)
                                     .OrderByDescending(p => p.TimeStamp)
                                     .Select(p => p.Id).ToList();

                if (postsDb.Count <= offset)
                {
                    return(null);
                }

                List <int> postIds = new List <int>();
                for (int i = offset; i < offset + 5; i++)
                {
                    if (i >= postsDb.Count)
                    {
                        break;
                    }

                    postIds.Add(postsDb[i]);
                }
                return(postIds);
            }
        }
Exemple #9
0
        public async Task <List <CommentSockets> > GetAllCommentsForPost(int postId)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                Post post = await ctx.Posts.Where(p => p.Id == postId)
                            .Include(p => p.Comments)
                            .ThenInclude(c => c.Owner)
                            .Include(p => p.Owner).FirstAsync();

                List <Comment> orderedComments = post.Comments.OrderByDescending(c => c.TimeStamp).ToList();
                if (orderedComments.Any())
                {
                    List <CommentSockets> comments = new List <CommentSockets>();
                    foreach (var postComment in orderedComments)
                    {
                        UserShortVersion owner = new UserShortVersion {
                            UserId       = postComment.Owner.Id,
                            UserFullName = postComment.Owner.Name
                        };
                        comments.Add(new CommentSockets
                        {
                            Id        = postComment.Id,
                            Owner     = owner,
                            Content   = postComment.Content,
                            TimeStamp = postComment.TimeStamp
                        });
                    }

                    return(comments);
                }

                return(null);
            }
        }
Exemple #10
0
        public async Task <bool> EditPostAsync(PostShortVersion post)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                Post postDb = await ctx.Posts.FirstAsync(p => p.Id == post.Id);

                if (post.Title != null)
                {
                    postDb.Title = post.Title;
                }
                if (post.Content != null)
                {
                    postDb.Content = post.Content;
                }
                try {
                    ctx.Posts.Update(postDb);
                    await ctx.SaveChangesAsync();
                }
                catch (Exception e) {
                    return(false);
                }

                return(true);
            }
        }
Exemple #11
0
        public async Task <int> AddPostAsync(PostShortVersion postShortVersion)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                User owner = await ctx.Users.FirstAsync(u => u.Id == postShortVersion.Owner.UserId);

                Post post = new Post
                {
                    Title     = postShortVersion.Title,
                    Content   = postShortVersion.Content,
                    Owner     = owner,
                    TimeStamp = DateTime.Now,
                    HasImage  = postShortVersion.HasImage
                };
                Console.WriteLine("adding post to db");
                await ctx.Posts.AddAsync(post);

                await ctx.SaveChangesAsync();

                Console.WriteLine("post saved");
                var newPost = await ctx.Posts.ToListAsync();

                return(newPost.Last().Id);
            }
        }
Exemple #12
0
 public async Task <TrainingSocketsModelWithOwner> GetTrainingByIdAsync(int id)
 {
     using (ShapeAppDbContext ctx = new ShapeAppDbContext())
     {
         Training training;
         try {
             training = await ctx.Training.Where(t => t.Id == id)
                        .Include(t => t.Owner).FirstAsync();
         }
         catch (Exception e) {
             return(null);
         }
         List <Exercise> exercises = ctx.TrainingExercises.Where(te => te.TrainingId == id)
                                     .Select(te => te.Exercise).ToList();
         SearchBarUser owner = new SearchBarUser
         {
             UserId   = training.Owner.Id,
             FullName = training.Owner.Name
         };
         return(new TrainingSocketsModelWithOwner
         {
             Duration = training.Duration,
             Exercises = exercises,
             Id = training.Id,
             Completed = training.IsCompleted,
             Global = training.IsPublic,
             Owner = owner,
             TimeStamp = training.TimeStamp,
             Title = training.Title,
             Type = training.Type
         });
     }
 }
Exemple #13
0
 private int GetNumberOfTrainingsForExercise(int exerciseId)
 {
     using (ShapeAppDbContext ctx = new ShapeAppDbContext())
     {
         return(ctx.TrainingExercises.Count(te => te.ExerciseId == exerciseId));
     }
 }
Exemple #14
0
        public async Task <int> AddExerciseToTrainingAsync(ExerciseWithTraining exercise)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                bool exists = ctx.Exercise.Any(e => e.Id == exercise.Id);
                int  exerciseId;
                if (exists)
                {
                    exerciseId = exercise.Id;
                }
                else
                {
                    await ctx.Exercise.AddAsync(new Exercise
                    {
                        Description = exercise.Description,
                        Title       = exercise.Title
                    });

                    await ctx.SaveChangesAsync();

                    exerciseId = ctx.Exercise.ToList().Last().Id;
                }
                await ctx.TrainingExercises.AddAsync(new TrainingExercise
                {
                    ExerciseId = exerciseId,
                    TrainingId = exercise.TrainingId
                });

                await ctx.SaveChangesAsync();

                return(exerciseId);
            }
        }
Exemple #15
0
        public async Task <int> PostPageRatingAsync(ModelActionSockets modelActionSockets)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                PageRating pageRating = await ctx.PageRatings.FirstOrDefaultAsync(pr =>
                                                                                  pr.UserId == modelActionSockets.SenderId && pr.PageId == modelActionSockets.ReceiverId);

                if (pageRating == null)
                {
                    await ctx.PageRatings.AddAsync(new PageRating
                    {
                        UserId = modelActionSockets.SenderId,
                        PageId = modelActionSockets.ReceiverId,
                        Rating = int.Parse(modelActionSockets.Value.ToString())
                    });
                }
                else
                {
                    pageRating.Rating = int.Parse(modelActionSockets.Value.ToString());
                    ctx.PageRatings.Update(pageRating);
                }

                await ctx.SaveChangesAsync();

                return(0);
            }
        }
Exemple #16
0
        public async Task <int> AddUserAsync(UserSocketsModel user)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                try
                {
                    await ctx.Users.AddAsync(new User
                    {
                        Address     = user.Address,
                        City        = user.City,
                        Description = user.Description,
                        Email       = user.Email,
                        Name        = user.Name,
                        Password    = user.Password
                    });

                    await ctx.SaveChangesAsync();
                }
                catch (Exception e)
                {
                    return(-1);
                }

                int userId = ctx.Users.First(u => u.Email.Equals(user.Email)).Id;
                Console.WriteLine("Added user to database with id " + userId);
                return(userId);
            }
        }
Exemple #17
0
 public async Task <List <UserShortVersion> > GetAdminUsersAsync(int limit, int offset)
 {
     using (ShapeAppDbContext ctx = new ShapeAppDbContext())
     {
         return(GetAdminUsersWithDbContextAsync(ctx, limit, offset));
     }
 }
Exemple #18
0
        public async Task <DietSocketsModelWithOwner> GetDietByIdAsync(int id)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                Diet diet;
                try
                {
                    diet = await ctx.Diet.Where(d => d.Id == id).Include(d => d.Owner).FirstAsync();
                }
                catch (Exception e)
                {
                    return(null);
                }

                List <Meal>   meals = ctx.DietMeals.Where(dm => dm.DietId == id).Select(dm => dm.Meal).ToList();
                SearchBarUser owner = new SearchBarUser
                {
                    UserId   = diet.Owner.Id,
                    FullName = diet.Owner.Name
                };
                return(new DietSocketsModelWithOwner
                {
                    Description = diet.Description,
                    Global = diet.IsPublic,
                    Id = diet.Id,
                    Meals = meals,
                    Owner = owner,
                    Title = diet.Title
                });
            }
        }
Exemple #19
0
        public async Task <bool> DeleteDietAsync(int dietId)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                try
                {
                    Diet diet = await ctx.Diet.FirstAsync(d => d.Id == dietId);

                    List <Meal> mealsForDiet = ctx.DietMeals.Where(dm => dm.DietId == dietId)
                                               .Select(dm => dm.Meal).ToList();
                    foreach (var meal in mealsForDiet)
                    {
                        if (GetNumberOfDietsForMeal(meal.Id) == 1)
                        {
                            ctx.Meal.Remove(meal);
                        }
                    }

                    ctx.Diet.Remove(diet);
                    await ctx.SaveChangesAsync();
                }
                catch (Exception e)
                {
                    return(false);
                }

                return(true);
            }
        }
Exemple #20
0
 private int GetNumberOfDietsForMeal(int mealId)
 {
     using (ShapeAppDbContext ctx = new ShapeAppDbContext())
     {
         return(ctx.DietMeals.Count(dm => dm.MealId == mealId));
     }
 }
Exemple #21
0
        public async Task <int> AddMealToDietAsync(MealWithDiet meal)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                bool exists = ctx.Meal.Any(m => m.Id == meal.Id);
                int  mealId;
                if (exists)
                {
                    mealId = meal.Id;
                }
                else
                {
                    await ctx.Meal.AddAsync(new Meal
                    {
                        Title       = meal.Title,
                        Description = meal.Description,
                        Calories    = meal.Calories
                    });

                    await ctx.SaveChangesAsync();

                    mealId = ctx.Meal.ToList().Last().Id;
                }

                await ctx.DietMeals.AddAsync(new DietMeal
                {
                    MealId = mealId,
                    DietId = meal.DietId
                });

                await ctx.SaveChangesAsync();

                return(mealId);
            }
        }
Exemple #22
0
 public List <UserShortVersionWithMessage> GetLastMessagesForUser(int userId, int offset)
 {
     using (ShapeAppDbContext ctx = new ShapeAppDbContext())
     {
         return(GetLastMessagesForUserWithDbContext(ctx, userId, offset));
     }
 }
Exemple #23
0
        public async Task <bool> EditDietAsync(DietSocketsModel diet)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                Diet dietDb = await ctx.Diet.FirstAsync(d => d.Id == diet.Id);

                if (!string.IsNullOrEmpty(diet.Title))
                {
                    dietDb.Title = diet.Title;
                }
                if (!string.IsNullOrEmpty(diet.Description))
                {
                    dietDb.Description = diet.Description;
                }

                dietDb.IsPublic = diet.Global;

                try
                {
                    ctx.Diet.Update(dietDb);
                    await ctx.SaveChangesAsync();
                }
                catch (Exception e)
                {
                    return(false);
                }

                return(true);
            }
        }
Exemple #24
0
        public async Task <List <int> > AddMessageAsync(MessageSocketsModel message)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                List <int> ints = new List <int>();
                if (message.HasImage && message.Content == null)
                {
                    message.Content = "";
                }
                await ctx.Messages.AddAsync(new Message
                {
                    Content    = message.Content,
                    HasImage   = message.HasImage,
                    ReceiverId = message.ReceiverId,
                    SenderId   = message.SenderId,
                    TimeStamp  = DateTime.Now
                });

                await ctx.SaveChangesAsync();

                ints.Add(ctx.Messages.ToList().Last().Id);

                await ctx.Notifications.AddAsync(new Notification {
                    SenderId         = message.SenderId,
                    ReceiverId       = message.ReceiverId,
                    NotificationType = ActionType.MESSAGE_CREATE.ToString()
                });

                await ctx.SaveChangesAsync();

                ints.Add(ctx.Notifications.ToList().Last().Id);

                return(ints);
            }
        }
Exemple #25
0
        /// <summary>
        /// Method for seeding the user's user chat messages
        /// </summary>
        /// <param name="seededUserIds">the seeded users ids</param>
        private static async Task SeedChat(int[] seededUserIds)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                for (int i = 0; i < seededUserIds.Length - 1; i++)
                {
                    for (int j = i + 1; j < seededUserIds.Length; j++)
                    {
                        await ctx.Messages.AddAsync(new Message
                        {
                            SenderId   = seededUserIds[i],
                            ReceiverId = seededUserIds[j],
                            Content    = GetRandomString(),
                            HasImage   = false,
                            TimeStamp  = GetRandomDateTime(DateTime.Today.AddDays(-10))
                        });

                        await ctx.Messages.AddAsync(new Message
                        {
                            SenderId   = seededUserIds[j],
                            ReceiverId = seededUserIds[i],
                            Content    = GetRandomString(),
                            HasImage   = false,
                            TimeStamp  = GetRandomDateTime(DateTime.Today.AddDays(-10))
                        });
                    }
                }

                await ctx.SaveChangesAsync();
            }
        }
Exemple #26
0
        private List <User> GetCommonFriendsForUsers(int firstUserId, int secondUserId)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                List <User> firstUserFriends = new List <User>();
                List <User> temp             = ctx.Friendships.Where(fr => fr.FirstUserId == firstUserId)
                                               .Select(fr => fr.SecondUser).ToList();
                firstUserFriends.AddRange(temp);
                temp = ctx.Friendships.Where(fr => fr.SecondUserId == firstUserId)
                       .Select(fr => fr.FirstUser).ToList();
                firstUserFriends.AddRange(temp);

                List <User> secondUserFriends = new List <User>();
                temp = ctx.Friendships.Where(fr => fr.FirstUserId == secondUserId)
                       .Select(fr => fr.SecondUser).ToList();
                secondUserFriends.AddRange(temp);
                temp = ctx.Friendships.Where(fr => fr.SecondUserId == secondUserId)
                       .Select(fr => fr.FirstUser).ToList();
                secondUserFriends.AddRange(temp);

                List <User> commonFriends = new List <User>();
                foreach (var friend in firstUserFriends)
                {
                    if (secondUserFriends.Contains(friend))
                    {
                        commonFriends.Add(friend);
                    }
                }

                return(commonFriends);
            }
        }
Exemple #27
0
        public List <UserShortVersion> GetOnlineFriendsForUser(int userId)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                List <int> onlineFriendIds = new List <int>();
                foreach (var onlineUserId in onlineUserIds)
                {
                    if (UsersAreFriends(userId, onlineUserId))
                    {
                        onlineFriendIds.Add(onlineUserId);
                    }
                }

                if (!onlineFriendIds.Any())
                {
                    return(null);
                }

                List <UserShortVersion> onlineFriends = new List <UserShortVersion>();
                foreach (var onlineFriendId in onlineFriendIds)
                {
                    string username = ctx.Users.First(u => u.Id == onlineFriendId).Name;
                    onlineFriends.Add(new UserShortVersion
                    {
                        UserId       = onlineFriendId,
                        UserFullName = username
                    });
                }
                return(onlineFriends);
            }
        }
Exemple #28
0
        public async Task <int> AddTrainingAsync(TrainingSocketsModelWithOwner training)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                try
                {
                    User owner = await ctx.Users.FirstAsync(u => u.Id == training.Owner.UserId);

                    Training trainingDb = new Training
                    {
                        Title     = training.Title,
                        TimeStamp = training.TimeStamp,
                        Duration  = training.Duration,
                        IsPublic  = training.Global,
                        Type      = training.Type,
                        Owner     = owner
                    };
                    await ctx.Training.AddAsync(trainingDb);

                    await ctx.SaveChangesAsync();

                    int createdTrainingId = ctx.Training.ToList().Last().Id;

                    if (training.Exercises != null && training.Exercises.Any())
                    {
                        foreach (var exercise in training.Exercises)
                        {
                            int createdExerciseId;
                            if (exercise.Id > 0)
                            {
                                createdExerciseId = exercise.Id;
                            }
                            else
                            {
                                await ctx.Exercise.AddAsync(exercise);

                                await ctx.SaveChangesAsync();

                                createdExerciseId = ctx.Exercise.ToList().Last().Id;
                            }

                            await ctx.TrainingExercises.AddAsync(new TrainingExercise
                            {
                                ExerciseId = createdExerciseId,
                                TrainingId = createdTrainingId
                            });

                            await ctx.SaveChangesAsync();
                        }
                    }

                    return(createdTrainingId);
                }
                catch (Exception e)
                {
                    return(-1);
                }
            }
        }
Exemple #29
0
        public async Task <bool> EditMealInDiet(MealWithDiet meal)
        {
            using (ShapeAppDbContext ctx = new ShapeAppDbContext())
            {
                int  mealFrequency = GetNumberOfDietsForMeal(meal.Id);
                Meal mealDb        = await ctx.Meal.FirstAsync(m => m.Id == meal.Id);

                if (mealFrequency > 1)
                {
                    await ctx.Meal.AddAsync(new Meal
                    {
                        Calories    = mealDb.Calories,
                        Description = mealDb.Description,
                        Title       = mealDb.Title
                    });

                    await ctx.SaveChangesAsync();

                    int mealId = ctx.Meal.ToList().Last().Id;
                    Console.WriteLine("New meal id is " + mealId);
                    var dietMeals = ctx.DietMeals.Where(dm => dm.MealId == meal.Id &&
                                                        dm.Diet.Id != meal.DietId).ToList();
                    foreach (var dietMeal in dietMeals)
                    {
                        ctx.DietMeals.Remove(dietMeal);
                        await ctx.DietMeals.AddAsync(new DietMeal
                        {
                            DietId = dietMeal.DietId,
                            MealId = mealId
                        });
                    }
                }

                if (meal.Calories >= 0)
                {
                    mealDb.Calories = meal.Calories;
                }
                if (!string.IsNullOrEmpty(meal.Description))
                {
                    mealDb.Description = meal.Description;
                }
                if (!string.IsNullOrEmpty(meal.Title))
                {
                    mealDb.Title = meal.Title;
                }

                try
                {
                    ctx.Meal.Update(mealDb);
                    await ctx.SaveChangesAsync();
                }
                catch (Exception e)
                {
                    return(false);
                }

                return(true);
            }
        }
Exemple #30
0
 public List <int> GetPostIdsForUser(int userId)
 {
     using (ShapeAppDbContext ctx = new ShapeAppDbContext())
     {
         return(ctx.Posts.Where(p => p.Owner.Id == userId)
                .Select(p => p.Id).ToList());
     }
 }