public async Task <ChatViewModel> ReturnCreatedGroupAsync(CreateGroupModelView groupModel) { var chat = await CreateGroupAsync(groupModel); var chatModel = _mapper.Map <ChatViewModel>(chat); var adminConnectionId = _context.Users .Include(x => x.Connections) .Where(x => x.Id == _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value) .FirstOrDefault().Connections.Last().ConnectionID; chatModel.UsersConnectionId = GetUserConnectionIdList(chat.Id, adminConnectionId); return(chatModel); }
public async Task <IActionResult> CreateGroupAsync(CreateGroupModelView groupModel, string connectionId) { var groupChat = await _homeService.ReturnCreatedGroupAsync(groupModel); await _chat.Groups.AddToGroupAsync(connectionId, groupChat.Name); foreach (var Id in groupChat.UsersConnectionId) { await _chat.Groups.AddToGroupAsync(Id, groupChat.Name); } await _chatService.IncreaseUsersUnreadMessageCount(groupChat.Id); await _chat.Clients.Group(groupChat.Name).SendAsync("ChatCreated", groupChat); return(Ok()); }
public async Task <IActionResult> CreateGroup(CreateGroupModelView model) { Group group = new Group { Name = model.Name, CoachId = model.CoachId, BranchId = model.BranchId, CreatorId = GetUserId.GetCurrentUserId(this.HttpContext) }; _db.Entry(group).State = EntityState.Added; await _db.SaveChangesAsync(); if (User.IsInRole("chief")) { return(RedirectToAction("Index", "Chief")); } return(RedirectToAction("Index", "Manager")); }
public async Task <Chat> CreateGroupAsync(CreateGroupModelView groupModel) { var chat = new Chat { Name = groupModel.Name, Type = ChatType.Group }; foreach (var Id in groupModel.ChatParticipantsId.ToList()) { chat.ChatParticipants.Add(new ChatUser { UserId = _context.Users .Where(x => x.Id == Id).FirstOrDefault().Id, Role = UserRole.Member }); } chat.ChatParticipants.Add(new ChatUser { UserId = _context.Users.Where(y => y.Id == _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value).FirstOrDefault().Id }); chat.Messages.Add(new Message { Text = $"Chat \"{chat.Name}\" is created", Timestamp = DateTime.Now, Name = "Default" }); _context.Chats.Add(chat); await _context.SaveChangesAsync(); return(chat); }