aboutsummaryrefslogtreecommitdiff
path: root/src/Services
diff options
context:
space:
mode:
authorDanail Dimitrov <danaildimitrov321@gmail.com>2021-02-19 23:05:24 +0200
committerDanail Dimitrov <danaildimitrov321@gmail.com>2021-02-19 23:05:24 +0200
commitd6d70dc432cf2b6523ce9f06575e178cbd208414 (patch)
tree23bf9315473067167f67aa8afd9e32299d1f037e /src/Services
parentce6471578364310de31ed02e21ba5d7ae6529234 (diff)
downloadDevHive-chat_system.tar
DevHive-chat_system.tar.gz
DevHive-chat_system.zip
Adding Message layerchat_system
Diffstat (limited to 'src/Services')
-rw-r--r--src/Services/DevHive.Services/Services/CommentService.cs1
-rw-r--r--src/Services/DevHive.Services/Services/MessageService.cs40
2 files changed, 36 insertions, 5 deletions
diff --git a/src/Services/DevHive.Services/Services/CommentService.cs b/src/Services/DevHive.Services/Services/CommentService.cs
index b48bac8..d4b6846 100644
--- a/src/Services/DevHive.Services/Services/CommentService.cs
+++ b/src/Services/DevHive.Services/Services/CommentService.cs
@@ -40,6 +40,7 @@ namespace DevHive.Services.Services
comment.Post = await this._postRepository.GetByIdAsync(createCommentServiceModel.PostId);
bool success = await this._commentRepository.AddAsync(comment);
+
if (success)
{
Comment newComment = await this._commentRepository
diff --git a/src/Services/DevHive.Services/Services/MessageService.cs b/src/Services/DevHive.Services/Services/MessageService.cs
index 3e07fab..8b03d08 100644
--- a/src/Services/DevHive.Services/Services/MessageService.cs
+++ b/src/Services/DevHive.Services/Services/MessageService.cs
@@ -4,6 +4,7 @@ using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
+using AutoMapper;
using DevHive.Data.Models;
using DevHive.Data.Repositories;
using DevHive.Services.Interfaces;
@@ -15,21 +16,50 @@ namespace DevHive.Services.Services
{
private readonly MessageRepository _messageRepository;
private readonly UserRepository _userRepository;
+ private readonly ChatRepository _chatRepository;
+ private readonly IMapper _messageMapper;
- public MessageService(MessageRepository messageRepository, UserRepository userRepository)
+ public MessageService(MessageRepository messageRepository, UserRepository userRepository, ChatRepository chatRepository, IMapper messageMapper)
{
this._messageRepository = messageRepository;
this._userRepository = userRepository;
+ this._chatRepository = chatRepository;
+ this._messageMapper = messageMapper;
}
- public Task<Guid> CreateMessage(CreateMessageServiceModel createMessageServiceModel)
+ public async Task<Guid> CreateMessage(CreateMessageServiceModel createMessageServiceModel)
{
- throw new NotImplementedException();
+ //if you think of any validations add them here
+
+ Message message = this._messageMapper.Map<Message>(createMessageServiceModel);
+
+ message.TimeCreated = DateTime.Now;
+ message.Chat = await this._chatRepository.GetByIdAsync(createMessageServiceModel.ChatId);
+ message.Creator = await this._userRepository.GetByIdAsync(createMessageServiceModel.CreatorId);
+
+ bool result = await this._messageRepository.AddAsync(message);
+
+ if (result)
+ {
+ Message newMessage = await this._messageRepository.GetMessageByCreatorAndTimeCreatedAsync(createMessageServiceModel.CreatorId, message.TimeCreated);
+
+ return newMessage.Id;
+ }
+
+ return Guid.Empty;
}
- public Task<ReadMessageServiceModel> GetMessageById(Guid id)
+ public async Task<ReadMessageServiceModel> GetMessageById(Guid id)
{
- throw new NotImplementedException();
+ Message message = await this._messageRepository.GetByIdAsync(id) ??
+ throw new ArgumentException("The message does not exist");
+
+ User user = await this._userRepository.GetByIdAsync(message.Creator.Id) ??
+ throw new ArgumentException("The user does not exist");
+
+ ReadMessageServiceModel readMessageServiceModel = this._messageMapper.Map<ReadMessageServiceModel>(message);
+
+ return readMessageServiceModel;
}
#region Validations