package Ġit . mail . service . admin Ċ Ċ import Ġit . mail . domain . Mail MessageType Ċ import Ġit . mail . domain . Mail MessageType State . DELETED Ċ import Ġit . mail . domain . Mail MessageType State . FORCE _ DELETED Ċ import Ġit . mail . domain . Slice Ċ import Ġit . mail . persistence . api . Mail MessageType Repository Ċ import Ġit . mail . service . NotFoundException Ċ import Ġit . mail . service . ValidationException Ċ import Ġmu . K Logging Ċ Ċ class ĠMail MessageType Service ( ĊĠĠĠ Ġprivate Ġval Ġmail MessageType Repository : ĠMail MessageType Repository , Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠK Logging () ĊĊĠĠĠ Ġsuspend Ġfun Ġget ById ( id : ĠLong ): ĠMail MessageType Ġ= ĊĠĠĠĠĠĠĠ Ġmail MessageType Repository . findById ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNotFound Exception (" Mail MessageType Ġwith Ġid : Ġ$ id Ġis Ġnot Ġfound ") ĊĊĠĠĠ Ġsuspend Ġfun ĠgetAll S liced ( page : ĠInt , Ġsize : ĠInt ): ĠSlice < Mail MessageType > Ġ= ĊĠĠĠĠĠĠĠ Ġmail MessageType Repository . findAll S liced ( page , Ġsize ) Ċ Ċ // ĠĠĠ Ġ@ Transactional Ġ// Ġtodo Ġtransaction Ġdoesn 't Ġwork ĊĠĠĠ Ġsuspend Ġfun Ġcreate New Mail Type ( name : ĠString , Ġdescription : ĠString ?, Ġmax Retries Count : ĠInt ?): ĠMail MessageType Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mail MessageType Repository . exists One WithName ( name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠValidation Exception (" Mail MessageType Ġname : Ġ$ name Ġis Ġnot Ġunique ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmail Type Ġ= ĠMail MessageType ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Retries Count Ġ= Ġmax Retries Count , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġmail MessageType Repository . create ( mail Type ) ĊĊĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Saved ĠMail MessageType : Ġ${ mail Type . id }" Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmail Type ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġupdate Mail Type ( id : ĠLong , Ġdescription : ĠString ?, Ġmax Retries Count : ĠInt ?): ĠMail MessageType Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupdated Rows Ġ= Ġmail MessageType Repository . update Description And Max Retries Count ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Retries Count Ġ= Ġmax Retries Count ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( updated Rows Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNotFound Exception (" Mail MessageType Ġwith Ġid : Ġ$ id Ġis Ġnot Ġfound ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Updated ĠMail MessageType : Ġ$ id " Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġget ById ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġdelete Mail Type ( id : ĠLong , Ġforce : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠnewState Ġ= Ġif Ġ( force ) Ġ{ ĠFOR CE _ DELETED Ġ} Ġelse Ġ{ ĠDE LETED Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( mail MessageType Repository . update State ( id , ĠnewState ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNotFound Exception (" Mail MessageType Ġwith Ġid : Ġ$ id Ġis Ġnot Ġfound ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( force ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Mail MessageType : Ġ$ id Ġis Ġmarked Ġas Ġforce Ġdeleted " Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Mail MessageType : Ġ$ id Ġis Ġmarked Ġas Ġdeleted " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