package Ġpt . ise learning . services . service . question na ires Ċ Ċ import Ġorg . model mapper . Model Mapper Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġorg . springframework . validation . annotation . Validated Ċ import Ġpt . ise learning . services . domain . question na ires . Questionnaire Challenge Ċ import Ġpt . ise learning . services . exception . ServiceException Ċ import Ġpt . ise learning . services . exception . error . ErrorCode Ċ import Ġpt . ise learning . services . models . question naire . Questionnaire Challenge Model Ċ import Ġpt . ise learning . services . models . question naire . Questionnaire Challenge Collection Model Ċ import Ġpt . ise learning . services . repository . challenge . Challenge Repository Ċ import Ġpt . ise learning . services . repository . question naire . Questionnaire Challenge Repository Ċ import Ġpt . ise learning . services . repository . question naire . Questionnaire Repository Ċ import Ġpt . ise learning . services . util . check If Challenge Exists Ċ import Ġpt . ise learning . services . util . check If Questionnaire Challenge Exists Ċ import Ġpt . ise learning . services . util . check If Questionnaire Exists Ċ import Ġpt . ise learning . services . util . check Supported Languages For Challenge Language Filter Ċ import Ġjavax . validation . Valid Ċ import Ġjavax . validation . constraints . Positive Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġcontains Ġthe Ġbusiness Ġlogic Ġassociated Ġwith Ġthe Ġactions Ġon Ġthe Ġquestion naire Ġinstance Ġobject Ċ Ġ*/ Ċ @ Validated Ċ @ Service Ċ class ĠQuestion naire Challenge Services ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġquestion naire Repository : ĠQuestion naire Repository , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġchallenge Repository : ĠChallenge Repository , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġquestion naire Challenge Repository : ĠQuestion naire Challenge Repository , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmodel Mapper : ĠModelMapper Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġone Ġor Ġmultiple Ġchallenges Ġto Ġa Ġquestion naire . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġquestion naire Challenge Model Ġobject Ġinformation ĊĠĠĠĠ Ġ* Ġ@ return Ġadded Ġquestion naire Ġchallenge ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Validated ĊĠĠĠ Ġfun Ġadd Ch allenges To Questionnaire (@ Valid Ġquestion naire Challenge Model : ĠQuestion naire Challenge Model ): ĠList < Questionnaire Challenge > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquestion naire Ġ= Ġquestion naire Repository . findById ( question naire Challenge Model . question naire Id ) ĊĠĠĠĠĠĠĠ Ġcheck If Questionnaire Exists ( question naire , Ġquestion naire Challenge Model . question naire Id ) ĊĠĠĠĠĠĠĠ Ġquestion naire Challenge Model . challenges . iterator (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchallenge Ġ= Ġchallenge Repository . findById ( it . challenge Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck If Challenge Exists ( challenge , Ġit . challenge Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Supported Languages For Challenge Language Filter ( it . language Filter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcreated Questionnaire Challenge Ġ= Ġmutable ListOf < Questionnaire Challenge >() ĊĠĠĠĠĠĠĠ Ġquestion naire Challenge Model . challenges . iterator (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquestion naire Challenge Ġ= ĠconvertTo Entity ( question naire Challenge Model . question naire Id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreated Questionnaire Challenge . add ( question naire Challenge Repository . save ( question naire Challenge )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreated Questionnaire Challenge ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa ĠQuestion naire Challenge Ġby Ġits Ġquestion naire Ġunique Ġidentifier Ġand Ġchallenge Ġunique Ġidentifier ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġquestion naire Id Ġquestion naire Ġunique Ġidentifier ĊĠĠĠĠ Ġ* Ġ@ param Ġchallenge Id Ġchallenge Ġunique Ġidentifier ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Validated ĊĠĠĠ Ġfun Ġget Questionnaire Challenge By Questionnaire Id And Challenge Id (@ Positive Ġquestion naire Id : ĠInt , Ġ@ Positive Ġchallenge Id : ĠInt ): ĠQuestion naire Challenge Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquestion naire Ġ= Ġquestion naire Repository . findById ( question naire Id ) ĊĠĠĠĠĠĠĠ Ġcheck If Questionnaire Exists ( question naire , Ġquestion naire Id ) ĊĠĠĠĠĠĠĠ Ġval Ġquestion naire Challenge Ġ= Ġquestion naire Challenge Repository ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. findBy Questionnaire Questionnaire Id And Challenge Challenge Id ( question naire Id , Ġchallenge Id ) ĊĊĠĠĠĠĠĠĠ Ġcheck If Questionnaire Challenge Exists ( question naire Challenge , Ġquestion naire Id , Ġchallenge Id ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġquestion naire Challenge . get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdate Ġchallenges Ġon Ġa Ġquestion naire . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġquestion naire Challenge Model Ġobject Ġinformation ĊĠĠĠĠ Ġ* Ġ@ return Ġadded Ġquestion naire Ġchallenge ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Validated ĊĠĠĠ Ġfun Ġupdate Ch allenges On Questionnaire (@ Valid Ġquestion naire Challenge Model : ĠQuestion naire Challenge Model ): ĠList < Questionnaire Challenge > Ġ{ ĊĠĠĠĠĠĠĠ Ġremove All Ch allenges From Questionnaire ( question naire Challenge Model . question naire Id ) ĊĠĠĠĠĠĠĠ Ġquestion naire Challenge Model . challenges . iterator (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchallenge Ġ= Ġchallenge Repository . findById ( it . challenge Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck If Challenge Exists ( challenge , Ġit . challenge Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Supported Languages For Challenge Language Filter ( it . language Filter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcreated Questionnaire Challenge Ġ= Ġmutable ListOf < Questionnaire Challenge >() ĊĠĠĠĠĠĠĠ Ġquestion naire Challenge Model . challenges . iterator (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquestion naire Challenge Ġ= ĠconvertTo Entity ( question naire Challenge Model . question naire Id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreated Questionnaire Challenge . add ( question naire Challenge Repository . save ( question naire Challenge )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcreated Questionnaire Challenge ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemove Ġa Ġcollection Ġchallenges Ġfrom Ġa Ġquestion naire Ġby Ġits Ġunique Ġidentifiers ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġquestion naire Id Ġquestion naire Ġunique Ġidentifier ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Validated ĊĠĠĠ Ġfun Ġremove All Ch allenges From Questionnaire (@ Positive Ġquestion naire Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquestion naire Ġ= Ġquestion naire Repository . findById ( question naire Id ) ĊĠĠĠĠĠĠĠ Ġcheck If Questionnaire Exists ( question naire , Ġquestion naire Id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquestion naire Ch allenges Ġ= Ġquestion naire Challenge Repository . findAll By Questionnaire Questionnaire Id ( question naire Id ) ĊĠĠĠĠĠĠĠ Ġquestion naire Ch allenges . iterator (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquestion naire Challenge Repository . delete ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA ux iliary Ġfunction Ġthat Ġconverts ĠQuestion naire Challenge Ġmodel Ġto ĠQuestion naire Challenge Ġdomain ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ// private Ġfun ĠconvertTo Entity ( input Ġ: ĠAny ) Ġ= Ġmodel Mapper . map ( input , ĠQuestion naire Challenge :: class . java ) ĊĠĠĠ Ġ// TODO : Ġusar Ġo Ġmapper Ġa Ġfuncion ar Ġem Ġvez Ġdest a ĠfunÃ§Ã£o Ġaux iliar Ġ?? ĊĠĠĠ Ġprivate Ġfun ĠconvertTo Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquestion naire Id : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquestion naire Challenge Collection Model : ĠQuestion naire Challenge Collection Model ĊĠĠĠ Ġ): ĠQuestion naire Challenge Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquestion naire Challenge Ġ= ĠQuestion naire Challenge () ĊĠĠĠĠĠĠĠ Ġquestion naire Challenge . question naire Ġ= Ġquestion naire Repository . findById ( question naire Id ). get () ĊĠĠĠĠĠĠĠ Ġquestion naire Challenge . challenge Ġ= Ġchallenge Repository . findById ( question naire Challenge Collection Model . challenge Id ). get () ĊĠĠĠĠĠĠĠ Ġquestion naire Challenge . language Filter Ġ= Ġquestion naire Challenge Collection Model . language Filter ĊĠĠĠĠĠĠĠ Ġreturn Ġquestion naire Challenge ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Questionnaire Challenge By Questionnaire Id ( question naire Id : ĠInt ): ĠList < Questionnaire Challenge > Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck If Questionnaire Exists ( question naire Repository , Ġquestion naire Id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġquestion naire Challenge Repository . findAll By Questionnaire Questionnaire Id ( question naire Id ) ĊĠĠĠ Ġ} Ċ Ċ }