import Ġmodel . Cur se Ċ import Ġmodel . Shipment Ċ import Ġmodel . Employee Ċ import Ġmodel . Car Part Packages Ċ import Ġmodel . Car Model ĊĊ Ċ sealed Ġclass ĠFactory Domain Event Ċ Ċ data Ġclass ĠCur se Word Ut ter ed ( val Ġcur se : ĠCur se ) Ġ: ĠFactory Domain Event () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= ĊĠĠĠĠĠĠĠ Ġ"' ${ cur se . the Word }' Ġwas Ġheard Ġwithin Ġthe Ġwalls . ĠIt Ġmeant : Ġ'${ cur se . mean ing } '" Ċ } Ċ Ċ data Ġclass ĠShip ment Transfer red To Cargo Bay ( val Ġship ment : ĠShip ment ) Ġ: ĠFactory Domain Event () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= ĊĠĠĠĠĠĠĠ Ġ" Shipment Ġ'$ shipment ' Ġtransferred Ġto Ġcargo Ġb ay : Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġship ment . car Part Packages . map Ġ{ Ġ"${ it . part . name } Ġ${ it . quantity } Ġp cs " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reduce Ġ{ Ġacc , Ġs Ġ-> Ġ"$ acc , Ġ$ s " Ġ} Ċ } Ċ Ċ data Ġclass ĠShip ment Un packed In Cargo Bay ( ĊĠĠĠ Ġval Ġemployee : ĠEmployee , ĊĠĠĠ Ġval Ġcar Part Packages : ĠCar Part Packages Ċ ) Ġ: ĠFactory Domain Event () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ"$ employee Ġunpack ed Ġ" Ġ+ Ġcar Part Packages ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ"${ it . part } Ġ${ it . quantity } Ġp cs " Ġ} ĊĠĠĠĠĠĠĠ Ġ. reduce Ġ{ Ġacc , Ġs Ġ-> Ġ"$ acc , Ġ$ s " Ġ} Ċ } Ċ Ċ data Ġclass ĠEmployee Assigned To Factory ( val Ġemployee : ĠEmployee ) Ġ: ĠFactory Domain Event () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= ĊĠĠĠĠĠĠĠ Ġ" new Ġworker Ġjoins Ġour Ġforces : Ġ'$ employee '" Ċ } Ċ Ċ data Ġclass ĠCar Pro duced ( val Ġemployee : ĠEmployee , Ġval Ġcar Model : ĠCar Model , Ġval Ġcar Part Packages : ĠCar Part Packages ) Ġ: ĊĠĠĠ ĠFactory Domain Event () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= ĊĠĠĠĠĠĠĠ Ġ" Car Ġ$ car Model Ġbuilt Ġby Ġ$ employee Ġusing Ġ" Ġ+ Ġcar Part Packages . map Ġ{ Ġ"${ it . part } Ġ${ it . quantity } Ġp cs " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. reduce Ġ{ Ġacc , Ġs Ġ-> Ġ"$ acc , Ġ$ s " Ġ} Ċ } Ċ