public IHttpActionResult Get(string apiKey, int id) { Check.Require(apiKey == FirmaWebApiConfiguration.PsInfoApiKey, "Unrecognized api key!"); var performanceMeasure = _databaseEntities.PerformanceMeasures.SingleOrDefault(x => x.PerformanceMeasureID == id); if (performanceMeasure == null) { var message = $"Performance Measure with ID = {id} not found"; return(NotFound()); } var result = new PerformanceMeasureDto(performanceMeasure); return(Ok(result)); }
public IHttpActionResult UpdatePerformanceMeasureBasics(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 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}")); } performanceMeasure.PerformanceMeasureDisplayName = performanceMeasureDto.PerformanceMeasureDisplayName; performanceMeasure.PerformanceMeasureDefinition = performanceMeasureDto.PerformanceMeasureDefinition; performanceMeasure.MeasurementUnitTypeID = measurementUnitType.MeasurementUnitTypeID; performanceMeasure.PerformanceMeasureTypeID = performanceMeasureType.PerformanceMeasureTypeID; performanceMeasure.PerformanceMeasureDataSourceTypeID = performanceMeasureDataSourceType.PerformanceMeasureDataSourceTypeID; performanceMeasure.IsSummable = performanceMeasureDto.IsSummable; _databaseEntities.SaveChangesWithNoAuditing(Tenant.ActionAgendaForPugetSound.TenantID); var performanceMeasureReloaded = new PerformanceMeasureDto(performanceMeasure); return(Ok(performanceMeasureReloaded)); }
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)); }
public IHttpActionResult UpdatePerformanceMeasure(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 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}")); } performanceMeasure.PerformanceMeasureDisplayName = performanceMeasureDto.PerformanceMeasureDisplayName; performanceMeasure.CriticalDefinitions = performanceMeasureDto.CriticalDefinitions; performanceMeasure.PerformanceMeasureDefinition = performanceMeasureDto.PerformanceMeasureDefinition; performanceMeasure.ProjectReporting = performanceMeasureDto.ProjectReporting; performanceMeasure.MeasurementUnitTypeID = measurementUnitType.MeasurementUnitTypeID; performanceMeasure.PerformanceMeasureTypeID = performanceMeasureType.PerformanceMeasureTypeID; performanceMeasure.PerformanceMeasureDataSourceTypeID = performanceMeasureDataSourceType.PerformanceMeasureDataSourceTypeID; performanceMeasure.IsSummable = performanceMeasureDto.IsSummable; performanceMeasure.Importance = performanceMeasureDto.Importance; 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))); } // Remove all of these, too hard to merge nicely _databaseEntities.AllFileResourceDatas.RemoveRange(performanceMeasure.PerformanceMeasureImages.Select(x => x.FileResourceInfo.FileResourceData)); _databaseEntities.AllFileResourceInfos.RemoveRange(performanceMeasure.PerformanceMeasureImages.Select(x => x.FileResourceInfo)); _databaseEntities.AllPerformanceMeasureImages.RemoveRange(performanceMeasure.PerformanceMeasureImages); var peopleDictionary = _databaseEntities.People.ToDictionary(x => x.Email); var performanceMeasureImagesToUpdate = 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(); performanceMeasure.AdditionalInformation = performanceMeasureDto.AdditionalInformation; _databaseEntities.SaveChangesWithNoAuditing(Tenant.ActionAgendaForPugetSound.TenantID); var performanceMeasureReloaded = new PerformanceMeasureDto(performanceMeasure); return(Ok(performanceMeasureReloaded)); }