public async Task <IActionResult> SetPlayerActiveStatus([FromBody] LeaguePlayerActiveRequest request) { var leagueYearRecord = await GetExistingLeagueYear(request.LeagueID, request.Year, ActionProcessingModeBehavior.Allow, RequiredRelationship.LeagueManager, RequiredYearStatus.YearNotFinishedDraftNotStarted); if (leagueYearRecord.FailedResult is not null) { return(leagueYearRecord.FailedResult); } var validResult = leagueYearRecord.ValidResult !; var leagueYear = validResult.LeagueYear; Dictionary <FantasyCriticUser, bool> userActiveStatus = new Dictionary <FantasyCriticUser, bool>(); foreach (var userKeyValue in request.ActiveStatus) { var domainUser = await _userManager.FindByIdAsync(userKeyValue.Key.ToString()); if (domainUser == null) { return(BadRequest()); } var publisherForUser = leagueYear.GetUserPublisher(domainUser); if (publisherForUser is not null && !userKeyValue.Value) { return(BadRequest("You must remove a player's publisher before you can set them as inactive.")); } userActiveStatus.Add(domainUser, userKeyValue.Value); } var result = await _leagueMemberService.SetPlayerActiveStatus(leagueYear, userActiveStatus); if (result.IsFailure) { return(BadRequest(result.Error)); } return(Ok()); }
public async Task <IActionResult> SetPlayerActiveStatus([FromBody] LeaguePlayerActiveRequest 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()); } var leagueYear = await _fantasyCriticService.GetLeagueYear(request.LeagueID, request.Year); if (leagueYear.HasNoValue) { return(BadRequest()); } if (leagueYear.Value.PlayStatus.PlayStarted) { return(BadRequest("You can't change a player's status for a year that is already started.")); } var publishers = await _publisherService.GetPublishersInLeagueForYear(leagueYear.Value); Dictionary <FantasyCriticUser, bool> userActiveStatus = new Dictionary <FantasyCriticUser, bool>(); foreach (var userKeyValue in request.ActiveStatus) { var domainUser = await _userManager.FindByIdAsync(userKeyValue.Key.ToString()); if (domainUser == null) { return(BadRequest()); } var publisherForUser = publishers.SingleOrDefault(x => x.User.UserID == domainUser.UserID); if (publisherForUser != null && !userKeyValue.Value) { return(BadRequest("You must remove a player's publisher before you can set them as inactive.")); } userActiveStatus.Add(domainUser, userKeyValue.Value); } var result = await _leagueMemberService.SetPlayerActiveStatus(leagueYear.Value, userActiveStatus); if (result.IsFailure) { return(BadRequest(result.Error)); } return(Ok()); }