package Ġcom . github . dan zx . x of . core . use case . comment Ċ Ċ import Ġcom . github . dan zx . x of . core . dat apro vider . Comment Pers ister Ċ import Ġcom . github . dan zx . x of . core . domain . Comment Ċ import Ġcom . github . dan zx . x of . core . use case . UseCase Ċ import Ġcom . github . dan zx . x of . core . use case . comment . command . Create New Comment Command Ċ import Ġcom . github . dan zx . x of . core . use case . mapper . to Comment Ċ import Ġcom . github . dan zx . x of . core . use case . post . Validate Post Id Exists UseCase Ċ import Ġcom . github . dan zx . x of . core . use case . user . Validate UserId Exists UseCase Ċ Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠCreate New Comment UseCase Ġ: ĠUse Case < Create New Comment Command , ĠComment > Ġ{ ĊĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġvalidate UserId Exists UseCase : ĠValidate UserId Exists UseCase ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġvalidate Post Id Exists UseCase : ĠValidate Post Id Exists UseCase ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġvalidate Comment Id Exists UseCase : ĠValidate Comment Id Exists UseCase ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġpers ister : ĠComment Pers ister ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġinvoke ( command : ĠCreate New Comment Command ) Ġ: ĠComment Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate UserId Exists UseCase ( command . userId ) ĊĠĠĠĠĠĠĠ Ġvalidate Post Id Exists UseCase ( command . post Id ) ĊĠĠĠĠĠĠĠ Ġcommand . parentId ?. let Ġ{ Ġvalidate Comment Id Exists UseCase ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpers ister . save ( command . to Comment ()) ĊĠĠĠ Ġ} Ċ }