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());
    }
示例#2
0
        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());
        }