aboutsummaryrefslogtreecommitdiff
path: root/Backend/Api
diff options
context:
space:
mode:
Diffstat (limited to 'Backend/Api')
-rw-r--r--Backend/Api/Api/Controllers/MessageController.cs2
-rw-r--r--Backend/Api/Api/Services/ChatHub.cs12
-rw-r--r--Backend/Api/Api/Services/MessageService.cs21
3 files changed, 30 insertions, 5 deletions
diff --git a/Backend/Api/Api/Controllers/MessageController.cs b/Backend/Api/Api/Controllers/MessageController.cs
index 63351d0..750fc5f 100644
--- a/Backend/Api/Api/Controllers/MessageController.cs
+++ b/Backend/Api/Api/Controllers/MessageController.cs
@@ -24,7 +24,7 @@ namespace Api.Controllers
}
[HttpPost("add")]
[Authorize(Roles = "User")]
- public async Task<ActionResult<MessageSend>> addMessage([FromBody] MessageReceive msg)
+ public async Task<ActionResult<Message>> addMessage([FromBody] MessageReceive msg)
{
var msgTemp = await _messageService.addMessage(msg);
if(msgTemp == null)
diff --git a/Backend/Api/Api/Services/ChatHub.cs b/Backend/Api/Api/Services/ChatHub.cs
index c196065..4092d8f 100644
--- a/Backend/Api/Api/Services/ChatHub.cs
+++ b/Backend/Api/Api/Services/ChatHub.cs
@@ -19,6 +19,7 @@ namespace Api.Services
if (id == null)
return;
Users.Add(Context.ConnectionId, id);
+
//await SendDirect(id, "poruka");
//await Send(Context.ConnectionId);
await base.OnConnectedAsync();
@@ -38,6 +39,17 @@ namespace Api.Services
}
return keys;
}
+ public static bool CheckUser(string id)
+ {
+ var users = Users.Values;
+ foreach (var user in users)
+ {
+ if (user == id)
+ return true;
+ }
+ return false;
+ }
+
}
}
//private readonly IHubContext<ChatHub> _ichat;
diff --git a/Backend/Api/Api/Services/MessageService.cs b/Backend/Api/Api/Services/MessageService.cs
index 0e48285..9cc818b 100644
--- a/Backend/Api/Api/Services/MessageService.cs
+++ b/Backend/Api/Api/Services/MessageService.cs
@@ -1,6 +1,7 @@
using System.Security.Claims;
using Api.Interfaces;
using Api.Models;
+using Microsoft.AspNetCore.SignalR;
using MongoDB.Driver;
namespace Api.Services
@@ -11,14 +12,15 @@ namespace Api.Services
private readonly IMongoCollection<Message> _messages;
private readonly IJwtService _jwtService;
private IConfiguration _configuration;
- private readonly IFileService _fileService;
- public MessageService(IDatabaseConnection settings, IMongoClient mongoClient, IJwtService jwtService, IHttpContextAccessor httpContextAccessor, IConfiguration configuration)
+ private readonly IHubContext<ChatHub> _chatHub;
+ public MessageService(IDatabaseConnection settings, IMongoClient mongoClient, IJwtService jwtService, IHttpContextAccessor httpContextAccessor, IConfiguration configuration,IHubContext<ChatHub> chatHub)
{
var database = mongoClient.GetDatabase(settings.DatabaseName);
_messages = database.GetCollection<Message>(settings.MessageCollectionname);
_jwtService = jwtService;
_httpContext = httpContextAccessor;
_configuration = configuration;
+ _chatHub = chatHub;
}
public async Task<Message> addMessage(MessageReceive msg)
{
@@ -33,10 +35,21 @@ namespace Api.Services
tempMsg.senderId = senderId;
tempMsg.messagge = msg.messagge;
tempMsg.timestamp = DateTime.Now.ToUniversalTime();
+ if (ChatHub.CheckUser(msg.receiverId))
+ {
+ //user online
+ var temp =messageToMessageSend(tempMsg);
+ foreach (var connection in ChatHub.getAllConnectionsOfUser(msg.receiverId))
+ await _chatHub.Clients.Client(connection).SendAsync("Message",temp);
+ }
+ else
+ {
+ //user offline
+ await _messages.InsertOneAsync(tempMsg);
- //TODO if user online send thru socket
- await _messages.InsertOneAsync(tempMsg);
+ }
+
return tempMsg;
}