示例#1
0
        public async Task <bool> AddRoomsToUserAsync(UserRoomsViewModel item)
        {
            try
            {
                var ur = item.Rooms.Select(x => new UserRoom
                {
                    RoomId = x,
                    UserId = item.UserId
                }).ToList();
                User user = await _context.Users.AsNoTracking().FirstOrDefaultAsync(x => x.Id == item.UserId);

                await _context.UserRoom.AddRangeAsync(ur);

                await _context.SaveChangesAsync();

                string text = String.Format(" Здравствуйте, {0} {1}!!!\n Вы были добавлены в комнату для обсуждения" +
                                            " новых документов.\n \n С уважением, ваш сервис Femida :)", user.Name, user.Surname);
                _EmailService.Send(user.Email, "Добавление в комнату!", text);

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        public async Task <ActionResult <bool> > Send(Guid variantId)
        {
            try
            {
                string id   = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;
                User   user = await _context.Users.AsNoTracking().FirstOrDefaultAsync(x => x.Id == Guid.Parse(id));

                if (user == null)
                {
                    return(BadRequest());
                }
                var variant = await _context.Variants.AsNoTracking().Select(a => new
                {
                    Id     = a.Id,
                    roomId = a.Poll.RoomId
                }).FirstOrDefaultAsync(y => y.Id == variantId);

                if (variant == null)
                {
                    return(BadRequest());
                }
                var room = await _context.Rooms.AsNoTracking().Select(z => new
                {
                    usersId = z.UserRoom.Select(f => f.UserId.ToString()).ToList(),
                    Id      = z.Id
                }).FirstOrDefaultAsync(y => y.Id == variant.roomId);

                if (room == null)
                {
                    return(BadRequest());
                }
                UserVariant uv = new UserVariant {
                    UserId = Guid.Parse(id), VariantId = variantId
                };
                await _hubContext.Clients.Users(room.usersId.AsReadOnly()).SendAsync(
                    "Send", uv);

                await _context.UserVariant.AddAsync(uv);

                await _context.SaveChangesAsync();

                return(true);
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex));
            }
        }
示例#3
0
        public async Task <ActionResult <bool> > Send([FromBody] MessageDto message)
        {
            try
            {
                string id   = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;
                User   user = await _context.Users.AsNoTracking().FirstOrDefaultAsync(x => x.Id == Guid.Parse(id));

                if (user == null)
                {
                    return(BadRequest());
                }
                message.UserId = Guid.Parse(id);
                var room = await _context.Rooms.AsNoTracking().Select(y => new
                {
                    Id      = y.Id,
                    UsersId = y.UserRoom.Select(z => z.UserId.ToString()).ToList()
                }).FirstOrDefaultAsync(x => x.Id == message.RoomId);

                if (room == null)
                {
                    return(BadRequest());
                }
                message.Date = DateTime.Now;
                await _hubContext.Clients.Users(room.UsersId.AsReadOnly()).SendAsync(
                    "Send", message);

                await _context.Messages.AddAsync(MessageConverter.Convert(message));

                await _context.SaveChangesAsync();

                return(true);
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex));
            }
        }