Beispiel #1
0
        public SpeciesObservationList GetSpeciesObservationBySearchCriteriaPage(IUserContext userContext,
                                                                                ISpeciesObservationSearchCriteria searchCriteria,
                                                                                ICoordinateSystem coordinateSystem,
                                                                                ISpeciesObservationPageSpecification pageSpecification)
        {
            SpeciesObservationList speciesObservationList = new SpeciesObservationList();
            IEnumerable <int>      taxonIds;

            if (searchCriteria.TaxonIds != null && searchCriteria.TaxonIds.Count > 0)
            {
                taxonIds = searchCriteria.TaxonIds;
            }
            else
            {
                taxonIds = AllTaxonIds;
            }

            foreach (int taxonId in taxonIds)
            {
                SpeciesObservation speciesObservation = CreateSpeciesObservation(taxonId);
                speciesObservationList.Add(speciesObservation);
            }

            return(speciesObservationList);
        }
        /// <summary>
        /// Creates an ObservationsGISResult from a list of species observations.
        /// </summary>
        /// <param name="speciesObservationList">The observations list.</param>
        /// <returns></returns>
        public static SpeciesObservationsGeoJsonModel CreateResult(SpeciesObservationList speciesObservationList, FeatureCollection spatialFilter)
        {
            var features = new List <Feature>();

            foreach (ISpeciesObservation observation in speciesObservationList)
            {
                // if x or y-coordinate doesn't exist, continue
                if (!observation.Location.CoordinateX.HasValue || !observation.Location.CoordinateY.HasValue)
                {
                    continue;
                }

                var pos   = new GeographicPosition(observation.Location.CoordinateX.Value, observation.Location.CoordinateY.Value);
                var point = new ArtDatabanken.GIS.GeoJSON.Net.Geometry.Point(pos);

                var dicProperties = new Dictionary <string, object>();
                dicProperties.Add("observationId", observation.Id);
                dicProperties.Add("siteType", 2);
                dicProperties.Add("accuracy", observation.Location.CoordinateUncertaintyInMeters);

                var feature = new Feature(point, dicProperties);
                feature.Id = observation.DatasetID;
                features.Add(feature);
            }

            var featureCollection = new FeatureCollection(features);
            var result            = new SpeciesObservationsGeoJsonModel(featureCollection, spatialFilter);

            return(result);
        }
Beispiel #3
0
        public SpeciesObservationsGeoJsonModel GetMapPagedResult(int start, int pageSize, int?taxonId)
        {
            SpeciesObservationList speciesObservationList = GetPagedSpeciesObservationList(start, pageSize, taxonId, null);

            if (speciesObservationList == null)
            {
                throw new Exception(Resource.InformationExceptionNoObservationsFound);
            }
            return(SpeciesObservationsGeoJsonModel.CreateResult(speciesObservationList, null));
        }
Beispiel #4
0
        public SpeciesObservationsData(
            SpeciesObservationList speciesObservationList,
            SpeciesObservationFieldDescriptionsViewModel fieldDescriptionsViewModel)
        {
            if (speciesObservationList.IsNull())
            {
                speciesObservationList = new SpeciesObservationList();
            }

            SpeciesObservationList       = speciesObservationList;
            SpeciesObservationViewModels = speciesObservationList.GetGenericList().ToObservationDarwinCoreViewModelList(fieldDescriptionsViewModel);
        }
