package Ġcom . pms . plac eman age ments ystem server side . util . json . parse . scheduling Ċ Ċ import Ġcom . fasterxml . jackson . core . Json Parser Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Context Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġcom . fasterxml . jackson . databind . de ser . std . Std Deserializer Ċ import Ġcom . pms . plac eman age ments ystem server side . dto . Space Item Dto Ċ import Ġcom . pms . plac eman age ments ystem server side . extensions . deserialize To DayOfWeek Enum Ċ import Ġcom . pms . plac eman age ments ystem server side . models . scheduling . Scheduling Model Ċ import Ġcom . pms . plac eman age ments ystem server side . models . scheduling . date . Scheduling Date Model Ċ import Ġcom . pms . plac eman age ments ystem server side . models . space . Space Model Ċ import Ġcom . pms . plac eman age ments ystem server side . service . clazz . Clazz Service Ċ import Ġcom . pms . plac eman age ments ystem server side . service . space . Space Service Ċ import Ġcom . pms . plac eman age ments ystem server side . service . user . UserService Ċ import Ġcom . pms . plac eman age ments ystem server side . util . json . parse . space . Space Item Json Parser Ċ import Ġorg . joda . time . format . DateTime Format Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ Ċ class ĠS cheduling Deserialize Ġ: ĠStd Deserializer < Scheduling Model > Ġ{ ĊĊĠĠĠ Ġconstructor ( scheduling Model : ĠClass < Scheduling Model > ?) Ġ: Ġsuper ( scheduling Model ) ĊĠĠĠ Ġconstructor () Ġ: Ġthis ( null ) ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠuserService : ĠUserService ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclazz Service : ĠCl azz Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġspace Service : ĠSpace Service ĊĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( json Parser : ĠJson Parser , Ġctxt : ĠDeserial ization Context ): ĠS cheduling Model Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Node Ġ= Ġjson Parser . codec . read Tree < JsonNode >( json Parser ) ĊĠĠĠĠĠĠĠ Ġval Ġusers Ġ= ĠuserService . read () ĊĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġjson Node . get (" id "). as Long () Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġstatus String Ġ= Ġjson Node . get (" status "). as Text () Ċ // ĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status String . isNull OrEmpty ()) ĠS cheduling Status Enum . UNKNOWN Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠS cheduling Status Enum . valueOf ( status String ) ĊĊĠĠĠĠĠĠĠ Ġval Ġscheduler Id Ġ= Ġjson Node . get (" scheduler "). get (" id "). as Long ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġscheduler Ġ= Ġusers . find Ġ{ Ġit . id Ġ== Ġscheduler Id Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġit Respons ible Id Ġ= Ġjson Node . get (" it _ respons able "). get (" id "). as Long ( 0 ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġit Respons ible Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Respons ible Id Ġ!= Ġ 0 L ) Ġusers . find Ġ{ Ġit . id Ġ== Ġit Respons ible Id Ġ} !! Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠUser Model ( type Ġ= ĠUser TypeEnum . IT _ SUPPORT ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġit Respons ible Msg Ġ= Ġjson Node . get (" it _ respons ible _ msg "). as Text () ĊĊĠĠĠĠĠĠĠ Ġval Ġclazz Id Ġ= Ġjson Node . get (" classes "). get (" id "). as Long ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= Ġclazz Service . read (). find Last Ġ{ Ġit . id Ġ== Ġclazz Id Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġass istent Id Ġ= Ġjson Node . get ("") Ċ // ĠĠĠĠĠĠĠ Ġval Ġass istent Ġ= Ġusers . find Ġ{ Ġit . id Ġ== Ġid Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġass istent Msg Ġ= Ġjson Node . get ("") ĊĊĠĠĠĠĠĠĠ Ġval Ġprof essor Id Ġ= Ġjson Node . get (" prof essor "). get (" id "). as Long ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġprof essor Ġ= Ġusers . find Ġ{ Ġit . id Ġ== Ġprof essor Id Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠstartTime String Ġ= Ġjson Node . get (" initial time "). as Text () ĊĠĠĠĠĠĠĠ Ġval ĠendTime String Ġ= Ġjson Node . get (" end time "). as Text () ĊĊĠĠĠĠĠĠĠ Ġval Ġtime Format Ġ= ĠDateTime Format . for Pattern (" HH : mm "); ĊĠĠĠĠĠĠĠ Ġval ĠstartTime Ġ= Ġtime Format . parse DateTime ( startTime String ) ĊĠĠĠĠĠĠĠ Ġval ĠendTime Ġ= Ġtime Format . parse DateTime ( endTime String ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfilter Date JsonNode Array Ġ= Ġjson Node . with Array (" filter date ") ĊĠĠĠĠĠĠĠ Ġval ĠstartDate String Ġ= Ġfilter Date JsonNode Array [ 0 ]. as Text () ĊĠĠĠĠĠĠĠ Ġval ĠendDate String Ġ= Ġfilter Date JsonNode Array [ 1 ]. as Text () ĊĊĠĠĠĠĠĠĠ Ġval Ġday OfWeek Enum Ġ= Ġjson Node . get (" week Day "). as Int (). deserialize To DayOfWeek Enum () ĊĊĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠDateTime Format . for Pattern (" yyyy - MM - dd ") ĊĠĠĠĠĠĠĠ Ġval Ġstart DateTime Ġ= ĠdateFormat . parse DateTime ( startDate String ) ĊĠĠĠĠĠĠĠ Ġval Ġend DateTime Ġ= ĠdateFormat . parse DateTime ( endDate String ) ĊĊĠĠĠĠĠĠĠ Ġval Ġscheduling Date Model List Ġ= Ġmutable ListOf < Scheduling Date Model >() ĊĠĠĠĠĠĠĠ Ġvar Ġreferred Day Ġ= Ġstart DateTime ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( referred Day . is Before ( end DateTime )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( referred Day . day OfWeek Ġ== Ġday OfWeek Enum . dateTime Constants ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscheduling Date Model List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS cheduling Date Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Ġ= ĠstartTime String , ĠendTime Ġ= ĠendTime String , Ġdate Ġ= ĠdateFormat . print ( referred Day ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreferred Day Ġ= Ġreferred Day . plus Days ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġspace Id Ġ= Ġjson Node . get (" space "). get (" id "). as Long ( 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġspace Model Found Ġ= ĠSpace Model () ĊĠĠĠĠĠĠĠ Ġvar Ġspace Item Dto Ġ= ĠSpace Item Dto () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( space Id Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspace Model Found Ġ= Ġspace Service . read (). find Ġ{ Ġit . id Ġ== Ġspace Id Ġ} !! ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspace Item Dto Ġ= ĠSpace Item Json Parser (). deserialize ( json Node . get (" space _ item ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠS cheduling Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , Ġscheduling Date Models Ġ= Ġscheduling Date Model List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclazz Ġ= Ġclazz , Ġprof essor Ġ= Ġprof essor , Ġscheduler User Ġ= Ġscheduler , Ġspace Found Ġ= Ġspace Model Found , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Project or Ġ= Ġspace Item Dto . has Project or , ĠnumberOf Ch airs Ġ= Ġspace Item Dto . numberOf Ch airs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Board Ġ= Ġspace Item Dto . has Board , Ġhas Smart Board Ġ= Ġspace Item Dto . has Smart Board , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf P cs Ġ= Ġspace Item Dto . numberOf P cs , Ġspace Type Ġ= Ġspace Item Dto . type ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }