Example #1
0
        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"));
        }
Example #4
0
        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);
        }