/// <summary>
        /// Gets a table field description.
        /// </summary>
        /// <param name="fieldId">The field id.</param>
        public TableFieldDescriptionViewModel GetTableFieldDescription(int fieldId)
        {
            SpeciesObservationFieldDescriptionList fields = CoreData.MetadataManager.GetSpeciesObservationFieldDescriptions(UserContext);

            return((from ISpeciesObservationFieldDescription field in fields
                    where field.Id == fieldId
                    select TableFieldDescriptionViewModel.CreateFromSpeciesObservationFieldDescription(field)).FirstOrDefault());
        }
Ejemplo n.º 2
0
        public SpeciesObservationFieldDescriptionList GetSpeciesObservationFieldDescriptions(IUserContext userContext)
        {
            SpeciesObservationFieldDescriptionList list  = new SpeciesObservationFieldDescriptionList();
            SpeciesObservationFieldDescription     desc1 = new SpeciesObservationFieldDescription();

            list.Add(desc1);
            return(list);
        }
        /// <summary>
        /// Groups the project parameters by project dictionary.
        /// </summary>
        /// <param name="projectParameterFields">The project parameter fields.</param>
        /// <returns>Dictionary with projects grouped by project id.</returns>
        private Dictionary <int, ProjectViewModel> GroupProjectParametersByProjectDictionary(
            SpeciesObservationFieldDescriptionList projectParameterFields)
        {
            Dictionary <int, ProjectViewModel> projectsDictionary = new Dictionary <int, ProjectViewModel>();

            if (projectParameterFields == null)
            {
                return(null);
            }

            var projectParametersDictionary = new Dictionary <int, List <Tuple <ISpeciesObservationFieldDescription, ISpeciesObservationFieldMapping> > >();
            var projectSet = new HashSet <ProjectViewModel>();

            foreach (var projectParameter in projectParameterFields)
            {
                foreach (ISpeciesObservationFieldMapping mapping in projectParameter.Mappings)
                {
                    if (mapping.ProjectId.HasValue)
                    {
                        if (!projectParametersDictionary.ContainsKey(mapping.ProjectId.Value))
                        {
                            projectParametersDictionary.Add(mapping.ProjectId.Value, new List <Tuple <ISpeciesObservationFieldDescription, ISpeciesObservationFieldMapping> >());
                            ProjectViewModel project = new ProjectViewModel
                            {
                                Name = mapping.ProjectName,
                                Id   = mapping.ProjectId.Value
                            };
                            projectSet.Add(project);
                        }
                        projectParametersDictionary[mapping.ProjectId.Value].Add(
                            new Tuple <ISpeciesObservationFieldDescription, ISpeciesObservationFieldMapping>(projectParameter, mapping));
                    }
                }
            }

            foreach (var projectViewModel in projectSet)
            {
                var projectParameterDescriptions = projectParametersDictionary[projectViewModel.Id];
                projectViewModel.ProjectParameters = new Dictionary <string, ProjectParameterObservationDetailFieldViewModel>(projectParameterDescriptions.Count);
                foreach (var fieldDescription in projectParameterDescriptions)
                {
                    var projectParameter = ProjectParameterObservationDetailFieldViewModel.Create(
                        fieldDescription.Item1,  //ISpeciesObservationFieldDescription
                        fieldDescription.Item2); // ISpeciesObservationFieldMapping

                    projectViewModel.ProjectParameters.Add(projectParameter.PropertyIdentifier, projectParameter);
                }

                // Order project parameters by its label
                projectViewModel.ProjectParameters =
                    projectViewModel.ProjectParameters.OrderBy(x => x.Value.Label).ToDictionary(x => x.Key, x => x.Value);

                projectsDictionary.Add(projectViewModel.Id, projectViewModel);
            }

            return(projectsDictionary);
        }
        public void GetSpeciesObservationFieldDescriptions()
        {
            SpeciesObservationFieldDescriptionList fieldDescriptionsMappings, list;

            list = GetMetadataManager(true).GetSpeciesObservationFieldDescriptions(GetUserContext());
            Assert.IsTrue(list.Count > 85);

            Int32 previousSortValue = -1;

            foreach (ISpeciesObservationFieldDescription field in list)
            {
                //Test that all mandatory properties has value for every item.
                Assert.IsTrue(field.Class.GetName().Length > 1);
                //Assert.IsTrue(field.Definition.Length > 1);
                //Assert.IsTrue(field.DocumentationUrl.Length > 1);
                Assert.IsTrue(field.Guid.Length > 1);
                Assert.IsNotNull(field.Id);
                Assert.IsNotNull(field.Importance);
                Assert.IsNotNull(field.IsAcceptedByTdwg);
                Assert.IsNotNull(field.IsClass);
                Assert.IsNotNull(field.IsImplemented);
                Assert.IsNotNull(field.IsMandatory);
                Assert.IsNotNull(field.IsMandatoryFromProvider);
                Assert.IsNotNull(field.IsObtainedFromProvider);
                Assert.IsNotNull(field.IsPlanned);
                // Assert.IsTrue(field.Label.Length > 0);
                // Assert.IsTrue(field.Name.Length > 1);
                Assert.IsNotNull(field.Type);


                //Test conditional properties
                if (field.IsAcceptedByTdwg)
                {
                    Assert.IsTrue(field.DefinitionUrl.Length > 0);
                }

                //Test that SortOrder is correct.
                Assert.IsTrue(field.SortOrder > previousSortValue);
                previousSortValue = field.SortOrder;
            }

            fieldDescriptionsMappings = new SpeciesObservationFieldDescriptionList();
            foreach (ISpeciesObservationFieldDescription fieldDescription in list)
            {
                if (fieldDescription.Mappings.IsNotEmpty() &&
                    fieldDescription.Mappings.Count < 5)
                {
                    fieldDescriptionsMappings.Add(fieldDescription);
                }
            }

            Assert.IsTrue(fieldDescriptionsMappings.IsNotEmpty());
        }
        /// <summary>
        /// Gets all fields except project parameters.
        /// </summary>
        /// <param name="userContext">The user context.</param>
        /// <returns>All fields except project parameters.</returns>
        public static SpeciesObservationFieldDescriptionList GetAllFieldsExceptProjectParameters(IUserContext userContext)
        {
            SpeciesObservationFieldDescriptionList fields = CoreData.MetadataManager.GetSpeciesObservationFieldDescriptions(userContext);
            SpeciesObservationFieldDescriptionList allFieldsExceptProjectParameters = new SpeciesObservationFieldDescriptionList();

            foreach (var field in fields)
            {
                if (!IsFieldProjectParameter(field))
                {
                    allFieldsExceptProjectParameters.Add(field);
                }
            }

            return(allFieldsExceptProjectParameters);
        }
Ejemplo n.º 6
0
        private List <ISpeciesObservationFieldDescription> GetTableFieldsByIds(IUserContext userContext, List <int> fieldIds)
        {
            var fieldList = new List <ISpeciesObservationFieldDescription>();
            SpeciesObservationFieldDescriptionList fields = CoreData.MetadataManager.GetSpeciesObservationFieldDescriptions(userContext);

            // create hash set for faster search in foreach loop below.
            var fieldIdsSet = new HashSet <int>();

            foreach (int fieldId in fieldIds)
            {
                fieldIdsSet.Add(fieldId);
            }

            foreach (ISpeciesObservationFieldDescription field in fields)
            {
                if (fieldIdsSet.Contains(field.Id))
                {
                    fieldList.Add(field);
                }
            }
            fieldList = fieldList.OrderBy(x => x.SortOrder).ToList();
            return(fieldList);
        }