public static void FillFrom([NotNull] this IReadOnlyCollection <FieldWithValue> characterFieldValues,
                                    [CanBeNull] IFieldContainter container)
        {
            if (characterFieldValues == null)
            {
                throw new ArgumentNullException(nameof(characterFieldValues));
            }

            if (container == null)
            {
                return;
            }
            var data = container.DeserializeFieldValues();

            foreach (var characterFieldValue in characterFieldValues)
            {
                var value = data.GetValueOrDefault(characterFieldValue.Field.ProjectFieldId);
                if (value != null)
                {
                    try
                    {
                        characterFieldValue.Value = value;
                    }
                    catch (Exception e)
                    {
                        throw new Exception($"Problem parsing field value for field = {characterFieldValue.Field.ProjectFieldId}, Value = {value}", e);
                    }
                }
            }
        }
        public static AccessArguments GetAccessArguments(
            [NotNull] this IFieldContainter entityWithFields,
            int userId)
        {
            if (entityWithFields == null)
            {
                throw new ArgumentNullException(nameof(entityWithFields));
            }


            if (entityWithFields is Claim claim)
            {
                return(new AccessArguments(claim, userId));
            }
            if (entityWithFields is Character character)
            {
                return(new AccessArguments(character, userId));
            }
            throw new NotSupportedException($"{entityWithFields.GetType()} is not supported to get fields for.");
        }
예제 #3
0
        public static Predicate <FieldWithValue> GetShowForUserPredicate(
            [NotNull] IFieldContainter entityWithFields,
            int userId)
        {
            if (entityWithFields == null)
            {
                throw new ArgumentNullException(nameof(entityWithFields));
            }

            var claim     = entityWithFields as Claim;
            var character = entityWithFields as Character;

            if (claim != null)
            {
                return(f => f.HasViewAccess(new AccessArguments(claim, userId)));
            }
            if (character != null)
            {
                return(f => f.HasViewAccess(new AccessArguments(character, userId)));
            }
            throw new NotSupportedException($"{entityWithFields.GetType()} is not supported to get fields for.");
        }
예제 #4
0
        public static void FillFrom([NotNull] this ICollection <FieldWithValue> characterFieldValues, [CanBeNull] IFieldContainter container)
        {
            if (characterFieldValues == null)
            {
                throw new ArgumentNullException(nameof(characterFieldValues));
            }
            if (container == null)
            {
                return;
            }
            var data = container.DeserializeFieldValues();

            foreach (var characterFieldValue in characterFieldValues)
            {
                var value = data.GetValueOrDefault(characterFieldValue.Field.ProjectFieldId);
                if (value != null)
                {
                    characterFieldValue.Value = value;
                }
            }
        }
예제 #5
0
 private static Dictionary <int, string> DeserializeFieldValues([CanBeNull] this IFieldContainter containter)
 {
     return(JsonConvert.DeserializeObject <Dictionary <int, string> >(containter?.JsonData ?? "") ?? new Dictionary <int, string>());
 }
 public static void FieldValuesShouldBe(this IFieldContainter mockCharacter,
                                        params FieldWithValue[] field2) =>
 mockCharacter.JsonData.ShouldBe(field2.SerializeFields());
예제 #7
0
 public static void AssignFieldValues(IFieldContainter mockCharacter, params FieldWithValue[] fieldWithValues) => mockCharacter.JsonData = fieldWithValues.SerializeFields();