From 98e17766b203734a1817eed94338e2d25f4395f7 Mon Sep 17 00:00:00 2001 From: transtrike Date: Sat, 13 Feb 2021 16:20:18 +0200 Subject: Project Restructure P.1 --- src/Data/DevHive.Data.Models/ProfilePicture.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/Data/DevHive.Data.Models/ProfilePicture.cs (limited to 'src/Data/DevHive.Data.Models/ProfilePicture.cs') diff --git a/src/Data/DevHive.Data.Models/ProfilePicture.cs b/src/Data/DevHive.Data.Models/ProfilePicture.cs new file mode 100644 index 0000000..d5cc397 --- /dev/null +++ b/src/Data/DevHive.Data.Models/ProfilePicture.cs @@ -0,0 +1,15 @@ +using System; +using DevHive.Data.Interfaces.Models; + +namespace DevHive.Data.Models +{ + public class ProfilePicture: IProfilePicture + { + public Guid Id { get; set; } + + public Guid UserId { get; set; } + public User User { get; set; } + + public string PictureURL { get; set; } + } +} -- cgit v1.2.3 From c5b27c7eb62cc5428a0c01ffcf381f429d776122 Mon Sep 17 00:00:00 2001 From: transtrike Date: Sat, 13 Feb 2021 17:57:54 +0200 Subject: Removed all references --- src/Data/DevHive.Data.Models/Comment.cs | 2 +- .../DevHive.Data.Models/DevHive.Data.Models.csproj | 6 - .../DevHive.Data.Models/Interfaces/IComment.cs | 16 ++ .../DevHive.Data.Models/Interfaces/ILanguage.cs | 11 + src/Data/DevHive.Data.Models/Interfaces/IModel.cs | 9 + src/Data/DevHive.Data.Models/Interfaces/IPost.cs | 22 ++ .../Interfaces/IProfilePicture.cs | 13 + src/Data/DevHive.Data.Models/Interfaces/IRating.cs | 14 + src/Data/DevHive.Data.Models/Interfaces/IRole.cs | 10 + .../DevHive.Data.Models/Interfaces/ITechnology.cs | 11 + src/Data/DevHive.Data.Models/Interfaces/IUser.cs | 21 ++ src/Data/DevHive.Data.Models/Language.cs | 2 +- src/Data/DevHive.Data.Models/Post.cs | 2 +- src/Data/DevHive.Data.Models/ProfilePicture.cs | 2 +- src/Data/DevHive.Data.Models/Rating.cs | 4 +- src/Data/DevHive.Data.Models/Role.cs | 2 +- src/Data/DevHive.Data.Models/Technology.cs | 2 +- src/Data/DevHive.Data.Models/User.cs | 2 +- .../DevHive.Data.Tests/DevHive.Data.Tests.csproj | 8 - src/Data/DevHive.Data/DevHive.Data.csproj | 8 - .../DevHive.Data/Interfaces/ICommentRepository.cs | 16 ++ .../DevHive.Data/Interfaces/IFeedRepository.cs | 13 + .../DevHive.Data/Interfaces/ILanguageRepository.cs | 17 ++ .../DevHive.Data/Interfaces/IPostRepository.cs | 19 ++ .../DevHive.Data/Interfaces/IRatingRepository.cs | 13 + src/Data/DevHive.Data/Interfaces/IRepository.cs | 21 ++ .../DevHive.Data/Interfaces/IRoleRepository.cs | 15 + .../Interfaces/ITechnologyRepository.cs | 17 ++ .../DevHive.Data/Interfaces/IUserRepository.cs | 22 ++ .../DevHive.Data/Interfaces/Models/IComment.cs | 16 -- .../DevHive.Data/Interfaces/Models/ILanguage.cs | 11 - src/Data/DevHive.Data/Interfaces/Models/IModel.cs | 9 - src/Data/DevHive.Data/Interfaces/Models/IPost.cs | 22 -- .../Interfaces/Models/IProfilePicture.cs | 13 - src/Data/DevHive.Data/Interfaces/Models/IRating.cs | 14 - src/Data/DevHive.Data/Interfaces/Models/IRole.cs | 10 - .../DevHive.Data/Interfaces/Models/ITechnology.cs | 11 - src/Data/DevHive.Data/Interfaces/Models/IUser.cs | 21 -- .../Interfaces/Repositories/ICommentRepository.cs | 16 -- .../Interfaces/Repositories/IFeedRepository.cs | 13 - .../Interfaces/Repositories/ILanguageRepository.cs | 17 -- .../Interfaces/Repositories/IPostRepository.cs | 19 -- .../Interfaces/Repositories/IRatingRepository.cs | 13 - .../Interfaces/Repositories/IRepository.cs | 21 -- .../Interfaces/Repositories/IRoleRepository.cs | 15 - .../Repositories/ITechnologyRepository.cs | 17 -- .../Interfaces/Repositories/IUserRepository.cs | 22 -- src/DevHive.sln | 304 ++++++++++----------- .../DevHive.Services.Models.csproj | 4 +- .../Identity/Role/CreateRoleServiceModel.cs | 10 - .../Identity/Role/RoleServiceModel.cs | 7 - .../Identity/Role/UpdateRoleServiceModel.cs | 10 - .../Identity/User/BaseUserServiceModel.cs | 10 - .../Identity/User/FriendServiceModel.cs | 10 - .../Identity/User/LoginServiceModel.cs | 8 - .../Identity/User/ProfilePictureServiceModel.cs | 7 - .../Identity/User/RegisterServiceModel.cs | 15 - .../Identity/User/UpdateFriendServiceModel.cs | 10 - .../User/UpdateProfilePictureServiceModel.cs | 12 - .../Identity/User/UpdateUserServiceModel.cs | 26 -- .../Identity/User/UserServiceModel.cs | 23 -- .../Role/CreateRoleServiceModel.cs | 10 + .../Role/RoleServiceModel.cs | 7 + .../Role/UpdateRoleServiceModel.cs | 10 + .../User/BaseUserServiceModel.cs | 10 + .../User/FriendServiceModel.cs | 10 + .../User/LoginServiceModel.cs | 8 + .../User/ProfilePictureServiceModel.cs | 7 + .../User/RegisterServiceModel.cs | 15 + .../User/UpdateFriendServiceModel.cs | 10 + .../User/UpdateProfilePictureServiceModel.cs | 12 + .../User/UpdateUserServiceModel.cs | 26 ++ .../User/UserServiceModel.cs | 23 ++ .../DevHive.Services.Tests.csproj | 8 - .../DevHive.Services.Tests/RoleService.Tests.cs | 2 +- .../DevHive.Services.Tests/UserService.Tests.cs | 2 +- .../Configurations/Mapping/RoleMapings.cs | 2 +- .../Configurations/Mapping/UserMappings.cs | 2 +- .../DevHive.Services/DevHive.Services.csproj | 6 - .../DevHive.Services/Interfaces/IRoleService.cs | 2 +- .../DevHive.Services/Interfaces/IUserService.cs | 2 +- .../DevHive.Services/Services/RoleService.cs | 2 +- .../DevHive.Services/Services/UserService.cs | 2 +- .../DevHive.Web.Models/DevHive.Web.Models.csproj | 8 +- .../Identity/Role/CreateRoleWebModel.cs | 14 - .../Identity/Role/RoleWebModel.cs | 14 - .../Identity/Role/UpdateRoleWebModel.cs | 15 - .../Identity/User/BaseUserWebModel.cs | 34 --- .../Identity/User/LoginWebModel.cs | 20 -- .../Identity/User/ProfilePictureWebModel.cs | 7 - .../Identity/User/RegisterWebModel.cs | 14 - .../Identity/User/TokenWebModel.cs | 12 - .../Identity/User/UpdateProfilePictureWebModel.cs | 9 - .../Identity/User/UpdateUserWebModel.cs | 34 --- .../Identity/User/UserWebModel.cs | 33 --- .../Identity/User/UsernameWebModel.cs | 15 - .../Post/Rating/RatePostWebModel.cs | 11 - .../Post/Rating/ReadPostRatingWebModel.cs | 15 - .../DevHive.Web.Models/Rating/RatePostWebModel.cs | 11 + .../Rating/ReadPostRatingWebModel.cs | 15 + .../DevHive.Web.Models/Role/CreateRoleWebModel.cs | 14 + src/Web/DevHive.Web.Models/Role/RoleWebModel.cs | 14 + .../DevHive.Web.Models/Role/UpdateRoleWebModel.cs | 15 + .../DevHive.Web.Models/User/BaseUserWebModel.cs | 34 +++ src/Web/DevHive.Web.Models/User/LoginWebModel.cs | 20 ++ .../User/ProfilePictureWebModel.cs | 7 + .../DevHive.Web.Models/User/RegisterWebModel.cs | 14 + src/Web/DevHive.Web.Models/User/TokenWebModel.cs | 12 + .../User/UpdateProfilePictureWebModel.cs | 9 + .../DevHive.Web.Models/User/UpdateUserWebModel.cs | 34 +++ src/Web/DevHive.Web.Models/User/UserWebModel.cs | 33 +++ .../DevHive.Web.Models/User/UsernameWebModel.cs | 15 + src/Web/DevHive.Web.Tests/DevHive.Web.Tests.csproj | 7 - src/Web/DevHive.Web.Tests/RoleController.Tests.cs | 4 +- src/Web/DevHive.Web.Tests/UserController.Tests.cs | 4 +- .../Configurations/Mapping/RoleMappings.cs | 4 +- .../Configurations/Mapping/UserMappings.cs | 4 +- src/Web/DevHive.Web/Controllers/RoleController.cs | 4 +- src/Web/DevHive.Web/Controllers/UserController.cs | 4 +- src/Web/DevHive.Web/DevHive.Web.csproj | 7 - 120 files changed, 855 insertions(+), 919 deletions(-) create mode 100644 src/Data/DevHive.Data.Models/Interfaces/IComment.cs create mode 100644 src/Data/DevHive.Data.Models/Interfaces/ILanguage.cs create mode 100644 src/Data/DevHive.Data.Models/Interfaces/IModel.cs create mode 100644 src/Data/DevHive.Data.Models/Interfaces/IPost.cs create mode 100644 src/Data/DevHive.Data.Models/Interfaces/IProfilePicture.cs create mode 100644 src/Data/DevHive.Data.Models/Interfaces/IRating.cs create mode 100644 src/Data/DevHive.Data.Models/Interfaces/IRole.cs create mode 100644 src/Data/DevHive.Data.Models/Interfaces/ITechnology.cs create mode 100644 src/Data/DevHive.Data.Models/Interfaces/IUser.cs create mode 100644 src/Data/DevHive.Data/Interfaces/ICommentRepository.cs create mode 100644 src/Data/DevHive.Data/Interfaces/IFeedRepository.cs create mode 100644 src/Data/DevHive.Data/Interfaces/ILanguageRepository.cs create mode 100644 src/Data/DevHive.Data/Interfaces/IPostRepository.cs create mode 100644 src/Data/DevHive.Data/Interfaces/IRatingRepository.cs create mode 100644 src/Data/DevHive.Data/Interfaces/IRepository.cs create mode 100644 src/Data/DevHive.Data/Interfaces/IRoleRepository.cs create mode 100644 src/Data/DevHive.Data/Interfaces/ITechnologyRepository.cs create mode 100644 src/Data/DevHive.Data/Interfaces/IUserRepository.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Models/IComment.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Models/ILanguage.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Models/IModel.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Models/IPost.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Models/IProfilePicture.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Models/IRating.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Models/IRole.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Models/ITechnology.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Models/IUser.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Repositories/ICommentRepository.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Repositories/IFeedRepository.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Repositories/ILanguageRepository.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Repositories/IPostRepository.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Repositories/IRatingRepository.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Repositories/IRepository.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Repositories/IRoleRepository.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Repositories/ITechnologyRepository.cs delete mode 100644 src/Data/DevHive.Data/Interfaces/Repositories/IUserRepository.cs delete mode 100644 src/Services/DevHive.Services.Models/Identity/Role/CreateRoleServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/Identity/Role/RoleServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/Identity/Role/UpdateRoleServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/Identity/User/BaseUserServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/Identity/User/FriendServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/Identity/User/LoginServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/Identity/User/ProfilePictureServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/Identity/User/RegisterServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/Identity/User/UpdateFriendServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/Identity/User/UpdateProfilePictureServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/Identity/User/UpdateUserServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/Identity/User/UserServiceModel.cs create mode 100644 src/Services/DevHive.Services.Models/Role/CreateRoleServiceModel.cs create mode 100644 src/Services/DevHive.Services.Models/Role/RoleServiceModel.cs create mode 100644 src/Services/DevHive.Services.Models/Role/UpdateRoleServiceModel.cs create mode 100644 src/Services/DevHive.Services.Models/User/BaseUserServiceModel.cs create mode 100644 src/Services/DevHive.Services.Models/User/FriendServiceModel.cs create mode 100644 src/Services/DevHive.Services.Models/User/LoginServiceModel.cs create mode 100644 src/Services/DevHive.Services.Models/User/ProfilePictureServiceModel.cs create mode 100644 src/Services/DevHive.Services.Models/User/RegisterServiceModel.cs create mode 100644 src/Services/DevHive.Services.Models/User/UpdateFriendServiceModel.cs create mode 100644 src/Services/DevHive.Services.Models/User/UpdateProfilePictureServiceModel.cs create mode 100644 src/Services/DevHive.Services.Models/User/UpdateUserServiceModel.cs create mode 100644 src/Services/DevHive.Services.Models/User/UserServiceModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Identity/Role/CreateRoleWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Identity/Role/RoleWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Identity/Role/UpdateRoleWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Identity/User/BaseUserWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Identity/User/LoginWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Identity/User/ProfilePictureWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Identity/User/RegisterWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Identity/User/TokenWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Identity/User/UpdateProfilePictureWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Identity/User/UpdateUserWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Identity/User/UserWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Identity/User/UsernameWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Post/Rating/RatePostWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/Post/Rating/ReadPostRatingWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/Rating/RatePostWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/Rating/ReadPostRatingWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/Role/CreateRoleWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/Role/RoleWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/Role/UpdateRoleWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/User/BaseUserWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/User/LoginWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/User/ProfilePictureWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/User/RegisterWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/User/TokenWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/User/UpdateProfilePictureWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/User/UpdateUserWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/User/UserWebModel.cs create mode 100644 src/Web/DevHive.Web.Models/User/UsernameWebModel.cs (limited to 'src/Data/DevHive.Data.Models/ProfilePicture.cs') diff --git a/src/Data/DevHive.Data.Models/Comment.cs b/src/Data/DevHive.Data.Models/Comment.cs index e2bb21d..10a3aaf 100644 --- a/src/Data/DevHive.Data.Models/Comment.cs +++ b/src/Data/DevHive.Data.Models/Comment.cs @@ -1,5 +1,5 @@ using System; -using DevHive.Data.Interfaces.Models; +using DevHive.Data.Models.Interfaces; namespace DevHive.Data.Models { diff --git a/src/Data/DevHive.Data.Models/DevHive.Data.Models.csproj b/src/Data/DevHive.Data.Models/DevHive.Data.Models.csproj index ebf5f9c..628e361 100644 --- a/src/Data/DevHive.Data.Models/DevHive.Data.Models.csproj +++ b/src/Data/DevHive.Data.Models/DevHive.Data.Models.csproj @@ -1,11 +1,5 @@ - net5.0 - - - - - diff --git a/src/Data/DevHive.Data.Models/Interfaces/IComment.cs b/src/Data/DevHive.Data.Models/Interfaces/IComment.cs new file mode 100644 index 0000000..c8f1f6a --- /dev/null +++ b/src/Data/DevHive.Data.Models/Interfaces/IComment.cs @@ -0,0 +1,16 @@ +using System; +using DevHive.Data.Models; + +namespace DevHive.Data.Models.Interfaces +{ + public interface IComment : IModel + { + Post Post { get; set; } + + User Creator { get; set; } + + string Message { get; set; } + + DateTime TimeCreated { get; set; } + } +} diff --git a/src/Data/DevHive.Data.Models/Interfaces/ILanguage.cs b/src/Data/DevHive.Data.Models/Interfaces/ILanguage.cs new file mode 100644 index 0000000..06e11b4 --- /dev/null +++ b/src/Data/DevHive.Data.Models/Interfaces/ILanguage.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using DevHive.Data.Models; + +namespace DevHive.Data.Models.Interfaces +{ + public interface ILanguage : IModel + { + string Name { get; set; } + HashSet Users { get; set; } + } +} diff --git a/src/Data/DevHive.Data.Models/Interfaces/IModel.cs b/src/Data/DevHive.Data.Models/Interfaces/IModel.cs new file mode 100644 index 0000000..3226dce --- /dev/null +++ b/src/Data/DevHive.Data.Models/Interfaces/IModel.cs @@ -0,0 +1,9 @@ +using System; + +namespace DevHive.Data.Models.Interfaces +{ + public interface IModel + { + Guid Id { get; set; } + } +} diff --git a/src/Data/DevHive.Data.Models/Interfaces/IPost.cs b/src/Data/DevHive.Data.Models/Interfaces/IPost.cs new file mode 100644 index 0000000..b1f0cb7 --- /dev/null +++ b/src/Data/DevHive.Data.Models/Interfaces/IPost.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using DevHive.Data.Models; +using DevHive.Data.RelationModels; + +namespace DevHive.Data.Models.Interfaces +{ + public interface IPost : IModel + { + User Creator { get; set; } + + string Message { get; set; } + + DateTime TimeCreated { get; set; } + + List Comments { get; set; } + + // Rating Rating { get; set; } + + List Attachments { get; set; } + } +} diff --git a/src/Data/DevHive.Data.Models/Interfaces/IProfilePicture.cs b/src/Data/DevHive.Data.Models/Interfaces/IProfilePicture.cs new file mode 100644 index 0000000..550af24 --- /dev/null +++ b/src/Data/DevHive.Data.Models/Interfaces/IProfilePicture.cs @@ -0,0 +1,13 @@ +using System; +using DevHive.Data.Models; + +namespace DevHive.Data.Models.Interfaces +{ + public interface IProfilePicture : IModel + { + Guid UserId { get; set; } + User User { get; set; } + + string PictureURL { get; set; } + } +} diff --git a/src/Data/DevHive.Data.Models/Interfaces/IRating.cs b/src/Data/DevHive.Data.Models/Interfaces/IRating.cs new file mode 100644 index 0000000..1b081b0 --- /dev/null +++ b/src/Data/DevHive.Data.Models/Interfaces/IRating.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; +using DevHive.Data.Models; + +namespace DevHive.Data.Models.Interfaces +{ + public interface IRating : IModel + { + // Post Post { get; set; } + + int Rate { get; set; } + + // HashSet UsersThatRated { get; set; } + } +} diff --git a/src/Data/DevHive.Data.Models/Interfaces/IRole.cs b/src/Data/DevHive.Data.Models/Interfaces/IRole.cs new file mode 100644 index 0000000..3a87e12 --- /dev/null +++ b/src/Data/DevHive.Data.Models/Interfaces/IRole.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using DevHive.Data.Models; + +namespace DevHive.Data.Models.Interfaces +{ + public interface IRole + { + HashSet Users { get; set; } + } +} diff --git a/src/Data/DevHive.Data.Models/Interfaces/ITechnology.cs b/src/Data/DevHive.Data.Models/Interfaces/ITechnology.cs new file mode 100644 index 0000000..575aea6 --- /dev/null +++ b/src/Data/DevHive.Data.Models/Interfaces/ITechnology.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using DevHive.Data.Models; + +namespace DevHive.Data.Models.Interfaces +{ + public interface ITechnology : IModel + { + string Name { get; set; } + HashSet Users { get; set; } + } +} diff --git a/src/Data/DevHive.Data.Models/Interfaces/IUser.cs b/src/Data/DevHive.Data.Models/Interfaces/IUser.cs new file mode 100644 index 0000000..7606ba2 --- /dev/null +++ b/src/Data/DevHive.Data.Models/Interfaces/IUser.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using DevHive.Data.Models; +using DevHive.Data.RelationModels; + +namespace DevHive.Data.Models.Interfaces +{ + public interface IUser : IModel + { + string FirstName { get; set; } + + string LastName { get; set; } + + ProfilePicture ProfilePicture { get; set; } + + HashSet Languages { get; set; } + + HashSet Technologies { get; set; } + + HashSet Roles { get; set; } + } +} diff --git a/src/Data/DevHive.Data.Models/Language.cs b/src/Data/DevHive.Data.Models/Language.cs index 7ad8ff2..fdcfb07 100644 --- a/src/Data/DevHive.Data.Models/Language.cs +++ b/src/Data/DevHive.Data.Models/Language.cs @@ -1,6 +1,6 @@ using System; using System.Collections.Generic; -using DevHive.Data.Interfaces.Models; +using DevHive.Data.Models.Interfaces; namespace DevHive.Data.Models { diff --git a/src/Data/DevHive.Data.Models/Post.cs b/src/Data/DevHive.Data.Models/Post.cs index 3f3d8c9..5138d19 100644 --- a/src/Data/DevHive.Data.Models/Post.cs +++ b/src/Data/DevHive.Data.Models/Post.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; -using DevHive.Data.Interfaces.Models; +using DevHive.Data.Models.Interfaces; using DevHive.Data.RelationModels; namespace DevHive.Data.Models diff --git a/src/Data/DevHive.Data.Models/ProfilePicture.cs b/src/Data/DevHive.Data.Models/ProfilePicture.cs index d5cc397..c5dec68 100644 --- a/src/Data/DevHive.Data.Models/ProfilePicture.cs +++ b/src/Data/DevHive.Data.Models/ProfilePicture.cs @@ -1,5 +1,5 @@ using System; -using DevHive.Data.Interfaces.Models; +using DevHive.Data.Models.Interfaces; namespace DevHive.Data.Models { diff --git a/src/Data/DevHive.Data.Models/Rating.cs b/src/Data/DevHive.Data.Models/Rating.cs index e1bedd2..13fdbce 100644 --- a/src/Data/DevHive.Data.Models/Rating.cs +++ b/src/Data/DevHive.Data.Models/Rating.cs @@ -1,6 +1,6 @@ using System; using System.Collections.Generic; -using DevHive.Data.Interfaces.Models; +using DevHive.Data.Models.Interfaces; namespace DevHive.Data.Models { @@ -11,7 +11,7 @@ namespace DevHive.Data.Models public Guid PostId { get; set; } public Post Post { get; set; } - + public int Rate { get; set; } } } diff --git a/src/Data/DevHive.Data.Models/Role.cs b/src/Data/DevHive.Data.Models/Role.cs index 259d867..0df556c 100644 --- a/src/Data/DevHive.Data.Models/Role.cs +++ b/src/Data/DevHive.Data.Models/Role.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Collections.Generic; -using DevHive.Data.Interfaces.Models; +using DevHive.Data.Models.Interfaces; using Microsoft.AspNetCore.Identity; using System; diff --git a/src/Data/DevHive.Data.Models/Technology.cs b/src/Data/DevHive.Data.Models/Technology.cs index 6f98f0b..9354d5b 100644 --- a/src/Data/DevHive.Data.Models/Technology.cs +++ b/src/Data/DevHive.Data.Models/Technology.cs @@ -1,6 +1,6 @@ using System; using System.Collections.Generic; -using DevHive.Data.Interfaces.Models; +using DevHive.Data.Models.Interfaces; namespace DevHive.Data.Models { diff --git a/src/Data/DevHive.Data.Models/User.cs b/src/Data/DevHive.Data.Models/User.cs index 983d073..806397a 100644 --- a/src/Data/DevHive.Data.Models/User.cs +++ b/src/Data/DevHive.Data.Models/User.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; -using DevHive.Data.Interfaces.Models; +using DevHive.Data.Models.Interfaces; using DevHive.Data.RelationModels; using Microsoft.AspNetCore.Identity; diff --git a/src/Data/DevHive.Data.Tests/DevHive.Data.Tests.csproj b/src/Data/DevHive.Data.Tests/DevHive.Data.Tests.csproj index 42a3273..d6d0876 100644 --- a/src/Data/DevHive.Data.Tests/DevHive.Data.Tests.csproj +++ b/src/Data/DevHive.Data.Tests/DevHive.Data.Tests.csproj @@ -14,14 +14,6 @@ - - - - - - - - true latest diff --git a/src/Data/DevHive.Data/DevHive.Data.csproj b/src/Data/DevHive.Data/DevHive.Data.csproj index 62b61dc..e8f38ee 100644 --- a/src/Data/DevHive.Data/DevHive.Data.csproj +++ b/src/Data/DevHive.Data/DevHive.Data.csproj @@ -18,14 +18,6 @@ - - - - - - - - true latest diff --git a/src/Data/DevHive.Data/Interfaces/ICommentRepository.cs b/src/Data/DevHive.Data/Interfaces/ICommentRepository.cs new file mode 100644 index 0000000..f85849f --- /dev/null +++ b/src/Data/DevHive.Data/Interfaces/ICommentRepository.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using DevHive.Data.Models; +using DevHive.Data.Repositories.Interfaces; + +namespace DevHive.Data.Interfaces +{ + public interface ICommentRepository : IRepository + { + Task> GetPostComments(Guid postId); + + Task DoesCommentExist(Guid id); + Task GetCommentByIssuerAndTimeCreatedAsync(Guid issuerId, DateTime timeCreated); + } +} diff --git a/src/Data/DevHive.Data/Interfaces/IFeedRepository.cs b/src/Data/DevHive.Data/Interfaces/IFeedRepository.cs new file mode 100644 index 0000000..bda51fa --- /dev/null +++ b/src/Data/DevHive.Data/Interfaces/IFeedRepository.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using DevHive.Data.Models; + +namespace DevHive.Data.Interfaces +{ + public interface IFeedRepository + { + Task> GetFriendsPosts(List friendsList, DateTime firstRequestIssued, int pageNumber, int pageSize); + Task> GetUsersPosts(User user, DateTime firstRequestIssued, int pageNumber, int pageSize); + } +} diff --git a/src/Data/DevHive.Data/Interfaces/ILanguageRepository.cs b/src/Data/DevHive.Data/Interfaces/ILanguageRepository.cs new file mode 100644 index 0000000..4771f91 --- /dev/null +++ b/src/Data/DevHive.Data/Interfaces/ILanguageRepository.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using DevHive.Data.Models; +using DevHive.Data.Repositories.Interfaces; + +namespace DevHive.Data.Interfaces +{ + public interface ILanguageRepository : IRepository + { + HashSet GetLanguages(); + Task GetByNameAsync(string name); + + Task DoesLanguageExistAsync(Guid id); + Task DoesLanguageNameExistAsync(string languageName); + } +} diff --git a/src/Data/DevHive.Data/Interfaces/IPostRepository.cs b/src/Data/DevHive.Data/Interfaces/IPostRepository.cs new file mode 100644 index 0000000..c24d596 --- /dev/null +++ b/src/Data/DevHive.Data/Interfaces/IPostRepository.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using DevHive.Data.Models; +using DevHive.Data.Repositories.Interfaces; + +namespace DevHive.Data.Interfaces +{ + public interface IPostRepository : IRepository + { + Task AddNewPostToCreator(Guid userId, Post post); + + Task GetPostByCreatorAndTimeCreatedAsync(Guid issuerId, DateTime timeCreated); + Task> GetFileUrls(Guid postId); + + Task DoesPostExist(Guid postId); + Task DoesPostHaveFiles(Guid postId); + } +} diff --git a/src/Data/DevHive.Data/Interfaces/IRatingRepository.cs b/src/Data/DevHive.Data/Interfaces/IRatingRepository.cs new file mode 100644 index 0000000..b5aff88 --- /dev/null +++ b/src/Data/DevHive.Data/Interfaces/IRatingRepository.cs @@ -0,0 +1,13 @@ +using System; +using System.Threading.Tasks; +using DevHive.Data.Models; +using DevHive.Data.Repositories.Interfaces; + +namespace DevHive.Data.Interfaces +{ + public interface IRatingRepository : IRepository + { + Task GetRatingByPostId(Guid postId); + Task UserRatedPost(Guid userId, Guid postId); + } +} diff --git a/src/Data/DevHive.Data/Interfaces/IRepository.cs b/src/Data/DevHive.Data/Interfaces/IRepository.cs new file mode 100644 index 0000000..0d11cd3 --- /dev/null +++ b/src/Data/DevHive.Data/Interfaces/IRepository.cs @@ -0,0 +1,21 @@ +using System; +using System.Threading.Tasks; + +namespace DevHive.Data.Repositories.Interfaces +{ + public interface IRepository + where TEntity : class + { + //Add Entity to database + Task AddAsync(TEntity entity); + + //Find entity by id + Task GetByIdAsync(Guid id); + + //Modify Entity from database + Task EditAsync(Guid id, TEntity newEntity); + + //Delete Entity from database + Task DeleteAsync(TEntity entity); + } +} diff --git a/src/Data/DevHive.Data/Interfaces/IRoleRepository.cs b/src/Data/DevHive.Data/Interfaces/IRoleRepository.cs new file mode 100644 index 0000000..a1080bb --- /dev/null +++ b/src/Data/DevHive.Data/Interfaces/IRoleRepository.cs @@ -0,0 +1,15 @@ +using System; +using System.Threading.Tasks; +using DevHive.Data.Models; +using DevHive.Data.Repositories.Interfaces; + +namespace DevHive.Data.Interfaces +{ + public interface IRoleRepository : IRepository + { + Task GetByNameAsync(string name); + + Task DoesNameExist(string name); + Task DoesRoleExist(Guid id); + } +} diff --git a/src/Data/DevHive.Data/Interfaces/ITechnologyRepository.cs b/src/Data/DevHive.Data/Interfaces/ITechnologyRepository.cs new file mode 100644 index 0000000..3e55b2d --- /dev/null +++ b/src/Data/DevHive.Data/Interfaces/ITechnologyRepository.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using DevHive.Data.Models; +using DevHive.Data.Repositories.Interfaces; + +namespace DevHive.Data.Interfaces +{ + public interface ITechnologyRepository : IRepository + { + Task GetByNameAsync(string name); + HashSet GetTechnologies(); + + Task DoesTechnologyExistAsync(Guid id); + Task DoesTechnologyNameExistAsync(string technologyName); + } +} diff --git a/src/Data/DevHive.Data/Interfaces/IUserRepository.cs b/src/Data/DevHive.Data/Interfaces/IUserRepository.cs new file mode 100644 index 0000000..917809d --- /dev/null +++ b/src/Data/DevHive.Data/Interfaces/IUserRepository.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using DevHive.Data.Models; +using DevHive.Data.Repositories.Interfaces; + +namespace DevHive.Data.Interfaces +{ + public interface IUserRepository : IRepository + { + //Read + Task GetByUsernameAsync(string username); + Task UpdateProfilePicture(Guid userId, string pictureUrl); + + //Validations + Task ValidateFriendsCollectionAsync(List usernames); + Task DoesEmailExistAsync(string email); + Task DoesUserExistAsync(Guid id); + Task DoesUsernameExistAsync(string username); + bool DoesUserHaveThisUsername(Guid id, string username); + } +} diff --git a/src/Data/DevHive.Data/Interfaces/Models/IComment.cs b/src/Data/DevHive.Data/Interfaces/Models/IComment.cs deleted file mode 100644 index 97c1578..0000000 --- a/src/Data/DevHive.Data/Interfaces/Models/IComment.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using DevHive.Data.Models; - -namespace DevHive.Data.Interfaces.Models -{ - public interface IComment : IModel - { - Post Post { get; set; } - - User Creator { get; set; } - - string Message { get; set; } - - DateTime TimeCreated { get; set; } - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Models/ILanguage.cs b/src/Data/DevHive.Data/Interfaces/Models/ILanguage.cs deleted file mode 100644 index 9eed09d..0000000 --- a/src/Data/DevHive.Data/Interfaces/Models/ILanguage.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; -using DevHive.Data.Models; - -namespace DevHive.Data.Interfaces.Models -{ - public interface ILanguage : IModel - { - string Name { get; set; } - HashSet Users { get; set; } - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Models/IModel.cs b/src/Data/DevHive.Data/Interfaces/Models/IModel.cs deleted file mode 100644 index f903af3..0000000 --- a/src/Data/DevHive.Data/Interfaces/Models/IModel.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; - -namespace DevHive.Data.Interfaces.Models -{ - public interface IModel - { - Guid Id { get; set; } - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Models/IPost.cs b/src/Data/DevHive.Data/Interfaces/Models/IPost.cs deleted file mode 100644 index 712d955..0000000 --- a/src/Data/DevHive.Data/Interfaces/Models/IPost.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using DevHive.Data.Models; -using DevHive.Data.RelationModels; - -namespace DevHive.Data.Interfaces.Models -{ - public interface IPost : IModel - { - User Creator { get; set; } - - string Message { get; set; } - - DateTime TimeCreated { get; set; } - - List Comments { get; set; } - - // Rating Rating { get; set; } - - List Attachments { get; set; } - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Models/IProfilePicture.cs b/src/Data/DevHive.Data/Interfaces/Models/IProfilePicture.cs deleted file mode 100644 index c3fcbea..0000000 --- a/src/Data/DevHive.Data/Interfaces/Models/IProfilePicture.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using DevHive.Data.Models; - -namespace DevHive.Data.Interfaces.Models -{ - public interface IProfilePicture : IModel - { - Guid UserId { get; set; } - User User { get; set; } - - string PictureURL { get; set; } - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Models/IRating.cs b/src/Data/DevHive.Data/Interfaces/Models/IRating.cs deleted file mode 100644 index d1b968f..0000000 --- a/src/Data/DevHive.Data/Interfaces/Models/IRating.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; -using DevHive.Data.Models; - -namespace DevHive.Data.Interfaces.Models -{ - public interface IRating : IModel - { - // Post Post { get; set; } - - int Rate { get; set; } - - // HashSet UsersThatRated { get; set; } - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Models/IRole.cs b/src/Data/DevHive.Data/Interfaces/Models/IRole.cs deleted file mode 100644 index c8b7068..0000000 --- a/src/Data/DevHive.Data/Interfaces/Models/IRole.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Collections.Generic; -using DevHive.Data.Models; - -namespace DevHive.Data.Interfaces.Models -{ - public interface IRole - { - HashSet Users { get; set; } - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Models/ITechnology.cs b/src/Data/DevHive.Data/Interfaces/Models/ITechnology.cs deleted file mode 100644 index 153f75f..0000000 --- a/src/Data/DevHive.Data/Interfaces/Models/ITechnology.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; -using DevHive.Data.Models; - -namespace DevHive.Data.Interfaces.Models -{ - public interface ITechnology : IModel - { - string Name { get; set; } - HashSet Users { get; set; } - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Models/IUser.cs b/src/Data/DevHive.Data/Interfaces/Models/IUser.cs deleted file mode 100644 index fcd741c..0000000 --- a/src/Data/DevHive.Data/Interfaces/Models/IUser.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections.Generic; -using DevHive.Data.Models; -using DevHive.Data.RelationModels; - -namespace DevHive.Data.Interfaces.Models -{ - public interface IUser : IModel - { - string FirstName { get; set; } - - string LastName { get; set; } - - ProfilePicture ProfilePicture { get; set; } - - HashSet Languages { get; set; } - - HashSet Technologies { get; set; } - - HashSet Roles { get; set; } - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Repositories/ICommentRepository.cs b/src/Data/DevHive.Data/Interfaces/Repositories/ICommentRepository.cs deleted file mode 100644 index 267f251..0000000 --- a/src/Data/DevHive.Data/Interfaces/Repositories/ICommentRepository.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using DevHive.Data.Models; -using DevHive.Data.Repositories.Interfaces; - -namespace DevHive.Data.Interfaces.Repositories -{ - public interface ICommentRepository : IRepository - { - Task> GetPostComments(Guid postId); - - Task DoesCommentExist(Guid id); - Task GetCommentByIssuerAndTimeCreatedAsync(Guid issuerId, DateTime timeCreated); - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Repositories/IFeedRepository.cs b/src/Data/DevHive.Data/Interfaces/Repositories/IFeedRepository.cs deleted file mode 100644 index 7262510..0000000 --- a/src/Data/DevHive.Data/Interfaces/Repositories/IFeedRepository.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using DevHive.Data.Models; - -namespace DevHive.Data.Interfaces.Repositories -{ - public interface IFeedRepository - { - Task> GetFriendsPosts(List friendsList, DateTime firstRequestIssued, int pageNumber, int pageSize); - Task> GetUsersPosts(User user, DateTime firstRequestIssued, int pageNumber, int pageSize); - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Repositories/ILanguageRepository.cs b/src/Data/DevHive.Data/Interfaces/Repositories/ILanguageRepository.cs deleted file mode 100644 index db2949a..0000000 --- a/src/Data/DevHive.Data/Interfaces/Repositories/ILanguageRepository.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using DevHive.Data.Models; -using DevHive.Data.Repositories.Interfaces; - -namespace DevHive.Data.Interfaces.Repositories -{ - public interface ILanguageRepository : IRepository - { - HashSet GetLanguages(); - Task GetByNameAsync(string name); - - Task DoesLanguageExistAsync(Guid id); - Task DoesLanguageNameExistAsync(string languageName); - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Repositories/IPostRepository.cs b/src/Data/DevHive.Data/Interfaces/Repositories/IPostRepository.cs deleted file mode 100644 index 9f7cf85..0000000 --- a/src/Data/DevHive.Data/Interfaces/Repositories/IPostRepository.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using DevHive.Data.Models; -using DevHive.Data.Repositories.Interfaces; - -namespace DevHive.Data.Interfaces.Repositories -{ - public interface IPostRepository : IRepository - { - Task AddNewPostToCreator(Guid userId, Post post); - - Task GetPostByCreatorAndTimeCreatedAsync(Guid issuerId, DateTime timeCreated); - Task> GetFileUrls(Guid postId); - - Task DoesPostExist(Guid postId); - Task DoesPostHaveFiles(Guid postId); - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Repositories/IRatingRepository.cs b/src/Data/DevHive.Data/Interfaces/Repositories/IRatingRepository.cs deleted file mode 100644 index f77f301..0000000 --- a/src/Data/DevHive.Data/Interfaces/Repositories/IRatingRepository.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Threading.Tasks; -using DevHive.Data.Models; -using DevHive.Data.Repositories.Interfaces; - -namespace DevHive.Data.Interfaces.Repositories -{ - public interface IRatingRepository : IRepository - { - Task GetRatingByPostId(Guid postId); - Task UserRatedPost(Guid userId, Guid postId); - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Repositories/IRepository.cs b/src/Data/DevHive.Data/Interfaces/Repositories/IRepository.cs deleted file mode 100644 index 0d11cd3..0000000 --- a/src/Data/DevHive.Data/Interfaces/Repositories/IRepository.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Threading.Tasks; - -namespace DevHive.Data.Repositories.Interfaces -{ - public interface IRepository - where TEntity : class - { - //Add Entity to database - Task AddAsync(TEntity entity); - - //Find entity by id - Task GetByIdAsync(Guid id); - - //Modify Entity from database - Task EditAsync(Guid id, TEntity newEntity); - - //Delete Entity from database - Task DeleteAsync(TEntity entity); - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Repositories/IRoleRepository.cs b/src/Data/DevHive.Data/Interfaces/Repositories/IRoleRepository.cs deleted file mode 100644 index e834369..0000000 --- a/src/Data/DevHive.Data/Interfaces/Repositories/IRoleRepository.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Threading.Tasks; -using DevHive.Data.Models; -using DevHive.Data.Repositories.Interfaces; - -namespace DevHive.Data.Interfaces.Repositories -{ - public interface IRoleRepository : IRepository - { - Task GetByNameAsync(string name); - - Task DoesNameExist(string name); - Task DoesRoleExist(Guid id); - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Repositories/ITechnologyRepository.cs b/src/Data/DevHive.Data/Interfaces/Repositories/ITechnologyRepository.cs deleted file mode 100644 index 9126bfc..0000000 --- a/src/Data/DevHive.Data/Interfaces/Repositories/ITechnologyRepository.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using DevHive.Data.Models; -using DevHive.Data.Repositories.Interfaces; - -namespace DevHive.Data.Interfaces.Repositories -{ - public interface ITechnologyRepository : IRepository - { - Task GetByNameAsync(string name); - HashSet GetTechnologies(); - - Task DoesTechnologyExistAsync(Guid id); - Task DoesTechnologyNameExistAsync(string technologyName); - } -} diff --git a/src/Data/DevHive.Data/Interfaces/Repositories/IUserRepository.cs b/src/Data/DevHive.Data/Interfaces/Repositories/IUserRepository.cs deleted file mode 100644 index 5ebe3d3..0000000 --- a/src/Data/DevHive.Data/Interfaces/Repositories/IUserRepository.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using DevHive.Data.Models; -using DevHive.Data.Repositories.Interfaces; - -namespace DevHive.Data.Interfaces.Repositories -{ - public interface IUserRepository : IRepository - { - //Read - Task GetByUsernameAsync(string username); - Task UpdateProfilePicture(Guid userId, string pictureUrl); - - //Validations - Task ValidateFriendsCollectionAsync(List usernames); - Task DoesEmailExistAsync(string email); - Task DoesUserExistAsync(Guid id); - Task DoesUsernameExistAsync(string username); - bool DoesUserHaveThisUsername(Guid id, string username); - } -} diff --git a/src/DevHive.sln b/src/DevHive.sln index 73c5b85..05bdcda 100644 --- a/src/DevHive.sln +++ b/src/DevHive.sln @@ -1,40 +1,35 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30717.126 +# Visual Studio 15 +VisualStudioVersion = 15.0.26124.0 MinimumVisualStudioVersion = 15.0.26124.0 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2E5E3F99-7936-4F3B-974E-A98000D1564B}" - ProjectSection(SolutionItems) = preProject - .editorconfig = .editorconfig - EndProjectSection +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{0C2AC7A9-AC68-4668-B88E-9370C596F498}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web", "Web", "{2ED11F7C-A247-48F6-99ED-CD0AA89C6A28}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Data", "Data\DevHive.Data\DevHive.Data.csproj", "{70D0903D-C65F-4600-B6F8-F7BD00500A51}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Web", "Web\DevHive.Web\DevHive.Web.csproj", "{BD295280-3F69-4BDD-8715-526E9852930E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Data.Models", "Data\DevHive.Data.Models\DevHive.Data.Models.csproj", "{56F85916-3955-4558-8809-376D20902B94}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{C94823A0-150D-49E0-9913-628FB5D67370}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Data.Tests", "Data\DevHive.Data.Tests\DevHive.Data.Tests.csproj", "{F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Services", "Services\DevHive.Services\DevHive.Services.csproj", "{897281A2-C315-42DA-92CB-267DF91D8A4B}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{F2864A9D-70F1-452F-AAAC-AAFD8102ABAD}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{9A0158E8-834E-4B8C-B62B-2BF6FF0E3518}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Common", "Common\DevHive.Common.Models\DevHive.Common.csproj", "{5C3DFE9B-9690-475E-A0AE-D62315D38337}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Data", "Data\DevHive.Data\DevHive.Data.csproj", "{A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{7CA79114-C359-4871-BFA7-0EA898B50AE4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Web.Tests", "Web\DevHive.Web.Tests\DevHive.Web.Tests.csproj", "{251A09C6-28CA-4E9E-B482-0B10ABE293FF}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Services", "Services\DevHive.Services\DevHive.Services.csproj", "{B5F22590-E3CE-4595-BE48-AA7F1797A6B8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Services.Tests", "Services\DevHive.Services.Tests\DevHive.Services.Tests.csproj", "{3E86ACCF-9F49-4D51-B152-4ACD6801211D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Services.Models", "Services\DevHive.Services.Models\DevHive.Services.Models.csproj", "{2FFF985B-A26F-443D-A159-62ED2FD5A2BC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Data.Tests", "Data\DevHive.Data.Tests\DevHive.Data.Tests.csproj", "{E6E401DC-43A0-4562-8584-4FA81FE0206C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Services.Tests", "Services\DevHive.Services.Tests\DevHive.Services.Tests.csproj", "{6E58003B-E5E8-4AA4-8F70-A9442BBFC110}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Web.Models", "Web\DevHive.Web.Models\DevHive.Web.Models.csproj", "{746A1043-A016-4CA6-953A-CECD02020E28}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web", "Web", "{768A592D-58EA-4CD3-A053-2E8F2DC7708A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Services.Models", "Services\DevHive.Services.Models\DevHive.Services.Models.csproj", "{2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Web", "Web\DevHive.Web\DevHive.Web.csproj", "{A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Data.Models", "Data\DevHive.Data.Models\DevHive.Data.Models.csproj", "{7FFECB5A-E23F-44E0-A978-416DBF075406}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Web.Models", "Web\DevHive.Web.Models\DevHive.Web.Models.csproj", "{D8C898F7-A0DE-4939-8708-3D4A5C383EFC}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{2C2D8ED7-CBBF-4E79-AC21-C932C6FA651B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Common", "Common\DevHive.Common.Models\DevHive.Common.csproj", "{34E78E35-2476-4925-864A-467C2BC5042B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevHive.Web.Tests", "Web\DevHive.Web.Tests\DevHive.Web.Tests.csproj", "{608273FF-01ED-48B3-B912-66CCDBF5572E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -45,144 +40,141 @@ Global Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {BD295280-3F69-4BDD-8715-526E9852930E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BD295280-3F69-4BDD-8715-526E9852930E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BD295280-3F69-4BDD-8715-526E9852930E}.Debug|x64.ActiveCfg = Debug|Any CPU - {BD295280-3F69-4BDD-8715-526E9852930E}.Debug|x64.Build.0 = Debug|Any CPU - {BD295280-3F69-4BDD-8715-526E9852930E}.Debug|x86.ActiveCfg = Debug|Any CPU - {BD295280-3F69-4BDD-8715-526E9852930E}.Debug|x86.Build.0 = Debug|Any CPU - {BD295280-3F69-4BDD-8715-526E9852930E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BD295280-3F69-4BDD-8715-526E9852930E}.Release|Any CPU.Build.0 = Release|Any CPU - {BD295280-3F69-4BDD-8715-526E9852930E}.Release|x64.ActiveCfg = Release|Any CPU - {BD295280-3F69-4BDD-8715-526E9852930E}.Release|x64.Build.0 = Release|Any CPU - {BD295280-3F69-4BDD-8715-526E9852930E}.Release|x86.ActiveCfg = Release|Any CPU - {BD295280-3F69-4BDD-8715-526E9852930E}.Release|x86.Build.0 = Release|Any CPU - {897281A2-C315-42DA-92CB-267DF91D8A4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {897281A2-C315-42DA-92CB-267DF91D8A4B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {897281A2-C315-42DA-92CB-267DF91D8A4B}.Debug|x64.ActiveCfg = Debug|Any CPU - {897281A2-C315-42DA-92CB-267DF91D8A4B}.Debug|x64.Build.0 = Debug|Any CPU - {897281A2-C315-42DA-92CB-267DF91D8A4B}.Debug|x86.ActiveCfg = Debug|Any CPU - {897281A2-C315-42DA-92CB-267DF91D8A4B}.Debug|x86.Build.0 = Debug|Any CPU - {897281A2-C315-42DA-92CB-267DF91D8A4B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {897281A2-C315-42DA-92CB-267DF91D8A4B}.Release|Any CPU.Build.0 = Release|Any CPU - {897281A2-C315-42DA-92CB-267DF91D8A4B}.Release|x64.ActiveCfg = Release|Any CPU - {897281A2-C315-42DA-92CB-267DF91D8A4B}.Release|x64.Build.0 = Release|Any CPU - {897281A2-C315-42DA-92CB-267DF91D8A4B}.Release|x86.ActiveCfg = Release|Any CPU - {897281A2-C315-42DA-92CB-267DF91D8A4B}.Release|x86.Build.0 = Release|Any CPU - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}.Debug|x64.ActiveCfg = Debug|Any CPU - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}.Debug|x64.Build.0 = Debug|Any CPU - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}.Debug|x86.ActiveCfg = Debug|Any CPU - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}.Debug|x86.Build.0 = Debug|Any CPU - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}.Release|Any CPU.Build.0 = Release|Any CPU - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}.Release|x64.ActiveCfg = Release|Any CPU - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}.Release|x64.Build.0 = Release|Any CPU - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}.Release|x86.ActiveCfg = Release|Any CPU - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C}.Release|x86.Build.0 = Release|Any CPU - {251A09C6-28CA-4E9E-B482-0B10ABE293FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {251A09C6-28CA-4E9E-B482-0B10ABE293FF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {251A09C6-28CA-4E9E-B482-0B10ABE293FF}.Debug|x64.ActiveCfg = Debug|Any CPU - {251A09C6-28CA-4E9E-B482-0B10ABE293FF}.Debug|x64.Build.0 = Debug|Any CPU - {251A09C6-28CA-4E9E-B482-0B10ABE293FF}.Debug|x86.ActiveCfg = Debug|Any CPU - {251A09C6-28CA-4E9E-B482-0B10ABE293FF}.Debug|x86.Build.0 = Debug|Any CPU - {251A09C6-28CA-4E9E-B482-0B10ABE293FF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {251A09C6-28CA-4E9E-B482-0B10ABE293FF}.Release|Any CPU.Build.0 = Release|Any CPU - {251A09C6-28CA-4E9E-B482-0B10ABE293FF}.Release|x64.ActiveCfg = Release|Any CPU - {251A09C6-28CA-4E9E-B482-0B10ABE293FF}.Release|x64.Build.0 = Release|Any CPU - {251A09C6-28CA-4E9E-B482-0B10ABE293FF}.Release|x86.ActiveCfg = Release|Any CPU - {251A09C6-28CA-4E9E-B482-0B10ABE293FF}.Release|x86.Build.0 = Release|Any CPU - {3E86ACCF-9F49-4D51-B152-4ACD6801211D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3E86ACCF-9F49-4D51-B152-4ACD6801211D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3E86ACCF-9F49-4D51-B152-4ACD6801211D}.Debug|x64.ActiveCfg = Debug|Any CPU - {3E86ACCF-9F49-4D51-B152-4ACD6801211D}.Debug|x64.Build.0 = Debug|Any CPU - {3E86ACCF-9F49-4D51-B152-4ACD6801211D}.Debug|x86.ActiveCfg = Debug|Any CPU - {3E86ACCF-9F49-4D51-B152-4ACD6801211D}.Debug|x86.Build.0 = Debug|Any CPU - {3E86ACCF-9F49-4D51-B152-4ACD6801211D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3E86ACCF-9F49-4D51-B152-4ACD6801211D}.Release|Any CPU.Build.0 = Release|Any CPU - {3E86ACCF-9F49-4D51-B152-4ACD6801211D}.Release|x64.ActiveCfg = Release|Any CPU - {3E86ACCF-9F49-4D51-B152-4ACD6801211D}.Release|x64.Build.0 = Release|Any CPU - {3E86ACCF-9F49-4D51-B152-4ACD6801211D}.Release|x86.ActiveCfg = Release|Any CPU - {3E86ACCF-9F49-4D51-B152-4ACD6801211D}.Release|x86.Build.0 = Release|Any CPU - {E6E401DC-43A0-4562-8584-4FA81FE0206C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E6E401DC-43A0-4562-8584-4FA81FE0206C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E6E401DC-43A0-4562-8584-4FA81FE0206C}.Debug|x64.ActiveCfg = Debug|Any CPU - {E6E401DC-43A0-4562-8584-4FA81FE0206C}.Debug|x64.Build.0 = Debug|Any CPU - {E6E401DC-43A0-4562-8584-4FA81FE0206C}.Debug|x86.ActiveCfg = Debug|Any CPU - {E6E401DC-43A0-4562-8584-4FA81FE0206C}.Debug|x86.Build.0 = Debug|Any CPU - {E6E401DC-43A0-4562-8584-4FA81FE0206C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E6E401DC-43A0-4562-8584-4FA81FE0206C}.Release|Any CPU.Build.0 = Release|Any CPU - {E6E401DC-43A0-4562-8584-4FA81FE0206C}.Release|x64.ActiveCfg = Release|Any CPU - {E6E401DC-43A0-4562-8584-4FA81FE0206C}.Release|x64.Build.0 = Release|Any CPU - {E6E401DC-43A0-4562-8584-4FA81FE0206C}.Release|x86.ActiveCfg = Release|Any CPU - {E6E401DC-43A0-4562-8584-4FA81FE0206C}.Release|x86.Build.0 = Release|Any CPU - {746A1043-A016-4CA6-953A-CECD02020E28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {746A1043-A016-4CA6-953A-CECD02020E28}.Debug|Any CPU.Build.0 = Debug|Any CPU - {746A1043-A016-4CA6-953A-CECD02020E28}.Debug|x64.ActiveCfg = Debug|Any CPU - {746A1043-A016-4CA6-953A-CECD02020E28}.Debug|x64.Build.0 = Debug|Any CPU - {746A1043-A016-4CA6-953A-CECD02020E28}.Debug|x86.ActiveCfg = Debug|Any CPU - {746A1043-A016-4CA6-953A-CECD02020E28}.Debug|x86.Build.0 = Debug|Any CPU - {746A1043-A016-4CA6-953A-CECD02020E28}.Release|Any CPU.ActiveCfg = Release|Any CPU - {746A1043-A016-4CA6-953A-CECD02020E28}.Release|Any CPU.Build.0 = Release|Any CPU - {746A1043-A016-4CA6-953A-CECD02020E28}.Release|x64.ActiveCfg = Release|Any CPU - {746A1043-A016-4CA6-953A-CECD02020E28}.Release|x64.Build.0 = Release|Any CPU - {746A1043-A016-4CA6-953A-CECD02020E28}.Release|x86.ActiveCfg = Release|Any CPU - {746A1043-A016-4CA6-953A-CECD02020E28}.Release|x86.Build.0 = Release|Any CPU - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}.Debug|x64.ActiveCfg = Debug|Any CPU - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}.Debug|x64.Build.0 = Debug|Any CPU - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}.Debug|x86.ActiveCfg = Debug|Any CPU - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}.Debug|x86.Build.0 = Debug|Any CPU - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}.Release|Any CPU.Build.0 = Release|Any CPU - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}.Release|x64.ActiveCfg = Release|Any CPU - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}.Release|x64.Build.0 = Release|Any CPU - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}.Release|x86.ActiveCfg = Release|Any CPU - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17}.Release|x86.Build.0 = Release|Any CPU - {7FFECB5A-E23F-44E0-A978-416DBF075406}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7FFECB5A-E23F-44E0-A978-416DBF075406}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7FFECB5A-E23F-44E0-A978-416DBF075406}.Debug|x64.ActiveCfg = Debug|Any CPU - {7FFECB5A-E23F-44E0-A978-416DBF075406}.Debug|x64.Build.0 = Debug|Any CPU - {7FFECB5A-E23F-44E0-A978-416DBF075406}.Debug|x86.ActiveCfg = Debug|Any CPU - {7FFECB5A-E23F-44E0-A978-416DBF075406}.Debug|x86.Build.0 = Debug|Any CPU - {7FFECB5A-E23F-44E0-A978-416DBF075406}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7FFECB5A-E23F-44E0-A978-416DBF075406}.Release|Any CPU.Build.0 = Release|Any CPU - {7FFECB5A-E23F-44E0-A978-416DBF075406}.Release|x64.ActiveCfg = Release|Any CPU - {7FFECB5A-E23F-44E0-A978-416DBF075406}.Release|x64.Build.0 = Release|Any CPU - {7FFECB5A-E23F-44E0-A978-416DBF075406}.Release|x86.ActiveCfg = Release|Any CPU - {7FFECB5A-E23F-44E0-A978-416DBF075406}.Release|x86.Build.0 = Release|Any CPU - {34E78E35-2476-4925-864A-467C2BC5042B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {34E78E35-2476-4925-864A-467C2BC5042B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {34E78E35-2476-4925-864A-467C2BC5042B}.Debug|x64.ActiveCfg = Debug|Any CPU - {34E78E35-2476-4925-864A-467C2BC5042B}.Debug|x64.Build.0 = Debug|Any CPU - {34E78E35-2476-4925-864A-467C2BC5042B}.Debug|x86.ActiveCfg = Debug|Any CPU - {34E78E35-2476-4925-864A-467C2BC5042B}.Debug|x86.Build.0 = Debug|Any CPU - {34E78E35-2476-4925-864A-467C2BC5042B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {34E78E35-2476-4925-864A-467C2BC5042B}.Release|Any CPU.Build.0 = Release|Any CPU - {34E78E35-2476-4925-864A-467C2BC5042B}.Release|x64.ActiveCfg = Release|Any CPU - {34E78E35-2476-4925-864A-467C2BC5042B}.Release|x64.Build.0 = Release|Any CPU - {34E78E35-2476-4925-864A-467C2BC5042B}.Release|x86.ActiveCfg = Release|Any CPU - {34E78E35-2476-4925-864A-467C2BC5042B}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {BD295280-3F69-4BDD-8715-526E9852930E} = {2ED11F7C-A247-48F6-99ED-CD0AA89C6A28} - {897281A2-C315-42DA-92CB-267DF91D8A4B} = {C94823A0-150D-49E0-9913-628FB5D67370} - {A28CAD8A-CDA9-42AD-8701-2DAE5D55EC9C} = {9A0158E8-834E-4B8C-B62B-2BF6FF0E3518} - {251A09C6-28CA-4E9E-B482-0B10ABE293FF} = {2ED11F7C-A247-48F6-99ED-CD0AA89C6A28} - {3E86ACCF-9F49-4D51-B152-4ACD6801211D} = {C94823A0-150D-49E0-9913-628FB5D67370} - {E6E401DC-43A0-4562-8584-4FA81FE0206C} = {9A0158E8-834E-4B8C-B62B-2BF6FF0E3518} - {746A1043-A016-4CA6-953A-CECD02020E28} = {2ED11F7C-A247-48F6-99ED-CD0AA89C6A28} - {2B1E8E07-9E8C-4FE5-ADA7-F67BCBDD1D17} = {C94823A0-150D-49E0-9913-628FB5D67370} - {7FFECB5A-E23F-44E0-A978-416DBF075406} = {9A0158E8-834E-4B8C-B62B-2BF6FF0E3518} - {34E78E35-2476-4925-864A-467C2BC5042B} = {2C2D8ED7-CBBF-4E79-AC21-C932C6FA651B} + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {70D0903D-C65F-4600-B6F8-F7BD00500A51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {70D0903D-C65F-4600-B6F8-F7BD00500A51}.Debug|Any CPU.Build.0 = Debug|Any CPU + {70D0903D-C65F-4600-B6F8-F7BD00500A51}.Debug|x64.ActiveCfg = Debug|Any CPU + {70D0903D-C65F-4600-B6F8-F7BD00500A51}.Debug|x64.Build.0 = Debug|Any CPU + {70D0903D-C65F-4600-B6F8-F7BD00500A51}.Debug|x86.ActiveCfg = Debug|Any CPU + {70D0903D-C65F-4600-B6F8-F7BD00500A51}.Debug|x86.Build.0 = Debug|Any CPU + {70D0903D-C65F-4600-B6F8-F7BD00500A51}.Release|Any CPU.ActiveCfg = Release|Any CPU + {70D0903D-C65F-4600-B6F8-F7BD00500A51}.Release|Any CPU.Build.0 = Release|Any CPU + {70D0903D-C65F-4600-B6F8-F7BD00500A51}.Release|x64.ActiveCfg = Release|Any CPU + {70D0903D-C65F-4600-B6F8-F7BD00500A51}.Release|x64.Build.0 = Release|Any CPU + {70D0903D-C65F-4600-B6F8-F7BD00500A51}.Release|x86.ActiveCfg = Release|Any CPU + {70D0903D-C65F-4600-B6F8-F7BD00500A51}.Release|x86.Build.0 = Release|Any CPU + {56F85916-3955-4558-8809-376D20902B94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {56F85916-3955-4558-8809-376D20902B94}.Debug|Any CPU.Build.0 = Debug|Any CPU + {56F85916-3955-4558-8809-376D20902B94}.Debug|x64.ActiveCfg = Debug|Any CPU + {56F85916-3955-4558-8809-376D20902B94}.Debug|x64.Build.0 = Debug|Any CPU + {56F85916-3955-4558-8809-376D20902B94}.Debug|x86.ActiveCfg = Debug|Any CPU + {56F85916-3955-4558-8809-376D20902B94}.Debug|x86.Build.0 = Debug|Any CPU + {56F85916-3955-4558-8809-376D20902B94}.Release|Any CPU.ActiveCfg = Release|Any CPU + {56F85916-3955-4558-8809-376D20902B94}.Release|Any CPU.Build.0 = Release|Any CPU + {56F85916-3955-4558-8809-376D20902B94}.Release|x64.ActiveCfg = Release|Any CPU + {56F85916-3955-4558-8809-376D20902B94}.Release|x64.Build.0 = Release|Any CPU + {56F85916-3955-4558-8809-376D20902B94}.Release|x86.ActiveCfg = Release|Any CPU + {56F85916-3955-4558-8809-376D20902B94}.Release|x86.Build.0 = Release|Any CPU + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}.Debug|x64.ActiveCfg = Debug|Any CPU + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}.Debug|x64.Build.0 = Debug|Any CPU + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}.Debug|x86.ActiveCfg = Debug|Any CPU + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}.Debug|x86.Build.0 = Debug|Any CPU + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}.Release|Any CPU.Build.0 = Release|Any CPU + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}.Release|x64.ActiveCfg = Release|Any CPU + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}.Release|x64.Build.0 = Release|Any CPU + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}.Release|x86.ActiveCfg = Release|Any CPU + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0}.Release|x86.Build.0 = Release|Any CPU + {5C3DFE9B-9690-475E-A0AE-D62315D38337}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5C3DFE9B-9690-475E-A0AE-D62315D38337}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5C3DFE9B-9690-475E-A0AE-D62315D38337}.Debug|x64.ActiveCfg = Debug|Any CPU + {5C3DFE9B-9690-475E-A0AE-D62315D38337}.Debug|x64.Build.0 = Debug|Any CPU + {5C3DFE9B-9690-475E-A0AE-D62315D38337}.Debug|x86.ActiveCfg = Debug|Any CPU + {5C3DFE9B-9690-475E-A0AE-D62315D38337}.Debug|x86.Build.0 = Debug|Any CPU + {5C3DFE9B-9690-475E-A0AE-D62315D38337}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5C3DFE9B-9690-475E-A0AE-D62315D38337}.Release|Any CPU.Build.0 = Release|Any CPU + {5C3DFE9B-9690-475E-A0AE-D62315D38337}.Release|x64.ActiveCfg = Release|Any CPU + {5C3DFE9B-9690-475E-A0AE-D62315D38337}.Release|x64.Build.0 = Release|Any CPU + {5C3DFE9B-9690-475E-A0AE-D62315D38337}.Release|x86.ActiveCfg = Release|Any CPU + {5C3DFE9B-9690-475E-A0AE-D62315D38337}.Release|x86.Build.0 = Release|Any CPU + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8}.Debug|x64.ActiveCfg = Debug|Any CPU + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8}.Debug|x64.Build.0 = Debug|Any CPU + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8}.Debug|x86.ActiveCfg = Debug|Any CPU + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8}.Debug|x86.Build.0 = Debug|Any CPU + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8}.Release|Any CPU.Build.0 = Release|Any CPU + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8}.Release|x64.ActiveCfg = Release|Any CPU + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8}.Release|x64.Build.0 = Release|Any CPU + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8}.Release|x86.ActiveCfg = Release|Any CPU + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8}.Release|x86.Build.0 = Release|Any CPU + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC}.Debug|x64.ActiveCfg = Debug|Any CPU + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC}.Debug|x64.Build.0 = Debug|Any CPU + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC}.Debug|x86.ActiveCfg = Debug|Any CPU + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC}.Debug|x86.Build.0 = Debug|Any CPU + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC}.Release|Any CPU.Build.0 = Release|Any CPU + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC}.Release|x64.ActiveCfg = Release|Any CPU + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC}.Release|x64.Build.0 = Release|Any CPU + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC}.Release|x86.ActiveCfg = Release|Any CPU + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC}.Release|x86.Build.0 = Release|Any CPU + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110}.Debug|x64.ActiveCfg = Debug|Any CPU + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110}.Debug|x64.Build.0 = Debug|Any CPU + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110}.Debug|x86.ActiveCfg = Debug|Any CPU + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110}.Debug|x86.Build.0 = Debug|Any CPU + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110}.Release|Any CPU.Build.0 = Release|Any CPU + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110}.Release|x64.ActiveCfg = Release|Any CPU + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110}.Release|x64.Build.0 = Release|Any CPU + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110}.Release|x86.ActiveCfg = Release|Any CPU + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110}.Release|x86.Build.0 = Release|Any CPU + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}.Debug|x64.ActiveCfg = Debug|Any CPU + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}.Debug|x64.Build.0 = Debug|Any CPU + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}.Debug|x86.ActiveCfg = Debug|Any CPU + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}.Debug|x86.Build.0 = Debug|Any CPU + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}.Release|Any CPU.Build.0 = Release|Any CPU + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}.Release|x64.ActiveCfg = Release|Any CPU + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}.Release|x64.Build.0 = Release|Any CPU + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}.Release|x86.ActiveCfg = Release|Any CPU + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A}.Release|x86.Build.0 = Release|Any CPU + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC}.Debug|x64.ActiveCfg = Debug|Any CPU + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC}.Debug|x64.Build.0 = Debug|Any CPU + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC}.Debug|x86.ActiveCfg = Debug|Any CPU + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC}.Debug|x86.Build.0 = Debug|Any CPU + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC}.Release|Any CPU.Build.0 = Release|Any CPU + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC}.Release|x64.ActiveCfg = Release|Any CPU + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC}.Release|x64.Build.0 = Release|Any CPU + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC}.Release|x86.ActiveCfg = Release|Any CPU + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC}.Release|x86.Build.0 = Release|Any CPU + {608273FF-01ED-48B3-B912-66CCDBF5572E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {608273FF-01ED-48B3-B912-66CCDBF5572E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {608273FF-01ED-48B3-B912-66CCDBF5572E}.Debug|x64.ActiveCfg = Debug|Any CPU + {608273FF-01ED-48B3-B912-66CCDBF5572E}.Debug|x64.Build.0 = Debug|Any CPU + {608273FF-01ED-48B3-B912-66CCDBF5572E}.Debug|x86.ActiveCfg = Debug|Any CPU + {608273FF-01ED-48B3-B912-66CCDBF5572E}.Debug|x86.Build.0 = Debug|Any CPU + {608273FF-01ED-48B3-B912-66CCDBF5572E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {608273FF-01ED-48B3-B912-66CCDBF5572E}.Release|Any CPU.Build.0 = Release|Any CPU + {608273FF-01ED-48B3-B912-66CCDBF5572E}.Release|x64.ActiveCfg = Release|Any CPU + {608273FF-01ED-48B3-B912-66CCDBF5572E}.Release|x64.Build.0 = Release|Any CPU + {608273FF-01ED-48B3-B912-66CCDBF5572E}.Release|x86.ActiveCfg = Release|Any CPU + {608273FF-01ED-48B3-B912-66CCDBF5572E}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {0F5395E8-26FB-40FD-83A1-EE7766C5E398} + GlobalSection(NestedProjects) = preSolution + {70D0903D-C65F-4600-B6F8-F7BD00500A51} = {0C2AC7A9-AC68-4668-B88E-9370C596F498} + {56F85916-3955-4558-8809-376D20902B94} = {0C2AC7A9-AC68-4668-B88E-9370C596F498} + {F056B3F1-B72D-4935-87EA-F7BFEA96AFB0} = {0C2AC7A9-AC68-4668-B88E-9370C596F498} + {5C3DFE9B-9690-475E-A0AE-D62315D38337} = {F2864A9D-70F1-452F-AAAC-AAFD8102ABAD} + {B5F22590-E3CE-4595-BE48-AA7F1797A6B8} = {7CA79114-C359-4871-BFA7-0EA898B50AE4} + {2FFF985B-A26F-443D-A159-62ED2FD5A2BC} = {7CA79114-C359-4871-BFA7-0EA898B50AE4} + {6E58003B-E5E8-4AA4-8F70-A9442BBFC110} = {7CA79114-C359-4871-BFA7-0EA898B50AE4} + {A6D35BD9-A2A4-4937-89A8-DCB0D610B04A} = {768A592D-58EA-4CD3-A053-2E8F2DC7708A} + {D8C898F7-A0DE-4939-8708-3D4A5C383EFC} = {768A592D-58EA-4CD3-A053-2E8F2DC7708A} + {608273FF-01ED-48B3-B912-66CCDBF5572E} = {768A592D-58EA-4CD3-A053-2E8F2DC7708A} EndGlobalSection EndGlobal diff --git a/src/Services/DevHive.Services.Models/DevHive.Services.Models.csproj b/src/Services/DevHive.Services.Models/DevHive.Services.Models.csproj index ebf5f9c..744a855 100644 --- a/src/Services/DevHive.Services.Models/DevHive.Services.Models.csproj +++ b/src/Services/DevHive.Services.Models/DevHive.Services.Models.csproj @@ -1,11 +1,9 @@ - net5.0 - + - diff --git a/src/Services/DevHive.Services.Models/Identity/Role/CreateRoleServiceModel.cs b/src/Services/DevHive.Services.Models/Identity/Role/CreateRoleServiceModel.cs deleted file mode 100644 index 3bed3fd..0000000 --- a/src/Services/DevHive.Services.Models/Identity/Role/CreateRoleServiceModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; - -namespace DevHive.Services.Models.Identity.Role -{ - public class CreateRoleServiceModel - { - public string Name { get; set; } - } -} diff --git a/src/Services/DevHive.Services.Models/Identity/Role/RoleServiceModel.cs b/src/Services/DevHive.Services.Models/Identity/Role/RoleServiceModel.cs deleted file mode 100644 index 07249fe..0000000 --- a/src/Services/DevHive.Services.Models/Identity/Role/RoleServiceModel.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace DevHive.Services.Models.Identity.Role -{ - public class RoleServiceModel - { - public string Name { get; set; } - } -} diff --git a/src/Services/DevHive.Services.Models/Identity/Role/UpdateRoleServiceModel.cs b/src/Services/DevHive.Services.Models/Identity/Role/UpdateRoleServiceModel.cs deleted file mode 100644 index e21e6b4..0000000 --- a/src/Services/DevHive.Services.Models/Identity/Role/UpdateRoleServiceModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace DevHive.Services.Models.Identity.Role -{ - public class UpdateRoleServiceModel - { - public Guid Id { get; set; } - public string Name { get; set; } - } -} diff --git a/src/Services/DevHive.Services.Models/Identity/User/BaseUserServiceModel.cs b/src/Services/DevHive.Services.Models/Identity/User/BaseUserServiceModel.cs deleted file mode 100644 index 514f82a..0000000 --- a/src/Services/DevHive.Services.Models/Identity/User/BaseUserServiceModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace DevHive.Services.Models.Identity.User -{ - public class BaseUserServiceModel - { - public string UserName { get; set; } - public string Email { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } - } -} diff --git a/src/Services/DevHive.Services.Models/Identity/User/FriendServiceModel.cs b/src/Services/DevHive.Services.Models/Identity/User/FriendServiceModel.cs deleted file mode 100644 index a784f5c..0000000 --- a/src/Services/DevHive.Services.Models/Identity/User/FriendServiceModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace DevHive.Services.Models.Identity.User -{ - public class FriendServiceModel - { - public Guid Id { get; set; } - public string UserName { get; set; } - } -} diff --git a/src/Services/DevHive.Services.Models/Identity/User/LoginServiceModel.cs b/src/Services/DevHive.Services.Models/Identity/User/LoginServiceModel.cs deleted file mode 100644 index 4d53283..0000000 --- a/src/Services/DevHive.Services.Models/Identity/User/LoginServiceModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace DevHive.Services.Models.Identity.User -{ - public class LoginServiceModel - { - public string UserName { get; set; } - public string Password { get; set; } - } -} diff --git a/src/Services/DevHive.Services.Models/Identity/User/ProfilePictureServiceModel.cs b/src/Services/DevHive.Services.Models/Identity/User/ProfilePictureServiceModel.cs deleted file mode 100644 index ad81057..0000000 --- a/src/Services/DevHive.Services.Models/Identity/User/ProfilePictureServiceModel.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace DevHive.Services.Models.Identity.User -{ - public class ProfilePictureServiceModel - { - public string ProfilePictureURL { get; set; } - } -} diff --git a/src/Services/DevHive.Services.Models/Identity/User/RegisterServiceModel.cs b/src/Services/DevHive.Services.Models/Identity/User/RegisterServiceModel.cs deleted file mode 100644 index adc4119..0000000 --- a/src/Services/DevHive.Services.Models/Identity/User/RegisterServiceModel.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Collections.Generic; -using DevHive.Services.Models.Language; -using DevHive.Services.Models.Technology; - -namespace DevHive.Services.Models.Identity.User -{ - public class RegisterServiceModel : BaseUserServiceModel - { - public string Password { get; set; } - - public HashSet Languages { get; set; } - - public HashSet Technologies { get; set; } - } -} diff --git a/src/Services/DevHive.Services.Models/Identity/User/UpdateFriendServiceModel.cs b/src/Services/DevHive.Services.Models/Identity/User/UpdateFriendServiceModel.cs deleted file mode 100644 index b0efe10..0000000 --- a/src/Services/DevHive.Services.Models/Identity/User/UpdateFriendServiceModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace DevHive.Services.Models.Identity.User -{ - public class UpdateFriendServiceModel - { - public Guid Id { get; set; } - public string UserName { get; set; } - } -} diff --git a/src/Services/DevHive.Services.Models/Identity/User/UpdateProfilePictureServiceModel.cs b/src/Services/DevHive.Services.Models/Identity/User/UpdateProfilePictureServiceModel.cs deleted file mode 100644 index 8563953..0000000 --- a/src/Services/DevHive.Services.Models/Identity/User/UpdateProfilePictureServiceModel.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using Microsoft.AspNetCore.Http; - -namespace DevHive.Services.Models.Identity.User -{ - public class UpdateProfilePictureServiceModel - { - public Guid UserId { get; set; } - - public IFormFile Picture { get; set; } - } -} diff --git a/src/Services/DevHive.Services.Models/Identity/User/UpdateUserServiceModel.cs b/src/Services/DevHive.Services.Models/Identity/User/UpdateUserServiceModel.cs deleted file mode 100644 index b4e4400..0000000 --- a/src/Services/DevHive.Services.Models/Identity/User/UpdateUserServiceModel.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using DevHive.Services.Models.Identity.Role; -using DevHive.Services.Models.Language; -using DevHive.Services.Models.Technology; - -namespace DevHive.Services.Models.Identity.User -{ - public class UpdateUserServiceModel : BaseUserServiceModel - { - public Guid Id { get; set; } - - public string Password { get; set; } - - public string ProfilePictureURL { get; set; } - - public HashSet Roles { get; set; } = new HashSet(); - - public HashSet Friends { get; set; } = new HashSet(); - - public HashSet Languages { get; set; } = new HashSet(); - - public HashSet Technologies { get; set; } = new HashSet(); - - } -} diff --git a/src/Services/DevHive.Services.Models/Identity/User/UserServiceModel.cs b/src/Services/DevHive.Services.Models/Identity/User/UserServiceModel.cs deleted file mode 100644 index ac7bba2..0000000 --- a/src/Services/DevHive.Services.Models/Identity/User/UserServiceModel.cs +++ /dev/null @@ -1,23 +0,0 @@ -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; - -namespace DevHive.Services.Models.Identity.User -{ - public class UserServiceModel : BaseUserServiceModel - { - public string ProfilePictureURL { get; set; } - - public HashSet Roles { get; set; } = new(); - - public HashSet Friends { get; set; } = new(); - - public HashSet Languages { get; set; } = new(); - - public HashSet Technologies { get; set; } = new(); - - public List Posts { get; set; } = new(); - } -} diff --git a/src/Services/DevHive.Services.Models/Role/CreateRoleServiceModel.cs b/src/Services/DevHive.Services.Models/Role/CreateRoleServiceModel.cs new file mode 100644 index 0000000..8b03c65 --- /dev/null +++ b/src/Services/DevHive.Services.Models/Role/CreateRoleServiceModel.cs @@ -0,0 +1,10 @@ +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; + +namespace DevHive.Services.Models.Role +{ + public class CreateRoleServiceModel + { + public string Name { get; set; } + } +} diff --git a/src/Services/DevHive.Services.Models/Role/RoleServiceModel.cs b/src/Services/DevHive.Services.Models/Role/RoleServiceModel.cs new file mode 100644 index 0000000..77ca954 --- /dev/null +++ b/src/Services/DevHive.Services.Models/Role/RoleServiceModel.cs @@ -0,0 +1,7 @@ +namespace DevHive.Services.Models.Role +{ + public class RoleServiceModel + { + public string Name { get; set; } + } +} diff --git a/src/Services/DevHive.Services.Models/Role/UpdateRoleServiceModel.cs b/src/Services/DevHive.Services.Models/Role/UpdateRoleServiceModel.cs new file mode 100644 index 0000000..9b8fbfe --- /dev/null +++ b/src/Services/DevHive.Services.Models/Role/UpdateRoleServiceModel.cs @@ -0,0 +1,10 @@ +using System; + +namespace DevHive.Services.Models.Role +{ + public class UpdateRoleServiceModel + { + public Guid Id { get; set; } + public string Name { get; set; } + } +} diff --git a/src/Services/DevHive.Services.Models/User/BaseUserServiceModel.cs b/src/Services/DevHive.Services.Models/User/BaseUserServiceModel.cs new file mode 100644 index 0000000..5c3dc6b --- /dev/null +++ b/src/Services/DevHive.Services.Models/User/BaseUserServiceModel.cs @@ -0,0 +1,10 @@ +namespace DevHive.Services.Models.User +{ + public class BaseUserServiceModel + { + public string UserName { get; set; } + public string Email { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } + } +} diff --git a/src/Services/DevHive.Services.Models/User/FriendServiceModel.cs b/src/Services/DevHive.Services.Models/User/FriendServiceModel.cs new file mode 100644 index 0000000..2241886 --- /dev/null +++ b/src/Services/DevHive.Services.Models/User/FriendServiceModel.cs @@ -0,0 +1,10 @@ +using System; + +namespace DevHive.Services.Models.User +{ + public class FriendServiceModel + { + public Guid Id { get; set; } + public string UserName { get; set; } + } +} diff --git a/src/Services/DevHive.Services.Models/User/LoginServiceModel.cs b/src/Services/DevHive.Services.Models/User/LoginServiceModel.cs new file mode 100644 index 0000000..6a0d128 --- /dev/null +++ b/src/Services/DevHive.Services.Models/User/LoginServiceModel.cs @@ -0,0 +1,8 @@ +namespace DevHive.Services.Models.User +{ + public class LoginServiceModel + { + public string UserName { get; set; } + public string Password { get; set; } + } +} diff --git a/src/Services/DevHive.Services.Models/User/ProfilePictureServiceModel.cs b/src/Services/DevHive.Services.Models/User/ProfilePictureServiceModel.cs new file mode 100644 index 0000000..cbe64b2 --- /dev/null +++ b/src/Services/DevHive.Services.Models/User/ProfilePictureServiceModel.cs @@ -0,0 +1,7 @@ +namespace DevHive.Services.Models.User +{ + public class ProfilePictureServiceModel + { + public string ProfilePictureURL { get; set; } + } +} diff --git a/src/Services/DevHive.Services.Models/User/RegisterServiceModel.cs b/src/Services/DevHive.Services.Models/User/RegisterServiceModel.cs new file mode 100644 index 0000000..5852d46 --- /dev/null +++ b/src/Services/DevHive.Services.Models/User/RegisterServiceModel.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; +using DevHive.Services.Models.Language; +using DevHive.Services.Models.Technology; + +namespace DevHive.Services.Models.User +{ + public class RegisterServiceModel : BaseUserServiceModel + { + public string Password { get; set; } + + public HashSet Languages { get; set; } + + public HashSet Technologies { get; set; } + } +} diff --git a/src/Services/DevHive.Services.Models/User/UpdateFriendServiceModel.cs b/src/Services/DevHive.Services.Models/User/UpdateFriendServiceModel.cs new file mode 100644 index 0000000..0d7a8c1 --- /dev/null +++ b/src/Services/DevHive.Services.Models/User/UpdateFriendServiceModel.cs @@ -0,0 +1,10 @@ +using System; + +namespace DevHive.Services.Models.User +{ + public class UpdateFriendServiceModel + { + public Guid Id { get; set; } + public string UserName { get; set; } + } +} diff --git a/src/Services/DevHive.Services.Models/User/UpdateProfilePictureServiceModel.cs b/src/Services/DevHive.Services.Models/User/UpdateProfilePictureServiceModel.cs new file mode 100644 index 0000000..19ba08f --- /dev/null +++ b/src/Services/DevHive.Services.Models/User/UpdateProfilePictureServiceModel.cs @@ -0,0 +1,12 @@ +using System; +using Microsoft.AspNetCore.Http; + +namespace DevHive.Services.Models.User +{ + public class UpdateProfilePictureServiceModel + { + public Guid UserId { get; set; } + + public IFormFile Picture { get; set; } + } +} diff --git a/src/Services/DevHive.Services.Models/User/UpdateUserServiceModel.cs b/src/Services/DevHive.Services.Models/User/UpdateUserServiceModel.cs new file mode 100644 index 0000000..ff20e6b --- /dev/null +++ b/src/Services/DevHive.Services.Models/User/UpdateUserServiceModel.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using DevHive.Services.Models.Role; +using DevHive.Services.Models.Language; +using DevHive.Services.Models.Technology; + +namespace DevHive.Services.Models.User +{ + public class UpdateUserServiceModel : BaseUserServiceModel + { + public Guid Id { get; set; } + + public string Password { get; set; } + + public string ProfilePictureURL { get; set; } + + public HashSet Roles { get; set; } = new HashSet(); + + public HashSet Friends { get; set; } = new HashSet(); + + public HashSet Languages { get; set; } = new HashSet(); + + public HashSet Technologies { get; set; } = new HashSet(); + + } +} diff --git a/src/Services/DevHive.Services.Models/User/UserServiceModel.cs b/src/Services/DevHive.Services.Models/User/UserServiceModel.cs new file mode 100644 index 0000000..04b618b --- /dev/null +++ b/src/Services/DevHive.Services.Models/User/UserServiceModel.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using DevHive.Common.Models.Misc; +using DevHive.Services.Models.Role; +using DevHive.Services.Models.Language; +using DevHive.Services.Models.Technology; + +namespace DevHive.Services.Models.User +{ + public class UserServiceModel : BaseUserServiceModel + { + public string ProfilePictureURL { get; set; } + + public HashSet Roles { get; set; } = new(); + + public HashSet Friends { get; set; } = new(); + + public HashSet Languages { get; set; } = new(); + + public HashSet Technologies { get; set; } = new(); + + public List Posts { get; set; } = new(); + } +} diff --git a/src/Services/DevHive.Services.Tests/DevHive.Services.Tests.csproj b/src/Services/DevHive.Services.Tests/DevHive.Services.Tests.csproj index af419df..d6d0876 100644 --- a/src/Services/DevHive.Services.Tests/DevHive.Services.Tests.csproj +++ b/src/Services/DevHive.Services.Tests/DevHive.Services.Tests.csproj @@ -14,14 +14,6 @@ - - - - - - - - true latest diff --git a/src/Services/DevHive.Services.Tests/RoleService.Tests.cs b/src/Services/DevHive.Services.Tests/RoleService.Tests.cs index e500dd1..c4fac77 100644 --- a/src/Services/DevHive.Services.Tests/RoleService.Tests.cs +++ b/src/Services/DevHive.Services.Tests/RoleService.Tests.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using AutoMapper; using DevHive.Data.Interfaces.Repositories; using DevHive.Data.Models; -using DevHive.Services.Models.Identity.Role; +using DevHive.Services.Models.Role; using DevHive.Services.Services; using Moq; using NUnit.Framework; diff --git a/src/Services/DevHive.Services.Tests/UserService.Tests.cs b/src/Services/DevHive.Services.Tests/UserService.Tests.cs index 21d4862..aff34c9 100644 --- a/src/Services/DevHive.Services.Tests/UserService.Tests.cs +++ b/src/Services/DevHive.Services.Tests/UserService.Tests.cs @@ -10,7 +10,7 @@ using DevHive.Common.Models.Misc; using DevHive.Data.Interfaces.Repositories; using DevHive.Data.Models; using DevHive.Services.Interfaces; -using DevHive.Services.Models.Identity.User; +using DevHive.Services.Models.User; using DevHive.Services.Options; using DevHive.Services.Services; using Microsoft.AspNetCore.Identity; diff --git a/src/Services/DevHive.Services/Configurations/Mapping/RoleMapings.cs b/src/Services/DevHive.Services/Configurations/Mapping/RoleMapings.cs index e61a107..37f259a 100644 --- a/src/Services/DevHive.Services/Configurations/Mapping/RoleMapings.cs +++ b/src/Services/DevHive.Services/Configurations/Mapping/RoleMapings.cs @@ -1,6 +1,6 @@ using DevHive.Data.Models; using AutoMapper; -using DevHive.Services.Models.Identity.Role; +using DevHive.Services.Models.Role; namespace DevHive.Services.Configurations.Mapping { diff --git a/src/Services/DevHive.Services/Configurations/Mapping/UserMappings.cs b/src/Services/DevHive.Services/Configurations/Mapping/UserMappings.cs index 2b0f4ed..9a8e3d9 100644 --- a/src/Services/DevHive.Services/Configurations/Mapping/UserMappings.cs +++ b/src/Services/DevHive.Services/Configurations/Mapping/UserMappings.cs @@ -1,6 +1,6 @@ using DevHive.Data.Models; using AutoMapper; -using DevHive.Services.Models.Identity.User; +using DevHive.Services.Models.User; using DevHive.Common.Models.Misc; using DevHive.Data.RelationModels; diff --git a/src/Services/DevHive.Services/DevHive.Services.csproj b/src/Services/DevHive.Services/DevHive.Services.csproj index 7a33166..1380248 100644 --- a/src/Services/DevHive.Services/DevHive.Services.csproj +++ b/src/Services/DevHive.Services/DevHive.Services.csproj @@ -18,12 +18,6 @@ - - - - - - true latest diff --git a/src/Services/DevHive.Services/Interfaces/IRoleService.cs b/src/Services/DevHive.Services/Interfaces/IRoleService.cs index d47728c..2c31b06 100644 --- a/src/Services/DevHive.Services/Interfaces/IRoleService.cs +++ b/src/Services/DevHive.Services/Interfaces/IRoleService.cs @@ -1,6 +1,6 @@ using System; using System.Threading.Tasks; -using DevHive.Services.Models.Identity.Role; +using DevHive.Services.Models.Role; namespace DevHive.Services.Interfaces { diff --git a/src/Services/DevHive.Services/Interfaces/IUserService.cs b/src/Services/DevHive.Services/Interfaces/IUserService.cs index 9e2b4e3..daa5e5e 100644 --- a/src/Services/DevHive.Services/Interfaces/IUserService.cs +++ b/src/Services/DevHive.Services/Interfaces/IUserService.cs @@ -1,7 +1,7 @@ using System; using System.Threading.Tasks; using DevHive.Common.Models.Identity; -using DevHive.Services.Models.Identity.User; +using DevHive.Services.Models.User; namespace DevHive.Services.Interfaces { diff --git a/src/Services/DevHive.Services/Services/RoleService.cs b/src/Services/DevHive.Services/Services/RoleService.cs index a8b8e17..dbf8fcd 100644 --- a/src/Services/DevHive.Services/Services/RoleService.cs +++ b/src/Services/DevHive.Services/Services/RoleService.cs @@ -4,7 +4,7 @@ using AutoMapper; using DevHive.Data.Interfaces.Repositories; using DevHive.Data.Models; using DevHive.Services.Interfaces; -using DevHive.Services.Models.Identity.Role; +using DevHive.Services.Models.Role; using DevHive.Services.Models.Language; namespace DevHive.Services.Services diff --git a/src/Services/DevHive.Services/Services/UserService.cs b/src/Services/DevHive.Services/Services/UserService.cs index 22d5052..f68e3aa 100644 --- a/src/Services/DevHive.Services/Services/UserService.cs +++ b/src/Services/DevHive.Services/Services/UserService.cs @@ -1,6 +1,6 @@ using AutoMapper; using DevHive.Services.Options; -using DevHive.Services.Models.Identity.User; +using DevHive.Services.Models.User; using System.Threading.Tasks; using DevHive.Data.Models; using System; diff --git a/src/Web/DevHive.Web.Models/DevHive.Web.Models.csproj b/src/Web/DevHive.Web.Models/DevHive.Web.Models.csproj index 0462967..65892c5 100644 --- a/src/Web/DevHive.Web.Models/DevHive.Web.Models.csproj +++ b/src/Web/DevHive.Web.Models/DevHive.Web.Models.csproj @@ -1,14 +1,10 @@ - net5.0 + + - - - - - diff --git a/src/Web/DevHive.Web.Models/Identity/Role/CreateRoleWebModel.cs b/src/Web/DevHive.Web.Models/Identity/Role/CreateRoleWebModel.cs deleted file mode 100644 index 859cdd9..0000000 --- a/src/Web/DevHive.Web.Models/Identity/Role/CreateRoleWebModel.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; - -namespace DevHive.Web.Models.Identity.Role -{ - public class CreateRoleWebModel - { - [NotNull] - [Required] - [MinLength(3)] - [MaxLength(50)] - public string Name { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/Identity/Role/RoleWebModel.cs b/src/Web/DevHive.Web.Models/Identity/Role/RoleWebModel.cs deleted file mode 100644 index 99b0f50..0000000 --- a/src/Web/DevHive.Web.Models/Identity/Role/RoleWebModel.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; - -namespace DevHive.Web.Models.Identity.Role -{ - public class RoleWebModel - { - [NotNull] - [Required] - [MinLength(3)] - [MaxLength(50)] - public string Name { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/Identity/Role/UpdateRoleWebModel.cs b/src/Web/DevHive.Web.Models/Identity/Role/UpdateRoleWebModel.cs deleted file mode 100644 index 3870481..0000000 --- a/src/Web/DevHive.Web.Models/Identity/Role/UpdateRoleWebModel.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; - -namespace DevHive.Web.Models.Identity.Role -{ - public class UpdateRoleWebModel - { - [NotNull] - [Required] - [MinLength(3)] - [MaxLength(50)] - public string Name { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/Identity/User/BaseUserWebModel.cs b/src/Web/DevHive.Web.Models/Identity/User/BaseUserWebModel.cs deleted file mode 100644 index 297e1a5..0000000 --- a/src/Web/DevHive.Web.Models/Identity/User/BaseUserWebModel.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; -using DevHive.Web.Attributes; - -namespace DevHive.Web.Models.Identity.User -{ - public class BaseUserWebModel - { - [NotNull] - [Required] - [MinLength(3)] - [MaxLength(50)] - public string UserName { get; set; } - - [NotNull] - [Required] - [EmailAddress] - public string Email { get; set; } - - [NotNull] - [Required] - [MinLength(3)] - [MaxLength(30)] - [OnlyLetters(ErrorMessage = "First name can only contain letters!")] - public string FirstName { get; set; } - - [NotNull] - [Required] - [MinLength(3)] - [MaxLength(30)] - [OnlyLetters(ErrorMessage = "Last name can only contain letters!")] - public string LastName { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/Identity/User/LoginWebModel.cs b/src/Web/DevHive.Web.Models/Identity/User/LoginWebModel.cs deleted file mode 100644 index ccd806f..0000000 --- a/src/Web/DevHive.Web.Models/Identity/User/LoginWebModel.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; -using DevHive.Web.Attributes; - -namespace DevHive.Web.Models.Identity.User -{ - public class LoginWebModel - { - [NotNull] - [Required] - [MinLength(3)] - [MaxLength(50)] - public string UserName { get; set; } - - [NotNull] - [Required] - [GoodPassword] - public string Password { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/Identity/User/ProfilePictureWebModel.cs b/src/Web/DevHive.Web.Models/Identity/User/ProfilePictureWebModel.cs deleted file mode 100644 index 91c9487..0000000 --- a/src/Web/DevHive.Web.Models/Identity/User/ProfilePictureWebModel.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace DevHive.Web.Models.Identity.User -{ - public class ProfilePictureWebModel - { - public string ProfilePictureURL { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/Identity/User/RegisterWebModel.cs b/src/Web/DevHive.Web.Models/Identity/User/RegisterWebModel.cs deleted file mode 100644 index 0fc7ec6..0000000 --- a/src/Web/DevHive.Web.Models/Identity/User/RegisterWebModel.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; -using DevHive.Web.Attributes; - -namespace DevHive.Web.Models.Identity.User -{ - public class RegisterWebModel : BaseUserWebModel - { - [NotNull] - [Required] - [GoodPassword] - public string Password { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/Identity/User/TokenWebModel.cs b/src/Web/DevHive.Web.Models/Identity/User/TokenWebModel.cs deleted file mode 100644 index 154b64b..0000000 --- a/src/Web/DevHive.Web.Models/Identity/User/TokenWebModel.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace DevHive.Web.Models.Identity.User -{ - public class TokenWebModel - { - public TokenWebModel(string token) - { - this.Token = token; - } - - public string Token { get; set; } - } -} \ No newline at end of file diff --git a/src/Web/DevHive.Web.Models/Identity/User/UpdateProfilePictureWebModel.cs b/src/Web/DevHive.Web.Models/Identity/User/UpdateProfilePictureWebModel.cs deleted file mode 100644 index 6efe968..0000000 --- a/src/Web/DevHive.Web.Models/Identity/User/UpdateProfilePictureWebModel.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.AspNetCore.Http; - -namespace DevHive.Web.Models.Identity.User -{ - public class UpdateProfilePictureWebModel - { - public IFormFile Picture { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/Identity/User/UpdateUserWebModel.cs b/src/Web/DevHive.Web.Models/Identity/User/UpdateUserWebModel.cs deleted file mode 100644 index 62901f6..0000000 --- a/src/Web/DevHive.Web.Models/Identity/User/UpdateUserWebModel.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; -using DevHive.Web.Attributes; -using DevHive.Web.Models.Identity.Role; -using DevHive.Web.Models.Language; -using DevHive.Web.Models.Technology; - -namespace DevHive.Web.Models.Identity.User -{ - public class UpdateUserWebModel : BaseUserWebModel - { - [NotNull] - [Required] - [GoodPassword] - public string Password { get; set; } - - [NotNull] - [Required] - public HashSet Friends { get; set; } - - [NotNull] - [Required] - public HashSet Roles { get; set; } - - [NotNull] - [Required] - public HashSet Languages { get; set; } - - [NotNull] - [Required] - public HashSet Technologies { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/Identity/User/UserWebModel.cs b/src/Web/DevHive.Web.Models/Identity/User/UserWebModel.cs deleted file mode 100644 index 7ab8cca..0000000 --- a/src/Web/DevHive.Web.Models/Identity/User/UserWebModel.cs +++ /dev/null @@ -1,33 +0,0 @@ -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; - -namespace DevHive.Web.Models.Identity.User -{ - public class UserWebModel : BaseUserWebModel - { - public string ProfilePictureURL { get; set; } - - [NotNull] - [Required] - public HashSet Roles { get; set; } = new(); - - [NotNull] - [Required] - public HashSet Friends { get; set; } = new(); - - [NotNull] - [Required] - public HashSet Languages { get; set; } = new(); - - [NotNull] - [Required] - public HashSet Technologies { get; set; } = new(); - - public List Posts { get; set; } = new(); - } -} diff --git a/src/Web/DevHive.Web.Models/Identity/User/UsernameWebModel.cs b/src/Web/DevHive.Web.Models/Identity/User/UsernameWebModel.cs deleted file mode 100644 index c533bba..0000000 --- a/src/Web/DevHive.Web.Models/Identity/User/UsernameWebModel.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; -using DevHive.Web.Attributes; - -namespace DevHive.Web.Models.Identity.User -{ - public class UsernameWebModel - { - [NotNull] - [Required] - [MinLength(3)] - [MaxLength(50)] - public string UserName { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/Post/Rating/RatePostWebModel.cs b/src/Web/DevHive.Web.Models/Post/Rating/RatePostWebModel.cs deleted file mode 100644 index 5f0e58f..0000000 --- a/src/Web/DevHive.Web.Models/Post/Rating/RatePostWebModel.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; - -namespace DevHive.Web.Models.Post.Rating -{ - public class RatePostWebModel - { - public Guid PostId { get; set; } - - public bool Liked { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/Post/Rating/ReadPostRatingWebModel.cs b/src/Web/DevHive.Web.Models/Post/Rating/ReadPostRatingWebModel.cs deleted file mode 100644 index a551fb8..0000000 --- a/src/Web/DevHive.Web.Models/Post/Rating/ReadPostRatingWebModel.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace DevHive.Web.Models.Post.Rating -{ - public class ReadPostRatingWebModel - { - public Guid Id { get; set; } - - public Guid PostId { get; set; } - - public int Likes { get; set; } - - public int Dislikes { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/Rating/RatePostWebModel.cs b/src/Web/DevHive.Web.Models/Rating/RatePostWebModel.cs new file mode 100644 index 0000000..cbba4ab --- /dev/null +++ b/src/Web/DevHive.Web.Models/Rating/RatePostWebModel.cs @@ -0,0 +1,11 @@ +using System; + +namespace DevHive.Web.Models.Rating +{ + public class RatePostWebModel + { + public Guid PostId { get; set; } + + public bool Liked { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/Rating/ReadPostRatingWebModel.cs b/src/Web/DevHive.Web.Models/Rating/ReadPostRatingWebModel.cs new file mode 100644 index 0000000..8afd57e --- /dev/null +++ b/src/Web/DevHive.Web.Models/Rating/ReadPostRatingWebModel.cs @@ -0,0 +1,15 @@ +using System; + +namespace DevHive.Web.Models.Rating +{ + public class ReadPostRatingWebModel + { + public Guid Id { get; set; } + + public Guid PostId { get; set; } + + public int Likes { get; set; } + + public int Dislikes { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/Role/CreateRoleWebModel.cs b/src/Web/DevHive.Web.Models/Role/CreateRoleWebModel.cs new file mode 100644 index 0000000..9beced4 --- /dev/null +++ b/src/Web/DevHive.Web.Models/Role/CreateRoleWebModel.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; + +namespace DevHive.Web.Models.Role +{ + public class CreateRoleWebModel + { + [NotNull] + [Required] + [MinLength(3)] + [MaxLength(50)] + public string Name { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/Role/RoleWebModel.cs b/src/Web/DevHive.Web.Models/Role/RoleWebModel.cs new file mode 100644 index 0000000..680fb05 --- /dev/null +++ b/src/Web/DevHive.Web.Models/Role/RoleWebModel.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; + +namespace DevHive.Web.Models.Role +{ + public class RoleWebModel + { + [NotNull] + [Required] + [MinLength(3)] + [MaxLength(50)] + public string Name { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/Role/UpdateRoleWebModel.cs b/src/Web/DevHive.Web.Models/Role/UpdateRoleWebModel.cs new file mode 100644 index 0000000..f32839e --- /dev/null +++ b/src/Web/DevHive.Web.Models/Role/UpdateRoleWebModel.cs @@ -0,0 +1,15 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; + +namespace DevHive.Web.Models.Role +{ + public class UpdateRoleWebModel + { + [NotNull] + [Required] + [MinLength(3)] + [MaxLength(50)] + public string Name { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/User/BaseUserWebModel.cs b/src/Web/DevHive.Web.Models/User/BaseUserWebModel.cs new file mode 100644 index 0000000..9a2544d --- /dev/null +++ b/src/Web/DevHive.Web.Models/User/BaseUserWebModel.cs @@ -0,0 +1,34 @@ +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; +using DevHive.Web.Attributes; + +namespace DevHive.Web.Models.User +{ + public class BaseUserWebModel + { + [NotNull] + [Required] + [MinLength(3)] + [MaxLength(50)] + public string UserName { get; set; } + + [NotNull] + [Required] + [EmailAddress] + public string Email { get; set; } + + [NotNull] + [Required] + [MinLength(3)] + [MaxLength(30)] + [OnlyLetters(ErrorMessage = "First name can only contain letters!")] + public string FirstName { get; set; } + + [NotNull] + [Required] + [MinLength(3)] + [MaxLength(30)] + [OnlyLetters(ErrorMessage = "Last name can only contain letters!")] + public string LastName { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/User/LoginWebModel.cs b/src/Web/DevHive.Web.Models/User/LoginWebModel.cs new file mode 100644 index 0000000..c821721 --- /dev/null +++ b/src/Web/DevHive.Web.Models/User/LoginWebModel.cs @@ -0,0 +1,20 @@ +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; +using DevHive.Web.Attributes; + +namespace DevHive.Web.Models.User +{ + public class LoginWebModel + { + [NotNull] + [Required] + [MinLength(3)] + [MaxLength(50)] + public string UserName { get; set; } + + [NotNull] + [Required] + [GoodPassword] + public string Password { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/User/ProfilePictureWebModel.cs b/src/Web/DevHive.Web.Models/User/ProfilePictureWebModel.cs new file mode 100644 index 0000000..e09ee08 --- /dev/null +++ b/src/Web/DevHive.Web.Models/User/ProfilePictureWebModel.cs @@ -0,0 +1,7 @@ +namespace DevHive.Web.Models.User +{ + public class ProfilePictureWebModel + { + public string ProfilePictureURL { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/User/RegisterWebModel.cs b/src/Web/DevHive.Web.Models/User/RegisterWebModel.cs new file mode 100644 index 0000000..754c8eb --- /dev/null +++ b/src/Web/DevHive.Web.Models/User/RegisterWebModel.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; +using DevHive.Web.Attributes; + +namespace DevHive.Web.Models.User +{ + public class RegisterWebModel : BaseUserWebModel + { + [NotNull] + [Required] + [GoodPassword] + public string Password { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/User/TokenWebModel.cs b/src/Web/DevHive.Web.Models/User/TokenWebModel.cs new file mode 100644 index 0000000..7f3361d --- /dev/null +++ b/src/Web/DevHive.Web.Models/User/TokenWebModel.cs @@ -0,0 +1,12 @@ +namespace DevHive.Web.Models.User +{ + public class TokenWebModel + { + public TokenWebModel(string token) + { + this.Token = token; + } + + public string Token { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/User/UpdateProfilePictureWebModel.cs b/src/Web/DevHive.Web.Models/User/UpdateProfilePictureWebModel.cs new file mode 100644 index 0000000..196d1e7 --- /dev/null +++ b/src/Web/DevHive.Web.Models/User/UpdateProfilePictureWebModel.cs @@ -0,0 +1,9 @@ +using Microsoft.AspNetCore.Http; + +namespace DevHive.Web.Models.User +{ + public class UpdateProfilePictureWebModel + { + public IFormFile Picture { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/User/UpdateUserWebModel.cs b/src/Web/DevHive.Web.Models/User/UpdateUserWebModel.cs new file mode 100644 index 0000000..86f6bfe --- /dev/null +++ b/src/Web/DevHive.Web.Models/User/UpdateUserWebModel.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; +using DevHive.Web.Attributes; +using DevHive.Web.Models.Role; +using DevHive.Web.Models.Language; +using DevHive.Web.Models.Technology; + +namespace DevHive.Web.Models.User +{ + public class UpdateUserWebModel : BaseUserWebModel + { + [NotNull] + [Required] + [GoodPassword] + public string Password { get; set; } + + [NotNull] + [Required] + public HashSet Friends { get; set; } + + [NotNull] + [Required] + public HashSet Roles { get; set; } + + [NotNull] + [Required] + public HashSet Languages { get; set; } + + [NotNull] + [Required] + public HashSet Technologies { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/User/UserWebModel.cs b/src/Web/DevHive.Web.Models/User/UserWebModel.cs new file mode 100644 index 0000000..37141d0 --- /dev/null +++ b/src/Web/DevHive.Web.Models/User/UserWebModel.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; +using DevHive.Common.Models.Misc; +using DevHive.Web.Models.Role; +using DevHive.Web.Models.Language; +using DevHive.Web.Models.Technology; + +namespace DevHive.Web.Models.User +{ + public class UserWebModel : BaseUserWebModel + { + public string ProfilePictureURL { get; set; } + + [NotNull] + [Required] + public HashSet Roles { get; set; } = new(); + + [NotNull] + [Required] + public HashSet Friends { get; set; } = new(); + + [NotNull] + [Required] + public HashSet Languages { get; set; } = new(); + + [NotNull] + [Required] + public HashSet Technologies { get; set; } = new(); + + public List Posts { get; set; } = new(); + } +} diff --git a/src/Web/DevHive.Web.Models/User/UsernameWebModel.cs b/src/Web/DevHive.Web.Models/User/UsernameWebModel.cs new file mode 100644 index 0000000..fc0a7ff --- /dev/null +++ b/src/Web/DevHive.Web.Models/User/UsernameWebModel.cs @@ -0,0 +1,15 @@ +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; +using DevHive.Web.Attributes; + +namespace DevHive.Web.Models.User +{ + public class UsernameWebModel + { + [NotNull] + [Required] + [MinLength(3)] + [MaxLength(50)] + public string UserName { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Tests/DevHive.Web.Tests.csproj b/src/Web/DevHive.Web.Tests/DevHive.Web.Tests.csproj index 2b30bb8..ee390b5 100644 --- a/src/Web/DevHive.Web.Tests/DevHive.Web.Tests.csproj +++ b/src/Web/DevHive.Web.Tests/DevHive.Web.Tests.csproj @@ -13,13 +13,6 @@ - - - - - - - true latest diff --git a/src/Web/DevHive.Web.Tests/RoleController.Tests.cs b/src/Web/DevHive.Web.Tests/RoleController.Tests.cs index 067b4e4..b5deba0 100644 --- a/src/Web/DevHive.Web.Tests/RoleController.Tests.cs +++ b/src/Web/DevHive.Web.Tests/RoleController.Tests.cs @@ -3,9 +3,9 @@ using System.Linq; using System.Threading.Tasks; using AutoMapper; using DevHive.Services.Interfaces; -using DevHive.Services.Models.Identity.Role; +using DevHive.Services.Models.Role; using DevHive.Web.Controllers; -using DevHive.Web.Models.Identity.Role; +using DevHive.Web.Models.Role; using Microsoft.AspNetCore.Mvc; using Moq; using NUnit.Framework; diff --git a/src/Web/DevHive.Web.Tests/UserController.Tests.cs b/src/Web/DevHive.Web.Tests/UserController.Tests.cs index c1431c8..3e858f6 100644 --- a/src/Web/DevHive.Web.Tests/UserController.Tests.cs +++ b/src/Web/DevHive.Web.Tests/UserController.Tests.cs @@ -3,9 +3,9 @@ using System.Threading.Tasks; using AutoMapper; using DevHive.Common.Models.Identity; using DevHive.Services.Interfaces; -using DevHive.Services.Models.Identity.User; +using DevHive.Services.Models.User; using DevHive.Web.Controllers; -using DevHive.Web.Models.Identity.User; +using DevHive.Web.Models.User; using Microsoft.AspNetCore.Mvc; using Moq; using NUnit.Framework; diff --git a/src/Web/DevHive.Web/Configurations/Mapping/RoleMappings.cs b/src/Web/DevHive.Web/Configurations/Mapping/RoleMappings.cs index 2ea2742..60f8503 100644 --- a/src/Web/DevHive.Web/Configurations/Mapping/RoleMappings.cs +++ b/src/Web/DevHive.Web/Configurations/Mapping/RoleMappings.cs @@ -1,6 +1,6 @@ using AutoMapper; -using DevHive.Web.Models.Identity.Role; -using DevHive.Services.Models.Identity.Role; +using DevHive.Web.Models.Role; +using DevHive.Services.Models.Role; namespace DevHive.Web.Configurations.Mapping { diff --git a/src/Web/DevHive.Web/Configurations/Mapping/UserMappings.cs b/src/Web/DevHive.Web/Configurations/Mapping/UserMappings.cs index f58e7ca..14aaa3a 100644 --- a/src/Web/DevHive.Web/Configurations/Mapping/UserMappings.cs +++ b/src/Web/DevHive.Web/Configurations/Mapping/UserMappings.cs @@ -1,6 +1,6 @@ using AutoMapper; -using DevHive.Services.Models.Identity.User; -using DevHive.Web.Models.Identity.User; +using DevHive.Services.Models.User; +using DevHive.Web.Models.User; using DevHive.Common.Models.Identity; namespace DevHive.Web.Configurations.Mapping diff --git a/src/Web/DevHive.Web/Controllers/RoleController.cs b/src/Web/DevHive.Web/Controllers/RoleController.cs index 0d2a2eb..1465795 100644 --- a/src/Web/DevHive.Web/Controllers/RoleController.cs +++ b/src/Web/DevHive.Web/Controllers/RoleController.cs @@ -1,10 +1,10 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; -using DevHive.Web.Models.Identity.Role; +using DevHive.Web.Models.Role; using AutoMapper; using System; using DevHive.Services.Interfaces; -using DevHive.Services.Models.Identity.Role; +using DevHive.Services.Models.Role; using Microsoft.AspNetCore.Authorization; namespace DevHive.Web.Controllers diff --git a/src/Web/DevHive.Web/Controllers/UserController.cs b/src/Web/DevHive.Web/Controllers/UserController.cs index 109bbaa..25faa8a 100644 --- a/src/Web/DevHive.Web/Controllers/UserController.cs +++ b/src/Web/DevHive.Web/Controllers/UserController.cs @@ -1,8 +1,8 @@ using System; using System.Threading.Tasks; using AutoMapper; -using DevHive.Services.Models.Identity.User; -using DevHive.Web.Models.Identity.User; +using DevHive.Services.Models.User; +using DevHive.Web.Models.User; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using DevHive.Common.Models.Identity; diff --git a/src/Web/DevHive.Web/DevHive.Web.csproj b/src/Web/DevHive.Web/DevHive.Web.csproj index 71362ce..7ba07b1 100644 --- a/src/Web/DevHive.Web/DevHive.Web.csproj +++ b/src/Web/DevHive.Web/DevHive.Web.csproj @@ -20,11 +20,4 @@ - - - - - - - -- cgit v1.2.3 From 018e9d303c38407589f06ec37a4a72dc4ce8e3b4 Mon Sep 17 00:00:00 2001 From: transtrike Date: Sat, 13 Feb 2021 18:36:25 +0200 Subject: Merged New Project Structure; Fixed Kamen's Formatting Issues --- src/Data/DevHive.Data.Models/ProfilePicture.cs | 2 +- .../DevHive.Data/Repositories/CommentRepository.cs | 5 ++-- .../DevHive.Data/Repositories/FeedRepository.cs | 8 +++---- .../Repositories/LanguageRepository.cs | 4 ++-- .../DevHive.Data/Repositories/PostRepository.cs | 10 ++++---- .../Repositories/TechnologyRepository.cs | 4 ++-- src/DevHive.code-workspace | 1 - .../DevHive.Services/Interfaces/IPostService.cs | 2 +- .../DevHive.Services/Services/FeedService.cs | 4 ++-- .../DevHive.Services/Services/PostService.cs | 22 ++++++++--------- .../DevHive.Services/Services/UserService.cs | 28 +++++++++++----------- src/Web/DevHive.Web.Tests/PostController.Tests.cs | 2 +- src/Web/DevHive.Web.Tests/RoleController.Tests.cs | 2 +- src/Web/DevHive.Web.Tests/UserController.Tests.cs | 2 +- 14 files changed, 47 insertions(+), 49 deletions(-) (limited to 'src/Data/DevHive.Data.Models/ProfilePicture.cs') diff --git a/src/Data/DevHive.Data.Models/ProfilePicture.cs b/src/Data/DevHive.Data.Models/ProfilePicture.cs index c5dec68..c502654 100644 --- a/src/Data/DevHive.Data.Models/ProfilePicture.cs +++ b/src/Data/DevHive.Data.Models/ProfilePicture.cs @@ -3,7 +3,7 @@ using DevHive.Data.Models.Interfaces; namespace DevHive.Data.Models { - public class ProfilePicture: IProfilePicture + public class ProfilePicture : IProfilePicture { public Guid Id { get; set; } diff --git a/src/Data/DevHive.Data/Repositories/CommentRepository.cs b/src/Data/DevHive.Data/Repositories/CommentRepository.cs index c63fe65..9364776 100644 --- a/src/Data/DevHive.Data/Repositories/CommentRepository.cs +++ b/src/Data/DevHive.Data/Repositories/CommentRepository.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.ComponentModel; using System.Linq; using System.Threading.Tasks; using DevHive.Data.Interfaces; @@ -29,8 +28,8 @@ namespace DevHive.Data.Repositories } /// - /// This method returns the comment that is made at exactly the given time and by the given creator - /// + /// This method returns the comment that is made at exactly the given time and by the given creator + /// public async Task GetCommentByIssuerAndTimeCreatedAsync(Guid issuerId, DateTime timeCreated) { return await this._context.Comments diff --git a/src/Data/DevHive.Data/Repositories/FeedRepository.cs b/src/Data/DevHive.Data/Repositories/FeedRepository.cs index 8899675..d3312d7 100644 --- a/src/Data/DevHive.Data/Repositories/FeedRepository.cs +++ b/src/Data/DevHive.Data/Repositories/FeedRepository.cs @@ -19,14 +19,14 @@ namespace DevHive.Data.Repositories } /// - /// This returns a given amount of posts of all given friends, created before "firstRequestIssued", + /// This returns a given amount of posts of all given friends, created before "firstRequestIssued", /// ordered from latest to oldest (time created). /// PageSize specifies how many posts to get, and pageNumber specifices how many posts to skip (pageNumber * pageSize). /// /// This method is used in the feed page. /// Posts from friends are meant to be gotten in chunks, meaning you get X posts, and then get another amount of posts, /// that are after the first X posts. - /// + /// public async Task> GetFriendsPosts(List friendsList, DateTime firstRequestIssued, int pageNumber, int pageSize) { List friendsIds = friendsList.Select(f => f.Id).ToList(); @@ -49,14 +49,14 @@ namespace DevHive.Data.Repositories } /// - /// This returns a given amount of posts, that a user has made, created before "firstRequestIssued", + /// This returns a given amount of posts, that a user has made, created before "firstRequestIssued", /// ordered from latest to oldest (time created). /// PageSize specifies how many posts to get, and pageNumber specifices how many posts to skip (pageNumber * pageSize). /// /// This method is used in the profile page. /// Posts from friends are meant to be gotten in chunks, meaning you get X posts, and then get another amount of posts, /// that are after the first X posts. - /// + /// public async Task> GetUsersPosts(User user, DateTime firstRequestIssued, int pageNumber, int pageSize) { List posts = await this._context.Posts diff --git a/src/Data/DevHive.Data/Repositories/LanguageRepository.cs b/src/Data/DevHive.Data/Repositories/LanguageRepository.cs index 61f4792..3528ea8 100644 --- a/src/Data/DevHive.Data/Repositories/LanguageRepository.cs +++ b/src/Data/DevHive.Data/Repositories/LanguageRepository.cs @@ -26,8 +26,8 @@ namespace DevHive.Data.Repositories } /// - /// Returns all technologies that exist in the database - /// + /// Returns all technologies that exist in the database + /// public HashSet GetLanguages() { return this._context.Languages.ToHashSet(); diff --git a/src/Data/DevHive.Data/Repositories/PostRepository.cs b/src/Data/DevHive.Data/Repositories/PostRepository.cs index d35c475..b6c5e37 100644 --- a/src/Data/DevHive.Data/Repositories/PostRepository.cs +++ b/src/Data/DevHive.Data/Repositories/PostRepository.cs @@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore; namespace DevHive.Data.Repositories { - public class PostRepository : BaseRepository, IPostRepository + public class PostRepository : BaseRepository, IPostRepository { private readonly DevHiveContext _context; private readonly IUserRepository _userRepository; @@ -41,8 +41,8 @@ namespace DevHive.Data.Repositories } /// - /// This method returns the post that is made at exactly the given time and by the given creator - /// + /// This method returns the post that is made at exactly the given time and by the given creator + /// public async Task GetPostByCreatorAndTimeCreatedAsync(Guid creatorId, DateTime timeCreated) { return await this._context.Posts @@ -68,12 +68,12 @@ namespace DevHive.Data.Repositories .SetValues(newEntity); List postAttachments = new(); - foreach(var attachment in newEntity.Attachments) + foreach (var attachment in newEntity.Attachments) postAttachments.Add(attachment); post.Attachments = postAttachments; post.Comments.Clear(); - foreach(var comment in newEntity.Comments) + foreach (var comment in newEntity.Comments) post.Comments.Add(comment); // post.Rating.Id = ratingId; diff --git a/src/Data/DevHive.Data/Repositories/TechnologyRepository.cs b/src/Data/DevHive.Data/Repositories/TechnologyRepository.cs index 8cb7da1..d0d1f3f 100644 --- a/src/Data/DevHive.Data/Repositories/TechnologyRepository.cs +++ b/src/Data/DevHive.Data/Repositories/TechnologyRepository.cs @@ -26,8 +26,8 @@ namespace DevHive.Data.Repositories } /// - /// Returns all technologies that exist in the database - /// + /// Returns all technologies that exist in the database + /// public HashSet GetTechnologies() { return this._context.Technologies.ToHashSet(); diff --git a/src/DevHive.code-workspace b/src/DevHive.code-workspace index 36e1700..8511609 100644 --- a/src/DevHive.code-workspace +++ b/src/DevHive.code-workspace @@ -31,7 +31,6 @@ "omnisharp.enableEditorConfigSupport": true, "omnisharp.enableRoslynAnalyzers": true, "prettier.useEditorConfig": true, - "workbench.editor.labelFormat": "short" }, "launch": { "configurations": [ diff --git a/src/Services/DevHive.Services/Interfaces/IPostService.cs b/src/Services/DevHive.Services/Interfaces/IPostService.cs index d35acfd..5ccecff 100644 --- a/src/Services/DevHive.Services/Interfaces/IPostService.cs +++ b/src/Services/DevHive.Services/Interfaces/IPostService.cs @@ -4,7 +4,7 @@ using DevHive.Services.Models.Post; namespace DevHive.Services.Interfaces { - public interface IPostService + public interface IPostService { Task CreatePost(CreatePostServiceModel createPostServiceModel); diff --git a/src/Services/DevHive.Services/Services/FeedService.cs b/src/Services/DevHive.Services/Services/FeedService.cs index a0f1f1b..5feef6e 100644 --- a/src/Services/DevHive.Services/Services/FeedService.cs +++ b/src/Services/DevHive.Services/Services/FeedService.cs @@ -27,7 +27,7 @@ namespace DevHive.Services.Services /// /// This method is used in the feed page. /// See the FeedRepository "GetFriendsPosts" menthod for more information on how it works. - /// + /// public async Task GetPage(GetPageServiceModel model) { User user = null; @@ -58,7 +58,7 @@ namespace DevHive.Services.Services /// /// This method is used in the profile pages. /// See the FeedRepository "GetUsersPosts" menthod for more information on how it works. - /// + /// public async Task GetUserPage(GetPageServiceModel model) { User user = null; diff --git a/src/Services/DevHive.Services/Services/PostService.cs b/src/Services/DevHive.Services/Services/PostService.cs index c368ce6..0becd9f 100644 --- a/src/Services/DevHive.Services/Services/PostService.cs +++ b/src/Services/DevHive.Services/Services/PostService.cs @@ -13,7 +13,7 @@ using DevHive.Data.Models.Relational; namespace DevHive.Services.Services { - public class PostService : IPostService + public class PostService : IPostService { private readonly ICloudService _cloudService; private readonly IUserRepository _userRepository; @@ -144,8 +144,8 @@ namespace DevHive.Services.Services #region Validations /// - /// Checks whether the user Id in the token and the given user Id match - /// + /// Checks whether the user Id in the token and the given user Id match + /// public async Task ValidateJwtForCreating(Guid userId, string rawTokenData) { User user = await this.GetUserForValidation(rawTokenData); @@ -154,10 +154,10 @@ namespace DevHive.Services.Services } /// - /// Checks whether the post, gotten with the postId, + /// Checks whether the post, gotten with the postId, /// is made by the user in the token /// or if the user in the token is an admin - /// + /// public async Task ValidateJwtForPost(Guid postId, string rawTokenData) { Post post = await this._postRepository.GetByIdAsync(postId) ?? @@ -175,10 +175,10 @@ namespace DevHive.Services.Services } /// - /// Checks whether the comment, gotten with the commentId, + /// Checks whether the comment, gotten with the commentId, /// is made by the user in the token /// or if the user in the token is an admin - /// + /// public async Task ValidateJwtForComment(Guid commentId, string rawTokenData) { Comment comment = await this._commentRepository.GetByIdAsync(commentId) ?? @@ -196,8 +196,8 @@ namespace DevHive.Services.Services } /// - /// Returns the user, via their Id in the token - /// + /// Returns the user, via their Id in the token + /// private async Task GetUserForValidation(string rawTokenData) { JwtSecurityToken jwt = new JwtSecurityTokenHandler().ReadJwtToken(rawTokenData.Remove(0, 7)); @@ -212,8 +212,8 @@ namespace DevHive.Services.Services } /// - /// Returns all values from a given claim type - /// + /// Returns all values from a given claim type + /// private List GetClaimTypeValues(string type, IEnumerable claims) { List toReturn = new(); diff --git a/src/Services/DevHive.Services/Services/UserService.cs b/src/Services/DevHive.Services/Services/UserService.cs index f2c5a5b..9a63853 100644 --- a/src/Services/DevHive.Services/Services/UserService.cs +++ b/src/Services/DevHive.Services/Services/UserService.cs @@ -54,9 +54,9 @@ namespace DevHive.Services.Services #region Authentication /// - /// Adds a new user to the database with the values from the given model. + /// Adds a new user to the database with the values from the given model. /// Returns a JSON Web Token (that can be used for authorization) - /// + /// public async Task LoginUser(LoginServiceModel loginModel) { if (!await this._userRepository.DoesUsernameExistAsync(loginModel.UserName)) @@ -71,8 +71,8 @@ namespace DevHive.Services.Services } /// - /// Returns a new JSON Web Token (that can be used for authorization) for the given user - /// + /// Returns a new JSON Web Token (that can be used for authorization) for the given user + /// public async Task RegisterUser(RegisterServiceModel registerModel) { if (await this._userRepository.DoesUsernameExistAsync(registerModel.UserName)) @@ -143,8 +143,8 @@ namespace DevHive.Services.Services } /// - /// Uploads the given picture and assigns it's link to the user in the database - /// + /// Uploads the given picture and assigns it's link to the user in the database + /// public async Task UpdateProfilePicture(UpdateProfilePictureServiceModel updateProfilePictureServiceModel) { User user = await this._userRepository.GetByIdAsync(updateProfilePictureServiceModel.UserId); @@ -183,10 +183,10 @@ namespace DevHive.Services.Services #region Validations /// - /// Checks whether the given user, gotten by the "id" property, + /// Checks whether the given user, gotten by the "id" property, /// is the same user as the one in the token (uness the user in the token has the admin role) /// and the roles in the token are the same as those in the user, gotten by the id in the token - /// + /// public async Task ValidJWT(Guid id, string rawTokenData) { // There is authorization name in the beginning, i.e. "Bearer eyJh..." @@ -220,8 +220,8 @@ namespace DevHive.Services.Services } /// - /// Returns all values from a given claim type - /// + /// Returns all values from a given claim type + /// private List GetClaimTypeValues(string type, IEnumerable claims) { List toReturn = new(); @@ -234,10 +234,10 @@ namespace DevHive.Services.Services } /// - /// Checks whether the user in the model exists + /// Checks whether the user in the model exists /// and whether the username in the model is already taken. /// If the check fails (is false), it throws an exception, otherwise nothing happens - /// + /// private async Task ValidateUserOnUpdate(UpdateUserServiceModel updateUserServiceModel) { if (!await this._userRepository.DoesUserExistAsync(updateUserServiceModel.Id)) @@ -259,9 +259,9 @@ namespace DevHive.Services.Services } /// - /// Return a new JSON Web Token, containing the user id, username and roles. + /// Return a new JSON Web Token, containing the user id, username and roles. /// Tokens have an expiration time of 7 days. - /// + /// private string WriteJWTSecurityToken(Guid userId, string username, HashSet roles) { byte[] signingKey = Encoding.ASCII.GetBytes(_jwtOptions.Secret); diff --git a/src/Web/DevHive.Web.Tests/PostController.Tests.cs b/src/Web/DevHive.Web.Tests/PostController.Tests.cs index 3a4e45e..96b0356 100644 --- a/src/Web/DevHive.Web.Tests/PostController.Tests.cs +++ b/src/Web/DevHive.Web.Tests/PostController.Tests.cs @@ -12,7 +12,7 @@ using NUnit.Framework; namespace DevHive.Web.Tests { - [TestFixture] + [TestFixture] public class PostControllerTests { const string MESSAGE = "Gosho Trapov"; diff --git a/src/Web/DevHive.Web.Tests/RoleController.Tests.cs b/src/Web/DevHive.Web.Tests/RoleController.Tests.cs index 8e33bee..64e3f11 100644 --- a/src/Web/DevHive.Web.Tests/RoleController.Tests.cs +++ b/src/Web/DevHive.Web.Tests/RoleController.Tests.cs @@ -12,7 +12,7 @@ using NUnit.Framework; namespace DevHive.Web.Tests { - [TestFixture] + [TestFixture] public class RoleControllerTests { const string NAME = "Gosho Trapov"; diff --git a/src/Web/DevHive.Web.Tests/UserController.Tests.cs b/src/Web/DevHive.Web.Tests/UserController.Tests.cs index efdfdbb..7457ad7 100644 --- a/src/Web/DevHive.Web.Tests/UserController.Tests.cs +++ b/src/Web/DevHive.Web.Tests/UserController.Tests.cs @@ -12,7 +12,7 @@ using NUnit.Framework; namespace DevHive.Web.Tests { - [TestFixture] + [TestFixture] public class UserControllerTests { const string USERNAME = "Gosho Trapov"; -- cgit v1.2.3 From 9b04b4f2b031a3c631dba65908f277996015ae05 Mon Sep 17 00:00:00 2001 From: transtrike Date: Wed, 17 Mar 2021 17:31:21 +0200 Subject: Removed interfaces for pure classes --- src/Data/DevHive.Data.Models/Comment.cs | 3 +-- .../DevHive.Data.Models/Interfaces/IComment.cs | 16 ---------------- .../DevHive.Data.Models/Interfaces/ILanguage.cs | 11 ----------- src/Data/DevHive.Data.Models/Interfaces/IModel.cs | 9 --------- src/Data/DevHive.Data.Models/Interfaces/IPost.cs | 22 ---------------------- .../Interfaces/IProfilePicture.cs | 13 ------------- src/Data/DevHive.Data.Models/Interfaces/IRating.cs | 15 --------------- src/Data/DevHive.Data.Models/Interfaces/IRole.cs | 10 ---------- .../DevHive.Data.Models/Interfaces/ITechnology.cs | 11 ----------- src/Data/DevHive.Data.Models/Interfaces/IUser.cs | 21 --------------------- src/Data/DevHive.Data.Models/Language.cs | 3 +-- src/Data/DevHive.Data.Models/Post.cs | 3 +-- src/Data/DevHive.Data.Models/ProfilePicture.cs | 3 +-- src/Data/DevHive.Data.Models/Rating.cs | 4 +--- src/Data/DevHive.Data.Models/Role.cs | 3 +-- src/Data/DevHive.Data.Models/Technology.cs | 3 +-- src/Data/DevHive.Data.Models/User.cs | 3 +-- 17 files changed, 8 insertions(+), 145 deletions(-) delete mode 100644 src/Data/DevHive.Data.Models/Interfaces/IComment.cs delete mode 100644 src/Data/DevHive.Data.Models/Interfaces/ILanguage.cs delete mode 100644 src/Data/DevHive.Data.Models/Interfaces/IModel.cs delete mode 100644 src/Data/DevHive.Data.Models/Interfaces/IPost.cs delete mode 100644 src/Data/DevHive.Data.Models/Interfaces/IProfilePicture.cs delete mode 100644 src/Data/DevHive.Data.Models/Interfaces/IRating.cs delete mode 100644 src/Data/DevHive.Data.Models/Interfaces/IRole.cs delete mode 100644 src/Data/DevHive.Data.Models/Interfaces/ITechnology.cs delete mode 100644 src/Data/DevHive.Data.Models/Interfaces/IUser.cs (limited to 'src/Data/DevHive.Data.Models/ProfilePicture.cs') diff --git a/src/Data/DevHive.Data.Models/Comment.cs b/src/Data/DevHive.Data.Models/Comment.cs index f907e43..0af40bf 100644 --- a/src/Data/DevHive.Data.Models/Comment.cs +++ b/src/Data/DevHive.Data.Models/Comment.cs @@ -1,9 +1,8 @@ using System; -using DevHive.Data.Models.Interfaces; namespace DevHive.Data.Models { - public class Comment : IComment + public class Comment { public Guid Id { get; set; } diff --git a/src/Data/DevHive.Data.Models/Interfaces/IComment.cs b/src/Data/DevHive.Data.Models/Interfaces/IComment.cs deleted file mode 100644 index c8f1f6a..0000000 --- a/src/Data/DevHive.Data.Models/Interfaces/IComment.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using DevHive.Data.Models; - -namespace DevHive.Data.Models.Interfaces -{ - public interface IComment : IModel - { - Post Post { get; set; } - - User Creator { get; set; } - - string Message { get; set; } - - DateTime TimeCreated { get; set; } - } -} diff --git a/src/Data/DevHive.Data.Models/Interfaces/ILanguage.cs b/src/Data/DevHive.Data.Models/Interfaces/ILanguage.cs deleted file mode 100644 index 06e11b4..0000000 --- a/src/Data/DevHive.Data.Models/Interfaces/ILanguage.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; -using DevHive.Data.Models; - -namespace DevHive.Data.Models.Interfaces -{ - public interface ILanguage : IModel - { - string Name { get; set; } - HashSet Users { get; set; } - } -} diff --git a/src/Data/DevHive.Data.Models/Interfaces/IModel.cs b/src/Data/DevHive.Data.Models/Interfaces/IModel.cs deleted file mode 100644 index 3226dce..0000000 --- a/src/Data/DevHive.Data.Models/Interfaces/IModel.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; - -namespace DevHive.Data.Models.Interfaces -{ - public interface IModel - { - Guid Id { get; set; } - } -} diff --git a/src/Data/DevHive.Data.Models/Interfaces/IPost.cs b/src/Data/DevHive.Data.Models/Interfaces/IPost.cs deleted file mode 100644 index 43b8290..0000000 --- a/src/Data/DevHive.Data.Models/Interfaces/IPost.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using DevHive.Data.Models; -using DevHive.Data.Models.Relational; - -namespace DevHive.Data.Models.Interfaces -{ - public interface IPost : IModel - { - User Creator { get; set; } - - string Message { get; set; } - - DateTime TimeCreated { get; set; } - - List Comments { get; set; } - - // Rating Rating { get; set; } - - List Attachments { get; set; } - } -} diff --git a/src/Data/DevHive.Data.Models/Interfaces/IProfilePicture.cs b/src/Data/DevHive.Data.Models/Interfaces/IProfilePicture.cs deleted file mode 100644 index 550af24..0000000 --- a/src/Data/DevHive.Data.Models/Interfaces/IProfilePicture.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using DevHive.Data.Models; - -namespace DevHive.Data.Models.Interfaces -{ - public interface IProfilePicture : IModel - { - Guid UserId { get; set; } - User User { get; set; } - - string PictureURL { get; set; } - } -} diff --git a/src/Data/DevHive.Data.Models/Interfaces/IRating.cs b/src/Data/DevHive.Data.Models/Interfaces/IRating.cs deleted file mode 100644 index f04f823..0000000 --- a/src/Data/DevHive.Data.Models/Interfaces/IRating.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using DevHive.Data.Models; - -namespace DevHive.Data.Models.Interfaces -{ - public interface IRating : IModel - { - bool IsLike { get; set; } - - Post Post { get; set; } - - User User { get; set; } - } -} diff --git a/src/Data/DevHive.Data.Models/Interfaces/IRole.cs b/src/Data/DevHive.Data.Models/Interfaces/IRole.cs deleted file mode 100644 index 3a87e12..0000000 --- a/src/Data/DevHive.Data.Models/Interfaces/IRole.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Collections.Generic; -using DevHive.Data.Models; - -namespace DevHive.Data.Models.Interfaces -{ - public interface IRole - { - HashSet Users { get; set; } - } -} diff --git a/src/Data/DevHive.Data.Models/Interfaces/ITechnology.cs b/src/Data/DevHive.Data.Models/Interfaces/ITechnology.cs deleted file mode 100644 index 575aea6..0000000 --- a/src/Data/DevHive.Data.Models/Interfaces/ITechnology.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; -using DevHive.Data.Models; - -namespace DevHive.Data.Models.Interfaces -{ - public interface ITechnology : IModel - { - string Name { get; set; } - HashSet Users { get; set; } - } -} diff --git a/src/Data/DevHive.Data.Models/Interfaces/IUser.cs b/src/Data/DevHive.Data.Models/Interfaces/IUser.cs deleted file mode 100644 index 185dfa2..0000000 --- a/src/Data/DevHive.Data.Models/Interfaces/IUser.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections.Generic; -using DevHive.Data.Models; -using DevHive.Data.Models.Relational; - -namespace DevHive.Data.Models.Interfaces -{ - public interface IUser : IModel - { - string FirstName { get; set; } - - string LastName { get; set; } - - ProfilePicture ProfilePicture { get; set; } - - HashSet Languages { get; set; } - - HashSet Technologies { get; set; } - - HashSet Roles { get; set; } - } -} diff --git a/src/Data/DevHive.Data.Models/Language.cs b/src/Data/DevHive.Data.Models/Language.cs index fdcfb07..b9e538a 100644 --- a/src/Data/DevHive.Data.Models/Language.cs +++ b/src/Data/DevHive.Data.Models/Language.cs @@ -1,10 +1,9 @@ using System; using System.Collections.Generic; -using DevHive.Data.Models.Interfaces; namespace DevHive.Data.Models { - public class Language : ILanguage + public class Language { public Guid Id { get; set; } diff --git a/src/Data/DevHive.Data.Models/Post.cs b/src/Data/DevHive.Data.Models/Post.cs index c95a8f1..a5e7642 100644 --- a/src/Data/DevHive.Data.Models/Post.cs +++ b/src/Data/DevHive.Data.Models/Post.cs @@ -1,13 +1,12 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; -using DevHive.Data.Models.Interfaces; using DevHive.Data.Models.Relational; namespace DevHive.Data.Models { [Table("Posts")] - public class Post : IPost + public class Post { public Guid Id { get; set; } diff --git a/src/Data/DevHive.Data.Models/ProfilePicture.cs b/src/Data/DevHive.Data.Models/ProfilePicture.cs index c502654..e2ef04b 100644 --- a/src/Data/DevHive.Data.Models/ProfilePicture.cs +++ b/src/Data/DevHive.Data.Models/ProfilePicture.cs @@ -1,9 +1,8 @@ using System; -using DevHive.Data.Models.Interfaces; namespace DevHive.Data.Models { - public class ProfilePicture : IProfilePicture + public class ProfilePicture { public Guid Id { get; set; } diff --git a/src/Data/DevHive.Data.Models/Rating.cs b/src/Data/DevHive.Data.Models/Rating.cs index 8743a3e..c950697 100644 --- a/src/Data/DevHive.Data.Models/Rating.cs +++ b/src/Data/DevHive.Data.Models/Rating.cs @@ -1,10 +1,8 @@ using System; -using System.Collections.Generic; -using DevHive.Data.Models.Interfaces; namespace DevHive.Data.Models { - public class Rating : IRating + public class Rating { //if adding rating to comments change Post for intreface IRatable! public Guid Id { get; set; } diff --git a/src/Data/DevHive.Data.Models/Role.cs b/src/Data/DevHive.Data.Models/Role.cs index 0df556c..5456cb0 100644 --- a/src/Data/DevHive.Data.Models/Role.cs +++ b/src/Data/DevHive.Data.Models/Role.cs @@ -1,13 +1,12 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Collections.Generic; -using DevHive.Data.Models.Interfaces; using Microsoft.AspNetCore.Identity; using System; namespace DevHive.Data.Models { [Table("Roles")] - public class Role : IdentityRole, IRole + public class Role : IdentityRole { public const string DefaultRole = "User"; public const string AdminRole = "Admin"; diff --git a/src/Data/DevHive.Data.Models/Technology.cs b/src/Data/DevHive.Data.Models/Technology.cs index 9354d5b..0dc077f 100644 --- a/src/Data/DevHive.Data.Models/Technology.cs +++ b/src/Data/DevHive.Data.Models/Technology.cs @@ -1,10 +1,9 @@ using System; using System.Collections.Generic; -using DevHive.Data.Models.Interfaces; namespace DevHive.Data.Models { - public class Technology : ITechnology + public class Technology { public Guid Id { get; set; } diff --git a/src/Data/DevHive.Data.Models/User.cs b/src/Data/DevHive.Data.Models/User.cs index bac5425..eb5ae41 100644 --- a/src/Data/DevHive.Data.Models/User.cs +++ b/src/Data/DevHive.Data.Models/User.cs @@ -1,14 +1,13 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; -using DevHive.Data.Models.Interfaces; using DevHive.Data.Models.Relational; using Microsoft.AspNetCore.Identity; namespace DevHive.Data.Models { [Table("Users")] - public class User : IdentityUser, IUser + public class User : IdentityUser { public string FirstName { get; set; } -- cgit v1.2.3 From d53caaea6094136bac3d01ce9dd2782bb1819fe2 Mon Sep 17 00:00:00 2001 From: transtrike Date: Thu, 25 Mar 2021 12:22:54 +0200 Subject: Profile Picture implemented; Tests and Front end work await --- src/Data/DevHive.Data.Models/ProfilePicture.cs | 3 - src/Data/DevHive.Data/DevHiveContext.cs | 5 +- .../Interfaces/IProfilePictureRepository.cs | 11 + ...0210325081526_Profile_Picture_Layer.Designer.cs | 667 +++++++++++++++++++++ .../20210325081526_Profile_Picture_Layer.cs | 78 +++ .../Migrations/DevHiveContextModelSnapshot.cs | 30 +- .../Repositories/ProfilePictureRepository.cs | 25 + .../ProfilePicture/ProfilePictureServiceModel.cs | 11 + .../User/ProfilePictureServiceModel.cs | 7 - .../User/UpdateProfilePictureServiceModel.cs | 12 - .../Interfaces/IProfilePictureService.cs | 22 + .../DevHive.Services/Interfaces/IUserService.cs | 8 - .../Services/ProfilePictureService.cs | 99 +++ .../DevHive.Services/Services/UserService.cs | 22 - .../ProfilePicture/ProfilePictureWebModel.cs | 9 + .../User/ProfilePictureWebModel.cs | 7 - .../User/UpdateProfilePictureWebModel.cs | 9 - .../Extensions/ConfigureDependencyInjection.cs | 7 +- .../Mapping/ProfilePictureMappings.cs | 16 + .../Configurations/Mapping/UserMappings.cs | 3 - .../Controllers/ProfilePictureController.cs | 42 +- 21 files changed, 978 insertions(+), 115 deletions(-) create mode 100644 src/Data/DevHive.Data/Interfaces/IProfilePictureRepository.cs create mode 100644 src/Data/DevHive.Data/Migrations/20210325081526_Profile_Picture_Layer.Designer.cs create mode 100644 src/Data/DevHive.Data/Migrations/20210325081526_Profile_Picture_Layer.cs create mode 100644 src/Data/DevHive.Data/Repositories/ProfilePictureRepository.cs create mode 100644 src/Services/DevHive.Services.Models/ProfilePicture/ProfilePictureServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/User/ProfilePictureServiceModel.cs delete mode 100644 src/Services/DevHive.Services.Models/User/UpdateProfilePictureServiceModel.cs create mode 100644 src/Services/DevHive.Services/Interfaces/IProfilePictureService.cs create mode 100644 src/Services/DevHive.Services/Services/ProfilePictureService.cs create mode 100644 src/Web/DevHive.Web.Models/ProfilePicture/ProfilePictureWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/User/ProfilePictureWebModel.cs delete mode 100644 src/Web/DevHive.Web.Models/User/UpdateProfilePictureWebModel.cs create mode 100644 src/Web/DevHive.Web/Configurations/Mapping/ProfilePictureMappings.cs (limited to 'src/Data/DevHive.Data.Models/ProfilePicture.cs') diff --git a/src/Data/DevHive.Data.Models/ProfilePicture.cs b/src/Data/DevHive.Data.Models/ProfilePicture.cs index e2ef04b..4b629c2 100644 --- a/src/Data/DevHive.Data.Models/ProfilePicture.cs +++ b/src/Data/DevHive.Data.Models/ProfilePicture.cs @@ -6,9 +6,6 @@ namespace DevHive.Data.Models { public Guid Id { get; set; } - public Guid UserId { get; set; } - public User User { get; set; } - public string PictureURL { get; set; } } } diff --git a/src/Data/DevHive.Data/DevHiveContext.cs b/src/Data/DevHive.Data/DevHiveContext.cs index b0bbdc6..c3adf2d 100644 --- a/src/Data/DevHive.Data/DevHiveContext.cs +++ b/src/Data/DevHive.Data/DevHiveContext.cs @@ -17,6 +17,7 @@ namespace DevHive.Data public DbSet PostAttachments { get; set; } public DbSet Comments { get; set; } public DbSet Rating { get; set; } + public DbSet ProfilePicture { get; set; } public DbSet RatedPost { get; set; } public DbSet UserRate { get; set; } @@ -28,9 +29,7 @@ namespace DevHive.Data .IsUnique(); builder.Entity() - .HasOne(x => x.ProfilePicture) - .WithOne(x => x.User) - .HasForeignKey(x => x.UserId); + .HasOne(x => x.ProfilePicture); /* Roles */ builder.Entity() diff --git a/src/Data/DevHive.Data/Interfaces/IProfilePictureRepository.cs b/src/Data/DevHive.Data/Interfaces/IProfilePictureRepository.cs new file mode 100644 index 0000000..45beaa0 --- /dev/null +++ b/src/Data/DevHive.Data/Interfaces/IProfilePictureRepository.cs @@ -0,0 +1,11 @@ +using System; +using System.Threading.Tasks; +using DevHive.Data.Models; + +namespace DevHive.Data.Interfaces +{ + public interface IProfilePictureRepository : IRepository + { + Task GetByURLAsync(string picUrl); + } +} diff --git a/src/Data/DevHive.Data/Migrations/20210325081526_Profile_Picture_Layer.Designer.cs b/src/Data/DevHive.Data/Migrations/20210325081526_Profile_Picture_Layer.Designer.cs new file mode 100644 index 0000000..189060d --- /dev/null +++ b/src/Data/DevHive.Data/Migrations/20210325081526_Profile_Picture_Layer.Designer.cs @@ -0,0 +1,667 @@ +// +using System; +using DevHive.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace DevHive.Data.Migrations +{ + [DbContext(typeof(DevHiveContext))] + [Migration("20210325081526_Profile_Picture_Layer")] + partial class Profile_Picture_Layer + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:MaxIdentifierLength", 63) + .HasAnnotation("ProductVersion", "5.0.3") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + modelBuilder.Entity("DevHive.Data.Models.Comment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatorId") + .HasColumnType("uuid"); + + b.Property("Message") + .HasColumnType("text"); + + b.Property("PostId") + .HasColumnType("uuid"); + + b.Property("TimeCreated") + .HasColumnType("timestamp without time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatorId"); + + b.HasIndex("PostId"); + + b.ToTable("Comments"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Language", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Name") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Languages"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Post", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatorId") + .HasColumnType("uuid"); + + b.Property("Message") + .HasColumnType("text"); + + b.Property("TimeCreated") + .HasColumnType("timestamp without time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatorId"); + + b.ToTable("Posts"); + }); + + modelBuilder.Entity("DevHive.Data.Models.ProfilePicture", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("PictureURL") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("ProfilePicture"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Rating", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("IsLike") + .HasColumnType("boolean"); + + b.Property("PostId") + .HasColumnType("uuid"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("PostId"); + + b.HasIndex("UserId"); + + b.ToTable("Rating"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Relational.PostAttachments", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("FileUrl") + .HasColumnType("text"); + + b.Property("PostId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("PostId"); + + b.ToTable("PostAttachments"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Relational.RatedPost", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("PostId") + .HasColumnType("uuid"); + + b.HasKey("UserId", "PostId"); + + b.HasIndex("PostId"); + + b.ToTable("RatedPosts"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Relational.UserRate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Liked") + .HasColumnType("boolean"); + + b.Property("PostId") + .HasColumnType("uuid"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("PostId"); + + b.HasIndex("UserId"); + + b.ToTable("UserRates"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Technology", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Name") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Technologies"); + }); + + modelBuilder.Entity("DevHive.Data.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AccessFailedCount") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("boolean"); + + b.Property("FirstName") + .HasColumnType("text"); + + b.Property("LastName") + .HasColumnType("text"); + + b.Property("LockoutEnabled") + .HasColumnType("boolean"); + + b.Property("LockoutEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("PasswordHash") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("text"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("boolean"); + + b.Property("ProfilePictureId") + .HasColumnType("uuid"); + + b.Property("SecurityStamp") + .HasColumnType("text"); + + b.Property("TwoFactorEnabled") + .HasColumnType("boolean"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.HasIndex("ProfilePictureId"); + + b.HasIndex("UserId"); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("LanguageUser", b => + { + b.Property("LanguagesId") + .HasColumnType("uuid"); + + b.Property("UsersId") + .HasColumnType("uuid"); + + b.HasKey("LanguagesId", "UsersId"); + + b.HasIndex("UsersId"); + + b.ToTable("LanguageUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("ProviderKey") + .HasColumnType("text"); + + b.Property("ProviderDisplayName") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Value") + .HasColumnType("text"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("RoleUser", b => + { + b.Property("RolesId") + .HasColumnType("uuid"); + + b.Property("UsersId") + .HasColumnType("uuid"); + + b.HasKey("RolesId", "UsersId"); + + b.HasIndex("UsersId"); + + b.ToTable("RoleUser"); + }); + + modelBuilder.Entity("TechnologyUser", b => + { + b.Property("TechnologiesId") + .HasColumnType("uuid"); + + b.Property("UsersId") + .HasColumnType("uuid"); + + b.HasKey("TechnologiesId", "UsersId"); + + b.HasIndex("UsersId"); + + b.ToTable("TechnologyUser"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Comment", b => + { + b.HasOne("DevHive.Data.Models.User", "Creator") + .WithMany("Comments") + .HasForeignKey("CreatorId"); + + b.HasOne("DevHive.Data.Models.Post", "Post") + .WithMany("Comments") + .HasForeignKey("PostId"); + + b.Navigation("Creator"); + + b.Navigation("Post"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Post", b => + { + b.HasOne("DevHive.Data.Models.User", "Creator") + .WithMany("Posts") + .HasForeignKey("CreatorId"); + + b.Navigation("Creator"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Rating", b => + { + b.HasOne("DevHive.Data.Models.Post", "Post") + .WithMany("Ratings") + .HasForeignKey("PostId"); + + b.HasOne("DevHive.Data.Models.User", "User") + .WithMany() + .HasForeignKey("UserId"); + + b.Navigation("Post"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Relational.PostAttachments", b => + { + b.HasOne("DevHive.Data.Models.Post", "Post") + .WithMany("Attachments") + .HasForeignKey("PostId"); + + b.Navigation("Post"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Relational.RatedPost", b => + { + b.HasOne("DevHive.Data.Models.Post", "Post") + .WithMany() + .HasForeignKey("PostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", "User") + .WithMany("RatedPosts") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Post"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Relational.UserRate", b => + { + b.HasOne("DevHive.Data.Models.Post", "Post") + .WithMany() + .HasForeignKey("PostId"); + + b.HasOne("DevHive.Data.Models.User", "User") + .WithMany() + .HasForeignKey("UserId"); + + b.Navigation("Post"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("DevHive.Data.Models.User", b => + { + b.HasOne("DevHive.Data.Models.ProfilePicture", "ProfilePicture") + .WithMany() + .HasForeignKey("ProfilePictureId"); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany("Friends") + .HasForeignKey("UserId"); + + b.Navigation("ProfilePicture"); + }); + + modelBuilder.Entity("LanguageUser", b => + { + b.HasOne("DevHive.Data.Models.Language", null) + .WithMany() + .HasForeignKey("LanguagesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("DevHive.Data.Models.Role", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("DevHive.Data.Models.Role", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("RoleUser", b => + { + b.HasOne("DevHive.Data.Models.Role", null) + .WithMany() + .HasForeignKey("RolesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("TechnologyUser", b => + { + b.HasOne("DevHive.Data.Models.Technology", null) + .WithMany() + .HasForeignKey("TechnologiesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("DevHive.Data.Models.Post", b => + { + b.Navigation("Attachments"); + + b.Navigation("Comments"); + + b.Navigation("Ratings"); + }); + + modelBuilder.Entity("DevHive.Data.Models.User", b => + { + b.Navigation("Comments"); + + b.Navigation("Friends"); + + b.Navigation("Posts"); + + b.Navigation("RatedPosts"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Data/DevHive.Data/Migrations/20210325081526_Profile_Picture_Layer.cs b/src/Data/DevHive.Data/Migrations/20210325081526_Profile_Picture_Layer.cs new file mode 100644 index 0000000..0ee1fb7 --- /dev/null +++ b/src/Data/DevHive.Data/Migrations/20210325081526_Profile_Picture_Layer.cs @@ -0,0 +1,78 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace DevHive.Data.Migrations +{ + public partial class Profile_Picture_Layer : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_ProfilePicture_AspNetUsers_UserId", + table: "ProfilePicture"); + + migrationBuilder.DropIndex( + name: "IX_ProfilePicture_UserId", + table: "ProfilePicture"); + + migrationBuilder.DropColumn( + name: "UserId", + table: "ProfilePicture"); + + migrationBuilder.AddColumn( + name: "ProfilePictureId", + table: "AspNetUsers", + type: "uuid", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUsers_ProfilePictureId", + table: "AspNetUsers", + column: "ProfilePictureId"); + + migrationBuilder.AddForeignKey( + name: "FK_AspNetUsers_ProfilePicture_ProfilePictureId", + table: "AspNetUsers", + column: "ProfilePictureId", + principalTable: "ProfilePicture", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_AspNetUsers_ProfilePicture_ProfilePictureId", + table: "AspNetUsers"); + + migrationBuilder.DropIndex( + name: "IX_AspNetUsers_ProfilePictureId", + table: "AspNetUsers"); + + migrationBuilder.DropColumn( + name: "ProfilePictureId", + table: "AspNetUsers"); + + migrationBuilder.AddColumn( + name: "UserId", + table: "ProfilePicture", + type: "uuid", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000")); + + migrationBuilder.CreateIndex( + name: "IX_ProfilePicture_UserId", + table: "ProfilePicture", + column: "UserId", + unique: true); + + migrationBuilder.AddForeignKey( + name: "FK_ProfilePicture_AspNetUsers_UserId", + table: "ProfilePicture", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/src/Data/DevHive.Data/Migrations/DevHiveContextModelSnapshot.cs b/src/Data/DevHive.Data/Migrations/DevHiveContextModelSnapshot.cs index 80e3ac0..8877fab 100644 --- a/src/Data/DevHive.Data/Migrations/DevHiveContextModelSnapshot.cs +++ b/src/Data/DevHive.Data/Migrations/DevHiveContextModelSnapshot.cs @@ -91,14 +91,8 @@ namespace DevHive.Data.Migrations b.Property("PictureURL") .HasColumnType("text"); - b.Property("UserId") - .HasColumnType("uuid"); - b.HasKey("Id"); - b.HasIndex("UserId") - .IsUnique(); - b.ToTable("ProfilePicture"); }); @@ -274,6 +268,9 @@ namespace DevHive.Data.Migrations b.Property("PhoneNumberConfirmed") .HasColumnType("boolean"); + b.Property("ProfilePictureId") + .HasColumnType("uuid"); + b.Property("SecurityStamp") .HasColumnType("text"); @@ -296,6 +293,8 @@ namespace DevHive.Data.Migrations .IsUnique() .HasDatabaseName("UserNameIndex"); + b.HasIndex("ProfilePictureId"); + b.HasIndex("UserId"); b.HasIndex("UserName") @@ -474,17 +473,6 @@ namespace DevHive.Data.Migrations b.Navigation("Creator"); }); - modelBuilder.Entity("DevHive.Data.Models.ProfilePicture", b => - { - b.HasOne("DevHive.Data.Models.User", "User") - .WithOne("ProfilePicture") - .HasForeignKey("DevHive.Data.Models.ProfilePicture", "UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("User"); - }); - modelBuilder.Entity("DevHive.Data.Models.Rating", b => { b.HasOne("DevHive.Data.Models.Post", "Post") @@ -545,9 +533,15 @@ namespace DevHive.Data.Migrations modelBuilder.Entity("DevHive.Data.Models.User", b => { + b.HasOne("DevHive.Data.Models.ProfilePicture", "ProfilePicture") + .WithMany() + .HasForeignKey("ProfilePictureId"); + b.HasOne("DevHive.Data.Models.User", null) .WithMany("Friends") .HasForeignKey("UserId"); + + b.Navigation("ProfilePicture"); }); modelBuilder.Entity("LanguageUser", b => @@ -663,8 +657,6 @@ namespace DevHive.Data.Migrations b.Navigation("Posts"); - b.Navigation("ProfilePicture"); - b.Navigation("RatedPosts"); }); #pragma warning restore 612, 618 diff --git a/src/Data/DevHive.Data/Repositories/ProfilePictureRepository.cs b/src/Data/DevHive.Data/Repositories/ProfilePictureRepository.cs new file mode 100644 index 0000000..7284464 --- /dev/null +++ b/src/Data/DevHive.Data/Repositories/ProfilePictureRepository.cs @@ -0,0 +1,25 @@ +using System.Threading.Tasks; +using DevHive.Data.Interfaces; +using DevHive.Data.Models; +using Microsoft.EntityFrameworkCore; + +namespace DevHive.Data.Repositories +{ + public class ProfilePictureRepository : BaseRepository, IProfilePictureRepository + { + private readonly DevHiveContext _context; + + public ProfilePictureRepository(DevHiveContext context) + : base(context) + { + this._context = context; + } + + public async Task GetByURLAsync(string picUrl) + { + return await this._context + .ProfilePicture + .FirstOrDefaultAsync(x => x.PictureURL == picUrl); + } + } +} diff --git a/src/Services/DevHive.Services.Models/ProfilePicture/ProfilePictureServiceModel.cs b/src/Services/DevHive.Services.Models/ProfilePicture/ProfilePictureServiceModel.cs new file mode 100644 index 0000000..5e69d13 --- /dev/null +++ b/src/Services/DevHive.Services.Models/ProfilePicture/ProfilePictureServiceModel.cs @@ -0,0 +1,11 @@ +using System; +using Microsoft.AspNetCore.Http; + +namespace DevHive.Services.Models.ProfilePicture +{ + public class ProfilePictureServiceModel + { + public Guid UserId { get; set; } + public IFormFile ProfilePictureFormFile { get; set; } + } +} diff --git a/src/Services/DevHive.Services.Models/User/ProfilePictureServiceModel.cs b/src/Services/DevHive.Services.Models/User/ProfilePictureServiceModel.cs deleted file mode 100644 index cbe64b2..0000000 --- a/src/Services/DevHive.Services.Models/User/ProfilePictureServiceModel.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace DevHive.Services.Models.User -{ - public class ProfilePictureServiceModel - { - public string ProfilePictureURL { get; set; } - } -} diff --git a/src/Services/DevHive.Services.Models/User/UpdateProfilePictureServiceModel.cs b/src/Services/DevHive.Services.Models/User/UpdateProfilePictureServiceModel.cs deleted file mode 100644 index 19ba08f..0000000 --- a/src/Services/DevHive.Services.Models/User/UpdateProfilePictureServiceModel.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using Microsoft.AspNetCore.Http; - -namespace DevHive.Services.Models.User -{ - public class UpdateProfilePictureServiceModel - { - public Guid UserId { get; set; } - - public IFormFile Picture { get; set; } - } -} diff --git a/src/Services/DevHive.Services/Interfaces/IProfilePictureService.cs b/src/Services/DevHive.Services/Interfaces/IProfilePictureService.cs new file mode 100644 index 0000000..b0673ac --- /dev/null +++ b/src/Services/DevHive.Services/Interfaces/IProfilePictureService.cs @@ -0,0 +1,22 @@ +using System; +using System.Threading.Tasks; +using DevHive.Services.Models.ProfilePicture; + +namespace DevHive.Services.Interfaces +{ + public interface IProfilePictureService + { + Task InsertProfilePicture(ProfilePictureServiceModel profilePictureServiceModel); + + Task GetProfilePictureById(Guid id); + + /// + /// Uploads the given picture and assigns it's link to the user in the database + /// + /// Contains User's Guid and the new picture to be updated + /// The new picture's URL + Task UpdateProfilePicture(ProfilePictureServiceModel profilePictureServiceModel); + + Task DeleteProfilePicture(Guid id); + } +} diff --git a/src/Services/DevHive.Services/Interfaces/IUserService.cs b/src/Services/DevHive.Services/Interfaces/IUserService.cs index a55f9dd..da07507 100644 --- a/src/Services/DevHive.Services/Interfaces/IUserService.cs +++ b/src/Services/DevHive.Services/Interfaces/IUserService.cs @@ -44,14 +44,6 @@ namespace DevHive.Services.Interfaces /// Read model of the new user Task UpdateUser(UpdateUserServiceModel updateUserServiceModel); - /// - /// Uploads the given picture and assigns it's link to the user in the database - /// Requires authenticated user - /// - /// Contains User's Guid and the new picture to be updated - /// The new picture's URL - Task UpdateProfilePicture(UpdateProfilePictureServiceModel updateProfilePictureServiceModel); - /// /// Deletes a user from the database and removes his data entirely /// Requires authenticated user diff --git a/src/Services/DevHive.Services/Services/ProfilePictureService.cs b/src/Services/DevHive.Services/Services/ProfilePictureService.cs new file mode 100644 index 0000000..0636f5c --- /dev/null +++ b/src/Services/DevHive.Services/Services/ProfilePictureService.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using DevHive.Data.Interfaces; +using DevHive.Data.Models; +using DevHive.Services.Interfaces; +using DevHive.Services.Models.ProfilePicture; +using Microsoft.AspNetCore.Http; + +namespace DevHive.Services.Services +{ + public class ProfilePictureService : IProfilePictureService + { + private readonly IUserRepository _userRepository; + private readonly IProfilePictureRepository _profilePictureRepository; + private readonly ICloudService _cloudinaryService; + + public ProfilePictureService(IUserRepository userRepository, IProfilePictureRepository profilePictureRepository, ICloudService cloudinaryService) + { + this._userRepository = userRepository; + this._profilePictureRepository = profilePictureRepository; + this._cloudinaryService = cloudinaryService; + } + + public async Task InsertProfilePicture(ProfilePictureServiceModel profilePictureServiceModel) + { + await ValidateServiceModel(profilePictureServiceModel); + + return await SaveProfilePictureInDatabase(profilePictureServiceModel); + } + + public async Task GetProfilePictureById(Guid id) + { + return (await this._profilePictureRepository.GetByIdAsync(id)).PictureURL; + } + + public async Task UpdateProfilePicture(ProfilePictureServiceModel profilePictureServiceModel) + { + await ValidateServiceModel(profilePictureServiceModel); + + User user = await this._userRepository.GetByIdAsync(profilePictureServiceModel.UserId); + if (!string.IsNullOrEmpty(user.ProfilePicture.PictureURL)) + { + List file = new() { user.ProfilePicture.PictureURL }; + bool removed = await this._cloudinaryService.RemoveFilesFromCloud(file); + + if (!removed) + throw new ArgumentException("Cannot delete old picture"); + } + + return await SaveProfilePictureInDatabase(profilePictureServiceModel); + } + + public async Task DeleteProfilePicture(Guid id) + { + ProfilePicture profilePic = await this._profilePictureRepository.GetByIdAsync(id) ?? + throw new ArgumentException("Such picture doesn't exist!"); + + bool removedFromDb = await this._profilePictureRepository.DeleteAsync(profilePic); + if (!removedFromDb) + throw new ArgumentException("Cannot delete picture from database!"); + + List file = new() { profilePic.PictureURL }; + bool removedFromCloud = await this._cloudinaryService.RemoveFilesFromCloud(file); + if (!removedFromCloud) + throw new ArgumentException("Cannot delete picture from cloud!"); + + return true; + } + + private async Task SaveProfilePictureInDatabase(ProfilePictureServiceModel profilePictureServiceModel) + { + List file = new() { profilePictureServiceModel.ProfilePictureFormFile }; + string picUrl = (await this._cloudinaryService.UploadFilesToCloud(file))[0]; + ProfilePicture profilePic = new() { PictureURL = picUrl }; + + bool success = await this._profilePictureRepository.AddAsync(profilePic); + if (!success) + throw new ArgumentException("Unable to upload picture!"); + + User user = await this._userRepository.GetByIdAsync(profilePictureServiceModel.UserId); + user.ProfilePicture = await this._profilePictureRepository.GetByURLAsync(picUrl); + bool userProfilePicAlter = await this._userRepository.EditAsync(user.Id, user); + if (!userProfilePicAlter) + throw new ArgumentException("Unable to alter user's profile picture"); + + return picUrl; + } + + private async Task ValidateServiceModel(ProfilePictureServiceModel profilePictureServiceModel) + { + if (profilePictureServiceModel.ProfilePictureFormFile.Length == 0) + throw new ArgumentException("Picture cannot be null"); + + if (!await this._userRepository.DoesUserExistAsync(profilePictureServiceModel.UserId)) + throw new ArgumentException("User does not exist!"); + } + } +} diff --git a/src/Services/DevHive.Services/Services/UserService.cs b/src/Services/DevHive.Services/Services/UserService.cs index 4f74b06..d487de4 100644 --- a/src/Services/DevHive.Services/Services/UserService.cs +++ b/src/Services/DevHive.Services/Services/UserService.cs @@ -119,28 +119,6 @@ namespace DevHive.Services.Services User newUser = await this._userRepository.GetByIdAsync(user.Id); return this._userMapper.Map(newUser); } - - public async Task UpdateProfilePicture(UpdateProfilePictureServiceModel updateProfilePictureServiceModel) - { - User user = await this._userRepository.GetByIdAsync(updateProfilePictureServiceModel.UserId); - - if (!string.IsNullOrEmpty(user.ProfilePicture.PictureURL)) - { - bool success = await _cloudService.RemoveFilesFromCloud(new List { user.ProfilePicture.PictureURL }); - if (!success) - throw new InvalidCastException("Could not delete old profile picture!"); - } - - string fileUrl = (await this._cloudService.UploadFilesToCloud(new List { updateProfilePictureServiceModel.Picture }))[0] ?? - throw new ArgumentException("Unable to upload profile picture to cloud"); - - bool successful = await this._userRepository.UpdateProfilePicture(updateProfilePictureServiceModel.UserId, fileUrl); - - if (!successful) - throw new InvalidOperationException("Unable to change profile picture!"); - - return new ProfilePictureServiceModel() { ProfilePictureURL = fileUrl }; - } #endregion #region Delete diff --git a/src/Web/DevHive.Web.Models/ProfilePicture/ProfilePictureWebModel.cs b/src/Web/DevHive.Web.Models/ProfilePicture/ProfilePictureWebModel.cs new file mode 100644 index 0000000..3fe201c --- /dev/null +++ b/src/Web/DevHive.Web.Models/ProfilePicture/ProfilePictureWebModel.cs @@ -0,0 +1,9 @@ +using Microsoft.AspNetCore.Http; + +namespace DevHive.Web.Models.ProfilePicture +{ + public class ProfilePictureWebModel + { + public IFormFile Picture { get; set; } + } +} diff --git a/src/Web/DevHive.Web.Models/User/ProfilePictureWebModel.cs b/src/Web/DevHive.Web.Models/User/ProfilePictureWebModel.cs deleted file mode 100644 index e09ee08..0000000 --- a/src/Web/DevHive.Web.Models/User/ProfilePictureWebModel.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace DevHive.Web.Models.User -{ - public class ProfilePictureWebModel - { - public string ProfilePictureURL { get; set; } - } -} diff --git a/src/Web/DevHive.Web.Models/User/UpdateProfilePictureWebModel.cs b/src/Web/DevHive.Web.Models/User/UpdateProfilePictureWebModel.cs deleted file mode 100644 index 196d1e7..0000000 --- a/src/Web/DevHive.Web.Models/User/UpdateProfilePictureWebModel.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.AspNetCore.Http; - -namespace DevHive.Web.Models.User -{ - public class UpdateProfilePictureWebModel - { - public IFormFile Picture { get; set; } - } -} diff --git a/src/Web/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs b/src/Web/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs index a0d0979..20b66e1 100644 --- a/src/Web/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs +++ b/src/Web/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs @@ -17,20 +17,22 @@ namespace DevHive.Web.Configurations.Extensions services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); + services.AddTransient(); services.AddTransient(options => new CloudinaryService( @@ -43,7 +45,6 @@ namespace DevHive.Web.Configurations.Extensions signingKey: Encoding.ASCII.GetBytes(configuration.GetSection("Jwt").GetSection("signingKey").Value), validationIssuer: configuration.GetSection("Jwt").GetSection("validationIssuer").Value, audience: configuration.GetSection("Jwt").GetSection("audience").Value)); - services.AddTransient(); } } } diff --git a/src/Web/DevHive.Web/Configurations/Mapping/ProfilePictureMappings.cs b/src/Web/DevHive.Web/Configurations/Mapping/ProfilePictureMappings.cs new file mode 100644 index 0000000..8c12a20 --- /dev/null +++ b/src/Web/DevHive.Web/Configurations/Mapping/ProfilePictureMappings.cs @@ -0,0 +1,16 @@ +using System; +using AutoMapper; +using DevHive.Web.Models.ProfilePicture; +using DevHive.Services.Models.ProfilePicture; + +namespace DevHive.Web.Configurations.Mapping +{ + public class ProfilePictureMappings : Profile + { + public ProfilePictureMappings() + { + CreateMap() + .ForMember(dest => dest.ProfilePictureFormFile, src => src.MapFrom(p => p.Picture)); + } + } +} diff --git a/src/Web/DevHive.Web/Configurations/Mapping/UserMappings.cs b/src/Web/DevHive.Web/Configurations/Mapping/UserMappings.cs index 14aaa3a..dabec93 100644 --- a/src/Web/DevHive.Web/Configurations/Mapping/UserMappings.cs +++ b/src/Web/DevHive.Web/Configurations/Mapping/UserMappings.cs @@ -23,9 +23,6 @@ namespace DevHive.Web.Configurations.Mapping CreateMap(); CreateMap(); - CreateMap(); - CreateMap(); - CreateMap(); CreateMap(); } diff --git a/src/Web/DevHive.Web/Controllers/ProfilePictureController.cs b/src/Web/DevHive.Web/Controllers/ProfilePictureController.cs index 2eec99e..1c736f6 100644 --- a/src/Web/DevHive.Web/Controllers/ProfilePictureController.cs +++ b/src/Web/DevHive.Web/Controllers/ProfilePictureController.cs @@ -1,8 +1,12 @@ using System; using System.Threading.Tasks; -using DevHive.Web.Models.User; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using DevHive.Services.Interfaces; +using DevHive.Services.Models.ProfilePicture; +using DevHive.Common.Jwt.Interfaces; +using AutoMapper; +using DevHive.Web.Models.ProfilePicture; namespace DevHive.Web.Controllers { @@ -13,36 +17,36 @@ namespace DevHive.Web.Controllers [Route("api/[controller]")] public class ProfilePictureController { - // private readonly ProfilePictureService _profilePictureService; + private readonly IProfilePictureService _profilePictureService; + private readonly IJwtService _jwtService; + private readonly IMapper _profilePictureMapper; - // public ProfilePictureController(ProfilePictureService profilePictureService) - // { - // this._profilePictureService = profilePictureService; - // } + public ProfilePictureController(IProfilePictureService profilePictureService, IJwtService jwtService, IMapper profilePictureMapper) + { + this._profilePictureService = profilePictureService; + this._jwtService = jwtService; + this._profilePictureMapper = profilePictureMapper; + } /// /// Alter the profile picture of a user /// /// The user's Id - /// The new profile picture + /// The new profile picture /// JWT Bearer Token - /// ??? + /// The URL of the new profile picture [HttpPut] - [Route("ProfilePicture")] [Authorize(Roles = "User,Admin")] - public async Task UpdateProfilePicture(Guid userId, [FromForm] UpdateProfilePictureWebModel updateProfilePictureWebModel, [FromHeader] string authorization) + public async Task UpdateProfilePicture(Guid userId, [FromForm] ProfilePictureWebModel profilePictureWebModel, [FromHeader] string authorization) { - throw new NotImplementedException(); - // if (!await this._userService.ValidJWT(userId, authorization)) - // return new UnauthorizedResult(); - - // UpdateProfilePictureServiceModel updateProfilePictureServiceModel = this._userMapper.Map(updateProfilePictureWebModel); - // updateProfilePictureServiceModel.UserId = userId; + if (!this._jwtService.ValidateToken(userId, authorization)) + return new UnauthorizedResult(); - // ProfilePictureServiceModel profilePictureServiceModel = await this._userService.UpdateProfilePicture(updateProfilePictureServiceModel); - // ProfilePictureWebModel profilePictureWebModel = this._userMapper.Map(profilePictureServiceModel); + ProfilePictureServiceModel profilePictureServiceModel = this._profilePictureMapper.Map(profilePictureWebModel); + profilePictureServiceModel.UserId = userId; - // return new AcceptedResult("UpdateProfilePicture", profilePictureWebModel); + string url = await this._profilePictureService.UpdateProfilePicture(profilePictureServiceModel); + return new OkObjectResult(new { URL = url }); } } } -- cgit v1.2.3 From 8282f6c3f89ee65be155d453ddd705892b07628e Mon Sep 17 00:00:00 2001 From: transtrike Date: Sun, 28 Mar 2021 19:21:49 +0300 Subject: ProfilePic saved in User fixed --- src/Data/DevHive.Data.Models/ProfilePicture.cs | 5 + src/Data/DevHive.Data.Models/User.cs | 3 +- src/Data/DevHive.Data/DevHiveContext.cs | 12 +- ...28161726_Profile_Pic_Property_Alter.Designer.cs | 600 +++++++++++++++++++++ .../20210328161726_Profile_Pic_Property_Alter.cs | 526 ++++++++++++++++++ .../Migrations/DevHiveContextModelSnapshot.cs | 598 ++++++++++++++++++++ .../User/UserServiceModel.cs | 2 +- .../Services/ProfilePictureService.cs | 6 +- 8 files changed, 1745 insertions(+), 7 deletions(-) create mode 100644 src/Data/DevHive.Data/Migrations/20210328161726_Profile_Pic_Property_Alter.Designer.cs create mode 100644 src/Data/DevHive.Data/Migrations/20210328161726_Profile_Pic_Property_Alter.cs create mode 100644 src/Data/DevHive.Data/Migrations/DevHiveContextModelSnapshot.cs (limited to 'src/Data/DevHive.Data.Models/ProfilePicture.cs') diff --git a/src/Data/DevHive.Data.Models/ProfilePicture.cs b/src/Data/DevHive.Data.Models/ProfilePicture.cs index 5877861..e8166d7 100644 --- a/src/Data/DevHive.Data.Models/ProfilePicture.cs +++ b/src/Data/DevHive.Data.Models/ProfilePicture.cs @@ -6,8 +6,13 @@ namespace DevHive.Data.Models [Table("ProfilePictures")] public class ProfilePicture { + public const string DefaultURL = "/assets/icons/tabler-icon-user.svg"; + public Guid Id { get; set; } + public Guid UserId { get; set; } + public User User { get; set; } + public string PictureURL { get; set; } } } diff --git a/src/Data/DevHive.Data.Models/User.cs b/src/Data/DevHive.Data.Models/User.cs index f6cd3b9..d3789ec 100644 --- a/src/Data/DevHive.Data.Models/User.cs +++ b/src/Data/DevHive.Data.Models/User.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; -using DevHive.Data.Models.Relational; using Microsoft.AspNetCore.Identity; namespace DevHive.Data.Models @@ -13,7 +12,7 @@ namespace DevHive.Data.Models public string LastName { get; set; } - public ProfilePicture ProfilePicture { get; set; } = new(); + public ProfilePicture ProfilePicture { get; set; } = new() { PictureURL = ProfilePicture.DefaultURL }; public HashSet Languages { get; set; } = new(); diff --git a/src/Data/DevHive.Data/DevHiveContext.cs b/src/Data/DevHive.Data/DevHiveContext.cs index f8574a4..0606864 100644 --- a/src/Data/DevHive.Data/DevHiveContext.cs +++ b/src/Data/DevHive.Data/DevHiveContext.cs @@ -26,9 +26,6 @@ namespace DevHive.Data .HasIndex(x => x.UserName) .IsUnique(); - builder.Entity() - .HasOne(x => x.ProfilePicture); - /* Roles */ builder.Entity() .HasMany(x => x.Roles) @@ -91,6 +88,15 @@ namespace DevHive.Data .HasMany(x => x.Ratings) .WithOne(x => x.Post); + /* Profile Picture */ + builder.Entity() + .HasKey(x => x.Id); + + builder.Entity() + .HasOne(x => x.ProfilePicture) + .WithOne(x => x.User) + .HasForeignKey(x => x.UserId); + base.OnModelCreating(builder); } } diff --git a/src/Data/DevHive.Data/Migrations/20210328161726_Profile_Pic_Property_Alter.Designer.cs b/src/Data/DevHive.Data/Migrations/20210328161726_Profile_Pic_Property_Alter.Designer.cs new file mode 100644 index 0000000..a3fcb2d --- /dev/null +++ b/src/Data/DevHive.Data/Migrations/20210328161726_Profile_Pic_Property_Alter.Designer.cs @@ -0,0 +1,600 @@ +// +using System; +using DevHive.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace DevHive.Data.Migrations +{ + [DbContext(typeof(DevHiveContext))] + [Migration("20210328161726_Profile_Pic_Property_Alter")] + partial class Profile_Pic_Property_Alter + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:MaxIdentifierLength", 63) + .HasAnnotation("ProductVersion", "5.0.3") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + modelBuilder.Entity("DevHive.Data.Models.Comment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatorId") + .HasColumnType("uuid"); + + b.Property("Message") + .HasColumnType("text"); + + b.Property("PostId") + .HasColumnType("uuid"); + + b.Property("TimeCreated") + .HasColumnType("timestamp without time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatorId"); + + b.HasIndex("PostId"); + + b.ToTable("Comments"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Language", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Name") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Languages"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Post", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatorId") + .HasColumnType("uuid"); + + b.Property("Message") + .HasColumnType("text"); + + b.Property("TimeCreated") + .HasColumnType("timestamp without time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatorId"); + + b.ToTable("Posts"); + }); + + modelBuilder.Entity("DevHive.Data.Models.ProfilePicture", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("PictureURL") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("ProfilePictures"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Rating", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("IsLike") + .HasColumnType("boolean"); + + b.Property("PostId") + .HasColumnType("uuid"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("PostId"); + + b.HasIndex("UserId"); + + b.ToTable("Rating"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Relational.PostAttachments", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("FileUrl") + .HasColumnType("text"); + + b.Property("PostId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("PostId"); + + b.ToTable("PostAttachments"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Technology", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Name") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Technologies"); + }); + + modelBuilder.Entity("DevHive.Data.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AccessFailedCount") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("boolean"); + + b.Property("FirstName") + .HasColumnType("text"); + + b.Property("LastName") + .HasColumnType("text"); + + b.Property("LockoutEnabled") + .HasColumnType("boolean"); + + b.Property("LockoutEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("PasswordHash") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("text"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("boolean"); + + b.Property("SecurityStamp") + .HasColumnType("text"); + + b.Property("TwoFactorEnabled") + .HasColumnType("boolean"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.HasIndex("UserId"); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("LanguageUser", b => + { + b.Property("LanguagesId") + .HasColumnType("uuid"); + + b.Property("UsersId") + .HasColumnType("uuid"); + + b.HasKey("LanguagesId", "UsersId"); + + b.HasIndex("UsersId"); + + b.ToTable("LanguageUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("ProviderKey") + .HasColumnType("text"); + + b.Property("ProviderDisplayName") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Value") + .HasColumnType("text"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("RoleUser", b => + { + b.Property("RolesId") + .HasColumnType("uuid"); + + b.Property("UsersId") + .HasColumnType("uuid"); + + b.HasKey("RolesId", "UsersId"); + + b.HasIndex("UsersId"); + + b.ToTable("RoleUser"); + }); + + modelBuilder.Entity("TechnologyUser", b => + { + b.Property("TechnologiesId") + .HasColumnType("uuid"); + + b.Property("UsersId") + .HasColumnType("uuid"); + + b.HasKey("TechnologiesId", "UsersId"); + + b.HasIndex("UsersId"); + + b.ToTable("TechnologyUser"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Comment", b => + { + b.HasOne("DevHive.Data.Models.User", "Creator") + .WithMany("Comments") + .HasForeignKey("CreatorId"); + + b.HasOne("DevHive.Data.Models.Post", "Post") + .WithMany("Comments") + .HasForeignKey("PostId"); + + b.Navigation("Creator"); + + b.Navigation("Post"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Post", b => + { + b.HasOne("DevHive.Data.Models.User", "Creator") + .WithMany("Posts") + .HasForeignKey("CreatorId"); + + b.Navigation("Creator"); + }); + + modelBuilder.Entity("DevHive.Data.Models.ProfilePicture", b => + { + b.HasOne("DevHive.Data.Models.User", "User") + .WithOne("ProfilePicture") + .HasForeignKey("DevHive.Data.Models.ProfilePicture", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Rating", b => + { + b.HasOne("DevHive.Data.Models.Post", "Post") + .WithMany("Ratings") + .HasForeignKey("PostId"); + + b.HasOne("DevHive.Data.Models.User", "User") + .WithMany() + .HasForeignKey("UserId"); + + b.Navigation("Post"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Relational.PostAttachments", b => + { + b.HasOne("DevHive.Data.Models.Post", "Post") + .WithMany("Attachments") + .HasForeignKey("PostId"); + + b.Navigation("Post"); + }); + + modelBuilder.Entity("DevHive.Data.Models.User", b => + { + b.HasOne("DevHive.Data.Models.User", null) + .WithMany("Friends") + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("LanguageUser", b => + { + b.HasOne("DevHive.Data.Models.Language", null) + .WithMany() + .HasForeignKey("LanguagesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("DevHive.Data.Models.Role", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("DevHive.Data.Models.Role", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("RoleUser", b => + { + b.HasOne("DevHive.Data.Models.Role", null) + .WithMany() + .HasForeignKey("RolesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("TechnologyUser", b => + { + b.HasOne("DevHive.Data.Models.Technology", null) + .WithMany() + .HasForeignKey("TechnologiesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("DevHive.Data.Models.Post", b => + { + b.Navigation("Attachments"); + + b.Navigation("Comments"); + + b.Navigation("Ratings"); + }); + + modelBuilder.Entity("DevHive.Data.Models.User", b => + { + b.Navigation("Comments"); + + b.Navigation("Friends"); + + b.Navigation("Posts"); + + b.Navigation("ProfilePicture"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Data/DevHive.Data/Migrations/20210328161726_Profile_Pic_Property_Alter.cs b/src/Data/DevHive.Data/Migrations/20210328161726_Profile_Pic_Property_Alter.cs new file mode 100644 index 0000000..5aca664 --- /dev/null +++ b/src/Data/DevHive.Data/Migrations/20210328161726_Profile_Pic_Property_Alter.cs @@ -0,0 +1,526 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace DevHive.Data.Migrations +{ + public partial class Profile_Pic_Property_Alter : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AspNetRoles", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + Name = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), + NormalizedName = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), + ConcurrencyStamp = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetRoles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AspNetUsers", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + FirstName = table.Column(type: "text", nullable: true), + LastName = table.Column(type: "text", nullable: true), + UserId = table.Column(type: "uuid", nullable: true), + UserName = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), + NormalizedUserName = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), + Email = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), + NormalizedEmail = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), + EmailConfirmed = table.Column(type: "boolean", nullable: false), + PasswordHash = table.Column(type: "text", nullable: true), + SecurityStamp = table.Column(type: "text", nullable: true), + ConcurrencyStamp = table.Column(type: "text", nullable: true), + PhoneNumber = table.Column(type: "text", nullable: true), + PhoneNumberConfirmed = table.Column(type: "boolean", nullable: false), + TwoFactorEnabled = table.Column(type: "boolean", nullable: false), + LockoutEnd = table.Column(type: "timestamp with time zone", nullable: true), + LockoutEnabled = table.Column(type: "boolean", nullable: false), + AccessFailedCount = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUsers", x => x.Id); + table.ForeignKey( + name: "FK_AspNetUsers_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Languages", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + Name = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Languages", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Technologies", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + Name = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Technologies", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AspNetRoleClaims", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + RoleId = table.Column(type: "uuid", nullable: false), + ClaimType = table.Column(type: "text", nullable: true), + ClaimValue = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetRoleClaims_AspNetRoles_RoleId", + column: x => x.RoleId, + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserClaims", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + UserId = table.Column(type: "uuid", nullable: false), + ClaimType = table.Column(type: "text", nullable: true), + ClaimValue = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserClaims", x => x.Id); + table.ForeignKey( + name: "FK_AspNetUserClaims_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserLogins", + columns: table => new + { + LoginProvider = table.Column(type: "text", nullable: false), + ProviderKey = table.Column(type: "text", nullable: false), + ProviderDisplayName = table.Column(type: "text", nullable: true), + UserId = table.Column(type: "uuid", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey }); + table.ForeignKey( + name: "FK_AspNetUserLogins_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserRoles", + columns: table => new + { + UserId = table.Column(type: "uuid", nullable: false), + RoleId = table.Column(type: "uuid", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId }); + table.ForeignKey( + name: "FK_AspNetUserRoles_AspNetRoles_RoleId", + column: x => x.RoleId, + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AspNetUserRoles_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AspNetUserTokens", + columns: table => new + { + UserId = table.Column(type: "uuid", nullable: false), + LoginProvider = table.Column(type: "text", nullable: false), + Name = table.Column(type: "text", nullable: false), + Value = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); + table.ForeignKey( + name: "FK_AspNetUserTokens_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Posts", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + CreatorId = table.Column(type: "uuid", nullable: true), + Message = table.Column(type: "text", nullable: true), + TimeCreated = table.Column(type: "timestamp without time zone", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Posts", x => x.Id); + table.ForeignKey( + name: "FK_Posts_AspNetUsers_CreatorId", + column: x => x.CreatorId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "ProfilePictures", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + UserId = table.Column(type: "uuid", nullable: false), + PictureURL = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ProfilePictures", x => x.Id); + table.ForeignKey( + name: "FK_ProfilePictures_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "RoleUser", + columns: table => new + { + RolesId = table.Column(type: "uuid", nullable: false), + UsersId = table.Column(type: "uuid", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_RoleUser", x => new { x.RolesId, x.UsersId }); + table.ForeignKey( + name: "FK_RoleUser_AspNetRoles_RolesId", + column: x => x.RolesId, + principalTable: "AspNetRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_RoleUser_AspNetUsers_UsersId", + column: x => x.UsersId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "LanguageUser", + columns: table => new + { + LanguagesId = table.Column(type: "uuid", nullable: false), + UsersId = table.Column(type: "uuid", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_LanguageUser", x => new { x.LanguagesId, x.UsersId }); + table.ForeignKey( + name: "FK_LanguageUser_AspNetUsers_UsersId", + column: x => x.UsersId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_LanguageUser_Languages_LanguagesId", + column: x => x.LanguagesId, + principalTable: "Languages", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "TechnologyUser", + columns: table => new + { + TechnologiesId = table.Column(type: "uuid", nullable: false), + UsersId = table.Column(type: "uuid", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_TechnologyUser", x => new { x.TechnologiesId, x.UsersId }); + table.ForeignKey( + name: "FK_TechnologyUser_AspNetUsers_UsersId", + column: x => x.UsersId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_TechnologyUser_Technologies_TechnologiesId", + column: x => x.TechnologiesId, + principalTable: "Technologies", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Comments", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + PostId = table.Column(type: "uuid", nullable: true), + CreatorId = table.Column(type: "uuid", nullable: true), + Message = table.Column(type: "text", nullable: true), + TimeCreated = table.Column(type: "timestamp without time zone", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Comments", x => x.Id); + table.ForeignKey( + name: "FK_Comments_AspNetUsers_CreatorId", + column: x => x.CreatorId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Comments_Posts_PostId", + column: x => x.PostId, + principalTable: "Posts", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "PostAttachments", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + PostId = table.Column(type: "uuid", nullable: true), + FileUrl = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_PostAttachments", x => x.Id); + table.ForeignKey( + name: "FK_PostAttachments_Posts_PostId", + column: x => x.PostId, + principalTable: "Posts", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Rating", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + UserId = table.Column(type: "uuid", nullable: true), + PostId = table.Column(type: "uuid", nullable: true), + IsLike = table.Column(type: "boolean", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Rating", x => x.Id); + table.ForeignKey( + name: "FK_Rating_AspNetUsers_UserId", + column: x => x.UserId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Rating_Posts_PostId", + column: x => x.PostId, + principalTable: "Posts", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_AspNetRoleClaims_RoleId", + table: "AspNetRoleClaims", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "RoleNameIndex", + table: "AspNetRoles", + column: "NormalizedName", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserClaims_UserId", + table: "AspNetUserClaims", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserLogins_UserId", + table: "AspNetUserLogins", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUserRoles_RoleId", + table: "AspNetUserRoles", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "EmailIndex", + table: "AspNetUsers", + column: "NormalizedEmail"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUsers_UserId", + table: "AspNetUsers", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AspNetUsers_UserName", + table: "AspNetUsers", + column: "UserName", + unique: true); + + migrationBuilder.CreateIndex( + name: "UserNameIndex", + table: "AspNetUsers", + column: "NormalizedUserName", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Comments_CreatorId", + table: "Comments", + column: "CreatorId"); + + migrationBuilder.CreateIndex( + name: "IX_Comments_PostId", + table: "Comments", + column: "PostId"); + + migrationBuilder.CreateIndex( + name: "IX_LanguageUser_UsersId", + table: "LanguageUser", + column: "UsersId"); + + migrationBuilder.CreateIndex( + name: "IX_PostAttachments_PostId", + table: "PostAttachments", + column: "PostId"); + + migrationBuilder.CreateIndex( + name: "IX_Posts_CreatorId", + table: "Posts", + column: "CreatorId"); + + migrationBuilder.CreateIndex( + name: "IX_ProfilePictures_UserId", + table: "ProfilePictures", + column: "UserId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Rating_PostId", + table: "Rating", + column: "PostId"); + + migrationBuilder.CreateIndex( + name: "IX_Rating_UserId", + table: "Rating", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_RoleUser_UsersId", + table: "RoleUser", + column: "UsersId"); + + migrationBuilder.CreateIndex( + name: "IX_TechnologyUser_UsersId", + table: "TechnologyUser", + column: "UsersId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AspNetRoleClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserClaims"); + + migrationBuilder.DropTable( + name: "AspNetUserLogins"); + + migrationBuilder.DropTable( + name: "AspNetUserRoles"); + + migrationBuilder.DropTable( + name: "AspNetUserTokens"); + + migrationBuilder.DropTable( + name: "Comments"); + + migrationBuilder.DropTable( + name: "LanguageUser"); + + migrationBuilder.DropTable( + name: "PostAttachments"); + + migrationBuilder.DropTable( + name: "ProfilePictures"); + + migrationBuilder.DropTable( + name: "Rating"); + + migrationBuilder.DropTable( + name: "RoleUser"); + + migrationBuilder.DropTable( + name: "TechnologyUser"); + + migrationBuilder.DropTable( + name: "Languages"); + + migrationBuilder.DropTable( + name: "Posts"); + + migrationBuilder.DropTable( + name: "AspNetRoles"); + + migrationBuilder.DropTable( + name: "Technologies"); + + migrationBuilder.DropTable( + name: "AspNetUsers"); + } + } +} diff --git a/src/Data/DevHive.Data/Migrations/DevHiveContextModelSnapshot.cs b/src/Data/DevHive.Data/Migrations/DevHiveContextModelSnapshot.cs new file mode 100644 index 0000000..242473b --- /dev/null +++ b/src/Data/DevHive.Data/Migrations/DevHiveContextModelSnapshot.cs @@ -0,0 +1,598 @@ +// +using System; +using DevHive.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace DevHive.Data.Migrations +{ + [DbContext(typeof(DevHiveContext))] + partial class DevHiveContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:MaxIdentifierLength", 63) + .HasAnnotation("ProductVersion", "5.0.3") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + modelBuilder.Entity("DevHive.Data.Models.Comment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatorId") + .HasColumnType("uuid"); + + b.Property("Message") + .HasColumnType("text"); + + b.Property("PostId") + .HasColumnType("uuid"); + + b.Property("TimeCreated") + .HasColumnType("timestamp without time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatorId"); + + b.HasIndex("PostId"); + + b.ToTable("Comments"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Language", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Name") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Languages"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Post", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatorId") + .HasColumnType("uuid"); + + b.Property("Message") + .HasColumnType("text"); + + b.Property("TimeCreated") + .HasColumnType("timestamp without time zone"); + + b.HasKey("Id"); + + b.HasIndex("CreatorId"); + + b.ToTable("Posts"); + }); + + modelBuilder.Entity("DevHive.Data.Models.ProfilePicture", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("PictureURL") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("ProfilePictures"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Rating", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("IsLike") + .HasColumnType("boolean"); + + b.Property("PostId") + .HasColumnType("uuid"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("PostId"); + + b.HasIndex("UserId"); + + b.ToTable("Rating"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Relational.PostAttachments", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("FileUrl") + .HasColumnType("text"); + + b.Property("PostId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("PostId"); + + b.ToTable("PostAttachments"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Technology", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Name") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Technologies"); + }); + + modelBuilder.Entity("DevHive.Data.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AccessFailedCount") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("boolean"); + + b.Property("FirstName") + .HasColumnType("text"); + + b.Property("LastName") + .HasColumnType("text"); + + b.Property("LockoutEnabled") + .HasColumnType("boolean"); + + b.Property("LockoutEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("PasswordHash") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("text"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("boolean"); + + b.Property("SecurityStamp") + .HasColumnType("text"); + + b.Property("TwoFactorEnabled") + .HasColumnType("boolean"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.HasIndex("UserId"); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("LanguageUser", b => + { + b.Property("LanguagesId") + .HasColumnType("uuid"); + + b.Property("UsersId") + .HasColumnType("uuid"); + + b.HasKey("LanguagesId", "UsersId"); + + b.HasIndex("UsersId"); + + b.ToTable("LanguageUser"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("ProviderKey") + .HasColumnType("text"); + + b.Property("ProviderDisplayName") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Value") + .HasColumnType("text"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("RoleUser", b => + { + b.Property("RolesId") + .HasColumnType("uuid"); + + b.Property("UsersId") + .HasColumnType("uuid"); + + b.HasKey("RolesId", "UsersId"); + + b.HasIndex("UsersId"); + + b.ToTable("RoleUser"); + }); + + modelBuilder.Entity("TechnologyUser", b => + { + b.Property("TechnologiesId") + .HasColumnType("uuid"); + + b.Property("UsersId") + .HasColumnType("uuid"); + + b.HasKey("TechnologiesId", "UsersId"); + + b.HasIndex("UsersId"); + + b.ToTable("TechnologyUser"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Comment", b => + { + b.HasOne("DevHive.Data.Models.User", "Creator") + .WithMany("Comments") + .HasForeignKey("CreatorId"); + + b.HasOne("DevHive.Data.Models.Post", "Post") + .WithMany("Comments") + .HasForeignKey("PostId"); + + b.Navigation("Creator"); + + b.Navigation("Post"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Post", b => + { + b.HasOne("DevHive.Data.Models.User", "Creator") + .WithMany("Posts") + .HasForeignKey("CreatorId"); + + b.Navigation("Creator"); + }); + + modelBuilder.Entity("DevHive.Data.Models.ProfilePicture", b => + { + b.HasOne("DevHive.Data.Models.User", "User") + .WithOne("ProfilePicture") + .HasForeignKey("DevHive.Data.Models.ProfilePicture", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Rating", b => + { + b.HasOne("DevHive.Data.Models.Post", "Post") + .WithMany("Ratings") + .HasForeignKey("PostId"); + + b.HasOne("DevHive.Data.Models.User", "User") + .WithMany() + .HasForeignKey("UserId"); + + b.Navigation("Post"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("DevHive.Data.Models.Relational.PostAttachments", b => + { + b.HasOne("DevHive.Data.Models.Post", "Post") + .WithMany("Attachments") + .HasForeignKey("PostId"); + + b.Navigation("Post"); + }); + + modelBuilder.Entity("DevHive.Data.Models.User", b => + { + b.HasOne("DevHive.Data.Models.User", null) + .WithMany("Friends") + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("LanguageUser", b => + { + b.HasOne("DevHive.Data.Models.Language", null) + .WithMany() + .HasForeignKey("LanguagesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("DevHive.Data.Models.Role", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("DevHive.Data.Models.Role", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("RoleUser", b => + { + b.HasOne("DevHive.Data.Models.Role", null) + .WithMany() + .HasForeignKey("RolesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("TechnologyUser", b => + { + b.HasOne("DevHive.Data.Models.Technology", null) + .WithMany() + .HasForeignKey("TechnologiesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DevHive.Data.Models.User", null) + .WithMany() + .HasForeignKey("UsersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("DevHive.Data.Models.Post", b => + { + b.Navigation("Attachments"); + + b.Navigation("Comments"); + + b.Navigation("Ratings"); + }); + + modelBuilder.Entity("DevHive.Data.Models.User", b => + { + b.Navigation("Comments"); + + b.Navigation("Friends"); + + b.Navigation("Posts"); + + b.Navigation("ProfilePicture"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Services/DevHive.Services.Models/User/UserServiceModel.cs b/src/Services/DevHive.Services.Models/User/UserServiceModel.cs index ad4e553..f48c703 100644 --- a/src/Services/DevHive.Services.Models/User/UserServiceModel.cs +++ b/src/Services/DevHive.Services.Models/User/UserServiceModel.cs @@ -8,7 +8,7 @@ namespace DevHive.Services.Models.User { public class UserServiceModel : BaseUserServiceModel { - public string ProfilePictureURL { get; set; } = new("/assets/icons/tabler-icon-user.svg"); + public string ProfilePictureURL { get; set; } = new(string.Empty); public HashSet Roles { get; set; } = new(); diff --git a/src/Services/DevHive.Services/Services/ProfilePictureService.cs b/src/Services/DevHive.Services/Services/ProfilePictureService.cs index 7093818..0a4c824 100644 --- a/src/Services/DevHive.Services/Services/ProfilePictureService.cs +++ b/src/Services/DevHive.Services/Services/ProfilePictureService.cs @@ -41,6 +41,7 @@ namespace DevHive.Services.Services await ValidateUserExistsAsync(profilePictureServiceModel.UserId); User user = await this._userRepository.GetByIdAsync(profilePictureServiceModel.UserId); + // if (user.ProfilePicture.PictureURL != ProfilePicture.DefaultURL) if (user.ProfilePicture.Id != Guid.Empty) { List file = new() { user.ProfilePicture.PictureURL }; @@ -76,11 +77,14 @@ namespace DevHive.Services.Services string picUrl = (await this._cloudinaryService.UploadFilesToCloud(file))[0]; ProfilePicture profilePic = new() { PictureURL = picUrl }; + User user = await this._userRepository.GetByIdAsync(profilePictureServiceModel.UserId); + profilePic.UserId = user.Id; + profilePic.User = user; + bool success = await this._profilePictureRepository.AddAsync(profilePic); if (!success) throw new ArgumentException("Unable to upload picture!"); - User user = await this._userRepository.GetByIdAsync(profilePictureServiceModel.UserId); user.ProfilePicture = profilePic; bool userProfilePicAlter = await this._userRepository.EditAsync(user.Id, user); -- cgit v1.2.3