コード例 #1
0
ファイル: CustomerController.cs プロジェクト: raboud/Measures
        // GET: /Customer/Edit/5
        public ActionResult CreateMeasure(int?id, string returnUrl)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CreateMeasureModel item = new CreateMeasureModel();

            item.customer = db.Customers.Find(id);
            if (item.customer == null)
            {
                return(HttpNotFound());
            }
            Measure m = new Measure()
            {
                EnterredById = User.Identity.GetUserId(),
                Enterred     = DateTime.Now,
                StoreId      = db.AspNetUsers.Find(User.Identity.GetUserId()).Stores.First().Id,
                CustomerId   = item.customer.Id
            };

            db.Measures.Add(m);
            int i = db.SaveChanges();

            return(RedirectToAction("Details", "Measure", new { id = m.Id }));
        }
コード例 #2
0
        /// <summary>
        /// The controller method to navigate to the page used to
        /// initiate the creation of a Measure. This is the first page in a
        /// two page process. Initially all that is needed is a Staging
        /// Dataset ID to use to populate the model.
        ///
        /// Accessed from /Dataset/CreateMeasure
        /// </summary>
        /// <param name="stagingDatasetID"></param>
        /// <returns></returns>
        public ActionResult CreateMeasure(int stagingDatasetID)
        {
            DatasetDataAccess dataAccess = new DatasetDataAccess();

            CreateMeasureModel model = dataAccess.populateCreateMeasureModel(stagingDatasetID);

            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));
        }
コード例 #3
0
        /// <summary>
        /// Method to create the measure in the database. This just creates the basic Measure information and
        /// does not add values under the Measure. This process is based off creating SQL dynamically based on
        /// a template file.
        /// </summary>
        /// <param name="model">The populated model containing the data needed to create the Measure</param>
        public void createMeasure(CreateMeasureModel model)
        {
            Geographical_NeedsEntities context = new Geographical_NeedsEntities();

            Measure newMeasure = context.Measures.Create();

            newMeasure.MeasureName = model.MeasureName;

            createDimSets(model.selectedDimensions);

            IEnumerable <DimensionSet> dimSets             = context.Dimensions.Where(x => model.selectedDimensions.Contains(x.DimensionID)).SelectMany(x => x.DimensionSetMembers).Select(x => x.DimensionSet).ToList();
            IEnumerable <DimensionSet> dimSetsForExclusion = context.Dimensions.Where(x => !model.selectedDimensions.Contains(x.DimensionID)).SelectMany(x => x.DimensionSetMembers).Select(x => x.DimensionSet).ToList();

            IEnumerable <DimensionSet> dimSetsFinal = dimSets.Where(x => !dimSetsForExclusion.Select(y => y.DimensionSetID).Contains(x.DimensionSetID)).Distinct();

            foreach (DimensionSet set in dimSetsFinal)
            {
                MeasureBreakdown newBreakdown = context.MeasureBreakdowns.Create();
                newBreakdown.MeasureBreakdownName = String.Format("{0} {1}", model.MeasureName, set.DimensionSetName);
                newBreakdown.DimensionSetID       = set.DimensionSetID;
                newMeasure.MeasureBreakdowns.Add(newBreakdown);
            }

            context.Measures.Add(newMeasure);

            context.SaveChanges();

            context.Dispose();
        }
コード例 #4
0
        /// <summary>
        /// Validate that the CreateMeasureModel is valid prior to
        /// submission to the database
        /// </summary>
        /// <param name="model">The model to be validated</param>
        /// <returns>Boolean indicating valid or not</returns>
        public Boolean isCreateMeasureModelValid(CreateMeasureModel model)
        {
            Geographical_NeedsEntities context = new Geographical_NeedsEntities();

            int count = context.Measures.Where(x => x.MeasureName.Equals(model.MeasureName)).Count();

            return(count == 0);
        }
コード例 #5
0
        ///MEASURES

        /// <summary>
        /// Method to create and populate a CreateMeasureModel ready for the View to use
        /// </summary>
        /// <param name="datasetID">The ID of the Staging Table this Measure is based off</param>
        /// <returns></returns>
        public CreateMeasureModel populateCreateMeasureModel(int datasetID)
        {
            CreateMeasureModel         model   = new CreateMeasureModel();
            Geographical_NeedsEntities context = new Geographical_NeedsEntities();

            model.StagingDatasetID = datasetID;

            model.StagingTableName = context.StagingDatasets.Single(x => x.StagingDatasetID.Equals(datasetID)).DatasetName;

            model.StagingColumnsForMeasure = context.StagingDatasets.Single(x => x.StagingDatasetID.Equals(datasetID)).StagingColumns.Select(x => new SelectListItem()
            {
                Text  = x.ColumnName,
                Value = x.StagingColumnID.ToString()
            });

            model.StagingColumnsForGeography = context.StagingDatasets.Single(x => x.StagingDatasetID.Equals(datasetID)).StagingColumns.Select(x => new SelectListItem()
            {
                Text  = x.ColumnName,
                Value = x.StagingColumnID.ToString()
            });

            model.GeographyTypes = context.GeographyTypes.Select(x => new SelectListItem()
            {
                Text  = x.GeographyType1,
                Value = x.GeographyTypeID.ToString()
            });

            model.DimensionsForMeasureBreakdown = context.Dimensions.Select(x => new SelectListItem
            {
                Text  = x.DimensionName,
                Value = x.DimensionID.ToString()
            });

            List <CreateMeasureDetailModel> modelDetails = new List <CreateMeasureDetailModel>();

            foreach (StagingColumn column in context.StagingDatasets.Single(x => x.StagingDatasetID.Equals(datasetID)).StagingColumns)
            {
                if (column.ColumnName != "UploadRef")
                {
                    CreateMeasureDetailModel detail = new CreateMeasureDetailModel();

                    detail.StagingColumnID   = column.StagingColumnID;
                    detail.StagingColumnName = column.ColumnName;

                    detail.AvailableDimensions = context.Dimensions.ToList().Select(x => new SelectListItem()
                    {
                        Text = x.DimensionName, Value = x.DimensionID.ToString()
                    });

                    modelDetails.Add(detail);
                }
            }

            model.MeasureDetails = modelDetails;

            return(model);
        }
コード例 #6
0
        public ActionResult CreateMeasure(CreateMeasureModel model)
        {
            DatasetDataAccess dataAccess = new DatasetDataAccess();

            if (ModelState.IsValid)
            {
                if (!dataAccess.isCreateMeasureModelValid(model))
                {
                    ModelState.AddModelError("", "An error occured when creating the Measure. Please ensure that the Measure name is unique and that Dimensions have been specified");

                    model = dataAccess.populateCreateMeasureModel(model.StagingDatasetID);

                    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));
                }
                dataAccess.createMeasure(model);

                IEnumerable <Tuple <int, int> > dimensionMappings = model.MeasureDetails.Where(x => x.DimensionValueID.HasValue).Select(x => new Tuple <int, int>(x.StagingColumnID, x.DimensionValueID.Value));

                TempData["DimensionMappings"] = dimensionMappings;

                return(RedirectToAction("AddMeasureValues", new
                {
                    stagingTableName = model.StagingTableName,
                    measureName = model.MeasureName,
                    measureColumnStagingID = model.MeasureColumnID,
                    geographyColumnID = model.GeographyColumnID,
                    geographyTypeID = model.GeographyTypeID
                }));
            }

            model = dataAccess.populateCreateMeasureModel(model.StagingDatasetID);

            return(View(model));
        }