CompletedSprintState.kt

package nl.marc.devops.board.sprint_states

import nl.marc.devops.accounts.User
import nl.marc.devops.board.BacklogItem
import nl.marc.devops.board.DateRange
import nl.marc.devops.board.Sprint

class CompletedSprintState(
    sprint: Sprint,
    override val backlogItems: Set<BacklogItem>,
    scrumMaster: User?,
    name: String?,
    dateRange: DateRange?
) : SprintState(sprint) {
    override var scrumMaster: User? = scrumMaster
        set(_) = throw IllegalStateException("Can't change scrum master when sprint is completed")

    override var name: String? = name
        set(_) = throw IllegalStateException("Can't change sprint name when sprint is completed")

    override var dateRange: DateRange? = dateRange
        set(_) = throw IllegalStateException("Can't change sprint start and end when sprint is completed")
}