aboutsummaryrefslogtreecommitdiff
path: root/src/Services/DevHive.Services
diff options
context:
space:
mode:
authorDanail Dimitrov <danaildimitrov321@gmail.com>2021-02-26 23:00:50 +0200
committerDanail Dimitrov <danaildimitrov321@gmail.com>2021-02-26 23:00:50 +0200
commit379eda6a42fdba0a6ed7e7ae53e0fbf2acd774b6 (patch)
treecee90836aaa0d4f540a40b32a589a783eb71fdb8 /src/Services/DevHive.Services
parent8e0038628e866ac5ce716e7971e150d2a8f23f4c (diff)
downloadDevHive-379eda6a42fdba0a6ed7e7ae53e0fbf2acd774b6.tar
DevHive-379eda6a42fdba0a6ed7e7ae53e0fbf2acd774b6.tar.gz
DevHive-379eda6a42fdba0a6ed7e7ae53e0fbf2acd774b6.zip
Adding update layer for rating_system
Diffstat (limited to 'src/Services/DevHive.Services')
-rw-r--r--src/Services/DevHive.Services/Configurations/Mapping/RatingMappings.cs2
-rw-r--r--src/Services/DevHive.Services/Interfaces/IRatingService.cs5
-rw-r--r--src/Services/DevHive.Services/Services/PostService.cs1
-rw-r--r--src/Services/DevHive.Services/Services/RatingService.cs49
4 files changed, 39 insertions, 18 deletions
diff --git a/src/Services/DevHive.Services/Configurations/Mapping/RatingMappings.cs b/src/Services/DevHive.Services/Configurations/Mapping/RatingMappings.cs
index 7056afa..3ef7d33 100644
--- a/src/Services/DevHive.Services/Configurations/Mapping/RatingMappings.cs
+++ b/src/Services/DevHive.Services/Configurations/Mapping/RatingMappings.cs
@@ -11,6 +11,8 @@ namespace DevHive.Services.Configurations.Mapping
CreateMap<CreateRatingServiceModel, Rating>();
CreateMap<Rating, ReadRatingServiceModel>();
+
+ CreateMap<UpdateRatingServiceModel, Rating>();
}
}
}
diff --git a/src/Services/DevHive.Services/Interfaces/IRatingService.cs b/src/Services/DevHive.Services/Interfaces/IRatingService.cs
index a554ce3..601b07e 100644
--- a/src/Services/DevHive.Services/Interfaces/IRatingService.cs
+++ b/src/Services/DevHive.Services/Interfaces/IRatingService.cs
@@ -10,9 +10,10 @@ namespace DevHive.Services.Interfaces
Task<Guid> RatePost(CreateRatingServiceModel createRatingServiceModel);
Task<ReadRatingServiceModel> GetRatingById(Guid ratingId);
- Task<ReadRatingServiceModel> GetUserRateFromPost(Guid userId, Guid postId);
Task<bool> HasUserRatedThisPost(Guid userId, Guid postId);
- Task<ReadRatingServiceModel> RemoveUserRateFromPost(Guid userId, Guid postId);
+ Task<ReadRatingServiceModel> UpdateRating(UpdateRatingServiceModel updateRatingServiceModel);
+
+ Task<bool> DeleteRating(Guid ratingId);
}
}
diff --git a/src/Services/DevHive.Services/Services/PostService.cs b/src/Services/DevHive.Services/Services/PostService.cs
index 4bece90..a3d5117 100644
--- a/src/Services/DevHive.Services/Services/PostService.cs
+++ b/src/Services/DevHive.Services/Services/PostService.cs
@@ -46,7 +46,6 @@ namespace DevHive.Services.Services
post.Creator = await this._userRepository.GetByIdAsync(createPostServiceModel.CreatorId);
post.TimeCreated = DateTime.Now;
- post.CurrentRating = 0;
bool success = await this._postRepository.AddAsync(post);
if (success)
diff --git a/src/Services/DevHive.Services/Services/RatingService.cs b/src/Services/DevHive.Services/Services/RatingService.cs
index e8c3c4c..20080ea 100644
--- a/src/Services/DevHive.Services/Services/RatingService.cs
+++ b/src/Services/DevHive.Services/Services/RatingService.cs
@@ -68,30 +68,49 @@ namespace DevHive.Services.Services
return readRatingServiceModel;
}
- public async Task<ReadRatingServiceModel> GetUserRateFromPost(Guid userId, Guid postId)
+ public async Task<bool> HasUserRatedThisPost(Guid userId, Guid postId)
{
- Rating rating = await this._ratingRepository.GetRatingByUserAndPostId(userId, postId) ??
- throw new ArgumentException("The rating does not exist");
+ return await this._ratingRepository
+ .UserRatedPost(userId, postId);
+ }
+ #endregion
- User user = await this._userRepository.GetByIdAsync(rating.User.Id) ??
- throw new ArgumentException("The user does not exist");
+ #region Update
+ public async Task<ReadRatingServiceModel> UpdateRating(UpdateRatingServiceModel updateRatingServiceModel)
+ {
+ Rating rating = await this._ratingRepository.GetRatingByUserAndPostId(updateRatingServiceModel.UserId, updateRatingServiceModel.PostId) ??
+ throw new ArgumentException("Rating does not exist!");
- ReadRatingServiceModel readRatingServiceModel = this._mapper.Map<ReadRatingServiceModel>(rating);
- readRatingServiceModel.UserId = user.Id;
+ User user = await this._userRepository.GetByIdAsync(updateRatingServiceModel.UserId) ??
+ throw new ArgumentException("User does not exist!");
- return readRatingServiceModel;
- }
+ if (!await this._ratingRepository.UserRatedPost(updateRatingServiceModel.UserId, updateRatingServiceModel.PostId))
+ throw new ArgumentException("User has not rated the post!");
- public async Task<bool> HasUserRatedThisPost(Guid userId, Guid postId)
- {
- return await this._ratingRepository
- .UserRatedPost(userId, postId);
+ rating.User = user;
+ rating.IsLike = updateRatingServiceModel.IsLike;
+
+ bool result = await this._ratingRepository.EditAsync(updateRatingServiceModel.Id, rating);
+
+ if (result)
+ {
+ ReadRatingServiceModel readRatingServiceModel = this._mapper.Map<ReadRatingServiceModel>(rating);
+ return readRatingServiceModel;
+ }
+ else
+ return null;
}
#endregion
- public async Task<ReadRatingServiceModel> RemoveUserRateFromPost(Guid userId, Guid postId)
+ #region Delete
+ public async Task<bool> DeleteRating(Guid ratingId)
{
- throw new NotImplementedException();
+ if (!await this._ratingRepository.DoesRatingExist(ratingId))
+ throw new ArgumentException("Rating does not exist!");
+
+ Rating rating = await this._ratingRepository.GetByIdAsync(ratingId);
+ return await this._ratingRepository.DeleteAsync(rating);
}
+ #endregion
}
}