Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
 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);
 }
Пример #5
0
        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);
        }