public static PerformanceMeasureSubcategory Create(PerformanceMeasure performanceMeasure, string performanceMeasureSubcategoryName) { var performanceMeasureSubcategory = new PerformanceMeasureSubcategory(performanceMeasure, performanceMeasureSubcategoryName); performanceMeasure.PerformanceMeasureSubcategories.Add(performanceMeasureSubcategory); return(performanceMeasureSubcategory); }
public void UpdateModel(ProjectFirmaModels.Models.PerformanceMeasure performanceMeasure) { var performanceMeasureSubcategoriesFromDatabase = HttpRequestStorage.DatabaseEntities.AllPerformanceMeasureSubcategories.Local; var performanceMeasureSubcategoryOptionsFromDatabase = HttpRequestStorage.DatabaseEntities.AllPerformanceMeasureSubcategoryOptions.Local; var performanceMeasureSubcategoriesToUpdate = PerformanceMeasureSubcategorySimples.Select(x => { var performanceMeasureSubcategory = new PerformanceMeasureSubcategory(new ProjectFirmaModels.Models.PerformanceMeasure(String.Empty, default(int), default(int), false, PerformanceMeasureDataSourceType.Project.PerformanceMeasureDataSourceTypeID, false, false), x.PerformanceMeasureSubcategoryDisplayName); performanceMeasureSubcategory.PerformanceMeasure = performanceMeasure; performanceMeasureSubcategory.PerformanceMeasureSubcategoryID = x.PerformanceMeasureSubcategoryID; performanceMeasureSubcategory.PerformanceMeasureSubcategoryOptions = x.PerformanceMeasureSubcategoryOptions.OrderBy(y => y.SortOrder).Select( (y, index) => new PerformanceMeasureSubcategoryOption( new PerformanceMeasureSubcategory(new ProjectFirmaModels.Models.PerformanceMeasure(String.Empty, default(int), default(int), false, PerformanceMeasureDataSourceType.Project.PerformanceMeasureDataSourceTypeID, false, false), String.Empty), y.PerformanceMeasureSubcategoryOptionName, false) { PerformanceMeasureSubcategory = performanceMeasure.PerformanceMeasureSubcategories.SingleOrDefault(z => z.PerformanceMeasureSubcategoryID == x.PerformanceMeasureSubcategoryID), PerformanceMeasureSubcategoryOptionID = y.PerformanceMeasureSubcategoryOptionID, SortOrder = index + 1, ShowOnFactSheet = y.ShowOnFactSheet }).ToList(); var chartConfigurationJson = JObject.FromObject(performanceMeasure.GetDefaultPerformanceMeasureChartConfigurationJson()).ToString(); performanceMeasureSubcategory.ChartConfigurationJson = chartConfigurationJson; performanceMeasureSubcategory.GoogleChartTypeID = performanceMeasure.HasTargets() ? GoogleChartType.ComboChart.GoogleChartTypeID : GoogleChartType.ColumnChart.GoogleChartTypeID; if (performanceMeasure.CanBeChartedCumulatively) { var cumulativeChartConfigurationJson = JObject.FromObject(performanceMeasure.GetDefaultPerformanceMeasureChartConfigurationJson()).ToString(); performanceMeasureSubcategory.CumulativeChartConfigurationJson = cumulativeChartConfigurationJson; performanceMeasureSubcategory.CumulativeGoogleChartTypeID = performanceMeasure.HasTargets() ? GoogleChartType.ComboChart.GoogleChartTypeID : GoogleChartType.ColumnChart.GoogleChartTypeID; } return(performanceMeasureSubcategory); }).ToList(); var performanceMeasureSubcategoryOptionsToUpdate = performanceMeasureSubcategoriesToUpdate.SelectMany(x => x.PerformanceMeasureSubcategoryOptions).ToList(); performanceMeasure.PerformanceMeasureSubcategories.SelectMany(x => x.PerformanceMeasureSubcategoryOptions).ToList().Merge( performanceMeasureSubcategoryOptionsToUpdate, performanceMeasureSubcategoryOptionsFromDatabase, (x, y) => x.PerformanceMeasureSubcategoryOptionID == y.PerformanceMeasureSubcategoryOptionID, (x, y) => { x.PerformanceMeasureSubcategoryOptionName = y.PerformanceMeasureSubcategoryOptionName; x.SortOrder = y.SortOrder; x.ShowOnFactSheet = y.ShowOnFactSheet; }, HttpRequestStorage.DatabaseEntities); performanceMeasure.PerformanceMeasureSubcategories.Merge(performanceMeasureSubcategoriesToUpdate, performanceMeasureSubcategoriesFromDatabase, (x, y) => x.PerformanceMeasureSubcategoryID == y.PerformanceMeasureSubcategoryID, (x, y) => { x.PerformanceMeasureSubcategoryDisplayName = y.PerformanceMeasureSubcategoryDisplayName; }, HttpRequestStorage.DatabaseEntities); }
public PerformanceMeasureSubcategoryDto(PerformanceMeasureSubcategory performanceMeasureSubcategory) { PerformanceMeasureSubcategoryID = performanceMeasureSubcategory.PerformanceMeasureSubcategoryID; PerformanceMeasureID = performanceMeasureSubcategory.PerformanceMeasureID; PerformanceMeasureSubcategoryName = performanceMeasureSubcategory.PerformanceMeasureSubcategoryDisplayName; ChartConfigurationJson = performanceMeasureSubcategory.ChartConfigurationJson; GoogleChartTypeName = performanceMeasureSubcategory.GoogleChartType.GoogleChartTypeDisplayName; PerformanceMeasureSubcategoryOptions = performanceMeasureSubcategory.PerformanceMeasureSubcategoryOptions .Select(x => new PerformanceMeasureSubcategoryOptionDto(x)).ToList(); }
public static PerformanceMeasureActualSubcategoryOption Create(int performanceMeasureActualSubcategoryOptionID, PerformanceMeasureActual performanceMeasureActual, PerformanceMeasureSubcategory performanceMeasureSubcategory, PerformanceMeasureSubcategoryOption performanceMeasureSubcategoryOption) { var performanceMeasureActualSubcategoryOption = new PerformanceMeasureActualSubcategoryOption(performanceMeasureActual, performanceMeasureSubcategoryOption, performanceMeasureActual.PerformanceMeasure, performanceMeasureSubcategory); performanceMeasureActualSubcategoryOption.PerformanceMeasureActualSubcategoryOptionID = performanceMeasureActualSubcategoryOptionID; return(performanceMeasureActualSubcategoryOption); }
public static PerformanceMeasureExpectedSubcategoryOption Create(int performanceMeasureExpectedSubcategoryOptionID, PerformanceMeasureExpected performanceMeasureExpected, PerformanceMeasureSubcategory performanceMeasureSubcategory, PerformanceMeasureSubcategoryOption performanceMeasureSubcategoryOption) { var performanceMeasureExpectedSubcategoryOption = new PerformanceMeasureExpectedSubcategoryOption(performanceMeasureExpected, performanceMeasureSubcategoryOption, performanceMeasureExpected.PerformanceMeasure, performanceMeasureSubcategory); performanceMeasureExpectedSubcategoryOption.PerformanceMeasureExpectedSubcategoryOptionID = performanceMeasureExpectedSubcategoryOptionID; return(performanceMeasureExpectedSubcategoryOption); }
public ActionResult New(EditViewModel viewModel) { if (!ModelState.IsValid) { return(ViewEdit(viewModel)); } var performanceMeasure = new PerformanceMeasure(default(string), default(int), default(int), false, PerformanceMeasureDataSourceType.Project.PerformanceMeasureDataSourceTypeID, false); viewModel.UpdateModel(performanceMeasure, CurrentFirmaSession); var defaultSubcategory = new PerformanceMeasureSubcategory(performanceMeasure, "Default") { GoogleChartTypeID = GoogleChartType.ColumnChart.GoogleChartTypeID }; var defaultSubcategoryChartConfigurationJson = performanceMeasure.GetDefaultPerformanceMeasureChartConfigurationJson(); defaultSubcategory.ChartConfigurationJson = JObject.FromObject(defaultSubcategoryChartConfigurationJson).ToString(); if (performanceMeasure.CanBeChartedCumulatively) { var defaultPerformanceMeasureChartConfigurationJson = performanceMeasure.GetDefaultPerformanceMeasureChartConfigurationJson(); defaultSubcategory.CumulativeChartConfigurationJson = JObject.FromObject(defaultPerformanceMeasureChartConfigurationJson).ToString(); defaultSubcategory.CumulativeGoogleChartTypeID = performanceMeasure.HasTargets() ? GoogleChartType.ComboChart.GoogleChartTypeID : GoogleChartType.ColumnChart.GoogleChartTypeID; } new PerformanceMeasureSubcategoryOption(defaultSubcategory, "Default", false); HttpRequestStorage.DatabaseEntities.AllPerformanceMeasures.Add(performanceMeasure); HttpRequestStorage.DatabaseEntities.SaveChanges(); SetMessageForDisplay( $"New {MultiTenantHelpers.GetPerformanceMeasureName()} '{performanceMeasure.GetDisplayNameAsUrl()}' successfully created!"); return(new ModalDialogFormJsonResult()); }
public static PerformanceMeasureSubcategoryOption Create(DatabaseEntities dbContext, int performanceMeasureSubcategoryOptionID, PerformanceMeasureSubcategory performanceMeasureSubcategory, string performanceMeasureSubcategoryOptionName) { var performanceMeasureSubcategoryOption = Create(performanceMeasureSubcategoryOptionID, performanceMeasureSubcategory, performanceMeasureSubcategoryOptionName); dbContext.PerformanceMeasureSubcategoryOptions.Add(performanceMeasureSubcategoryOption); return(performanceMeasureSubcategoryOption); }
public static PerformanceMeasureSubcategoryOption Create(int performanceMeasureSubcategoryOptionID, PerformanceMeasureSubcategory performanceMeasureSubcategory, string performanceMeasureSubcategoryOptionName) { var performanceMeasureSubcategoryOption = new PerformanceMeasureSubcategoryOption(performanceMeasureSubcategory, performanceMeasureSubcategoryOptionName, false); performanceMeasureSubcategoryOption.PerformanceMeasureSubcategoryOptionID = performanceMeasureSubcategoryOptionID; return(performanceMeasureSubcategoryOption); }
public IHttpActionResult UpdatePerformanceMeasureSubcategories(string apiKey, [FromBody] PerformanceMeasureDto performanceMeasureDto) { Check.Require(apiKey == FirmaWebApiConfiguration.PsInfoApiKey, "Unrecognized api key!"); var performanceMeasure = _databaseEntities.PerformanceMeasures.SingleOrDefault(x => x.PerformanceMeasureID == performanceMeasureDto.PerformanceMeasureID); if (performanceMeasure == null) { var message = $"Performance Measure with ID = {performanceMeasureDto.PerformanceMeasureID} not found"; return(NotFound()); } var performanceMeasureSubcategoryDtos = performanceMeasureDto.PerformanceMeasureSubcategories; var performanceMeasureSubcategoryGoogleChartTypes = performanceMeasureSubcategoryDtos.ToDictionary(x => new { x.PerformanceMeasureSubcategoryName, x.GoogleChartTypeName }, x => MapGoogleChartTypeNameToGoogleChartType(x.GoogleChartTypeName)); if (performanceMeasureSubcategoryGoogleChartTypes.Values.Any(x => x == null)) { var errors = performanceMeasureSubcategoryGoogleChartTypes.Where(x => x.Value == null).Select(x => $"Invalid Google Chart Type '{x.Key.GoogleChartTypeName}' for Subcategory '{x.Key.PerformanceMeasureSubcategoryName}'").ToList(); return(BadRequest(string.Join("\r\n", errors))); } var performanceMeasureSubcategoriesFromDatabase = _databaseEntities.AllPerformanceMeasureSubcategories.Local; var performanceMeasureSubcategoryOptionsFromDatabase = _databaseEntities.AllPerformanceMeasureSubcategoryOptions.Local; var performanceMeasureSubcategoriesToUpdate = performanceMeasureSubcategoryDtos.Select(x => { var performanceMeasureSubcategory = new PerformanceMeasureSubcategory(performanceMeasure.PerformanceMeasureID, x.PerformanceMeasureSubcategoryName); performanceMeasureSubcategory.ChartConfigurationJson = x.ChartConfigurationJson; performanceMeasureSubcategory.GoogleChartTypeID = performanceMeasureSubcategoryGoogleChartTypes.Single(y => y.Key.PerformanceMeasureSubcategoryName == x.PerformanceMeasureSubcategoryName).Value .GoogleChartTypeID; return(performanceMeasureSubcategory); }).ToList(); performanceMeasure.PerformanceMeasureSubcategories.Merge(performanceMeasureSubcategoriesToUpdate, performanceMeasureSubcategoriesFromDatabase, (x, y) => x.PerformanceMeasureSubcategoryDisplayName == y.PerformanceMeasureSubcategoryDisplayName, (x, y) => { x.ChartConfigurationJson = y.ChartConfigurationJson; x.GoogleChartTypeID = y.GoogleChartTypeID; }, _databaseEntities); List <PerformanceMeasureSubcategoryOption> performanceMeasureSubcategoryOptionsToUpdate = new List <PerformanceMeasureSubcategoryOption>(); performanceMeasureSubcategoryDtos.ForEach(x => { var performanceMeasureSubcategory = performanceMeasure.PerformanceMeasureSubcategories.Single(y => y.PerformanceMeasureSubcategoryDisplayName == x.PerformanceMeasureSubcategoryName); performanceMeasureSubcategoryOptionsToUpdate.AddRange(x.PerformanceMeasureSubcategoryOptions.OrderBy(y => y.SortOrder).Select( (y, index) => new PerformanceMeasureSubcategoryOption(performanceMeasureSubcategory.PerformanceMeasureSubcategoryID, y.PerformanceMeasureSubcategoryOptionName, false) { SortOrder = y.SortOrder, PerformanceMeasureSubcategory = performanceMeasureSubcategory }).ToList()); }); performanceMeasure.PerformanceMeasureSubcategories.SelectMany(x => x.PerformanceMeasureSubcategoryOptions).ToList().Merge( performanceMeasureSubcategoryOptionsToUpdate, performanceMeasureSubcategoryOptionsFromDatabase, (x, y) => x.PerformanceMeasureSubcategoryOptionName == y.PerformanceMeasureSubcategoryOptionName && x.PerformanceMeasureSubcategory.PerformanceMeasureSubcategoryDisplayName == y.PerformanceMeasureSubcategory.PerformanceMeasureSubcategoryDisplayName, (x, y) => { x.SortOrder = y.SortOrder; }, _databaseEntities); _databaseEntities.SaveChangesWithNoAuditing(Tenant.ActionAgendaForPugetSound.TenantID); var performanceMeasureReloaded = new PerformanceMeasureDto(performanceMeasure); return(Ok(performanceMeasureReloaded)); }
public IHttpActionResult PostPerformanceMeasure(string apiKey, [FromBody] PerformanceMeasureDto performanceMeasureDto) { Check.Require(apiKey == FirmaWebApiConfiguration.PsInfoApiKey, "Unrecognized api key!"); var performanceMeasureType = MapPerformanceMeasureTypeNameToPerformanceMeasureType(performanceMeasureDto.PerformanceMeasureTypeName); var performanceMeasureDataSourceType = MapPerformanceMeasureDataSourceTypeNameToPerformanceMeasureDataSourceType(performanceMeasureDto.PerformanceMeasureDataSourceTypeName); var measurementUnitType = MapMeasurementUnitTypeNameToMeasurementUnitType(performanceMeasureDto.MeasurementUnitTypeName); if (performanceMeasureType == null) { return(BadRequest($"Invalid Performance Measure Type: {performanceMeasureDto.PerformanceMeasureTypeName}")); } if (performanceMeasureDataSourceType == null) { return(BadRequest($"Invalid Performance Measure Data Source Type: {performanceMeasureDto.PerformanceMeasureDataSourceTypeName}")); } if (measurementUnitType == null) { return(BadRequest($"Invalid Measurement Unit: {performanceMeasureDto.MeasurementUnitTypeName}")); } var performanceMeasure = new PerformanceMeasure(performanceMeasureDto.PerformanceMeasureDisplayName, measurementUnitType.MeasurementUnitTypeID, performanceMeasureType.PerformanceMeasureTypeID, performanceMeasureDto.IsSummable, performanceMeasureDataSourceType.PerformanceMeasureDataSourceTypeID, performanceMeasureDto.CanBeChartedCumulatively, false); performanceMeasure.CriticalDefinitions = performanceMeasureDto.CriticalDefinitions; performanceMeasure.PerformanceMeasureDefinition = performanceMeasureDto.PerformanceMeasureDefinition; performanceMeasure.ProjectReporting = performanceMeasureDto.ProjectReporting; performanceMeasure.Importance = performanceMeasureDto.Importance; performanceMeasure.AdditionalInformation = performanceMeasureDto.AdditionalInformation; // create file resources for images in the Importance rich text var fileResourceDtos = performanceMeasureDto.FileResources; var fileResourceMimeTypes = fileResourceDtos.ToDictionary(x => new { x.FileResourceGUID, x.FileResourceMimeTypeName }, x => MapFileResourceMimeTypeNameToFileResourceMimeType(x.FileResourceMimeTypeName)); if (fileResourceMimeTypes.Values.Any(x => x == null)) { var errors = fileResourceMimeTypes.Where(x => x.Value == null).Select(x => $"Invalid File Resource Mime Type '{x.Key.FileResourceMimeTypeName}' for '{x.Key.FileResourceGUID}'").ToList(); return(BadRequest(string.Join("\r\n", errors))); } var peopleDictionary = _databaseEntities.People.ToDictionary(x => x.Email); var performanceMeasureImages = fileResourceDtos.Select(x => { var fileResourceMimeTypeID = fileResourceMimeTypes.Single(y => y.Key.FileResourceGUID == x.FileResourceGUID).Value.FileResourceMimeTypeID; var personID = peopleDictionary.ContainsKey(x.Email) ? peopleDictionary[x.Email].PersonID : 5278; var fileResourceInfo = new FileResourceInfo(fileResourceMimeTypeID, x.OriginalBaseFilename, x.OriginalFileExtension, x.FileResourceGUID, personID, x.CreateDate); fileResourceInfo.FileResourceDatas.Add(new FileResourceData(fileResourceInfo.FileResourceInfoID, x.FileResourceData)); var performanceMeasureImage = new PerformanceMeasureImage(performanceMeasure, fileResourceInfo); return(performanceMeasureImage); }).ToList(); var tenantID = Tenant.ActionAgendaForPugetSound.TenantID; foreach (var performanceMeasureSubcategoryDto in performanceMeasureDto.PerformanceMeasureSubcategories) { var googleChartType = MapGoogleChartTypeNameToGoogleChartType(performanceMeasureSubcategoryDto.GoogleChartTypeName); if (googleChartType == null) { return(BadRequest($"Invalid Google Chart Type '{performanceMeasureSubcategoryDto.GoogleChartTypeName}' for Subcategory '{performanceMeasureSubcategoryDto.PerformanceMeasureSubcategoryName}'")); } var performanceMeasureSubcategory = new PerformanceMeasureSubcategory(performanceMeasure, performanceMeasureSubcategoryDto.PerformanceMeasureSubcategoryName) { ChartConfigurationJson = performanceMeasureSubcategoryDto.ChartConfigurationJson, GoogleChartTypeID = googleChartType.GoogleChartTypeID, TenantID = tenantID }; foreach (var performanceMeasureSubcategoryOptionDto in performanceMeasureSubcategoryDto.PerformanceMeasureSubcategoryOptions) { var performanceMeasureSubcategoryOption = new PerformanceMeasureSubcategoryOption(performanceMeasureSubcategory, performanceMeasureSubcategoryOptionDto.PerformanceMeasureSubcategoryOptionName, false) { TenantID = tenantID }; } } _databaseEntities.AllPerformanceMeasures.Add(performanceMeasure); _databaseEntities.SaveChangesWithNoAuditing(tenantID); var performanceMeasureReloaded = new PerformanceMeasureDto(performanceMeasure); return(Ok(performanceMeasureReloaded)); }