package fr.dcproject.component.opinion.entity import fr.dcproject.component.article.ArticleRef import fr.dcproject.component.citizen.CitizenBasic import fr.dcproject.component.citizen.CitizenBasicI import fr.dcproject.component.citizen.CitizenI import fr.dcproject.component.citizen.CitizenRef import fr.dcproject.common.entity.ExtraI import fr.dcproject.common.entity.HasTarget import fr.dcproject.common.entity.TargetI import fr.dcproject.common.entity.TargetRef import fr.postgresjson.entity.EntityCreatedAt import fr.postgresjson.entity.EntityCreatedAtImp import fr.postgresjson.entity.EntityCreatedBy import fr.postgresjson.entity.EntityCreatedByImp import fr.postgresjson.entity.UuidEntityI import java.util.UUID @Deprecated("") open class Opinion( id: UUID = UUID.randomUUID(), override val createdBy: CitizenBasic, override val target: T, val choice: OpinionChoice ) : OpinionRef(id), ExtraI, EntityCreatedAt by EntityCreatedAtImp(), EntityCreatedBy by EntityCreatedByImp(createdBy) { fun getName(): String = choice.name } @Deprecated("") class OpinionArticle( id: UUID = UUID.randomUUID(), createdBy: CitizenBasic, target: ArticleRef, choice: OpinionChoice ) : Opinion(id, createdBy, target, choice) data class OpinionForUpdate( override val id: UUID = UUID.randomUUID(), override val target: T, val choice: OpinionChoiceRef, override val createdBy: CitizenRef ) : OpinionRef(id), HasTarget, EntityCreatedBy by EntityCreatedByImp(createdBy) open class OpinionRef( override val id: UUID ) : OpinionI, TargetRef(id) interface OpinionI : UuidEntityI