public static void CalculateAssessmentScore(this TreatmentBMPAssessment treatmentBMPAssessment) { if (!treatmentBMPAssessment.TreatmentBMP.IsBenchmarkAndThresholdsComplete()) { return; } if (!treatmentBMPAssessment.IsAssessmentComplete) { return; } //if any observations that override the score have a failing score, return 0 var observationTypesThatPotentiallyOverrideScore = treatmentBMPAssessment.TreatmentBMP.TreatmentBMPType.TreatmentBMPTypeAssessmentObservationTypes .Where(x => x.OverrideAssessmentScoreIfFailing) .ToList().Select(x => x.TreatmentBMPAssessmentObservationType); double?score; if (observationTypesThatPotentiallyOverrideScore.Any(x => { var treatmentBMPObservation = treatmentBMPAssessment.TreatmentBMPObservations.SingleOrDefault(y => y.TreatmentBMPAssessmentObservationType == x); return(treatmentBMPObservation?.OverrideScoreForFailingObservation(x) ?? false); })) { score = 0; } //if all observations override the score and all are passing, return 5 else if (treatmentBMPAssessment.TreatmentBMP.TreatmentBMPType.TreatmentBMPTypeAssessmentObservationTypes .All(x => x.OverrideAssessmentScoreIfFailing)) { score = 5; } else { //otherwise calculate the score score = treatmentBMPAssessment.TreatmentBMP.TreatmentBMPType.TreatmentBMPTypeAssessmentObservationTypes .Where(x => !x.OverrideAssessmentScoreIfFailing) .Select(x => x.TreatmentBMPAssessmentObservationType).ToList().Sum(x => { var observationScore = treatmentBMPAssessment.TreatmentBMPObservations .SingleOrDefault(y => y.TreatmentBMPAssessmentObservationType.TreatmentBMPAssessmentObservationTypeID == x.TreatmentBMPAssessmentObservationTypeID).CalculateObservationScore(); var treatmentBMPAssessmentObservationType = treatmentBMPAssessment.TreatmentBMPObservations .SingleOrDefault(y => y.TreatmentBMPAssessmentObservationType.TreatmentBMPAssessmentObservationTypeID == x.TreatmentBMPAssessmentObservationTypeID).TreatmentBMPAssessmentObservationType; var observationWeight = Convert.ToDouble(treatmentBMPAssessment.TreatmentBMP.TreatmentBMPType .GetTreatmentBMPTypeObservationType(treatmentBMPAssessmentObservationType) .AssessmentScoreWeight .Value); return(observationScore * observationWeight); }); } treatmentBMPAssessment.AssessmentScore = score; }
public static string GetEditUrl(this TreatmentBMPAssessment treatmentBMPAssessment) { if (treatmentBMPAssessment.TreatmentBMPAssessmentType == TreatmentBMPAssessmentType.Initial) { return(EditInitialAssessmentUrlTemplate.ParameterReplace(treatmentBMPAssessment.FieldVisit.FieldVisitID)); } return(EditPostMaintenanceAssessmentUrlTemplate.ParameterReplace(treatmentBMPAssessment.FieldVisit.FieldVisitID)); }
/// <summary> /// Constructor for building a new object with MinimalConstructor required fields, using objects whenever possible /// </summary> public TreatmentBMPAssessmentPhoto(FileResource fileResource, TreatmentBMPAssessment treatmentBMPAssessment) : this() { // Mark this as a new object by setting primary key with special value this.TreatmentBMPAssessmentPhotoID = ModelObjectHelpers.MakeNextUnsavedPrimaryKeyValue(); this.FileResourceID = fileResource.FileResourceID; this.FileResource = fileResource; fileResource.TreatmentBMPAssessmentPhotos.Add(this); this.TreatmentBMPAssessmentID = treatmentBMPAssessment.TreatmentBMPAssessmentID; this.TreatmentBMPAssessment = treatmentBMPAssessment; treatmentBMPAssessment.TreatmentBMPAssessmentPhotos.Add(this); }
/// <summary> /// Constructor for building a new object with MinimalConstructor required fields, using objects whenever possible /// </summary> public TreatmentBMPObservation(TreatmentBMPAssessment treatmentBMPAssessment, TreatmentBMPTypeAssessmentObservationType treatmentBMPTypeAssessmentObservationType, TreatmentBMPType treatmentBMPType, TreatmentBMPAssessmentObservationType treatmentBMPAssessmentObservationType, string observationData) : this() { // Mark this as a new object by setting primary key with special value this.TreatmentBMPObservationID = ModelObjectHelpers.MakeNextUnsavedPrimaryKeyValue(); this.TreatmentBMPAssessmentID = treatmentBMPAssessment.TreatmentBMPAssessmentID; this.TreatmentBMPAssessment = treatmentBMPAssessment; treatmentBMPAssessment.TreatmentBMPObservations.Add(this); this.TreatmentBMPTypeAssessmentObservationTypeID = treatmentBMPTypeAssessmentObservationType.TreatmentBMPTypeAssessmentObservationTypeID; this.TreatmentBMPTypeAssessmentObservationType = treatmentBMPTypeAssessmentObservationType; treatmentBMPTypeAssessmentObservationType.TreatmentBMPObservations.Add(this); this.TreatmentBMPTypeID = treatmentBMPType.TreatmentBMPTypeID; this.TreatmentBMPType = treatmentBMPType; treatmentBMPType.TreatmentBMPObservations.Add(this); this.TreatmentBMPAssessmentObservationTypeID = treatmentBMPAssessmentObservationType.TreatmentBMPAssessmentObservationTypeID; this.TreatmentBMPAssessmentObservationType = treatmentBMPAssessmentObservationType; treatmentBMPAssessmentObservationType.TreatmentBMPObservations.Add(this); this.ObservationData = observationData; }
public TreatmentBMPAssessmentObservationTypeSimple(TreatmentBMPAssessmentObservationType treatmentBMPAssessmentObservationType, TreatmentBMPAssessment treatmentBMPAssessment, bool overrideAssessmentScoreIfFailing) { TreatmentBMPAssessmentObservationTypeID = treatmentBMPAssessmentObservationType.TreatmentBMPAssessmentObservationTypeID; HasBenchmarkAndThresholds = treatmentBMPAssessmentObservationType.GetHasBenchmarkAndThreshold(); var unitDisplayName = treatmentBMPAssessmentObservationType.GetMeasurementUnitType() != null ? $" ({treatmentBMPAssessmentObservationType.GetMeasurementUnitType().LegendDisplayName})" : string.Empty; DisplayName = $"{treatmentBMPAssessmentObservationType.TreatmentBMPAssessmentObservationTypeName}{unitDisplayName}"; var benchmarkValue = treatmentBMPAssessmentObservationType.GetBenchmarkValue(treatmentBMPAssessment.TreatmentBMP); var thresholdValue = treatmentBMPAssessmentObservationType.GetThresholdValue(treatmentBMPAssessment.TreatmentBMP); var assessmentScoreWeight = treatmentBMPAssessmentObservationType.TreatmentBMPTypeAssessmentObservationTypes.SingleOrDefault(x => x.TreatmentBMPTypeID == treatmentBMPAssessment.TreatmentBMP.TreatmentBMPType.TreatmentBMPTypeID)?.AssessmentScoreWeight; var treatmentBMPObservation = treatmentBMPAssessment.TreatmentBMPObservations.SingleOrDefault(y => y.TreatmentBMPAssessmentObservationTypeID == treatmentBMPAssessmentObservationType.TreatmentBMPAssessmentObservationTypeID); TreatmentBMPObservationSimple = treatmentBMPObservation != null ? new TreatmentBMPObservationSimple(treatmentBMPObservation, overrideAssessmentScoreIfFailing) : null; var useUpperValue = treatmentBMPAssessmentObservationType.UseUpperValueForThreshold(benchmarkValue, TreatmentBMPObservationSimple?.ObservationValue); ThresholdValueInObservedUnits = treatmentBMPAssessmentObservationType.GetThresholdValueInBenchmarkUnits(benchmarkValue, thresholdValue, useUpperValue) ?? 0; BenchmarkValue = benchmarkValue ?? 0; Weight = assessmentScoreWeight?.ToStringShortPercent() ?? "pass/fail"; }
/// <summary> /// Creates a "blank" object of this type and populates primitives with defaults /// </summary> public static TreatmentBMPObservation CreateNewBlank(TreatmentBMPAssessment treatmentBMPAssessment, TreatmentBMPTypeAssessmentObservationType treatmentBMPTypeAssessmentObservationType, TreatmentBMPType treatmentBMPType, TreatmentBMPAssessmentObservationType treatmentBMPAssessmentObservationType) { return(new TreatmentBMPObservation(treatmentBMPAssessment, treatmentBMPTypeAssessmentObservationType, treatmentBMPType, treatmentBMPAssessmentObservationType, default(string))); }
public static string GetDeleteUrl(this TreatmentBMPAssessment treatmentBMPAssessment) { return(DeleteUrlTemplate.ParameterReplace(treatmentBMPAssessment.TreatmentBMPAssessmentID)); }
public static void CalculateIsAssessmentComplete(this TreatmentBMPAssessment treatmentBMPAssessment) { treatmentBMPAssessment.IsAssessmentComplete = treatmentBMPAssessment.TreatmentBMP.TreatmentBMPType.GetObservationTypes().All(treatmentBMPAssessment.IsObservationComplete); }
/// <summary> /// Creates a "blank" object of this type and populates primitives with defaults /// </summary> public static TreatmentBMPAssessmentPhoto CreateNewBlank(FileResource fileResource, TreatmentBMPAssessment treatmentBMPAssessment) { return(new TreatmentBMPAssessmentPhoto(fileResource, treatmentBMPAssessment)); }
public static void DeleteTreatmentBMPAssessment(this IQueryable <TreatmentBMPAssessment> treatmentBMPAssessments, TreatmentBMPAssessment treatmentBMPAssessmentToDelete) { DeleteTreatmentBMPAssessment(treatmentBMPAssessments, new List <TreatmentBMPAssessment> { treatmentBMPAssessmentToDelete }); }