package Ġnl . ent re co . domain . beta . vote Ċ Ċ import Ġnl . ent re co . domain . repository . Feature Repository Ċ import Ġnl . ent re co . lib core . Base Use case Ċ import Ġnl . ent re co . lib core . threading . Background Ċ import Ġnl . ent re co . lib core . threading . Foreground Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġentre co Ġon Ġ 0 7 / 0 2 / 2 0 1 8 . Ċ Ġ*/ Ċ class ĠSubmit Vote Use case Ġ@ Inject Ġconstructor ( private Ġval Ġfeature Repository : ĠFeature Repository , Ġbg : ĠBackground , Ġfg : ĠFore ground ) Ġ: ĠBase Use case ( bg , Ġfg ) Ġ{ ĊĊĠĠĠ Ġfun Ġexec ( req : ĠSubmit Vote Request , Ġdone : Ġ( Submit Vote Response ) Ġ-> ĠUnit , Ġfail : Ġ( Throwable ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Background ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Repository . submit Vote ( req . feature Id , Ġreq . amount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ui Ġ{ Ġdone ( Submit Vote Response ( true )) Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġfail ) ĊĠĠĠ Ġ} Ċ }