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