public AddClaimViewModel Fill(IClaimSource claimSource, int playerUserId) { var disallowReasons = claimSource.ValidateIfCanAddClaim(playerUserId) .Select(x => x.ToViewModel()).ToList(); CanSendClaim = !disallowReasons.Any(); IsProjectRelatedReason = disallowReasons.Intersect(new[] { AddClaimForbideReasonViewModel.ProjectClaimsClosed, AddClaimForbideReasonViewModel.ProjectNotActive, }) .Any(); if (!disallowReasons.Any()) { var myClaims = claimSource.Project.Claims.OfUserActive(playerUserId); if (myClaims.Any()) { disallowReasons.Add(AddClaimForbideReasonViewModel .AlredySentNotApprovedClaimToAnotherPlace); } } ValidationStatus = disallowReasons; ProjectAllowsMultipleCharacters = claimSource.Project.Details.EnableManyCharacters; ProjectId = claimSource.Project.ProjectId; ProjectName = claimSource.Project.ProjectName; TargetName = claimSource.Name; Description = claimSource.Description.ToHtmlString(); IsAvailable = claimSource.IsAvailable; ClaimApplyRules = claimSource.Project.Details.ClaimApplyRules.ToHtmlString(); Fields = new CustomFieldsViewModel(playerUserId, claimSource); IsRoot = claimSource.IsRoot; return(this); }
private void ShouldBeNotAllowed(IClaimSource claimSource, AddClaimForbideReason reason) => claimSource.ValidateIfCanAddClaim(Mock.Player.UserId).ShouldContain(reason);
private void ShouldBeAllowed(IClaimSource mockCharacter) => mockCharacter.ValidateIfCanAddClaim(Mock.Player.UserId).ShouldBeEmpty();