aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2021-01-30 13:07:54 +0200
committerSyndamia <kamen.d.mladenov@protonmail.com>2021-01-30 13:07:54 +0200
commit498af41f38b14372bd2f5eb9a0add7af95c40168 (patch)
tree31c00985399ee352c1a09f4d650f62696e117350
parenta8cc808396a24f0a5e4262d07e3edae1a4e5fc1d (diff)
downloadDevHive-498af41f38b14372bd2f5eb9a0add7af95c40168.tar
DevHive-498af41f38b14372bd2f5eb9a0add7af95c40168.tar.gz
DevHive-498af41f38b14372bd2f5eb9a0add7af95c40168.zip
Fixed GetUserPosts implementation
-rw-r--r--src/DevHive.Data/Interfaces/Repositories/IFeedRepository.cs1
-rw-r--r--src/DevHive.Data/Repositories/FeedRepository.cs13
-rw-r--r--src/DevHive.Services/Interfaces/IFeedService.cs1
-rw-r--r--src/DevHive.Services/Services/FeedService.cs24
-rw-r--r--src/DevHive.Web/Controllers/FeedController.cs2
5 files changed, 40 insertions, 1 deletions
diff --git a/src/DevHive.Data/Interfaces/Repositories/IFeedRepository.cs b/src/DevHive.Data/Interfaces/Repositories/IFeedRepository.cs
index e9fd48a..7262510 100644
--- a/src/DevHive.Data/Interfaces/Repositories/IFeedRepository.cs
+++ b/src/DevHive.Data/Interfaces/Repositories/IFeedRepository.cs
@@ -8,5 +8,6 @@ namespace DevHive.Data.Interfaces.Repositories
public interface IFeedRepository
{
Task<List<Post>> GetFriendsPosts(List<User> friendsList, DateTime firstRequestIssued, int pageNumber, int pageSize);
+ Task<List<Post>> GetUsersPosts(User user, DateTime firstRequestIssued, int pageNumber, int pageSize);
}
}
diff --git a/src/DevHive.Data/Repositories/FeedRepository.cs b/src/DevHive.Data/Repositories/FeedRepository.cs
index efcb8e0..7ab9a91 100644
--- a/src/DevHive.Data/Repositories/FeedRepository.cs
+++ b/src/DevHive.Data/Repositories/FeedRepository.cs
@@ -32,5 +32,18 @@ namespace DevHive.Data.Repositories
return posts;
}
+
+ public async Task<List<Post>> GetUsersPosts(User user, DateTime firstRequestIssued, int pageNumber, int pageSize)
+ {
+ List<Post> posts = await this._context.Posts
+ .Where(post => post.TimeCreated < firstRequestIssued)
+ .Where(p => p.Creator.Id == user.Id)
+ .OrderByDescending(x => x.TimeCreated)
+ .Skip((pageNumber - 1) * pageSize)
+ .Take(pageSize)
+ .ToListAsync();
+
+ return posts;
+ }
}
}
diff --git a/src/DevHive.Services/Interfaces/IFeedService.cs b/src/DevHive.Services/Interfaces/IFeedService.cs
index 1edba5a..b507b3b 100644
--- a/src/DevHive.Services/Interfaces/IFeedService.cs
+++ b/src/DevHive.Services/Interfaces/IFeedService.cs
@@ -6,5 +6,6 @@ namespace DevHive.Services.Interfaces
public interface IFeedService
{
Task<ReadPageServiceModel> GetPage(GetPageServiceModel getPageServiceModel);
+ Task<ReadPageServiceModel> GetUserPage(GetPageServiceModel model);
}
}
diff --git a/src/DevHive.Services/Services/FeedService.cs b/src/DevHive.Services/Services/FeedService.cs
index 269471e..ceb5ebf 100644
--- a/src/DevHive.Services/Services/FeedService.cs
+++ b/src/DevHive.Services/Services/FeedService.cs
@@ -54,5 +54,29 @@ namespace DevHive.Services.Services
return readPageServiceModel;
}
+
+ public async Task<ReadPageServiceModel> GetUserPage(GetPageServiceModel model) {
+ User user = null;
+
+ if (!string.IsNullOrEmpty(model.Username))
+ user = await this._userRepository.GetByUsernameAsync(model.Username);
+ else
+ throw new ArgumentException("Invalid given data!");
+
+ if (user == null)
+ throw new ArgumentException("User doesn't exist!");
+
+ List<Post> posts = await this._feedRepository
+ .GetUsersPosts(user, model.FirstRequestIssued, model.PageNumber, model.PageSize);
+
+ if (posts.Count <= 0)
+ throw new ArgumentException("User hasn't posted anything yet!");
+
+ ReadPageServiceModel readPageServiceModel = new();
+ foreach (Post post in posts)
+ readPageServiceModel.Posts.Add(this._mapper.Map<ReadPostServiceModel>(post));
+
+ return readPageServiceModel;
+ }
}
}
diff --git a/src/DevHive.Web/Controllers/FeedController.cs b/src/DevHive.Web/Controllers/FeedController.cs
index 4fd3ae9..b04c37a 100644
--- a/src/DevHive.Web/Controllers/FeedController.cs
+++ b/src/DevHive.Web/Controllers/FeedController.cs
@@ -43,7 +43,7 @@ namespace DevHive.Web.Controllers
GetPageServiceModel getPageServiceModel = this._mapper.Map<GetPageServiceModel>(getPageWebModel);
getPageServiceModel.Username = username;
- ReadPageServiceModel readPageServiceModel = await this._feedService.GetPage(getPageServiceModel);
+ ReadPageServiceModel readPageServiceModel = await this._feedService.GetUserPage(getPageServiceModel);
ReadPageWebModel readPageWebModel = this._mapper.Map<ReadPageWebModel>(readPageServiceModel);
return new OkObjectResult(readPageWebModel);