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 }); }
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 }); }
public async Task <BaseResponse <JoinChannelResultModel> > JoinPrivate(JoinChannelRequestModel model) => await PrepareResponse(_chatService.JoinToPrivateChannel, model);