// 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 })); }
/// <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)); }
/// <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(); }
/// <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); }
///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); }
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)); }