package Ġdev . sas ikan th . pin nit . data Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġandroidx . room . Type Converter Ċ import Ġdev . sas ikan th . pin nit . utils . User Clock Ċ import Ġkotlinx . android . parcel . Parcel ize Ċ import Ġjava . time . Duration Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Local Time Ċ Ċ @ Parcel ize Ċ data Ġclass ĠSchedule ( ĊĠ Ġval Ġschedule Date : ĠLocalDate ?, ĊĠ Ġval Ġschedule Time : ĠLocal Time ?, ĊĠ Ġval Ġschedule Type : ĠSchedule Type ? Ċ ) Ġ: ĠParcel able Ġ{ ĊĊĠ Ġfun Ġremove Schedule Repeat (): ĠSchedule Ġ{ ĊĠĠĠ Ġreturn Ġcopy ( schedule Type Ġ= Ġnull ) ĊĠ Ġ} ĊĊĠ Ġfun Ġadd Schedule Repeat (): ĠSchedule Ġ{ ĊĠĠĠ Ġreturn Ġcopy ( schedule Type Ġ= ĠSchedule Type . Daily ) ĊĠ Ġ} ĊĊĠ Ġfun Ġschedule Date Changed ( date : ĠLocalDate ): ĠSchedule Ġ{ ĊĠĠĠ Ġreturn Ġcopy ( schedule Date Ġ= Ġdate ) ĊĠ Ġ} ĊĊĠ Ġfun Ġschedule Time Changed ( time : ĠLocal Time ?): ĠSchedule Ġ{ ĊĠĠĠ Ġreturn Ġcopy ( schedule Time Ġ= Ġtime ) ĊĠ Ġ} ĊĊĠ Ġfun Ġschedule Type Changed ( schedule Type : ĠSchedule Type ): ĠSchedule Ġ{ ĊĠĠĠ Ġreturn Ġcopy ( schedule Type Ġ= Ġschedule Type ) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġfun Ġdefault ( user Clock : ĠUser Clock ): ĠSchedule Ġ{ ĊĠĠĠĠĠ Ġval Ġuser DateTime Ġ= ĠLocalDateTime . now ( user Clock ) ĊĠĠĠĠĠĠĠ Ġ. plus ( Duration . of Minutes ( 1 0 )) ĊĊĠĠĠĠĠ Ġreturn ĠSchedule ( ĊĠĠĠĠĠĠĠ Ġschedule Date Ġ= Ġuser DateTime . to LocalDate (), ĊĠĠĠĠĠĠĠ Ġschedule Time Ġ= Ġuser DateTime . to Local Time (), ĊĠĠĠĠĠĠĠ Ġschedule Type Ġ= ĠSchedule Type . Daily ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠSchedule Type Ġ{ ĊĠ ĠDaily , ĠWeek ly , ĠMonth ly Ċ } Ċ Ċ class ĠSchedule Type Converter Ġ{ ĊĊĠ Ġ@ Type Converter ĊĠ Ġfun Ġto Schedule Type ( value : ĠString ?): ĠSchedule Type ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġenum ValueOf < Schedule Type >( value ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Type Converter ĊĠ Ġfun Ġfrom Schedule Type ( schedule Type : ĠSchedule Type ?): ĠString ? Ġ{ ĊĠĠĠ Ġreturn Ġschedule Type ?. toString () ĊĠ Ġ} Ċ } Ċ