Exemplo n.º 1
0
        /// <summary>
        /// The controller method for the second phase in the process
        /// to create a Measure. This completes the population of the
        /// appropriate model.
        ///
        /// This is accessed from /Dataset/AddMeasureValues although this
        /// will not be reached directly but as a redirect from the first
        /// phase of the process.
        /// </summary>
        /// <param name="stagingTableName">The name of the Staging Table that the data is sourced from</param>
        /// <param name="measureName">The name of the Measure to be created</param>
        /// <param name="measureColumnStagingID">The Column in the Staging table that contains the measure values</param>
        /// <param name="geographyColumnID">The Column in the Staging table that contains the Geography</param>
        /// <returns></returns>
        public ActionResult AddMeasureValues(String stagingTableName, String measureName, int?measureColumnStagingID, int geographyColumnID, int geographyTypeID)
        {
            DatasetDataAccess dataAccess = new DatasetDataAccess();

            IEnumerable <Tuple <int, int> > mappings = (IEnumerable <Tuple <int, int> >)TempData["DimensionMappings"];

            MeasureValueModel model = dataAccess.populateMeasureValueModel(mappings, stagingTableName, measureName, measureColumnStagingID, geographyColumnID, geographyTypeID);

            List <Breadcrumb> trail = new List <Breadcrumb>();

            trail.Add(new Breadcrumb()
            {
                LinkText = "Home", Action = "Index", Controller = "Home", isCurrent = false
            });
            trail.Add(new Breadcrumb()
            {
                LinkText = "Staging Index", Action = "Index", Controller = "Staging", isCurrent = false
            });
            trail.Add(new Breadcrumb()
            {
                LinkText = "Create Measure", Action = "", Controller = "", isCurrent = true
            });

            model.Breadcrumbs = trail;

            return(View(model));
        }
