Exemple #1
0
            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();
 }
Exemple #4
0
            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());
        }
Exemple #7
0
            public static PerformanceMeasureSubcategoryOption Create(DatabaseEntities dbContext, int performanceMeasureSubcategoryOptionID, PerformanceMeasureSubcategory performanceMeasureSubcategory, string performanceMeasureSubcategoryOptionName)
            {
                var performanceMeasureSubcategoryOption = Create(performanceMeasureSubcategoryOptionID, performanceMeasureSubcategory, performanceMeasureSubcategoryOptionName);

                dbContext.PerformanceMeasureSubcategoryOptions.Add(performanceMeasureSubcategoryOption);
                return(performanceMeasureSubcategoryOption);
            }
Exemple #8
0
            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));
        }