package Ġio . ple o . ant ae us . core . services . scheduler Ċ Ċ import Ġio . ple o . ant ae us . core . services . Billing Service Ċ import Ġmu . Kotlin Logging Ċ import Ġorg . quartz .* Ċ import Ġorg . quartz . impl . Std Scheduler Factory Ċ Ċ class ĠBilling Scheduler ( private Ġval Ġbilling Service : ĠBilling Service ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġscheduler : ĠScheduler Ġ= ĠStd Scheduler Factory . getDefault Scheduler () ĊĠĠĠ Ġprivate Ġval Ġcron Ġ= ĠSystem . getenv (). get OrDefault (" B ILL ING _ SCHEDUL ER _ CR ON ", Ġ" 0 Ġ 0 Ġ 8 Ġ 1 Ġ 1 / 1 Ġ? Ġ* ") ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġscheduler . context [" billing Service "] Ġ= Ġbilling Service ĊĠĠĠĠĠĠĠ Ġscheduler . start () ĊĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Scheduler Ġstarted ..." Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġjob Ġand Ġtrigger Ġand Ġschedule Ġit Ġto Ġrun Ġon Ġthe Ġfirst Ġday Ġof Ġeach Ġmonth Ġat Ġ 8 am . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġschedule () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjob Detail Ġ= Ġcreate Job Detail () ĊĠĠĠĠĠĠĠ Ġjob Detail . job DataMap [" billing Service "] Ġ= Ġbilling Service ĊĊĠĠĠĠĠĠĠ Ġval Ġcron Trigger Ġ= Ġcreate Trigger () ĊĊĠĠĠĠĠĠĠ Ġscheduler . schedule Job ( job Detail , Ġcron Trigger ) ĊĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" In voices Ġjob Ġscheduled ." Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Job Detail (): ĠJob Detail Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJob Builder . new Job () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. of Type ( Billing Job :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Identity (" invoices ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Trigger (): ĠTrigger Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTrigger Builder . new Trigger () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Schedule ( Cron Schedule Builder . cron Schedule ( cron )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} Ċ }