Example #1
0
        /// <summary>
        /// Validates the Ampla Field Mapping.
        /// </summary>
        /// <returns></returns>
        public IList <string> ValidateMapping(TModel model)
        {
            List <string> messages = new List <string>();

            IAmplaViewProperties <TModel> viewProperties = GetViewProperties(model);

            messages.AddRange(viewProperties.ValidateViewPermissions());

            IEnumerable <FieldMapping> fieldMappings = viewProperties.GetFieldMappings();
            List <string> missingFields = new List <string>(modelProperties.GetProperties());

            foreach (FieldMapping fieldMapping in fieldMappings)
            {
                string field = fieldMapping.Name;
                string message;

                if (!ModelProperties.CanMapField(fieldMapping, out message))
                {
                    messages.Add(message ?? "Error message");
                }

                if (missingFields.Contains(field))
                {
                    missingFields.Remove(field);
                }
            }

            if (missingFields.Count > 0)
            {
                messages.AddRange(missingFields.Select(modelField => string.Format("The property '{0}' is not mapped to an Ampla Field.", modelField)));
            }

            return(messages);
        }