public async Task <IActionResult> InvitePlayer([FromBody] CreateInviteRequest request) { var currentUser = await _userManager.FindByNameAsync(User.Identity.Name); if (!ModelState.IsValid) { return(BadRequest()); } var league = await _fantasyCriticService.GetLeagueByID(request.LeagueID); if (league.HasNoValue) { return(BadRequest()); } if (league.Value.LeagueManager.UserID != currentUser.UserID) { return(Forbid()); } string baseURL = $"{Request.Scheme}://{Request.Host.Value}"; FantasyCriticUser inviteUser; if (!request.IsDisplayNameInvite()) { string inviteEmail = request.InviteEmail.ToLower(); inviteUser = await _userManager.FindByEmailAsync(inviteEmail); if (inviteUser is null) { Result userlessInviteResult = await _leagueMemberService.InviteUserByEmail(league.Value, inviteEmail); if (userlessInviteResult.IsFailure) { return(BadRequest(userlessInviteResult.Error)); } await _emailSender.SendSiteInviteEmail(inviteEmail, league.Value, baseURL); return(Ok()); } } else { inviteUser = await _userManager.FindByDisplayName(request.InviteDisplayName, request.InviteDisplayNumber.Value); } if (inviteUser is null) { return(BadRequest("No user is found with that information.")); } Result userInviteResult = await _leagueMemberService.InviteUserByUserID(league.Value, inviteUser); if (userInviteResult.IsFailure) { return(BadRequest(userInviteResult.Error)); } await _emailSender.SendLeagueInviteEmail(inviteUser.EmailAddress, league.Value, baseURL); return(Ok()); }