aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Data/Repositories
diff options
context:
space:
mode:
Diffstat (limited to 'src/DevHive.Data/Repositories')
-rw-r--r--src/DevHive.Data/Repositories/RatingRepository.cs37
-rw-r--r--src/DevHive.Data/Repositories/UserRepository.cs30
2 files changed, 55 insertions, 12 deletions
diff --git a/src/DevHive.Data/Repositories/RatingRepository.cs b/src/DevHive.Data/Repositories/RatingRepository.cs
new file mode 100644
index 0000000..43fe90d
--- /dev/null
+++ b/src/DevHive.Data/Repositories/RatingRepository.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Threading.Tasks;
+using DevHive.Data.Interfaces.Repositories;
+using DevHive.Data.Models;
+using Microsoft.EntityFrameworkCore;
+
+namespace DevHive.Data.Repositories
+{
+ public class RatingRepository : BaseRepository<Rating>, IRatingRepository
+ {
+ private readonly DevHiveContext _context;
+
+ public RatingRepository(DevHiveContext context)
+ : base(context)
+ {
+ this._context = context;
+ }
+
+ public async Task<Rating> GetByPostId(Guid postId)
+ {
+ return await this._context.Rating
+ .FirstOrDefaultAsync(x => x.Post.Id == postId);
+ }
+
+ public async Task<Tuple<int, int>> GetRating(Guid postId)
+ {
+ Rating rating = await this.GetByPostId(postId);
+
+ return new Tuple<int, int>(rating.Likes, rating.Dislikes);
+ }
+
+ public async Task<bool> HasUserRatedThisPost(Guid userId, Guid postId)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/src/DevHive.Data/Repositories/UserRepository.cs b/src/DevHive.Data/Repositories/UserRepository.cs
index 6512c42..6c63244 100644
--- a/src/DevHive.Data/Repositories/UserRepository.cs
+++ b/src/DevHive.Data/Repositories/UserRepository.cs
@@ -3,8 +3,10 @@ using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
+using AutoMapper.Mappers;
using DevHive.Data.Interfaces.Repositories;
using DevHive.Data.Models;
+using DevHive.Data.RelationModels;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
@@ -68,17 +70,21 @@ namespace DevHive.Data.Repositories
foreach (var role in newEntity.Roles)
user.Roles.Add(role);
- foreach (var friend in user.Friends)
- {
- friend.Friends.Remove(user);
- this._context.Entry(friend).State = EntityState.Modified;
- }
- user.Friends.Clear();
- foreach (var friend in newEntity.Friends)
- {
- friend.Friends.Add(user);
- user.Friends.Add(friend);
- }
+ // foreach (var friend in user.Friends)
+ // {
+ // friend.Friends.Remove(user);
+ // this._context.Entry(friend).State = EntityState.Modified;
+ // }
+ // user.Friends.Clear();
+ // foreach (var friend in newEntity.Friends)
+ // {
+ // friend.Friends.Add(user);
+ // user.Friends.Add(friend);
+ // }
+ this._context.UserFriends.RemoveRange(
+ this._context.UserFriends
+ .Where(x => x.FriendId == user.Id &&
+ x.UserId == user.Id));
user.Technologies.Clear();
foreach (var tech in newEntity.Technologies)
@@ -118,7 +124,7 @@ namespace DevHive.Data.Repositories
User friend = await this.GetByIdAsync(friendId);
- return user.Friends.Contains(friend);
+ return user.Friends.Any(x => x.Friend.Id == friendId);
}
public bool DoesUserHaveThisUsername(Guid id, string username)