@@ -73,23 +73,35 @@ public async Task ExecuteAsync(CancellationToken cancellationToken)
7373 for ( int count = 0 ; count < contacts . Count ; count += 1 ) {
7474 var contact = contacts [ count ] ;
7575
76- // For Keys
77- string key1 = null ;
78- string key2 = null ;
76+ var id = contact . Id ?? - 1 ;
77+ var fullname = $ "{ contact . FirstName } { contact . LastName } ";
7978 string type = null ;
79+ var primaryFamily = 0 ;
80+ var apricotAdmin = contact . IsAccountAdministrator ?? false ;
8081 DateTime ? joined = null ;
81- DateTime ? renewal = null ;
82- var id = contact . Id ?? - 1 ;
82+ DateTime ? expires = null ;
83+ var email = contact . Email ?? "" ;
84+ var phone = "" ;
85+ var address = "" ;
86+ var city = "" ;
87+ var zip = "" ;
88+ var lastPayPal = "" ;
89+ var mmsStorage = "" ;
90+ var mvStorage = "" ;
91+ var areaFunding1 = "" ;
92+ var areaFunding2 = "" ;
93+ var areaFunding3 = "" ;
94+ var areaFunding4 = "" ;
95+ var areaFunding5 = "" ;
96+
97+ string key1 = null ;
98+ string key2 = null ;
8399 var key3 = $ "{ id } #";
84- var fullname = $ "{ contact . FirstName } { contact . LastName } ";
85- var apricot_admin = contact . IsAccountAdministrator ?? false ;
86100
87- // For Funding
88101 var active = false ;
89102 var specialPurpose = false ;
90103 var forceExpire = false ;
91104 var amount = 0m ;
92- var memberFunding = new List < string > ( ) ;
93105
94106 // If a member is currently pending renewal (during last 10 days of month, for instance), we count them as active
95107 switch ( contact . Status ?? ContactStatus . Lapsed ) {
@@ -114,6 +126,18 @@ public async Task ExecuteAsync(CancellationToken cancellationToken)
114126
115127 foreach ( var field in contact . FieldValues ) {
116128 switch ( field . FieldName ) {
129+ case "Phone" :
130+ phone = field . Value ? . ToString ( ) . ToUpperInvariant ( ) . Trim ( ) ;
131+ break ;
132+ case "Address" :
133+ address = field . Value ? . ToString ( ) . Trim ( ) ;
134+ break ;
135+ case "City" :
136+ city = field . Value ? . ToString ( ) . Trim ( ) ;
137+ break ;
138+ case "Zip Code" :
139+ zip = field . Value ? . ToString ( ) . Trim ( ) ;
140+ break ;
117141 case "Key Fob Code" :
118142 key1 = field . Value ? . ToString ( ) . ToUpperInvariant ( ) . Trim ( ) ;
119143 break ;
@@ -124,11 +148,11 @@ public async Task ExecuteAsync(CancellationToken cancellationToken)
124148 joined = DateTime . Parse ( field . Value ? . ToString ( ) ?? "2000-01-01" ) ;
125149 break ;
126150 case "Renewal due" :
127- renewal = DateTime . Parse ( field . Value ? . ToString ( ) ?? "2000-01-01" ) ;
151+ expires = DateTime . Parse ( field . Value ? . ToString ( ) ?? "2000-01-01" ) ;
128152
129153 var gracePeriod = DateTime . Now . AddDays ( - 7 ) ;
130154
131- if ( renewal < gracePeriod )
155+ if ( expires < gracePeriod )
132156 active = false ;
133157 break ;
134158 case "Member role" :
@@ -158,22 +182,94 @@ public async Task ExecuteAsync(CancellationToken cancellationToken)
158182 }
159183 break ;
160184 case "$1.50/Month Area #1" :
185+ if ( field . Value != null ) {
186+ var fieldContents = JsonDocument . Parse ( field . Value . ToString ( ) ) . RootElement ;
187+
188+ areaFunding1 = fieldContents . GetProperty ( "Label" ) . GetString ( ) ;
189+ }
190+ break ;
161191 case "$1.50/Month Area #2" :
192+ if ( field . Value != null ) {
193+ var fieldContents = JsonDocument . Parse ( field . Value . ToString ( ) ) . RootElement ;
194+
195+ areaFunding2 = fieldContents . GetProperty ( "Label" ) . GetString ( ) ;
196+ }
197+ break ;
162198 case "$1.50/Month Area #3" :
199+ if ( field . Value != null ) {
200+ var fieldContents = JsonDocument . Parse ( field . Value . ToString ( ) ) . RootElement ;
201+
202+ areaFunding3 = fieldContents . GetProperty ( "Label" ) . GetString ( ) ;
203+ }
204+ break ;
163205 case "$1.50/Month Area #4" :
206+ if ( field . Value != null ) {
207+ var fieldContents = JsonDocument . Parse ( field . Value . ToString ( ) ) . RootElement ;
208+
209+ areaFunding4 = fieldContents . GetProperty ( "Label" ) . GetString ( ) ;
210+ }
211+ break ;
164212 case "$1.50/Month Area #5" :
165213 if ( field . Value != null ) {
166214 var fieldContents = JsonDocument . Parse ( field . Value . ToString ( ) ) . RootElement ;
167215
168- memberFunding . Add ( fieldContents . GetProperty ( "Label" ) . GetString ( ) ) ;
216+ areaFunding5 = fieldContents . GetProperty ( "Label" ) . GetString ( ) ;
217+ }
218+ break ;
219+ case "Primary Workspace Location Id" :
220+ case "Lenox Add-on Paid Workspace Location Id" :
221+ case "Lenox Add-on Paid, Short Term Project Workspace - East Room Floor Space ID" :
222+ if ( field . Value != null ) {
223+ var fieldContents = JsonDocument . Parse ( field . Value . ToString ( ) ) . RootElement ;
224+ string storageId = null ;
225+
226+ if ( fieldContents . ValueKind == JsonValueKind . Array ) {
227+ if ( fieldContents . GetArrayLength ( ) > 0 )
228+ storageId = fieldContents . GetString ( ) . Trim ( ) ;
229+ }
230+ else
231+ storageId = fieldContents . GetProperty ( "Label" ) . GetString ( ) . Trim ( ) ;
232+
233+ if ( storageId != null ) {
234+ if ( mmsStorage . Length > 0 )
235+ mmsStorage += "\n " ;
236+
237+ mmsStorage += "Lenox: " + storageId . Trim ( ) ;
238+ }
239+ }
240+ break ;
241+ case "Norwich Shelf Id" :
242+ case "Norwich Pallet Location Id #1" :
243+ case "Norwich Pallet Location Id #2" :
244+ if ( field . Value != null ) {
245+ if ( mmsStorage . Length > 0 )
246+ mmsStorage += "\n " ;
247+
248+ var fieldContents = JsonDocument . Parse ( field . Value . ToString ( ) ) . RootElement ;
249+ mmsStorage += "Norwich: " + fieldContents . GetProperty ( "Label" ) . GetString ( ) . Trim ( ) ;
250+ }
251+ break ;
252+ case "Member Workspace Notes" :
253+ var storageNotes = field . Value ? . ToString ( ) . Trim ( ) ?? "" ;
254+
255+ if ( storageNotes . Length > 0 ) {
256+ if ( mmsStorage . Length > 0 )
257+ mmsStorage += "\n " ;
258+
259+ mmsStorage += field . Value ? . ToString ( ) . Trim ( ) ;
169260 }
170261 break ;
262+ case "Makers Village Storage Description" :
263+ mvStorage = field . Value ? . ToString ( ) . Trim ( ) ?? "" ;
264+ break ;
171265 }
172266 }
173267
268+ address = $ "{ address } \n { city } WI { zip } ";
269+
174270 if ( specialPurpose ) {
175271 // Always set special purpose accounts to expire one month into the future.
176- renewal = ( new DateTime ( DateTime . Now . Year , DateTime . Now . Month , DateTime . Now . Day ) ) . AddMonths ( 1 ) ;
272+ expires = ( new DateTime ( DateTime . Now . Year , DateTime . Now . Month , DateTime . Now . Day ) ) . AddMonths ( 1 ) ;
177273 }
178274
179275 // Update Database with current information about member.
@@ -225,11 +321,11 @@ REPLACE INTO
225321
226322 var sql5 = @"
227323 REPLACE INTO
228- member(member_id, name, type, apricot_admin, joined, expires, updated)
324+ member(member_id, name, type, primary_family, apricot_admin, joined, expires, email, phone, address, last_paypal, mms_storage, mv_storage, area_funding_1, area_funding_2, area_funding_3, area_funding_4, area_funding_5 , updated)
229325 VALUES
230- (@0, @1, @2, @3, @4, @5, NOW()); " ;
326+ (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, NOW()); " ;
231327
232- accessDb . Execute ( sql5 , id , fullname , type , apricot_admin , joined , renewal ) ;
328+ accessDb . Execute ( sql5 , id , fullname , type , primaryFamily , apricotAdmin , joined , expires , email , phone , address , lastPayPal , mmsStorage , mvStorage , areaFunding1 , areaFunding2 , areaFunding3 , areaFunding4 , areaFunding5 ) ;
233329 }
234330 else
235331 Log . Debug ( $ "Excluding '{ fullname } ' from database.") ;
@@ -250,17 +346,13 @@ REPLACE INTO
250346 Log . Error ( $ "Unknown member type! - '{ fullname } ' - '{ type } '") ;
251347 }
252348
253- var fundCount = memberFunding . Count ;
254-
255- if ( fundCount < 5 )
256- Log . Error ( $ "Recorded too few '{ fundCount } ' Area Funding selections for '{ fullname } '") ;
257- else if ( fundCount > 5 )
258- Log . Fatal ( $ "Recorded too many '{ fundCount } ' Area Funding selections for '{ fullname } '") ;
349+ TabulateFunds ( totalFunding , areaFunding1 , amount ) ;
350+ TabulateFunds ( totalFunding , areaFunding2 , amount ) ;
351+ TabulateFunds ( totalFunding , areaFunding3 , amount ) ;
352+ TabulateFunds ( totalFunding , areaFunding4 , amount ) ;
353+ TabulateFunds ( totalFunding , areaFunding5 , amount ) ;
259354
260- foreach ( var area in memberFunding ) {
261- TabulateFunds ( totalFunding , area , amount ) ;
262- totalFunding . total += amount ;
263- }
355+ totalFunding . total += amount * 5 ;
264356 }
265357 }
266358 catch ( Exception ex ) {
0 commit comments