Beispiel #5
0
        public void GetSpeciesObservationViewModel_ObservationWithProjectParameters_ProjectIsPopulatedInModel()
        {
            // Constants
            const string projectName                        = "My project";
            const int    observationId                      = 150;
            const string projectParameterName1              = "Degrees";
            const string projectParameterValue1             = "25";
            const string projectParamterPropertyIdentifier1 = "MyPropIdentifier1";

            // Arrange
            LoginApplicationUser();
            SpeciesObservationDataManager speciesObservationDataManager = new SpeciesObservationDataManager(SessionHandler.UserContext, SessionHandler.MySettings);

            // Arrange - Mock
            CoreData.SpeciesObservationManager.DataSource =
                new StubISpeciesObservationDataSource()
            {
                GetSpeciesObservationsIUserContextListOfInt64ICoordinateSystemISpeciesObservationSpecification =
                    (userContext, speciesObservationIds, coordinateSystem, speciesObservationSpecification) =>
                {
                    SpeciesObservationList speciesObservationList = new SpeciesObservationList();
                    ISpeciesObservation    speciesObservation     = new ArtDatabanken.Data.SpeciesObservation();
                    speciesObservation.Id = observationId;

                    speciesObservation.Project = new SpeciesObservationProject
                    {
                        ProjectName       = projectName,
                        ProjectParameters = new SpeciesObservationProjectParameterList
                        {
                            new SpeciesObservationProjectParameter
                            {
                                PropertyIdentifier = projectParamterPropertyIdentifier1,
                                ProjectName        = projectName,
                                Property           = projectParameterName1,
                                Value = projectParameterValue1
                            }
                        }
                    };

                    speciesObservationList.Add(speciesObservation);
                    return(speciesObservationList);
                }
            };

            // Act
            var speciesObservationViewModel = speciesObservationDataManager.GetSpeciesObservationViewModel(observationId);

            // Assert
            Assert.AreEqual(1, speciesObservationViewModel.Projects.Count);
            Assert.AreEqual(projectName, speciesObservationViewModel.Projects[0].Name);
            Assert.AreEqual(projectParameterName1, speciesObservationViewModel.Projects[0].ProjectParameters[projectParamterPropertyIdentifier1].Name);
            Assert.AreEqual(projectParameterValue1, speciesObservationViewModel.Projects[0].ProjectParameters[projectParamterPropertyIdentifier1].Value);
        }
Beispiel #6
0
        public List <Dictionary <string, string> > GetTablePagedResult(int start, int pageSize)
        {
            SpeciesObservationFieldDescriptionViewManager fieldDescriptionViewManager = new SpeciesObservationFieldDescriptionViewManager(UserContext, MySettings);
            SpeciesObservationFieldDescriptionsViewModel  fieldDescriptionsViewModel  = fieldDescriptionViewManager.CreateSpeciesObservationFieldDescriptionsViewModel();
            SpeciesObservationList  speciesObservationList  = GetPagedSpeciesObservationList(start, pageSize, null, null);
            SpeciesObservationsData speciesObservationsData = new SpeciesObservationsData(speciesObservationList, fieldDescriptionsViewModel);
            var viewManager = new SpeciesObservationTableViewManager(UserContext, MySettings);
            ViewTableViewModel viewModel                  = viewManager.CreateViewTableViewModel();
            var speciesObservationDataManager             = new SpeciesObservationDataManager(UserContext, MySettings);
            List <Dictionary <string, string> > dicResult = speciesObservationDataManager.GetObservationsDataList(speciesObservationsData.SpeciesObservationViewModels, viewModel.TableFields);

            return(dicResult);
        }
Beispiel #7
0
        public List <Dictionary <string, string> > GetTablePagedResultInBbox(int start, int pageSize, double bottom, double left, double right, double top)
        {
            Polygon bbox = GetPolygon(bottom, left, right, top);
            SpeciesObservationList speciesObservationList = GetPagedSpeciesObservationList(start, pageSize, null, bbox);
            var fieldDescriptionViewManager = new SpeciesObservationFieldDescriptionViewManager(UserContext, MySettings);
            var fieldDescriptionsViewModel  = fieldDescriptionViewManager.CreateSpeciesObservationFieldDescriptionsViewModel();
            SpeciesObservationsData speciesObservationsData = new SpeciesObservationsData(speciesObservationList, fieldDescriptionsViewModel);
            var viewManager = new SpeciesObservationTableViewManager(UserContext, MySettings);
            ViewTableViewModel viewModel                  = viewManager.CreateViewTableViewModel();
            var speciesObservationDataManager             = new SpeciesObservationDataManager(UserContext, MySettings);
            List <Dictionary <string, string> > dicResult = speciesObservationDataManager.GetObservationsDataList(speciesObservationsData.SpeciesObservationViewModels, viewModel.TableFields);

            return(dicResult);
        }
        private SpeciesObservationsData CreateSpeciesObservationData(IUserContext userContext, AnalysisPortal.MySettings.MySettings mySettings)
        {
            SpeciesObservation speciesObservation = new SpeciesObservation();

            speciesObservation.Taxon         = new SpeciesObservationTaxon();
            speciesObservation.Taxon.TaxonID = "1";
            SpeciesObservationList speciesObservationList = new SpeciesObservationList();

            speciesObservationList.Add(speciesObservation);
            var fieldDescriptionViewManager = new SpeciesObservationFieldDescriptionViewManager(userContext, mySettings);
            var fieldDescriptionsViewModel  = fieldDescriptionViewManager.CreateSpeciesObservationFieldDescriptionsViewModel();
            SpeciesObservationsData speciesObservationsData = new SpeciesObservationsData(speciesObservationList, fieldDescriptionsViewModel);

            return(speciesObservationsData);
        }
