@@ -125,29 +125,61 @@ pub trait ContextItineraryExt: PluginContext + ContextRandomExt {
125125 BelongsTo ( person_id) ,
126126 itinerary_use,
127127 Ranking ( ranking) ,
128- Activity ( true )
129- HomeItinerary {
128+ Activity ( true ) ) ) . unwrap ( ) ;
129+ if let Some ( home_ratio) = home_ratio {
130+ context. set_property :: < Itinerary , HomeItinerary > ( modified_itinerary, HomeItinerary {
130131 home_id : home_id. 0 ,
131- ratio : home_ratio,
132- } ,
133- SchoolItinerary {
134- school_id : school_id. 0 ,
135- ratio : school_ratio,
136- } ,
137- WorkplaceItinerary {
132+ ratio : Some ( home_ratio) ,
133+ } ) ;
134+ } else {
135+ context. set_property :: < Itinerary , HomeItinerary > ( modified_itinerary, HomeItinerary {
136+ home_id : None ,
137+ ratio : None ,
138+ } ) ;
139+ }
140+ if let Some ( workplace_ratio) = workplace_ratio {
141+ context. set_property :: < Itinerary , WorkplaceItinerary > ( modified_itinerary, WorkplaceItinerary {
138142 workplace_id : workplace_id. 0 ,
139- ratio : workplace_ratio,
140- } ,
141- CensusTractItinerary {
143+ ratio : Some ( workplace_ratio) ,
144+ } ) ;
145+ } else {
146+ context. set_property :: < Itinerary , WorkplaceItinerary > ( modified_itinerary, WorkplaceItinerary {
147+ workplace_id : None ,
148+ ratio : None ,
149+ } ) ;
150+ }
151+ if let Some ( school_ratio) = school_ratio {
152+ context. set_property :: < Itinerary , SchoolItinerary > ( modified_itinerary, SchoolItinerary {
153+ school_id : school_id. 0 ,
154+ ratio : Some ( school_ratio) ,
155+ } ) ;
156+ } else {
157+ context. set_property :: < Itinerary , SchoolItinerary > ( modified_itinerary, SchoolItinerary {
158+ school_id : None ,
159+ ratio : None ,
160+ } ) ;
161+ }
162+ if let Some ( census_tract_ratio) = census_tract_ratio {
163+ context. set_property :: < Itinerary , CensusTractItinerary > ( modified_itinerary, CensusTractItinerary {
142164 census_tract_id : census_tract_id. 0 ,
143- ratio : census_tract_ratio,
144- } ,
145- ) )
146- . unwrap ( ) ;
147- context. normalize_itinerary_ratios ( person_id) ;
165+ ratio : Some ( census_tract_ratio) ,
166+ } ) ;
167+ } else {
168+ context. set_property :: < Itinerary , CensusTractItinerary > ( modified_itinerary, CensusTractItinerary {
169+ census_tract_id : None ,
170+ ratio : None ,
171+ } ) ;
172+ }
173+ context. normalize_itinerary_ratios ( person_id) ;
148174 }
175+
149176 if event. previous == entity_property {
150-
177+ let active_itineraries = context. query_result_iterator :: < Itinerary , _ > ( ( BelongsTo ( event. entity_id ) , Activity ( true ) ) ) . collect :: < Vec < _ > > ( ) ;
178+ for itinerary in active_itineraries {
179+ context. set_property :: < Itinerary , Activity > ( itinerary, Activity ( false ) ) ;
180+ }
181+ let default_itinerary = context. query_result_iterator :: < Itinerary , _ > ( ( BelongsTo ( event. entity_id ) , ItineraryUse :: Default , ) ) . next ( ) . unwrap ( ) ;
182+ context. set_property :: < Itinerary , Activity > ( default_itinerary, Activity ( true ) ) ;
151183 }
152184 } ,
153185 ) ;
0 commit comments