Ejemplo n.º 1
0
        /// <summary>
        /// Gets the species observation table columns set identifier from argument.
        /// </summary>
        /// <param name="columnsSet">The columns set.</param>
        /// <param name="defaultValue">The default value.</param>
        /// <returns></returns>
        private SpeciesObservationTableColumnsSetId GetSpeciesObservationTableColumnsSetIdFromArgument(
            int?columnsSet,
            SpeciesObservationTableColumnsSetId defaultValue)
        {
            if (columnsSet.HasValue)
            {
                var systemDefinedTables = SessionHandler.MySettings.Presentation.Table.SpeciesObservationTable.SystemDefinedTables;
                var userDefinedTables   = SessionHandler.MySettings.Presentation.Table.SpeciesObservationTable.UserDefinedTables;
                if (columnsSet.Value < systemDefinedTables.Count) // system defined table
                {
                    return(new SpeciesObservationTableColumnsSetId(false, columnsSet.Value));
                }
                else // user defined table
                {
                    int userDefinedTableIndex = columnsSet.Value - systemDefinedTables.Count;
                    if (userDefinedTables != null && userDefinedTables.Count > userDefinedTableIndex)
                    {
                        return(new SpeciesObservationTableColumnsSetId(true, userDefinedTableIndex));
                    }
                    else
                    {
                        return(defaultValue);
                    }
                }
            }

            return(defaultValue);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Method that generates an Excel (XML/XLSX) file with species observations.
        /// </summary>
        /// <param name="addSettings"></param>
        /// <param name="addProvenance"></param>
        /// <param name="presentationCoordinateSystem">Coordinate system to use.</param>
        /// <param name="columnsSet">Which columns set to use.</param>
        /// <param name="columnsHeadersType">Columns headers type to use.</param>
        /// <returns>An Excel file of the type XML or XLSX.</returns>
        public FileResult SpeciesObservationsAsExcel(
            bool?addSettings,
            bool?addProvenance,
            int?presentationCoordinateSystem,
            int?columnsSet,
            int?columnsHeadersType)
        {
            MemoryStream returnStream;
            string       fileName;

            addSettings   = addSettings.GetValueOrDefault(true);
            addProvenance = addProvenance.GetValueOrDefault(false);
            CoordinateSystemId coordinateSystemId = GetCoordinateSystemIdFromArgument(
                presentationCoordinateSystem,
                SessionHandler.MySettings.Presentation.Map.DownloadCoordinateSystemId);

            SpeciesObservationTableColumnsSetId speciesObservationTableColumnsSetId =
                GetSpeciesObservationTableColumnsSetIdFromArgument(
                    columnsSet,
                    SessionHandler.MySettings.Presentation.Table.SpeciesObservationTable.SpeciesObservationTableColumnsSetId);

            bool useLabelAsColumnHeader = GetUselabelAsColumnHeaderFromArgument(
                columnsHeadersType,
                SessionHandler.MySettings.Presentation.Table.SpeciesObservationTable.UseLabelAsColumnHeader);

            if (SessionHandler.MySettings.Presentation.FileFormat.ExcelFileSettings.IsSettingsDefault())
            {
                SpeciesObservationsExcelXlsx file = FileExportManager.GetSpeciesObservationsAsExcelXlsx(
                    GetCurrentUser(),
                    addSettings.Value,
                    addProvenance.Value,
                    coordinateSystemId,
                    speciesObservationTableColumnsSetId,
                    useLabelAsColumnHeader);
                returnStream = file.ToStream();
                fileName     = CreateXlsxExcelFileName("SpeciesObservations");
            }
            else
            {
                SpeciesObservationsExcelXml file =
                    FileExportManager.GetSpeciesObservationsAsExcelXml(
                        GetCurrentUser(),
                        addSettings.Value,
                        addProvenance.Value,
                        coordinateSystemId,
                        speciesObservationTableColumnsSetId,
                        useLabelAsColumnHeader);

                returnStream = file.ToStream();
                fileName     = CreateXmlExcelFileName("SpeciesObservations");
            }

            SetServerDone();

            return(File(returnStream, XlsxExcelFileMimeType, fileName));
        }
Ejemplo n.º 3
0
        public List <Dictionary <ViewTableField, string> > GetTableResult(
            CoordinateSystemId coordinateSystemId,
            SpeciesObservationTableColumnsSetId speciesObservationTableColumnsSetId)
        {
            SpeciesObservationsData speciesObservationsData = GetSpeciesObservations(coordinateSystemId);
            var viewManager = new SpeciesObservationTableViewManager(UserContext, MySettings);
            ViewTableViewModel viewModel      = viewManager.CreateViewTableViewModel(speciesObservationTableColumnsSetId);
            var speciesObservationDataManager = new SpeciesObservationDataManager(UserContext, MySettings);
            List <Dictionary <ViewTableField, string> > dicResult = speciesObservationDataManager.GetObservationsListDictionary(speciesObservationsData.SpeciesObservationViewModels, viewModel.TableFields);

            return(dicResult);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SpeciesObservationsExcelXlsx" /> class.
 /// </summary>
 /// <param name="currentUser">Current user context.</param>
 /// <param name="addSettings">True if settings sheet should be included</param>
 /// <param name="addProvenance">True if provenance sheet should be included.</param>
 /// <param name="coordinateSystemId">Coordinate system</param>
 /// <param name="speciesObservationTableColumnsSetId">The table columns set to use.</param>
 /// <param name="useLabelAsColumnHeader">Use label as column header.</param>
 public SpeciesObservationsExcelXlsx(
     IUserContext currentUser,
     bool addSettings,
     bool addProvenance,
     CoordinateSystemId coordinateSystemId,
     SpeciesObservationTableColumnsSetId speciesObservationTableColumnsSetId,
     bool useLabelAsColumnHeader)
 {
     IsColumnHeaderBackgroundUsed             = true;
     base.currentUser                         = currentUser;
     base.addSettings                         = addSettings;
     base.addProvenance                       = addProvenance;
     this.coordinateSystemId                  = coordinateSystemId;
     this.speciesObservationTableColumnsSetId = speciesObservationTableColumnsSetId;
     this.useLabelAsColumnHeader              = useLabelAsColumnHeader;
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Creates an xlsx excel file with species observations data.
 /// </summary>
 /// <param name="currentUser">Current user context</param>
 /// <param name="addSettings">True if settings sheet should be included</param>
 /// <param name="addProvenance">True if provenance sheet should be included.</param>
 /// <param name="coordinateSystemId">Coordinate system to use.</param>
 /// <param name="speciesObservationTableColumnsSetId">The table columns set to use.</param>
 /// <param name="useLabelAsColumnHeader">Use label as column header.</param>
 /// <returns>
 /// The xlsx Excel file.
 /// </returns>
 public static SpeciesObservationsExcelXlsx GetSpeciesObservationsAsExcelXlsx(
     IUserContext currentUser,
     bool addSettings,
     bool addProvenance,
     CoordinateSystemId coordinateSystemId,
     SpeciesObservationTableColumnsSetId speciesObservationTableColumnsSetId,
     bool useLabelAsColumnHeader)
 {
     return(new SpeciesObservationsExcelXlsx(
                currentUser,
                addSettings,
                addProvenance,
                coordinateSystemId,
                speciesObservationTableColumnsSetId,
                useLabelAsColumnHeader));
 }
        public ViewTableViewModel CreateViewTableViewModel(SpeciesObservationTableColumnsSetId speciesObservationTableColumnsSetId)
        {
            ViewTableViewModel model = new ViewTableViewModel();
            PagedSpeciesObservationResultCalculator resultCalculator = new PagedSpeciesObservationResultCalculator(UserContext, MySettings);

            model.ComplexityEstimate = resultCalculator.GetQueryComplexityEstimate();
            List <ISpeciesObservationFieldDescription> fields =
                PresentationTableSetting.SpeciesObservationTable.GetTableFields(
                    UserContext,
                    speciesObservationTableColumnsSetId.TableId,
                    speciesObservationTableColumnsSetId.UseUserDefinedTableType);

            var tableFields = new List <ViewTableField>();

            foreach (ISpeciesObservationFieldDescription field in fields)
            {
                ViewTableField viewTableField = new ViewTableField(field.Label, field.Name.FirstLetterToUpper());
                tableFields.Add(viewTableField);
            }
            model.TableFields = tableFields;
            return(model);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Method that generates an CSV file with species observations.
        /// </summary>
        /// <param name="presentationCoordinateSystem">Coordinate system to use.</param>
        /// <param name="columnsSet">Which columns set to use.</param>
        /// <param name="columnsHeadersType">Columns headers type to use.</param>
        /// <returns>A CSV file.</returns>
        public FileResult SpeciesObservationsAsCsv(
            int?presentationCoordinateSystem,
            int?columnsSet,
            int?columnsHeadersType)
        {
            if (NoFilterSelected)
            {
                throw new Exception("Too much data! You must set taxa filter or spatial filter.");
            }
            var coordinateSystemId = GetCoordinateSystemIdFromArgument(
                presentationCoordinateSystem,
                SessionHandler.MySettings.Presentation.Map.DownloadCoordinateSystemId);

            SpeciesObservationTableColumnsSetId speciesObservationTableColumnsSetId =
                GetSpeciesObservationTableColumnsSetIdFromArgument(
                    columnsSet,
                    SessionHandler.MySettings.Presentation.Table.SpeciesObservationTable.SpeciesObservationTableColumnsSetId);

            bool useLabelAsColumnHeader = GetUselabelAsColumnHeaderFromArgument(
                columnsHeadersType,
                SessionHandler.MySettings.Presentation.Table.SpeciesObservationTable.UseLabelAsColumnHeader);

            SpeciesObservationResultCalculator          resultCalculator = new SpeciesObservationResultCalculator(GetCurrentUser(), SessionHandler.MySettings);
            List <Dictionary <ViewTableField, string> > result           =
                resultCalculator.GetTableResult(
                    coordinateSystemId,
                    speciesObservationTableColumnsSetId);

            SpeciesObservationsCsv file = FileExportManager.GetSpeciesObservationsAsCsv(
                result,
                useLabelAsColumnHeader);
            MemoryStream returnStream = file.ToStream();

            SetServerDone();
            return(File(
                       returnStream.ToArray(),
                       "text/csv",
                       FilenameGenerator.CreateFilename("SpeciesObservations", FileType.Csv)));
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="SpeciesObservationsExcelXml"/> class.
        /// </summary>
        /// <param name="currentUser">Current user context.</param>
        /// <param name="addSettings">True if settings sheet should be included</param>
        /// <param name="addProvenance">True if provenance sheet should be included.</param>
        /// <param name="coordinateSystemId">The coordinate system.</param>
        /// <param name="speciesObservationTableColumnsSetId">The table columns set to use.</param>
        /// <param name="useLabelAsColumnHeader">Use label as column header.</param>
        public SpeciesObservationsExcelXml(
            IUserContext currentUser,
            bool addSettings,
            bool addProvenance,
            CoordinateSystemId coordinateSystemId,
            SpeciesObservationTableColumnsSetId speciesObservationTableColumnsSetId,
            bool useLabelAsColumnHeader)
        {
            var resultCalculator    = new SpeciesObservationResultCalculator(currentUser, SessionHandler.MySettings);
            var speciesObservations = resultCalculator.GetTableResult(coordinateSystemId, speciesObservationTableColumnsSetId);

            _xmlBuilder = new StringBuilder();

            // Add file definitions and basic format settings
            _xmlBuilder.AppendLine(GetInitialSection());

            // Specify column and row counts
            List <string> columns = new List <string>();

            if (speciesObservations.Count > 0)
            {
                foreach (ViewTableField tableField in speciesObservations[0].Keys)
                {
                    if (useLabelAsColumnHeader)
                    {
                        columns.Add(tableField.Title);
                    }
                    else
                    {
                        columns.Add(tableField.DataField);
                    }
                }
            }

            _xmlBuilder.AppendLine(GetColumnInitialSection(columns.Count, speciesObservations.Count));

            // Specify column widths
            foreach (string column in columns)
            {
                _xmlBuilder.AppendLine(GetColumnWidthLine(100));
            }

            // Add row with column headers
            _xmlBuilder.AppendLine(GetRowStart());
            foreach (string column in columns)
            {
                _xmlBuilder.AppendLine(GetColumnNameRowLine(column));
            }

            _xmlBuilder.AppendLine(GetRowEnd());

            // Data values
            foreach (Dictionary <ViewTableField, string> speciesObservation in speciesObservations)
            {
                _xmlBuilder.AppendLine(GetRowStart());
                foreach (var val in speciesObservation.Values)
                {
                    _xmlBuilder.AppendLine(GetDataRowLine("String", val));
                }

                _xmlBuilder.AppendLine(GetRowEnd());
            }

            _xmlBuilder.AppendLine(GetFinalSection(GetAditionalSheets(currentUser, addSettings, addProvenance)));
        }