public IActionResult SendInvite([FromBody] InviteViewModel model) { //Получаем из токена username var username = User.Identity.Name; //Ищем данного пользователя var user = _context.Users .Include(u => u.UserGroups) .ThenInclude(ug => ug.Group) .FirstOrDefault(u => u.Username == username); int group_id = model.GroupId; //Ищем данную группу var group = _context.Groups .Include(g => g.UserGroups) .ThenInclude(ug => ug.User) .FirstOrDefault(g => g.Id == group_id); var requesterUsername = model.UserName; //Ищем пользователя, который сделал запрос var userToInvite = _context.Users .Include(u => u.UserGroups) .ThenInclude(ug => ug.Group) .FirstOrDefault(u => u.Username == requesterUsername); //Если все существует if (user != null && group != null && userToInvite != null) { //Смотрим сть ли уже у пользователя приглашение var request = _context.Invites .Include(ppr => ppr.User) .Include(ppr => ppr.Group) .FirstOrDefault(ppr => ppr.Group.Id == group_id && ppr.User.Id == userToInvite.Id); //Если нет, то приглашаем, если есть то игнорируем if (request == null) { var newInvite = new InviteToGroup { User = userToInvite, Group = group }; _context.Invites.Add(newInvite); _context.SaveChanges(); } return(Ok()); } else { return(Unauthorized()); } }
public async Task <ActionResult> InviteUserToGroupAsync([FromRoute] Guid groupId, [FromRoute] Guid userId) { var sub = User.Claims.FirstOrDefault(c => c.Type == "sub")?.Value; var command = new InviteToGroup(sub, groupId, userId); var result = await _mediator.Send(command); if (result.IsFailure) { return(BadRequest()); } return(NoContent()); }