summaryrefslogtreecommitdiff
path: root/DSACore/Hubs/ChatHub.cs
diff options
context:
space:
mode:
authorTrueKuehli <rctcoaster2000@hotmail.de>2018-09-29 17:19:43 +0200
committerTrueKuehli <rctcoaster2000@hotmail.de>2018-09-29 17:19:43 +0200
commitb83fc90abacc73262e0f8404cebadf6d64eb10ae (patch)
treed63b921c9bcdf8d381fc02ecfb0a1dd425ebb561 /DSACore/Hubs/ChatHub.cs
parent586d564f3c4c509c1aae931331e96f0382178f80 (diff)
parent680967aee589e4a8d277044b204de07cbe32f41e (diff)
Merge branch 'WebApi' of https://github.com/TrueDoctor/DiscoBot into WebApi
Merged the stuffs
Diffstat (limited to 'DSACore/Hubs/ChatHub.cs')
-rw-r--r--DSACore/Hubs/ChatHub.cs40
1 files changed, 39 insertions, 1 deletions
diff --git a/DSACore/Hubs/ChatHub.cs b/DSACore/Hubs/ChatHub.cs
index 6af8c38..a8bf883 100644
--- a/DSACore/Hubs/ChatHub.cs
+++ b/DSACore/Hubs/ChatHub.cs
@@ -2,15 +2,53 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using DSACore.Models;
using Microsoft.AspNetCore.SignalR;
namespace DSACore.Hubs
{
public class ChatHub : Hub
{
+ private static Dictionary<string, User> UserGroup;
+
public async Task SendMessage(string user, string message)
{
- await Clients.All.SendAsync("ReciveMessage", user, message);
+ var args = message.Split(' ', StringSplitOptions.RemoveEmptyEntries).ToList();
+ var ident = args.First().Replace("!", "");
+ if(args.Count>0){args.RemoveAt(0);}
+
+ await SendToGroup(UserGroup[Context.ConnectionId].Group, user, Commands.CommandHandler.ExecuteCommand(new Command{CharId = 0,CmdIdentifier = ident, CmdTexts = args, Name = user}));
+ }
+
+ private Task SendToGroup(string group, string user, string message)
+ {
+ return Clients.Group(group).SendCoreAsync("ReceiveMessage", new object[] { user, message });
+ }
+
+ public async Task GetGroups()
+ {
+ await Clients.Caller.SendCoreAsync("ListGroups", new object[] { "TheCrew", "Testdata" });
+ throw new NotImplementedException("add database call to get groups");
+ }
+
+ public async Task Login(string group, string password)
+ {
+ if (password == "valid")
+ {
+ UserGroup.Add(Context.ConnectionId, new User{Group = group});
+ await Groups.AddToGroupAsync(Context.ConnectionId, group);
+ }
+
+ await SendToGroup(group, "", "Ein neuer Nutzer hat die Gruppe betreten");
+ }
+
+ public async Task Disconnect()
+ {
+ var user = UserGroup[Context.ConnectionId];
+ await Groups.RemoveFromGroupAsync(Context.ConnectionId, user.Group);
+
+ await SendToGroup(user.Group, user.Name, "Connection lost");
}
+
}
}