/// <summary>
        /// Gets the observation detail fields.
        /// </summary>
        /// <param name="speciesObservationViewModel">The species observation view model.</param>
        /// <returns>A list of observation columns</returns>
        public List <ObservationDetailFieldViewModel> GetObservationDetailFields(
            SpeciesObservationViewModel speciesObservationViewModel)
        {
            List <ISpeciesObservationFieldDescription>           speciesObservationFieldDescriptions = GetAllTableFields();
            List <ObservationDetailFieldViewModel>               fields    = new List <ObservationDetailFieldViewModel>(speciesObservationFieldDescriptions.Count);
            Dictionary <string, ObservationDetailFieldViewModel> dicFields = new Dictionary <string, ObservationDetailFieldViewModel>(speciesObservationFieldDescriptions.Count);

            foreach (ISpeciesObservationFieldDescription fieldDescription in speciesObservationFieldDescriptions)
            {
                ObservationDetailFieldViewModel field = ObservationDetailFieldViewModel.CreateFromSpeciesObservationFieldDescription(fieldDescription);
                // Remove duplicates. Todo change this.
                if (!dicFields.ContainsKey(field.Name.ToLower()))
                {
                    dicFields.Add(field.Name.ToLower(), field);
                    fields.Add(field);
                }
            }

            Dictionary <string, string> observationValues = GetAllFieldsObservationsKeyValueDictionary(speciesObservationViewModel);

            foreach (KeyValuePair <string, string> keyValuePair in observationValues)
            {
                ObservationDetailFieldViewModel field;
                if (dicFields.TryGetValue(keyValuePair.Key.ToLower(), out field))
                {
                    field.Value = keyValuePair.Value;
                }
            }
            return(fields);
        }
        public Dictionary <string, string> GetObservationData(int observationId)
        {
            SpeciesObservationViewModel speciesObservationViewModel = GetSpeciesObservationViewModel(observationId);

            if (speciesObservationViewModel != null)
            {
                return(GetObservationData(speciesObservationViewModel));
            }

            return(null);
        }
        public List <ObservationDetailFieldViewModel> GetObservationDetailFields(int observationId)
        {
            SpeciesObservationViewModel speciesObservationViewModel = GetSpeciesObservationViewModel(observationId);

            if (speciesObservationViewModel != null)
            {
                return(GetObservationDetailFields(speciesObservationViewModel));
            }

            return(null);
        }
