예제 #1
0
        public Task <Channel> FindByNameAsync(string name)
        {
            var foundChannel = _context
                               .Channels
                               .FirstOrDefault(c => c.Name == name);

            if (foundChannel == null)
            {
                return(Task.FromResult <Channel>(null));
            }
            var result = new Channel()
            {
                Name     = foundChannel.Name,
                Version  = foundChannel.Version,
                Members  = foundChannel.Users.Select(u => new UserId(u.UserId)).ToList(),
                Messages = foundChannel.Messages
                           .Select(m => new ChannelMessage
                {
                    From      = new UserId(m.UserId),
                    Text      = m.Text,
                    Timestamp = m.TimeStamp
                }).ToList()
            };

            return(Task.FromResult(result));
        }
예제 #2
0
 public Task CreateAsync(Channel channel)
 {
     _context.Channels.Add(new Model.Channel
     {
         Name    = channel.Name,
         Type    = 0,
         Version = 0
     });
     _context.SaveChanges();
     return(Task.FromResult(0));
 }
예제 #3
0
        public Task RemoveUserAsync(Channel channel, UserId user)
        {
            var foundChannel = _context
                               .Channels
                               .FirstOrDefault(c => c.Name == channel.Name);

            if (foundChannel != null)
            {
                var foundChannelUser = foundChannel
                                       .Users
                                       .FirstOrDefault(u => u.UserId == user.Id);
                foundChannel.Users.Remove(foundChannelUser);
                _context.SaveChanges();
            }
            return(Task.FromResult(0));
        }
예제 #4
0
        public Task AddUserAsync(Channel channel, UserId user)
        {
            var foundChannel = _context
                               .Channels
                               .FirstOrDefault(c => c.Name == channel.Name);

            if (foundChannel != null)
            {
                foundChannel.Users.Add(new ChannelUser
                {
                    ChannelId = foundChannel.Id,
                    UserId    = user.Id
                });
                _context.SaveChanges();
            }
            return(Task.FromResult(0));
        }
예제 #5
0
        public Task AddMessageAsync(Channel channel, ChannelMessage channelMessage)
        {
            var foundChannel = _context
                               .Channels
                               .FirstOrDefault(c => c.Name == channel.Name);

            if (foundChannel != null)
            {
                foundChannel.Version++;
                foundChannel.Messages.Add(new Model.ChannelMessage
                {
                    ChannelId = foundChannel.Id,
                    UserId    = channelMessage.From.Id,
                    Text      = channelMessage.Text,
                    TimeStamp = channelMessage.Timestamp,
                    Version   = foundChannel.Version
                });
                _context.SaveChanges();
            }
            return(Task.FromResult(0));
        }