コード例 #1
0
        public async Task <BaseResponse> Invite([FromBody] GroupInviteRequest request)
        {
            var currentUserId = HttpContext.User.GetUserId();
            var response      = new BaseResponse();

            if (request == null || !ModelState.IsValid)
            {
                HttpContext.Response.StatusCode = StatusCodes.Status400BadRequest;
                response.Message = "Invalid input(s).";
                return(response);
            }

            try
            {
                if (!await _groupsRepository.UserInGroup(currentUserId, request.Group_Id))
                {
                    HttpContext.Response.StatusCode = StatusCodes.Status401Unauthorized;
                    response.Message = "User is not authorized to invite to this group.";
                    return(response);
                }
            }
            catch
            {
                HttpContext.Response.StatusCode = StatusCodes.Status401Unauthorized;
                response.Message = "Failed to authorize invite rights.";
                return(response);
            }

            var invite = new GroupInvite
            {
                Group_Id   = request.Group_Id,
                User_Id    = currentUserId,
                Inviter_Id = request.Inviter_Id
            };

            try
            {
                if (await _groupsRepository.CreateInvite(invite))
                {
                    response.Success = true;
                    response.Message = "User successfully invited to group!";
                }
                else
                {
                    throw new Exception();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                HttpContext.Response.StatusCode = StatusCodes.Status500InternalServerError;
                response.Message = "Failed to create invite.";
            }

            return(response);
        }