aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/DevHive.Data/Interfaces/Repositories/IPostRepository.cs2
-rw-r--r--src/DevHive.Data/Repositories/PostRepository.cs13
-rw-r--r--src/DevHive.Data/Repositories/UserRepository.cs2
-rw-r--r--src/DevHive.Services/Configurations/Mapping/PostMappings.cs4
-rw-r--r--src/DevHive.Services/Models/Identity/User/UserServiceModel.cs3
-rw-r--r--src/DevHive.Services/Services/PostService.cs4
-rw-r--r--src/DevHive.Web/Models/Identity/User/UserWebModel.cs11
7 files changed, 33 insertions, 6 deletions
diff --git a/src/DevHive.Data/Interfaces/Repositories/IPostRepository.cs b/src/DevHive.Data/Interfaces/Repositories/IPostRepository.cs
index 5022df5..9f7cf85 100644
--- a/src/DevHive.Data/Interfaces/Repositories/IPostRepository.cs
+++ b/src/DevHive.Data/Interfaces/Repositories/IPostRepository.cs
@@ -8,6 +8,8 @@ namespace DevHive.Data.Interfaces.Repositories
{
public interface IPostRepository : IRepository<Post>
{
+ Task<bool> AddNewPostToCreator(Guid userId, Post post);
+
Task<Post> GetPostByCreatorAndTimeCreatedAsync(Guid issuerId, DateTime timeCreated);
Task<List<string>> GetFileUrls(Guid postId);
diff --git a/src/DevHive.Data/Repositories/PostRepository.cs b/src/DevHive.Data/Repositories/PostRepository.cs
index 31eb7d0..623a8f8 100644
--- a/src/DevHive.Data/Repositories/PostRepository.cs
+++ b/src/DevHive.Data/Repositories/PostRepository.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using DevHive.Data.Interfaces.Models;
using DevHive.Data.Interfaces.Repositories;
using DevHive.Data.Models;
using Microsoft.EntityFrameworkCore;
@@ -11,11 +12,21 @@ namespace DevHive.Data.Repositories
public class PostRepository : BaseRepository<Post>, IPostRepository
{
private readonly DevHiveContext _context;
+ private readonly IUserRepository _userRepository;
- public PostRepository(DevHiveContext context)
+ public PostRepository(DevHiveContext context, IUserRepository userRepository)
: base(context)
{
this._context = context;
+ this._userRepository = userRepository;
+ }
+
+ public async Task<bool> AddNewPostToCreator(Guid userId, Post post)
+ {
+ User user = await this._userRepository.GetByIdAsync(userId);
+ user.Posts.Add(post);
+
+ return await this.SaveChangesAsync();
}
#region Read
diff --git a/src/DevHive.Data/Repositories/UserRepository.cs b/src/DevHive.Data/Repositories/UserRepository.cs
index 4bf919e..6f33570 100644
--- a/src/DevHive.Data/Repositories/UserRepository.cs
+++ b/src/DevHive.Data/Repositories/UserRepository.cs
@@ -38,6 +38,7 @@ namespace DevHive.Data.Repositories
.Include(x => x.Roles)
.Include(x => x.Languages)
.Include(x => x.Technologies)
+ .Include(x => x.Posts)
.FirstOrDefaultAsync(x => x.Id == id);
}
@@ -48,6 +49,7 @@ namespace DevHive.Data.Repositories
.Include(x => x.Roles)
.Include(x => x.Languages)
.Include(x => x.Technologies)
+ .Include(x => x.Posts)
.FirstOrDefaultAsync(x => x.UserName == username);
}
#endregion
diff --git a/src/DevHive.Services/Configurations/Mapping/PostMappings.cs b/src/DevHive.Services/Configurations/Mapping/PostMappings.cs
index d36dbdd..13c9736 100644
--- a/src/DevHive.Services/Configurations/Mapping/PostMappings.cs
+++ b/src/DevHive.Services/Configurations/Mapping/PostMappings.cs
@@ -1,6 +1,7 @@
using DevHive.Data.Models;
using AutoMapper;
using DevHive.Services.Models.Post;
+using DevHive.Common.Models.Misc;
namespace DevHive.Services.Configurations.Mapping
{
@@ -20,6 +21,9 @@ namespace DevHive.Services.Configurations.Mapping
.ForMember(dest => dest.CreatorFirstName, src => src.MapFrom(p => p.Creator.FirstName))
.ForMember(dest => dest.CreatorLastName, src => src.MapFrom(p => p.Creator.LastName))
.ForMember(dest => dest.CreatorUsername, src => src.MapFrom(p => p.Creator.UserName));
+
+ CreateMap<Post, IdModel>()
+ .ForMember(dest => dest.Id, src => src.MapFrom(x => x.Id));
}
}
}
diff --git a/src/DevHive.Services/Models/Identity/User/UserServiceModel.cs b/src/DevHive.Services/Models/Identity/User/UserServiceModel.cs
index 7da54b8..5bf58ec 100644
--- a/src/DevHive.Services/Models/Identity/User/UserServiceModel.cs
+++ b/src/DevHive.Services/Models/Identity/User/UserServiceModel.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using DevHive.Common.Models.Misc;
using DevHive.Services.Models.Identity.Role;
using DevHive.Services.Models.Language;
using DevHive.Services.Models.Technology;
@@ -14,5 +15,7 @@ namespace DevHive.Services.Models.Identity.User
public HashSet<LanguageServiceModel> Languages { get; set; } = new();
public HashSet<TechnologyServiceModel> Technologies { get; set; } = new();
+
+ public List<IdModel> Posts { get; set; } = new();
}
}
diff --git a/src/DevHive.Services/Services/PostService.cs b/src/DevHive.Services/Services/PostService.cs
index 8a37acd..3206479 100644
--- a/src/DevHive.Services/Services/PostService.cs
+++ b/src/DevHive.Services/Services/PostService.cs
@@ -9,6 +9,7 @@ using System.Security.Claims;
using DevHive.Services.Interfaces;
using DevHive.Data.Interfaces.Repositories;
using System.Linq;
+using Microsoft.CodeAnalysis.CSharp;
namespace DevHive.Services.Services
{
@@ -49,6 +50,8 @@ namespace DevHive.Services.Services
Post newPost = await this._postRepository
.GetPostByCreatorAndTimeCreatedAsync(post.Creator.Id, post.TimeCreated);
+ await this._postRepository.AddNewPostToCreator(createPostServiceModel.CreatorId, newPost);
+
return newPost.Id;
}
else
@@ -69,7 +72,6 @@ namespace DevHive.Services.Services
readPostServiceModel.CreatorFirstName = user.FirstName;
readPostServiceModel.CreatorLastName = user.LastName;
readPostServiceModel.CreatorUsername = user.UserName;
- // readPostServiceModel.Files = await this._cloudService.GetFilesFromCloud(post.FileUrls);
return readPostServiceModel;
}
diff --git a/src/DevHive.Web/Models/Identity/User/UserWebModel.cs b/src/DevHive.Web/Models/Identity/User/UserWebModel.cs
index 4097901..1a5484a 100644
--- a/src/DevHive.Web/Models/Identity/User/UserWebModel.cs
+++ b/src/DevHive.Web/Models/Identity/User/UserWebModel.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics.CodeAnalysis;
+using DevHive.Common.Models.Misc;
using DevHive.Web.Models.Identity.Role;
using DevHive.Web.Models.Language;
using DevHive.Web.Models.Technology;
@@ -11,18 +12,20 @@ namespace DevHive.Web.Models.Identity.User
{
[NotNull]
[Required]
- public HashSet<RoleWebModel> Roles { get; set; } = new HashSet<RoleWebModel>();
+ public HashSet<RoleWebModel> Roles { get; set; } = new();
[NotNull]
[Required]
- public HashSet<UsernameWebModel> Friends { get; set; } = new HashSet<UsernameWebModel>();
+ public HashSet<UsernameWebModel> Friends { get; set; } = new();
[NotNull]
[Required]
- public HashSet<LanguageWebModel> Languages { get; set; } = new HashSet<LanguageWebModel>();
+ public HashSet<LanguageWebModel> Languages { get; set; } = new();
[NotNull]
[Required]
- public HashSet<TechnologyWebModel> Technologies { get; set; } = new HashSet<TechnologyWebModel>();
+ public HashSet<TechnologyWebModel> Technologies { get; set; } = new();
+
+ public List<IdModel> Posts { get; set; } = new();
}
}