public async Task <ActionResult <string> > CreateGroupInviteAsync(string groupIdentifier)
        {
            try
            {
                if (await IsUserValidAsync())
                {
                    var groupInviteIdentifier = await GroupInviteModel.CreateNewGroupInviteAsync(
                        groupIdentifier,
                        ExtractUserIdFromToken(),
                        RepositoryManager);

                    return(Ok(groupInviteIdentifier));
                }
                else
                {
                    return(Unauthorized());
                }
            }
            catch (InvalidTokenException err)
            {
                return(BadRequest(new InvalidTokenException(err.InvalidTokenType, err.ErrorMessage)));
            }
            catch (UserNotGroupMemberException)
            {
                return(Forbid());
            }
            catch (Exception err)
            {
                LogException(err);

                return(Problem());
            }
        }
示例#2
0
        public async Task <IActionResult> Invite(string groupid)
        {
            // Get current user
            User user = await _userManager.GetUserAsync(User);

            GroupInviteModel model = new GroupInviteModel()
            {
                Group = groupid
            };

            return(View(model));
        }
示例#3
0
        public async Task <IActionResult> Invite(GroupInviteModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // Get current user
            User user = await _userManager.GetUserAsync(User);

            Group group = _context.Groups.FirstOrDefault(g => g.Id == model.Group);

            User inviteuser = await _userManager.FindByNameAsync(model.InviteUser);

            TaskResult result = await GroupManager.AddInvite(group, user, inviteuser);

            StatusMessage = result.Info;

            return(RedirectToAction(nameof(View), new { groupid = group.Id }));
        }
        public async Task <ActionResult <GroupDownloadModel> > ValidateGroupInviteAsync(string groupInviteIdentifier)
        {
            try
            {
                if (await IsUserValidAsync())
                {
                    var groupAssociatedWithInvite = await GroupInviteModel.CheckUserGroupInviteValidAsync(
                        groupInviteIdentifier,
                        ExtractUserIdFromToken(),
                        RepositoryManager);

                    if (groupAssociatedWithInvite != null)
                    {
                        return(Ok(MapEntityToDownloadModel <Domain.Entities.Group, GroupDownloadModel>(groupAssociatedWithInvite)));
                    }
                    else
                    {
                        return(BadRequest());
                    }
                }
                else
                {
                    return(Unauthorized());
                }
            }
            catch (InvalidTokenException err)
            {
                return(BadRequest(new InvalidTokenException(err.InvalidTokenType, err.ErrorMessage)));
            }
            catch (UserAlreadyGroupMemberException err)
            {
                return(BadRequest(new UserAlreadyGroupMemberException(err.ErrorMessage, err.ErrorData)));
            }
            catch (Exception err)
            {
                LogException(err);

                return(Problem());
            }
        }
        public async Task <ActionResult <string> > JoinGroupWithInviteAsync(string groupInviteIdentifier)
        {
            try
            {
                if (await IsUserValidAsync())
                {
                    if (string.IsNullOrWhiteSpace(groupInviteIdentifier))
                    {
                        return(BadRequest());
                    }

                    var group = await GroupInviteModel.JoinGroupByInviteAsync(
                        groupInviteIdentifier,
                        ExtractUserIdFromToken(),
                        RepositoryManager);

                    return(Ok(MapEntityToDownloadModel <Domain.Entities.Group, GroupDownloadModel>(group)));
                }
                else
                {
                    return(Unauthorized());
                }
            }
            catch (InvalidTokenException err)
            {
                return(BadRequest(new InvalidTokenException(err.InvalidTokenType, err.ErrorMessage)));
            }
            catch (UserAlreadyGroupMemberException err)
            {
                return(BadRequest(new UserAlreadyGroupMemberException(err.ErrorMessage, err.ErrorData)));
            }
            catch (Exception err)
            {
                LogException(err);

                return(Problem());
            }
        }