Beispiel #9
0
        private static SpeciesObservationsData CreateSpeciesObservationDataSample()
        {
            SpeciesObservation      speciesObservation;
            SpeciesObservationList  speciesObservationList;
            SpeciesObservationsData speciesObservationsData;

            speciesObservation               = new SpeciesObservation();
            speciesObservation.Taxon         = new SpeciesObservationTaxon();
            speciesObservation.Taxon.TaxonID = "27";
            speciesObservationList           = new SpeciesObservationList();
            speciesObservationList.Add(speciesObservation);
            var fieldDescriptionViewManager = new SpeciesObservationFieldDescriptionViewManager(SessionHandler.UserContext, SessionHandler.MySettings);
            var fieldDescriptionsViewModel  = fieldDescriptionViewManager.CreateSpeciesObservationFieldDescriptionsViewModel();

            speciesObservationsData = new SpeciesObservationsData(speciesObservationList, fieldDescriptionsViewModel);
            return(speciesObservationsData);
        }
Beispiel #10
0
        protected SpeciesObservationList GetPagedSpeciesObservationList(int start, int pageSize, int?taxonId, Polygon bbox)
        {
            SpeciesObservationPageSpecification pageSpecification = new SpeciesObservationPageSpecification();

            pageSpecification.Size      = pageSize;
            pageSpecification.Start     = start;
            pageSpecification.SortOrder = new SpeciesObservationFieldSortOrderList();
            SpeciesObservationFieldSortOrder sortOrderOne = new SpeciesObservationFieldSortOrder();

            sortOrderOne.SortOrder   = SortOrder.Descending;
            sortOrderOne.Class       = new SpeciesObservationClass();
            sortOrderOne.Class.Id    = SpeciesObservationClassId.Event;
            sortOrderOne.Property    = new SpeciesObservationProperty();
            sortOrderOne.Property.Id = SpeciesObservationPropertyId.Start;
            pageSpecification.SortOrder.Add(sortOrderOne);

            var searchCriteriaManager = new SpeciesObservationSearchCriteriaManager(UserContext);
            SpeciesObservationSearchCriteria searchCriteria = searchCriteriaManager.CreateSearchCriteria(MySettings);

            if (taxonId.HasValue)
            {
                searchCriteria.TaxonIds = new List <int> {
                    taxonId.Value
                };
            }
            if (bbox != null)
            {
                searchCriteria.Polygons = new List <IPolygon> {
                    bbox
                };
            }

            if (UserContext.CurrentRole.IsNull() && UserContext.CurrentRoles.Count > 0)
            {
                UserContext.CurrentRole = UserContext.CurrentRoles[0];
            }

            var displayCoordinateSystem = MySettings.Presentation.Map.DisplayCoordinateSystem;
            // Todo Add more pecifice page information

            //SpeciesObservationList speciesObservationList = CoreData.SpeciesObservationManager.GetSpeciesObservations(UserContext, searchCriteria, displayCoordinateSystem);
            SpeciesObservationList speciesObservationList = CoreData.SpeciesObservationManager.GetSpeciesObservations(UserContext, searchCriteria, displayCoordinateSystem, pageSpecification);

            return(speciesObservationList);
        }
        /// <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);
        }
        /// <summary>
        /// Generate species observation properties to a text file.
        /// </summary>
        /// <returns></returns>
        public ActionResult GenerateObservationProperties()
        {
            string filePath = string.Empty;

            try
            {
                IUserContext userContext = CoreData.UserManager.GetApplicationContext();
                // Serach griffelblomfluga to extract properties from
                var obsSearchCriteria = new SpeciesObservationSearchCriteria {
                    TaxonIds = new List <int> {
                        100573
                    }, IncludePositiveObservations = true
                };
                var coordinateSystem = new CoordinateSystem {
                    Id = CoordinateSystemId.WGS84
                };

                userContext.CurrentRole = userContext.CurrentRoles[0];
                var obsList = new SpeciesObservationList();
                SpeciesObservationFieldList fieldList = new SpeciesObservationFieldList();
                if (obsSearchCriteria.TaxonIds.Count > 0)
                {
                    obsList = CoreData.SpeciesObservationManager.GetSpeciesObservations(userContext, obsSearchCriteria, coordinateSystem);
                }

                ISpeciesObservation observation = obsList[0];

                Dictionary <string, string> tableData = new Dictionary <string, string>();
                tableData = ExtractProperties(observation);
                filePath  = GetFilePath("SpeciesObservationProperties" + System.DateTime.Now.ToShortDateString());
                SaveFileToDisk(filePath, tableData);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            ViewData["FilePath"] = filePath;
            return(View());
        }
        public JsonNetResult GetObservations()
        {
            JsonModel jsonModel;

            try
            {
                IUserContext user = CoreData.UserManager.GetCurrentUser();
                var          obsSearchCriteria = new SpeciesObservationSearchCriteria
                {
                    TaxonIds = new List <int> {
                        100573
                    }, IncludePositiveObservations = true
                };
                var coordinateSystem = new CoordinateSystem {
                    Id = CoordinateSystemId.GoogleMercator
                };
                //CoordinateSystemId.SWEREF99

                user.CurrentRole = user.CurrentRoles[0];
                var obsList = new SpeciesObservationList();
                SpeciesObservationFieldList fieldList = new SpeciesObservationFieldList();
                if (obsSearchCriteria.TaxonIds.Count > 0)
                {
                    obsList = CoreData.SpeciesObservationManager.GetSpeciesObservations(user, obsSearchCriteria, coordinateSystem);
                }

                IList <ISpeciesObservation> resultList = obsList.GetGenericList();

                var observationObject = GetObservationsObject(resultList);

                jsonModel = JsonModel.CreateFromObject(observationObject);
            }
            catch (Exception ex)
            {
                jsonModel = JsonModel.CreateFailure(ex.Message);
            }
            return(new JsonNetResult(jsonModel));
        }
Beispiel #14
0
        public List <ResultObservationsListItem> GetTablePagedResultInBboxAsItems(int start, int pageSize, double bottom, double left, double right, double top)
        {
            Polygon bbox = GetPolygon(bottom, left, right, top);
            SpeciesObservationList speciesObservationList = GetPagedSpeciesObservationList(start, pageSize, null, bbox);
            var fieldDescriptionViewManager = new SpeciesObservationFieldDescriptionViewManager(UserContext, MySettings);
            var fieldDescriptionsViewModel  = fieldDescriptionViewManager.CreateSpeciesObservationFieldDescriptionsViewModel();
            SpeciesObservationsData speciesObservationsData = new SpeciesObservationsData(speciesObservationList, fieldDescriptionsViewModel);

            List <ResultObservationsListItem> list = new List <ResultObservationsListItem>();

            foreach (SpeciesObservationViewModel speciesObservationViewModel in speciesObservationsData.SpeciesObservationViewModels)
            {
                list.Add(ResultObservationsListItem.Create(speciesObservationViewModel));
            }

            return(list);
            //speciesObservationsData.SpeciesObservationViewModels
            //var viewManager = new SpeciesObservationTableViewManager(UserContext, MySettings);
            //ViewTableViewModel viewModel = viewManager.CreateViewTableViewModel();
            //var speciesObservationDataManager = new SpeciesObservationDataManager(UserContext, MySettings);
            //List<Dictionary<string, string>> dicResult = speciesObservationDataManager.GetObservationsDataList(speciesObservationsData.SpeciesObservationViewModels, viewModel.TableFields);
            //return dicResult;
        }
 public static SpeciesObservationsGeoJsonModel CreateResult(SpeciesObservationList speciesObservationList)
 {
     return(CreateResult(speciesObservationList, null));
 }
Beispiel #16
0
        public void GetObservationsListDictionary_WhenOneProjectParameter_ThenProjectAndProjectParameterArePairedTogether()
        {
            // Constants
            const string projectName            = "My project";
            const int    observationId          = 150;
            const string projectParameterName1  = "Degrees";
            const string projectParameterValue1 = "25";

            //Arrange
            LoginApplicationUser();
            SpeciesObservationDataManager speciesObservationDataManager = new SpeciesObservationDataManager(
                SessionHandler.UserContext,
                SessionHandler.MySettings);
            List <SpeciesObservationViewModel> obsResultList = new List <SpeciesObservationViewModel>();
            IEnumerable <ViewTableField>       tableFields   = null;

            // Arrange - Mock
            CoreData.SpeciesObservationManager.DataSource =
                new StubISpeciesObservationDataSource()
            {
                GetSpeciesObservationsIUserContextListOfInt64ICoordinateSystemISpeciesObservationSpecification =
                    (userContext, speciesObservationIds, coordinateSystem, speciesObservationSpecification) =>
                {
                    SpeciesObservationList speciesObservationList = new SpeciesObservationList();
                    ISpeciesObservation    speciesObservation     = new ArtDatabanken.Data.SpeciesObservation();
                    speciesObservation.Id      = observationId;
                    speciesObservation.Project = new SpeciesObservationProject
                    {
                        ProjectName       = projectName,
                        ProjectParameters = new SpeciesObservationProjectParameterList
                        {
                            new SpeciesObservationProjectParameter
                            {
                                ProjectName = projectName,
                                Property    = projectParameterName1,
                                Value       = projectParameterValue1
                            }
                        }
                    };

                    speciesObservationList.Add(speciesObservation);
                    return(speciesObservationList);
                }
            };

            var viewManager = new SpeciesObservationTableViewManager(
                SessionHandler.UserContext,
                SessionHandler.MySettings);
            ViewTableViewModel viewModel = viewManager.CreateViewTableViewModel(
                SessionHandler.MySettings.Presentation.Table.SpeciesObservationTable.SpeciesObservationTableColumnsSetId);

            tableFields = viewModel.TableFields;

            obsResultList.Add(new SpeciesObservationViewModel
            {
                Id       = observationId.ToString(),
                Projects = new List <ProjectViewModel>
                {
                    new ProjectViewModel()
                    {
                        Name = projectName,
                        ProjectParameters = new Dictionary <string, ProjectParameterObservationDetailFieldViewModel>
                        {
                            { projectParameterIdentifer1, new ProjectParameterObservationDetailFieldViewModel()
                              {
                                  PropertyIdentifier = projectParameterIdentifer1,
                                  Name  = projectParameterName1,
                                  Label = projectParameterName1,
                                  Value = projectParameterValue1,
                              } }
                        }
                    }
                }
            });

            //Act
            List <Dictionary <ViewTableField, string> > result = speciesObservationDataManager.GetObservationsListDictionary(
                obsResultList,
                tableFields);


            //Assert
            bool foundProjectParameter = false;

            foreach (KeyValuePair <ViewTableField, string> pair in result.First())
            {
                string headerTitle = string.Format("[{0}].[{1}]", projectName, projectParameterName1);
                if (pair.Key.Title == headerTitle && pair.Key.DataField == headerTitle && pair.Value == projectParameterValue1)
                {
                    foundProjectParameter = true;
                }
            }
            Assert.IsTrue(foundProjectParameter, "Project parameter not found");
        }