Esempio n. 4
0
        public static ResultObservationsListItem Create(SpeciesObservationViewModel viewModel)
        {
            ResultObservationsListItem resultModel = new ResultObservationsListItem();

            resultModel.ObservationId   = viewModel.ObservationId;
            resultModel.ScientificName  = viewModel.ScientificName;
            resultModel.ObservationDate = viewModel.Start;
            resultModel.CommonName      = viewModel.VernacularName;
            resultModel.RecordedBy      = viewModel.RecordedBy;
            resultModel.TaxonId         = viewModel.TaxonID;
            resultModel.Locality        = viewModel.Locality;
            resultModel.Description     = string.Format("{0} - {1}", viewModel.Start, viewModel.ScientificName);

            return(resultModel);
        }
        /// <summary>
        /// Converts a list of ISpeciesObservations to a list with ObservationDarwinCoreViewModel which is used
        /// to present the observations on screen.
        /// </summary>
        /// <param name="observations">The observations.</param>
        /// <param name="fieldDescriptionsViewModel">Field description view model.</param>
        /// <returns></returns>
        public static List <SpeciesObservationViewModel> ToObservationDarwinCoreViewModelList(
            this IEnumerable <ISpeciesObservation> observations,
            SpeciesObservationFieldDescriptionsViewModel fieldDescriptionsViewModel)
        {
            var list = new List <SpeciesObservationViewModel>();

            if (observations != null)
            {
                foreach (ISpeciesObservation obs in observations)
                {
                    list.Add(SpeciesObservationViewModel.CreateFromSpeciesObservation(obs, fieldDescriptionsViewModel));
                }
            }
            return(list);
        }
        private Dictionary <string, string> GetAllFieldsObservationsKeyValueDictionary(
            SpeciesObservationViewModel observation)
        {
            List <PropertyInfo> properties = typeof(SpeciesObservationViewModel).GetProperties().ToList();
            var dic = new Dictionary <string, string>();

            foreach (PropertyInfo propertyInfo in properties)
            {
                object propValue = propertyInfo.GetValue(observation, null);
                string strKey    = propertyInfo.Name;

                dic.Add(strKey, propValue == null ? "" : propValue.ToString());
            }
            return(dic);
        }
        private Dictionary <string, string> GetObservationData(
            SpeciesObservationViewModel speciesObservationViewModel)
        {
            if (speciesObservationViewModel == null)
            {
                return(null);
            }

            var viewManager = new SpeciesObservationTableViewManager(userContext, mySettings);
            ViewTableViewModel viewModel          = viewManager.CreateViewTableViewModel();
            bool useLabelAsKey                    = mySettings.Presentation.Table.SpeciesObservationTable.UseLabelAsColumnHeader;
            Dictionary <string, string> dicResult = GetObservationsKeyValueDictionary(speciesObservationViewModel, viewModel.TableFields, useLabelAsKey);

            return(dicResult);
        }
        private Dictionary <string, string> GetObservationsKeyValueDictionary(
            SpeciesObservationViewModel observation,
            List <ViewTableField> tableFields,
            bool useLabelAsKey,
            bool addEmptyFields = true)
        {
            Dictionary <string, ViewTableField> dicTableFields = new Dictionary <string, ViewTableField>();

            foreach (var tableField in tableFields)
            {
                if (!dicTableFields.ContainsKey(tableField.DataField))
                {
                    dicTableFields.Add(tableField.DataField, tableField);
                }
            }

            List <PropertyInfo> properties = GetObservationViewModelPropertyInfos(tableFields);
            var dic = new Dictionary <string, string>();

            foreach (PropertyInfo propertyInfo in properties)
            {
                object propValue = propertyInfo.GetValue(observation, null);
                string strKey    = propertyInfo.Name;
                if (useLabelAsKey)
                {
                    ViewTableField tableField;
                    if (dicTableFields.TryGetValue(strKey, out tableField))
                    {
                        strKey = tableField.Title;
                    }
                }
                string val = propValue == null ? "" : propValue.ToString();
                if (addEmptyFields || !string.IsNullOrEmpty(val))
                {
                    if (!dic.ContainsKey(strKey))
                    {
                        dic.Add(strKey, val);
                    }
                }
            }
            return(dic);
        }
        /// <summary>
        /// Gets the species observation view model.
        /// </summary>
        /// <param name="observationId">The observation id.</param>
        /// <returns>A species observation view model.</returns>
        public SpeciesObservationViewModel GetSpeciesObservationViewModel(int observationId)
        {
            var         displayCoordinateSystem = mySettings.Presentation.Map.DisplayCoordinateSystem;
            List <long> speciesObservationIds   = new List <long> {
                observationId
            };
            SpeciesObservationList speciesObservationList = CoreData.SpeciesObservationManager.GetSpeciesObservations(userContext, speciesObservationIds, displayCoordinateSystem);
            SpeciesObservationFieldDescriptionViewManager fieldDescriptionViewManager = new SpeciesObservationFieldDescriptionViewManager(userContext, mySettings);
            SpeciesObservationFieldDescriptionsViewModel  fieldDescriptionsViewModel  = fieldDescriptionViewManager.CreateSpeciesObservationFieldDescriptionsViewModel();

            if (speciesObservationList.Count > 0)
            {
                ISpeciesObservation         speciesObservation          = speciesObservationList[0];
                SpeciesObservationViewModel speciesObservationViewModel =
                    SpeciesObservationViewModel.CreateFromSpeciesObservation(speciesObservation, fieldDescriptionsViewModel);
                return(speciesObservationViewModel);
            }

            return(null);
        }
        public Dictionary <string, string> GetObservationData(int observationId, int?importance, bool?showDwcTitle, bool?hideEmptyFields)
        {
            SpeciesObservationViewModel speciesObservationViewModel = GetSpeciesObservationViewModel(observationId);

            if (speciesObservationViewModel != null)
            {
                var viewManager = new SpeciesObservationTableViewManager(userContext, mySettings);
                ViewTableViewModel viewModel = viewManager.CreateViewTableViewModelByImportance(importance);
                bool useLabelAsKey           = mySettings.Presentation.Table.SpeciesObservationTable.UseLabelAsColumnHeader;
                if (showDwcTitle.HasValue)
                {
                    useLabelAsKey = !showDwcTitle.Value;
                }

                Dictionary <string, string> dicResult = GetObservationsKeyValueDictionary(speciesObservationViewModel, viewModel.TableFields, useLabelAsKey, !hideEmptyFields.GetValueOrDefault(false));

                return(dicResult);
                //return GetObservationData(speciesObservationViewModel);
            }
            return(null);
        }