示例#1
0
        public async Task <JoinChannelResultModel> JoinToGroupChannel(JoinChannelRequestModel model)
        {
            var user = await _authService.GetAuthorizedUser();

            var channel = await DbContext.ChatChannels.FindAsync(model.ChannelId);

            if (channel == null)
            {
                channel = new ChatChannel();

                await DbContext.AddAsync(channel);

                await DbContext.SaveChangesAsync();
            }

            var channelUser = new ChatChannelUser
            {
                UserId    = user.Id,
                ChannelId = channel.Id
            };

            await DbContext.AddAsync(channelUser);

            await DbContext.SaveChangesAsync();

            await _chatProvider.UserJoinedToChannel(user, channel.Id);

            return(new JoinChannelResultModel {
                ChannelId = channel.Id
            });
        }
示例#2
0
        public async Task <JoinChannelResultModel> JoinToPrivateChannel(JoinChannelRequestModel model)
        {
            var currentUser = await _authService.GetAuthorizedUser();

            var user = await DbContext.Users.FindAsync(model.ChannelId);

            if (user == null)
            {
                throw new EntityNotFoundException();
            }

            var channel = new ChatChannel();

            await DbContext.AddAsync(channel);

            await DbContext.SaveChangesAsync();

            var receiver = new ChatChannelUser
            {
                UserId    = model.ChannelId,
                ChannelId = channel.Id
            };

            var sender = new ChatChannelUser
            {
                UserId    = currentUser.Id,
                ChannelId = channel.Id
            };

            await DbContext.AddAsync(receiver);

            await DbContext.AddAsync(sender);

            await DbContext.SaveChangesAsync();

            //creating private chnannel with receiver 1st
            await _chatProvider.UserJoinedToChannel(user, channel.Id);

            //adding sender to this private chnannel
            await _chatProvider.UserJoinedToChannel(currentUser, channel.Id);

            return(new JoinChannelResultModel {
                ChannelId = channel.Id
            });
        }
示例#3
0
 public async Task <BaseResponse <JoinChannelResultModel> > JoinPrivate(JoinChannelRequestModel model) =>
 await PrepareResponse(_chatService.JoinToPrivateChannel, model);