package Ġno . nav . f amil ie . til b ake . s ik ker het Ċ Ċ import Ġno . nav . f amil ie . kon tr ak ter . fel les . til b ake k re ving . Yt else stype Ċ import Ġno . nav . f amil ie . til b ake . api . dto . Be hand lings st eg Fat te V ed t aks st eg Dto Ċ import Ġno . nav . f amil ie . til b ake . be handling . Be handling Repository Ċ import Ġno . nav . f amil ie . til b ake . be handling . F ags ak Repository Ċ import Ġno . nav . f amil ie . til b ake . common . Context Service Ċ import Ġno . nav . f amil ie . til b ake . common . exception handler . Fe il Ċ import Ġno . nav . f amil ie . til b ake . common . repository . findById OrThrow Ċ import Ġno . nav . f amil ie . til b ake . config . Rol le Config Ċ import Ġno . nav . f amil ie . til b ake . integration . f amil ie . Integr as jon er Client Ċ import Ġorg . aspect j . lang . Join Point Ċ import Ġorg . aspect j . lang . annotation . Aspect Ċ import Ġorg . aspect j . lang . annotation . Before Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . data . repository . findById OrNull Ċ import Ġorg . springframework . http . HttpMethod Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . web . context . request . RequestContext Holder Ċ import Ġorg . springframework . web . context . request . Servlet Request Attributes Ċ import Ġjava . lang . reflect . Field Ċ import Ġjava . util . UUID ĊĊ Ċ @ Aspect Ċ @ Configuration Ċ class ĠT il gang Ad vice ( val Ġrol le Config : ĠRol le Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbe handling Repository : ĠBe handling Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf ags ak Repository : ĠF ags ak Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintegr as jon er Client : ĠIntegr as jon er Client ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbe handling Id Param Ġ= Ġ" be handling Id " ĊĠĠĠ Ġprivate Ġval Ġy t else stype Param Ġ= Ġ" yt else stype " ĊĠĠĠ Ġprivate Ġval Ġf ags ystem Param Ġ= Ġ" f ags ystem " ĊĠĠĠ Ġprivate Ġval Ġek st ern B ru k Id Param Ġ= Ġ" ek st ern B ru k Id " ĊĊĠĠĠ Ġprivate Ġval Ġlogger : ĠLogger Ġ= ĠLoggerFactory . getLogger ( this . java Class ) ĊĊĠĠĠ Ġ@ Before ("@ annotation ( rol let il gang ss je kk ) Ġ") ĊĠĠĠ Ġfun Ġs je kk Til gang ( join point : ĠJoin Point , Ġrol let il gang ss je kk : ĠRol let il gang ss je kk ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġminimum Be handler Rol le Ġ= Ġrol let il gang ss je kk . minimum Be handler rol le ĊĠĠĠĠĠĠĠ Ġval Ġhandling Ġ= Ġrol let il gang ss je kk . handling ĊĊĠĠĠĠĠĠĠ Ġval Ġbru ker Rol le Og F ags ystem st il gang Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Service . h ent H Ã¸ y este Rol let il gang O gY t else stype For In n log getB ru ker ( rol le Config , Ġhandling ) ĊĊĠĠĠĠĠĠĠ Ġval ĠhttpRequest Ġ= Ġ( RequestContext Holder . current Request Attributes () Ġas ĠServlet Request Attributes ). request ĊĊĠĠĠĠĠĠĠ Ġif Ġ( HttpMethod . GET . matches ( httpRequest . method ) Ġ|| Ġrol let il gang ss je kk . h ente Param Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate F ags ystem Til gang I GetRequest ( rol let il gang ss je kk . h ente Param , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjoin point . args , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbru ker Rol le Og F ags ystem st il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( HttpMethod . POST . matches ( httpRequest . method ) Ġ|| ĠHttpMethod . PUT . matches ( httpRequest . method )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate F ags ystem Til gang IP ost Request ( join point . args [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbru ker Rol le Og F ags ystem st il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn ("${ httpRequest . request URI } Ġst Ã¸ t ter Ġik ke Ġtil gang ss je kk ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate F ags ystem Til gang I GetRequest ( param : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Body : ĠArray < Any >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbru ker Rol le Og F ags ystem st il gang : ĠIn n log getB ru k ert il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le : ĠBe handler rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( param ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbe handling Id Param Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbe handling Id Ġ= Ġrequest Body . first () Ġas ĠUUID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf ags ystem Ġ= Ġh ent F ags ystem Av Be handling Id ( be handling Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperson er I Be handling en Ġ= Ġh ent Person er I Be handling en ( be handling Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbe handler Rol le Ġ= Ġminimum Be handler Rol le ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request Body . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe handler Rol le Ġ= Ġbest em Be handler Rol le For Utf Ã¸ r Fat te V ed tak St eg ( request Body [ 1 ], Ġminimum Be handler Rol le ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( f ags ystem Ġ= Ġf ags ystem , Ġbru ker Rol le Og F ags ystem st il gang Ġ= Ġbru ker Rol le Og F ags ystem st il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le Ġ= Ġbe handler Rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperson er I Be handling en Ġ= Ġperson er I Be handling en , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling Ġ= Ġhandling ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy t else stype Param Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy t else stype Ġ= ĠY t else stype . valueOf ( request Body . first (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf ags ystem Ġ= ĠT il gang sk ont roll sf ags ystem . f ra Yt else stype ( yt else stype ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( f ags ystem Ġ= Ġf ags ystem , Ġbru ker Rol le Og F ags ystem st il gang Ġ= Ġbru ker Rol le Og F ags ystem st il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le Ġ= Ġminimum Be handler Rol le , Ġperson er I Be handling en Ġ= Ġempty List (), Ġhandling Ġ= Ġhandling ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf ags ystem Param Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf ags ystem Ġ= ĠT il gang sk ont roll sf ags ystem . f ra K ode ( request Body . first (). toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( f ags ystem Ġ= Ġf ags ystem , Ġbru ker Rol le Og F ags ystem st il gang Ġ= Ġbru ker Rol le Og F ags ystem st il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le Ġ= Ġminimum Be handler Rol le , Ġperson er I Be handling en Ġ= Ġempty List (), Ġhandling Ġ= Ġhandling ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġek st ern B ru k Id Param Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġek st ern B ru k Id Ġ= Ġrequest Body . first () Ġas ĠUUID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf ags ystem Ġ= Ġh ent F ags ystem Av Ek st ern B ru k Id ( ek st ern B ru k Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperson er I Be handling en Ġ= Ġh ent Person er I Be handling en Bas ert P Ã¥ Ek st ern B ru k Id ( ek st ern B ru k Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( f ags ystem Ġ= Ġf ags ystem , Ġbru ker Rol le Og F ags ystem st il gang Ġ= Ġbru ker Rol le Og F ags ystem st il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le Ġ= Ġminimum Be handler Rol le , Ġperson er I Be handling en Ġ= Ġperson er I Be handling en , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling Ġ= Ġhandling ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk ast Til gang ss je kk Exception ( handling ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate F ags ystem Til gang IP ost Request ( request Body : ĠAny , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbru ker Rol le Og F ags ystem st il gang : ĠIn n log getB ru k ert il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le : ĠBe handler rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġy t else stype Fin nes I Request Ġ= Ġrequest Body . java Class . declared Fields . any Ġ{ Ġ" yt else stype " Ġ== Ġit . name Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbe handling Id Fin nes I Request Ġ= Ġrequest Body . java Class . declared Fields . any Ġ{ Ġ" be handling Id " Ġ== Ġit . name Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġek st ern B ru k Id Fin nes I Request Ġ= Ġrequest Body . java Class . declared Fields . any Ġ{ Ġ" ek st ern B ru k Id " Ġ== Ġit . name Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy t else stype Fin nes I Request Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfelt Ġ= Ġh ent F elt ( f elt Nav n Ġ= Ġy t else stype Param , Ġrequest Body Ġ= Ġrequest Body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy t else stype Ġ= ĠY t else stype . valueOf ( f elt . get ( request Body ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf ags ystem Ġ= ĠT il gang sk ont roll sf ags ystem . f ra Yt else stype ( yt else stype ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( f ags ystem Ġ= Ġf ags ystem , Ġbru ker Rol le Og F ags ystem st il gang Ġ= Ġbru ker Rol le Og F ags ystem st il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le Ġ= Ġminimum Be handler Rol le , Ġperson er I Be handling en Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling Ġ= Ġhandling ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbe handling Id Fin nes I Request Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfelt Ġ= Ġh ent F elt ( f elt Nav n Ġ= Ġbe handling Id Param , Ġrequest Body Ġ= Ġrequest Body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbe handling Id : ĠUUID Ġ= Ġfelt . get ( request Body ) Ġas ĠUUID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf ags ystem Ġ= Ġh ent F ags ystem Av Be handling Id ( be handling Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperson er I Be handling en Ġ= Ġh ent Person er I Be handling en ( be handling Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( f ags ystem Ġ= Ġf ags ystem , Ġbru ker Rol le Og F ags ystem st il gang Ġ= Ġbru ker Rol le Og F ags ystem st il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le Ġ= Ġminimum Be handler Rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperson er I Be handling en Ġ= Ġperson er I Be handling en , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling Ġ= Ġhandling ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġek st ern B ru k Id Fin nes I Request Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfelt Ġ= Ġh ent F elt ( f elt Nav n Ġ= Ġek st ern B ru k Id Param , Ġrequest Body Ġ= Ġrequest Body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġek st ern B ru k Id : ĠUUID Ġ= Ġfelt . get ( request Body ) Ġas ĠUUID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf ags ystem Ġ= Ġh ent F ags ystem Av Ek st ern B ru k Id ( ek st ern B ru k Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperson er I Be handling en Ġ= Ġh ent Person er I Be handling en Bas ert P Ã¥ Ek st ern B ru k Id ( ek st ern B ru k Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( f ags ystem Ġ= Ġf ags ystem , Ġbru ker Rol le Og F ags ystem st il gang Ġ= Ġbru ker Rol le Og F ags ystem st il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le Ġ= Ġminimum Be handler Rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperson er I Be handling en Ġ= Ġperson er I Be handling en , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling Ġ= Ġhandling ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk ast Til gang ss je kk Exception ( handling ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġh ent F elt ( f elt Nav n : ĠString , Ġrequest Body : ĠAny ): ĠField Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfelt Ġ= Ġrequest Body . java Class . declared Fields . filter Ġ{ Ġit . name Ġ== Ġfelt Nav n Ġ} [ 0 ] ĊĠĠĠĠĠĠĠ Ġfelt . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġfelt ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġh ent F ags ystem Av Be handling Id ( be handling Id : ĠUUID ): ĠT il gang sk ont roll sf ags ystem Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbe handling Ġ= Ġbe handling Repository . findById OrNull ( be handling Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠFe il ( message Ġ= Ġ" Be handling Ġfin nes Ġik ke Ġfor Ġ$ be handling Id ", Ġhttp Status Ġ= ĠHttpStatus . BAD _ REQUEST ) ĊĠĠĠĠĠĠĠ Ġreturn ĠT il gang sk ont roll sf ags ystem . f ra F ags ystem ( f ags ak Repository . findById OrThrow ( be handling . f ags ak Id ). f ags ystem ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġh ent Person er I Be handling en ( be handling Id : ĠUUID ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbe handling Ġ= Ġbe handling Repository . findById OrNull ( be handling Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠFe il ( message Ġ= Ġ" Be handling Ġfin nes Ġik ke Ġfor Ġ$ be handling Id ", Ġhttp Status Ġ= ĠHttpStatus . BAD _ REQUEST ) ĊĠĠĠĠĠĠĠ Ġval Ġf ags ak Ġ= Ġf ags ak Repository . findById OrThrow ( be handling . f ags ak Id ) ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( f ags ak . br uk er . ident ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġh ent Person er I Be handling en Bas ert P Ã¥ Ek st ern B ru k Id ( ek st ern B ru k Id : ĠUUID ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbe handling Ġ= Ġbe handling Repository . findBy Ek st ern B ru k Id ( ek st ern B ru k Id ) ĊĠĠĠĠĠĠĠ Ġval Ġf ags ak Ġ= Ġf ags ak Repository . findById OrThrow ( be handling . f ags ak Id ) ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( f ags ak . br uk er . ident ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġh ent F ags ystem Av Ek st ern B ru k Id ( ek st ern B ru k Id : ĠUUID ): ĠT il gang sk ont roll sf ags ystem Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbe handling Ġ= Ġbe handling Repository . findBy Ek st ern B ru k Id ( ek st ern B ru k Id ) ĊĠĠĠĠĠĠĠ Ġreturn ĠT il gang sk ont roll sf ags ystem . f ra F ags ystem ( f ags ak Repository . findById OrThrow ( be handling . f ags ak Id ). f ags ystem ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate ( f ags ystem : ĠT il gang sk ont roll sf ags ystem , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbru ker Rol le Og F ags ystem st il gang : ĠIn n log getB ru k ert il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le : ĠBe handler rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperson er I Be handling en : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġn Ã¥r Ġbe handler Ġhar Ġsystem Ġtil gang , Ġt ren ges Ġik ke Ġdet Ġval ider ing ĠpÃ¥ Ġf ags ystem Ġeller Ġrol le ĊĠĠĠĠĠĠĠ Ġif Ġ( br uk er Rol le Og F ags ystem st il gang . til g anger . contains ( Til gang sk ont roll sf ags ystem . SYSTEM _ T IL G ANG )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġn Ã¥r Ġbe handler Ġhar Ġfor val t ning st il gang , Ġb lir Ġroll en Ġbare Ġvalid ert ĊĠĠĠĠĠĠĠ Ġif Ġ( br uk er Rol le Og F ags ystem st il gang . til g anger . contains ( Til gang sk ont roll sf ags ystem . FOR VAL TER _ T IL G ANG )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate For val tings rol le ( br uk er Rol le Og F ags ystem st il gang Ġ= Ġbru ker Rol le Og F ags ystem st il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le Ġ= Ġminimum Be handler Rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling Ġ= Ġhandling ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġs je kk Ġom Ġs aks be handler Ġhar Ġri kt ig Ġgrup pe ĠÃ¥ Ġak sess ere Ġden ne Ġy t else sty pen ĊĠĠĠĠĠĠĠ Ġvalidate F ags ystem ( f ags ystem , Ġbru ker Rol le Og F ags ystem st il gang , Ġhandling ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġs je kk Ġom Ġs aks be handler Ġhar Ġri kt ig Ġrol le ĠÃ¥ Ġak sess ere Ġden ne Ġy t else sty pen ĊĠĠĠĠĠĠĠ Ġvalidate Rol le ( br uk ers rol le Til F ags yst e met Ġ= Ġbru ker Rol le Og F ags ystem st il gang . til g anger . getValue ( f ags ystem ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le Ġ= Ġminimum Be handler Rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling Ġ= Ġhandling ) ĊĊĠĠĠĠĠĠĠ Ġvalidate E gen An s att K ode 6 K ode 7 ( person er I Be handling en Ġ= Ġperson er I Be handling en , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling Ġ= Ġhandling ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate E gen An s att K ode 6 K ode 7 ( person er I Be handling en : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtil g anger Ġ= Ġintegr as jon er Client . s je kk Til gang Til Person er ( person er I Be handling en ) ĊĠĠĠĠĠĠĠ Ġif Ġ( til g anger . any Ġ{ Ġ! it . har Til gang Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠFe il ( message Ġ= Ġ"${ Context Service . h ent S aks be handler ()} Ġhar Ġik ke Ġtil gang Ġtil Ġperson Ġi Ġ$ handling ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrontend Fe il meld ing Ġ= Ġ"${ Context Service . h ent S aks be handler ()} Ġ Ġhar Ġik ke Ġtil gang Ġtil Ġperson Ġi Ġ$ handling ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Status Ġ= ĠHttpStatus . FOR BID DEN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate F ags ystem ( f ags ystem : ĠT il gang sk ont roll sf ags ystem , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbru ker Rol le Og F ags ystem st il gang : ĠIn n log getB ru k ert il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! br uk er Rol le Og F ags ystem st il gang . til g anger . contains ( f ags ystem )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠFe il ( message Ġ= Ġ"${ Context Service . h ent S aks be handler ()} Ġhar Ġik ke Ġtil gang Ġtil Ġ$ handling ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrontend Fe il meld ing Ġ= Ġ"${ Context Service . h ent S aks be handler ()} Ġ Ġhar Ġik ke Ġtil gang Ġtil Ġ$ handling ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Status Ġ= ĠHttpStatus . FOR BID DEN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Rol le ( br uk ers rol le Til F ags yst e met : ĠBe handler rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le : ĠBe handler rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( minimum Be handler Rol le Ġ== ĠBe handler rol le . FOR VAL TER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠFe il ( message Ġ= Ġ"${ Context Service . h ent S aks be handler ()} Ġmed Ġrol le Ġ$ br uk ers rol le Til F ags yst e met Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" har Ġik ke Ġtil gang Ġtil ĠÃ¥ Ġk alle Ġfor val t ning st jen este Ġ$ handling . ĠK re ver ĠFOR VAL TER .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrontend Fe il meld ing Ġ= Ġ" Du Ġhar Ġik ke Ġtil gang Ġtil ĠÃ¥ Ġ$ handling .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Status Ġ= ĠHttpStatus . FOR BID DEN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( minimum Be handler Rol le . n iv Ã¥ Ġ> Ġbru kers rol le Til F ags yst e met . n iv Ã¥ ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠFe il ( message Ġ= Ġ"${ Context Service . h ent S aks be handler ()} Ġmed Ġrol le Ġ$ br uk ers rol le Til F ags yst e met Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" har Ġik ke Ġtil gang Ġtil ĠÃ¥ Ġ$ handling . ĠK re ver Ġ$ minimum Be handler Rol le .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrontend Fe il meld ing Ġ= Ġ" Du Ġhar Ġik ke Ġtil gang Ġtil ĠÃ¥ Ġ$ handling .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Status Ġ= ĠHttpStatus . FOR BID DEN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate For val tings rol le ( br uk er Rol le Og F ags ystem st il gang : ĠIn n log getB ru k ert il gang , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le : ĠBe handler rol le , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandling : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtil g anger Ġ= Ġbru ker Rol le Og F ags ystem st il gang . til g anger ĊĠĠĠĠĠĠĠ Ġ// ĠFor val ter Ġkan Ġkun Ġk alle Ġfor val t ning st jen est ene Ġog Ġt jen est ene Ġsom Ġkan Ġkal les Ġav ĠVe ile der ĊĠĠĠĠĠĠĠ Ġif Ġ( minimum Be handler Rol le . n iv Ã¥ Ġ> ĠBe handler rol le . FOR VAL TER . n iv Ã¥ Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtil g anger . all Ġ{ Ġit . value Ġ== ĠBe handler rol le . FOR VAL TER Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠFe il ( message Ġ= Ġ"${ Context Service . h ent S aks be handler ()} Ġmed Ġrol le ĠFOR VAL TER Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" har Ġik ke Ġtil gang Ġtil ĠÃ¥ Ġ$ handling . ĠK re ver Ġ$ minimum Be handler Rol le .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrontend Fe il meld ing Ġ= Ġ" Du Ġhar Ġik ke Ġtil gang Ġtil ĠÃ¥ Ġ$ handling .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Status Ġ= ĠHttpStatus . FOR BID DEN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġk ast Til gang ss je kk Exception ( handling : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfe il meld ing : ĠString Ġ= Ġ"$ handling Ġkan Ġik ke Ġval ider es Ġfor Ġtil gang ss je kk . Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Det Ġfin nes Ġik ke Ġen Ġav Ġde ĠpÃ¥ k rev de Ġparame tern e Ġi Ġrequest " ĊĠĠĠĠĠĠĠ Ġthrow ĠFe il ( message Ġ= Ġfe il meld ing , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrontend Fe il meld ing Ġ= Ġfe il meld ing , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Status Ġ= ĠHttpStatus . BAD _ REQUEST ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbest em Be handler Rol le For Utf Ã¸ r Fat te V ed tak St eg ( request Body : ĠAny , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Be handler Rol le : ĠBe handler rol le ): ĠBe handler rol le Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠBe handler rol le Ġb lir Ġend ret Ġtil ĠBes l utter Ġkun Ġn Ã¥r ĠF at te V ed tak Ġst eg Ġutf Ã¸ res ĊĠĠĠĠĠĠĠ Ġif Ġ( request Body Ġis ĠBe hand lings st eg Fat te V ed t aks st eg Dto ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBe handler rol le . B ES LUT TER ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġminimum Be handler Rol le ĊĠĠĠ Ġ} Ċ Ċ } Ċ