public PublisherUserRelationship(LeagueYearUserRelationship leagueYearRelationship, bool isPublisher) { InvitedToLeague = leagueYearRelationship.InvitedToLeague; InLeague = leagueYearRelationship.InLeague; ActiveInYear = leagueYearRelationship.ActiveInYear; LeagueManager = leagueYearRelationship.LeagueManager; IsAdmin = leagueYearRelationship.IsAdmin; IsPublisher = isPublisher; }
protected async Task <GenericResultRecord <LeagueYearRecord> > GetExistingLeagueYear(Guid leagueID, int year, ActionProcessingModeBehavior actionProcessingModeBehavior, RequiredRelationship requiredRelationship, RequiredYearStatus requiredYearStatus) { if (actionProcessingModeBehavior == ActionProcessingModeBehavior.Ban) { var systemWideSettings = await _interLeagueService.GetSystemWideSettings(); if (systemWideSettings.ActionProcessingMode) { return(GetFailedResult <LeagueYearRecord>(BadRequest("Site is in read-only mode while actions process."))); } } var currentUserRecord = await GetCurrentUser(); if ((requiredRelationship.MustBeLoggedIn || requiredRelationship.MustBeInOrInvitedToLeague || requiredRelationship.MustBeActiveInYear || requiredRelationship.MustBeLeagueManager) && currentUserRecord.IsFailure) { return(GetFailedResult <LeagueYearRecord>(Unauthorized())); } var leagueYear = await _fantasyCriticService.GetLeagueYear(leagueID, year); if (leagueYear is null) { return(GetFailedResult <LeagueYearRecord>(BadRequest("League year does not exist."))); } var yearStatusValid = requiredYearStatus.StateIsValid(leagueYear); if (yearStatusValid.IsFailure) { return(GetFailedResult <LeagueYearRecord>(BadRequest(yearStatusValid.Error))); } var playersInLeague = await _leagueMemberService.GetUsersWithRemoveStatus(leagueYear.League); var inviteesToLeague = await _leagueMemberService.GetOutstandingInvitees(leagueYear.League); var activeUsers = await _leagueMemberService.GetActivePlayersForLeagueYear(leagueYear.League, year); bool isInLeague = false; LeagueInvite?leagueInvite = null; bool isActiveInYear = false; bool isLeagueManager = false; bool userIsAdmin = false; if (currentUserRecord.IsSuccess) { userIsAdmin = await _userManager.IsInRoleAsync(currentUserRecord.Value, "Admin"); isLeagueManager = leagueYear.League.LeagueManager.Id == currentUserRecord.Value.Id; if (requiredRelationship.MustBeLeagueManager && !isLeagueManager) { return(GetFailedResult <LeagueYearRecord>(Forbid())); } if (isLeagueManager) { isInLeague = true; isActiveInYear = true; } else { isInLeague = playersInLeague.Any(x => x.User.Id == currentUserRecord.Value.Id); if (!isInLeague) { leagueInvite = inviteesToLeague.GetMatchingInvite(currentUserRecord.Value.Email); } isActiveInYear = activeUsers.Any(x => x.Id == currentUserRecord.Value.Id); } } if (!isInLeague && leagueInvite is null && requiredRelationship.MustBeInOrInvitedToLeague) { return(GetFailedResult <LeagueYearRecord>(Forbid())); } if (!isActiveInYear && requiredRelationship.MustBeActiveInYear) { return(GetFailedResult <LeagueYearRecord>(Forbid())); } LeagueYearUserRelationship relationship = new LeagueYearUserRelationship(leagueInvite, isInLeague, isActiveInYear, isLeagueManager, userIsAdmin); return(new GenericResultRecord <LeagueYearRecord>(new LeagueYearRecord(currentUserRecord.ToNullable(), leagueYear, playersInLeague, activeUsers, inviteesToLeague, relationship), null)); }