public static CharacterNavigationViewModel FromClaim([NotNull] Claim claim, int currentUserId, CharacterNavigationPage characterNavigationPage) { if (claim == null) { throw new ArgumentNullException(nameof(claim)); } var vm = new CharacterNavigationViewModel { CanAddClaim = false, ClaimId = claim.ClaimId, HasMasterAccess = claim.HasMasterAccess(currentUserId), CharacterId = claim.Character?.CharacterId, ProjectId = claim.ProjectId, Page = characterNavigationPage, Name = claim.GetTarget().Name, CanEditRoles = claim.HasEditRolesAccess(currentUserId), IsActive = claim.GetTarget().IsActive }; vm.LoadClaims(claim.Character); if (vm.RejectedClaims.Any(c => c.ClaimId == claim.ClaimId)) { vm.Page = CharacterNavigationPage.RejectedClaim; vm.ClaimId = null; } return(vm); }
public static CharacterNavigationViewModel FromCharacter(Character character, CharacterNavigationPage page, int?currentUserId) { int?claimId; if (character.ApprovedClaim?.HasAnyAccess(currentUserId) == true) //If Approved Claim exists and we have access to it, so be it. { claimId = character.ApprovedClaim.ClaimId; } else // if we have My claims, try select single one. We may fail to do so. { claimId = character.Claims.Where(c => c.PlayerUserId == currentUserId).ToArray().TrySelectSingleClaim()?.ClaimId; } var vm = new CharacterNavigationViewModel { CanAddClaim = character.IsAvailable, ClaimId = claimId, HasMasterAccess = character.HasMasterAccess(currentUserId), CanEditRoles = character.HasEditRolesAccess(currentUserId), CharacterId = character.CharacterId, ProjectId = character.ProjectId, Page = page, Name = character.CharacterName, IsActive = character.IsActive }; vm.LoadClaims(character); return(vm); }
public EditCharacterViewModel Fill(Character field, int currentUserId) { Navigation = CharacterNavigationViewModel.FromCharacter(field, CharacterNavigationPage.Editing, currentUserId); Fields = new CustomFieldsViewModel(currentUserId, field); ActiveClaimsCount = field.Claims.Count(claim => claim.IsActive); IsActive = field.IsActive; return(this); }
public CharacterDetailsViewModel(int?currentUserIdOrDefault, Character character, IEnumerable <PlotElement> plots) { Description = character.Description.ToHtmlString(); Player = character.ApprovedClaim?.Player; HasAccess = character.HasAnyAccess(currentUserIdOrDefault); ParentGroups = new CharacterParentGroupsViewModel(character, character.HasMasterAccess(currentUserIdOrDefault)); HidePlayer = character.HidePlayerForCharacter; Navigation = CharacterNavigationViewModel.FromCharacter(character, CharacterNavigationPage.Character, currentUserIdOrDefault); Fields = new CustomFieldsViewModel(currentUserIdOrDefault, character, disableEdit: true); Plot = plots.ToViewModels(currentUserIdOrDefault, character); }
public CharacterDetailsViewModel(int?currentUserIdOrDefault, Character character, IReadOnlyCollection <PlotElement> plots, IUriService uriService) { Player = character.ApprovedClaim?.Player; HasAccess = character.HasAnyAccess(currentUserIdOrDefault); ParentGroups = new CharacterParentGroupsViewModel(character, character.HasMasterAccess(currentUserIdOrDefault)); HidePlayer = character.HidePlayerForCharacter; Navigation = CharacterNavigationViewModel.FromCharacter(character, CharacterNavigationPage.Character, currentUserIdOrDefault); Fields = new CustomFieldsViewModel(currentUserIdOrDefault, character, disableEdit: true); Plot = PlotDisplayViewModel.Published(plots, currentUserIdOrDefault, character, uriService); HasMasterAccess = character.HasMasterAccess(currentUserIdOrDefault); CreatedAt = character.CreatedAt; UpdatedAt = character.UpdatedAt; CreatedBy = character.CreatedBy; UpdatedBy = character.UpdatedBy; }
public EditCharacterViewModel Fill(Character field, int currentUserId) { Navigation = CharacterNavigationViewModel.FromCharacter(field, CharacterNavigationPage.Editing, currentUserId); Fields = new CustomFieldsViewModel(currentUserId, field); ActiveClaimsCount = field.Claims.Count(claim => claim.IsActive); IsActive = field.IsActive; IsAcceptingClaimsEnabled = field.ApprovedClaim == null; IsAcceptingClaims = IsAcceptingClaims && IsAcceptingClaimsEnabled; CreatedAt = field.CreatedAt; UpdatedAt = field.UpdatedAt; CreatedBy = field.CreatedBy; UpdatedBy = field.UpdatedBy; return(this); }