示例#1
0
        public void UpdateModel(Models.TreatmentBMPType treatmentBMPType,
                                List <TreatmentBMPTypeAssessmentObservationType> currentTreatmentBMPTypeObservationTypes,
                                IList <TreatmentBMPTypeAssessmentObservationType> allTreatmentBMPTypeAssessmentObservationTypes,
                                List <TreatmentBMPTypeCustomAttributeType> currentTreatmentBMPTypeCustomAttributeTypes,
                                ObservableCollection <TreatmentBMPTypeCustomAttributeType> allTreatmentBMPTypeCustomAttributeTypes)
        {
            treatmentBMPType.TreatmentBMPTypeName        = TreatmentBMPTypeName;
            treatmentBMPType.TreatmentBMPTypeDescription = TreatmentBMPTypeDescription;

            var updatedTreatmentBMPTypeObservationTypes = new List <TreatmentBMPTypeAssessmentObservationType>();

            if (TreatmentBMPTypeObservationTypeSimples != null)
            {
                // Completely rebuild the list
                updatedTreatmentBMPTypeObservationTypes = TreatmentBMPTypeObservationTypeSimples.Select(x =>
                {
                    var overrideWeight = x.OverrideAssessmentScoreIfFailing != null && x.OverrideAssessmentScoreIfFailing.Value;

                    return(new TreatmentBMPTypeAssessmentObservationType(ModelObjectHelpers.NotYetAssignedID,
                                                                         treatmentBMPType.TreatmentBMPTypeID,
                                                                         x.TreatmentBMPAssessmentObservationTypeID,
                                                                         overrideWeight ? null : x.AssessmentScoreWeight / 100,
                                                                         x.DefaultThresholdValue,
                                                                         x.DefaultBenchmarkValue,
                                                                         x.OverrideAssessmentScoreIfFailing ?? false, null));
                }).ToList();
            }

            currentTreatmentBMPTypeObservationTypes.Merge(updatedTreatmentBMPTypeObservationTypes,
                                                          allTreatmentBMPTypeAssessmentObservationTypes,
                                                          (x, y) => x.TreatmentBMPTypeID == y.TreatmentBMPTypeID && x.TreatmentBMPAssessmentObservationTypeID == y.TreatmentBMPAssessmentObservationTypeID,
                                                          (x, y) =>
            {
                x.AssessmentScoreWeight            = y.AssessmentScoreWeight;
                x.DefaultThresholdValue            = y.DefaultThresholdValue;
                x.DefaultBenchmarkValue            = y.DefaultBenchmarkValue;
                x.OverrideAssessmentScoreIfFailing = y.OverrideAssessmentScoreIfFailing;
            });

            var updatedTreatmentBMPTypeCustomAttributeTypes = new List <TreatmentBMPTypeCustomAttributeType>();

            if (TreatmentBMPTypeAttributeTypeSimples != null)
            {
                // Completely rebuild the list
                updatedTreatmentBMPTypeCustomAttributeTypes = TreatmentBMPTypeAttributeTypeSimples.Select(x => new TreatmentBMPTypeCustomAttributeType(ModelObjectHelpers.NotYetAssignedID, treatmentBMPType.TreatmentBMPTypeID, x.CustomAttributeTypeID, null)).ToList();
            }

            currentTreatmentBMPTypeCustomAttributeTypes.Merge(updatedTreatmentBMPTypeCustomAttributeTypes, allTreatmentBMPTypeCustomAttributeTypes, (x, y) => x.TreatmentBMPTypeID == y.TreatmentBMPTypeID && x.CustomAttributeTypeID == y.CustomAttributeTypeID);
        }
示例#2
0
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            var validationResults = new List <ValidationResult>();

            var treatmentBMPTypesWithSameName = HttpRequestStorage.DatabaseEntities.TreatmentBMPTypes.Where(x => x.TreatmentBMPTypeName == TreatmentBMPTypeName);

            if (treatmentBMPTypesWithSameName.Any(x => x.TreatmentBMPTypeID != TreatmentBMPTypeID))
            {
                validationResults.Add(new SitkaValidationResult <EditViewModel, string>("A Treatment BMP Type with this name already exists.", x => x.TreatmentBMPTypeName));
            }

            if (TreatmentBMPTypeObservationTypeSimples == null || !TreatmentBMPTypeObservationTypeSimples.Any())
            {
                validationResults.Add(new ValidationResult("A Treatment BMP Type must have at least one Observation Type."));
                return(validationResults);
            }

            var hasBenchmarkAndThresholdsSimples = TreatmentBMPTypeObservationTypeSimples.Where(y => HttpRequestStorage.DatabaseEntities.TreatmentBMPAssessmentObservationTypes.ToList().Where(x => x.GetHasBenchmarkAndThreshold()).ToList().Select(x => x.TreatmentBMPAssessmentObservationTypeID).Contains(y.TreatmentBMPAssessmentObservationTypeID)).ToList();

            var noBenchmarkAndThresholdsSimples = TreatmentBMPTypeObservationTypeSimples.Where(y => HttpRequestStorage.DatabaseEntities.TreatmentBMPAssessmentObservationTypes.ToList().Where(x => !x.GetHasBenchmarkAndThreshold()).Select(x => x.TreatmentBMPAssessmentObservationTypeID).ToList().Contains(y.TreatmentBMPAssessmentObservationTypeID)).ToList();

            var requiresAssessmentWeightSimples = new List <TreatmentBMPTypeObservationTypeSimple>();

            requiresAssessmentWeightSimples.AddRange(hasBenchmarkAndThresholdsSimples);
            requiresAssessmentWeightSimples.AddRange(noBenchmarkAndThresholdsSimples.Where(x => !x.OverrideAssessmentScoreIfFailing.HasValue || !x.OverrideAssessmentScoreIfFailing.Value));

            if (requiresAssessmentWeightSimples.Any(x => x.AssessmentScoreWeight == null))
            {
                validationResults.Add(new ValidationResult("Each Observation Type that does not override the Assessment Score if failing must have an Assessment Score Weight."));
            }

            if (requiresAssessmentWeightSimples.Any() && TreatmentBMPTypeObservationTypeSimples.Sum(x => x.AssessmentScoreWeight) != 100)
            {
                validationResults.Add(new ValidationResult("The total Assessment Score Weight for all Observation Types must equal 100%."));
            }

            return(validationResults);
        }