コード例 #1
0
        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());
            }
        }
コード例 #2
0
        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());
        }