diff options
author | TrueDoctor <d-kobert@web.de> | 2018-09-29 18:34:15 +0200 |
---|---|---|
committer | TrueDoctor <d-kobert@web.de> | 2018-09-29 18:34:15 +0200 |
commit | 0283e1ae9f66ac2ef53c081e369190af52077406 (patch) | |
tree | a344b333f4a1d2fdc84c20a2ccbef4d1d21e1927 /DSACore | |
parent | 5a27d1d017587bb2babc482a998153996fec1a7f (diff) |
updated group storage
Diffstat (limited to 'DSACore')
-rw-r--r-- | DSACore/Hubs/ChatHub.cs | 33 | ||||
-rw-r--r-- | DSACore/Models/Group.cs | 13 | ||||
-rw-r--r-- | DSACore/Models/User.cs | 2 |
3 files changed, 38 insertions, 10 deletions
diff --git a/DSACore/Hubs/ChatHub.cs b/DSACore/Hubs/ChatHub.cs index a8bf883..484a350 100644 --- a/DSACore/Hubs/ChatHub.cs +++ b/DSACore/Hubs/ChatHub.cs @@ -9,7 +9,9 @@ namespace DSACore.Hubs { public class ChatHub : Hub { - private static Dictionary<string, User> UserGroup; + //private static Dictionary<string, User> UserGroup = new Dictionary<string, User>(); + + private static List<Group> DSAGroups = new List<Group>(); public async Task SendMessage(string user, string message) { @@ -17,7 +19,7 @@ namespace DSACore.Hubs 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})); + await SendToGroup(getGroup(Context.ConnectionId).Name, user, Commands.CommandHandler.ExecuteCommand(new Command{CharId = 0,CmdIdentifier = ident, CmdTexts = args, Name = user})); } private Task SendToGroup(string group, string user, string message) @@ -25,29 +27,42 @@ namespace DSACore.Hubs return Clients.Group(group).SendCoreAsync("ReceiveMessage", new object[] { user, message }); } + private Group getGroup(string id) + { + return DSAGroups.First(x => x.Users.Exists(y => y.ConnectionId.Equals(id))); + } + public async Task GetGroups() { - await Clients.Caller.SendCoreAsync("ListGroups", new object[] { "TheCrew", "Testdata" }); + await Clients.Caller.SendCoreAsync("ListGroups", new object[] { Groups }); throw new NotImplementedException("add database call to get groups"); } - public async Task Login(string group, string password) + public async Task AddGroup(string group, string password) + { + await Clients.Caller.SendCoreAsync("ListGroups", new object[] { Groups }); + throw new NotImplementedException("add database call to add groups"); + } + + public async Task Login(string group, string user, string password) { if (password == "valid") { - UserGroup.Add(Context.ConnectionId, new User{Group = group}); + DSAGroups.First(x=>x.Name.Equals(group)).Users.Add(new User{ConnectionId = Context.ConnectionId, Name = user}); await Groups.AddToGroupAsync(Context.ConnectionId, group); } - await SendToGroup(group, "", "Ein neuer Nutzer hat die Gruppe betreten"); + await SendToGroup(group, user, "Ein neuer Nutzer hat die Gruppe betreten"); } public async Task Disconnect() { - var user = UserGroup[Context.ConnectionId]; - await Groups.RemoveFromGroupAsync(Context.ConnectionId, user.Group); + var group = getGroup(Context.ConnectionId); + var user = group.Users.First(x => x.ConnectionId.Equals(Context.ConnectionId)); + group.Users.Remove(user); + await Groups.RemoveFromGroupAsync(Context.ConnectionId, group.Name); - await SendToGroup(user.Group, user.Name, "Connection lost"); + await SendToGroup(group.Name, user.Name, "Connection lost"); } } diff --git a/DSACore/Models/Group.cs b/DSACore/Models/Group.cs new file mode 100644 index 0000000..27d7ee7 --- /dev/null +++ b/DSACore/Models/Group.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace DSACore.Models +{ + public class Group + { + public string Name { get; set; } + public List<User> Users { get; set; }= new List<User>(); + } +} diff --git a/DSACore/Models/User.cs b/DSACore/Models/User.cs index 105e564..6a0bd61 100644 --- a/DSACore/Models/User.cs +++ b/DSACore/Models/User.cs @@ -8,6 +8,6 @@ namespace DSACore.Models public class User { public string Name { get; set; } - public string Group { get; set; } + public string ConnectionId { get; set; } } } |