Skip to content

Commit

Permalink
Initial interface design for sanity checks
Browse files Browse the repository at this point in the history
Part of #137
  • Loading branch information
Erikvv committed Oct 9, 2024
1 parent 653df1f commit 8f48807
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions zummon/src/commonMain/kotlin/companysurvey/Validation.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.zenmo.zummon.companysurvey

fun interface Validator {
fun validate(survey: Survey): ValidationResult
}

data class ValidationResult(
val status: Status,
val message: String,
)

enum class Status {
VALID,
INVALID,
MISSING_DATA,
}

val validateContractedCapacity = Validator { survey: Survey ->
val gridConnection = survey.getSingleGridConnection()

val contractedConnectionCapacity = gridConnection.electricity.getContractedConnectionCapacityKw()
val physicalConnectionCapacity = gridConnection.electricity.getPhysicalConnectionCapacityKw()

return@Validator when {
contractedConnectionCapacity == null -> ValidationResult(
status = Status.MISSING_DATA,
message = "No contracted connection capacity given",
)
physicalConnectionCapacity == null -> ValidationResult(
status = Status.MISSING_DATA,
message = "No physical connection capacity given",
)
contractedConnectionCapacity <= physicalConnectionCapacity -> ValidationResult(
status = Status.VALID,
message = "Contracted connection capacity fits within physical connection",
)
else -> ValidationResult(
status = Status.INVALID,
message = "Contracted connection capacity ${gridConnection.electricity.getContractedConnectionCapacityKw()} kW is too large for physical connection ${gridConnection.electricity.getPhysicalConnectionCapacityKw()}"
)
}
}

0 comments on commit 8f48807

Please sign in to comment.