Jukka Siivonen
01/13/2020, 12:53 PMdata class Application(val applicantName: String?, val dateOfBirth: LocalDate?, val status: ApplicationStatus)
Jukka Siivonen
01/13/2020, 12:55 PMJukka Siivonen
01/13/2020, 12:58 PMMike
01/13/2020, 1:01 PMsealed class
would be a good starting point. Setting up different 'state's.codeslubber
01/13/2020, 3:30 PMJukka Siivonen
01/13/2020, 6:20 PMMike
01/13/2020, 6:31 PMsealed class Application {
data class DraftApplication(val applicantName:String?, val dateOfBirth:LocalDate?):Application()
data class InFlightApplication(val applicantName:String, dateOfBirth:LocalDate):Application()
data class ApprovedApplication(val application:InFlightApplication, val dateApproved:LocalDate):Application()
}
This is an idea. So initially you have a Draft Application, which would possibly be the original request from the User/UI, so potential errors etc, so everything is null.
Would have a validation step that takes a DraftApplication and returns either an InFlightApplication or an error/exception.
And as a further example, perhaps there's an approval process, that has original application, and an approval date.
This is just a rough idea of what can be done.