Exemplo n.º 2
0
        public ActionResult AddMeasureValues(MeasureValueModel model)
        {
            DatasetDataAccess dataAccess = new DatasetDataAccess();

            dataAccess.createMeasureValues(model);

            TempData["SuccessMessage"] = String.Format("The Measure - {0}, was successfully created", model.MeasureName);
            return(RedirectToAction("Index", "Staging"));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Method to return the model which is used to map the Staging Dimension Values to Dimension Values
        /// in the database. This is used in the second stage in the Create Measure process.
        /// </summary>
        /// <param name="mappings">The mappings between the Staging Dimension Column and a Dimension in the Database. This is passed in as a Tuple where the first item is a Staging Column ID and the second item a Dimension ID</param>
        /// <param name="stagingTableName">The name of the staging table being used</param>
        /// <param name="measureName">The name of the measure to be created</param>
        /// <param name="measureColumnStagingID">The ID of the column used for the Measure values in Staging</param>
        /// <param name="geographyColumnID">The ID of the colum used for the Geography value in Staging</param>
        /// <returns></returns>
        public MeasureValueModel populateMeasureValueModel(IEnumerable <Tuple <int, int> > mappings, String stagingTableName, String measureName, int?measureColumnStagingID, int geographyColumnID, int geographyTypeID)
        {
            List <MeasureValueModel>   retVal  = new List <MeasureValueModel>();
            Geographical_NeedsEntities context = new Geographical_NeedsEntities();

            MeasureValueModel model = new MeasureValueModel();

            if (measureColumnStagingID.HasValue)
            {
                model.MeasureStagingColumnName = context.StagingColumns.Single(x => x.StagingColumnID.Equals(measureColumnStagingID.Value)).ColumnName;
                model.UseMeasureColumn         = true;
            }
            else
            {
                model.UseMeasureColumn = false;
            }

            model.GeographyTypeID        = geographyTypeID;
            model.StagingGeographyColumn = context.StagingColumns.Single(x => x.StagingColumnID.Equals(geographyColumnID)).ColumnName;
            model.MeasureName            = measureName;
            model.StagingTableName       = stagingTableName;

            List <MeasureValueDetailModel> detailModels = new List <MeasureValueDetailModel>();

            foreach (Tuple <int, int> tuple in mappings)
            {
                String dimColumnInStaging = context.StagingColumns.Single(x => x.StagingColumnID.Equals(tuple.Item1)).ColumnName;

                String sqlQuery = String.Format("select distinct {0} from {1}", dimColumnInStaging, stagingTableName);

                IEnumerable <String> stagingMeasureValues = context.Database.SqlQuery <String>(sqlQuery);


                foreach (DimensionValue dim in context.DimensionValues.Where(x => x.DimensionID.Equals(tuple.Item2)))
                {
                    MeasureValueDetailModel modelDetail = new MeasureValueDetailModel();

                    modelDetail.DimensionID            = tuple.Item2;
                    modelDetail.StagingDimensionValues = stagingMeasureValues.Select(x => new SelectListItem {
                        Text = x, Value = x, Selected = dim.DimensionValue1.Equals(x)
                    });

                    modelDetail.DimValue   = dim.DimensionValue1;
                    modelDetail.DimValueID = dim.DimensionValueID;

                    modelDetail.DimColumnInStaging = dimColumnInStaging;

                    detailModels.Add(modelDetail);
                }
            }

            model.MeasureValueDetails = detailModels;

            return(model);
        }
        private void OpenOnClick()
        {
            CurrentContext.DataList = new List <DataModel>();
            ViewModel.Measurements  = new ObservableCollection <DataModel>();

            var openFileDialog = new OpenFileDialog
            {
                Filter = "СSV (*.csv)|*.csv"
            };

            if (openFileDialog.ShowDialog() == true)
            {
                string fileName     = openFileDialog.FileName;
                string searchString = "__";
                int    indexOfStart = fileName.IndexOf(searchString) + 2;
                var    nameMode     = fileName.Substring(indexOfStart);
                nameMode = nameMode.Substring(0, nameMode.Length - 4);
                var dataList = File.ReadAllLines(openFileDialog.FileName)
                               .Skip(1)
                               .Select(x => x.Split(','))
                               .Select(x => new DataModel
                {
                    Id = x[0] != "" ? int.Parse(x[0]) : 0,
                    X  = x[1] != "" ? double.Parse(x[1]) : 0,
                    Y  = x[2] != "" ? double.Parse(x[2]) : 0,
                    HorizontalDistance = x[3] != "" ? double.Parse(x[3]) : 0,
                    VerticalDistance   = x[4] != "" ? double.Parse(x[4]) : 0,
                    SlopeDistance      = x[5] != "" ? double.Parse(x[5]) : 0,
                    Azimuth            = x[6] != "" ? double.Parse(x[6]) : 0,
                    Bias        = x[7] != "" ? double.Parse(x[7]) : 0,
                    DiameterOne = x[8] != "" ? double.Parse(x[8]) : 0,
                    DiameterTwo = x[9] != "" ? double.Parse(x[9]) : 0,
                    Species     = x[10]
                }).ToList();

                if (CurrentContext.MeasureValues.FirstOrDefault(x => x.Name == nameMode) == null || dataList.Count == 0)
                {
                    MessageBox.Show("Ошибка. Не удалось открыть файл");
                    return;
                }

                DeleteOldColumns();

                _selectMeasure          = CurrentContext.MeasureValues.FirstOrDefault(x => x.Name == nameMode);
                ViewModel.SelectMeasure = _selectMeasure;

                //AddNewColumns();

                CurrentContext.DataList = dataList;
                ViewModel.Measurements  = new ObservableCollection <DataModel>(dataList);
                CurrentContext.GlobalId = CurrentContext.DataList.Max(x => x.Id);
            }
        }
        private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (DataGrid != null)
            {
                if (DataGrid.Items.Count != 0)
                {
                    SaveOnClick(true);
                }

                DeleteOldColumns();

                ViewModel.SelectMeasure = (sender as ComboBox)?.SelectedItem as MeasureValueModel;
                _selectMeasure          = ViewModel.SelectMeasure;

                AddNewColumns();
            }
        }
Exemplo n.º 6
0
        public void createMeasureValues(MeasureValueModel model)
        {
            Geographical_NeedsEntities context = new Geographical_NeedsEntities();

            var breakdowns = context.Measures.Single(x => x.MeasureName.Equals(model.MeasureName)).MeasureBreakdowns;

            foreach (var breakdown in breakdowns)
            {
                var combinations = breakdown.DimensionSet.DimensionSetCombinations;

                foreach (var combination in combinations)
                {
                    var values = combination.DimensionSetCombinationMembers.Select(x => x.DimensionValue);

                    List <String> whereClauses = new List <string>();

                    foreach (var value in values)
                    {
                        var detail = model.MeasureValueDetails.Single(x => x.DimValueID.Equals(value.DimensionValueID));
                        whereClauses.Add(String.Format("[{0}] = '{1}'", detail.DimColumnInStaging, detail.DimValueInStaging.Replace("'", "''")));
                    }
                    String whereClause = String.Format("Where {0}", String.Join(" AND ", whereClauses));

                    InsertMeasureValuesTemplate template = new InsertMeasureValuesTemplate();

                    template.DimensionSetCombinationID = combination.DimensionSetCombinationID;
                    template.GeographyTypeID           = model.GeographyTypeID;
                    template.MeasureBreakdownID        = breakdown.MeasureBreakdownID;
                    template.MeasureColumnName         = model.MeasureStagingColumnName;
                    template.StagingGeographyColumn    = model.StagingGeographyColumn;
                    template.StagingTableName          = model.StagingTableName;
                    template.UseMeasureColumn          = model.UseMeasureColumn;
                    template.WhereClause = whereClause;

                    String output = template.TransformText();

                    context.Database.ExecuteSqlCommand(output);
                }
            }

            context.Dispose();
        }