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)); } }
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)); } }