Skip to content

Commit a9e102c

Browse files
committed
Add fields to WA member import
1 parent bddbbfb commit a9e102c

File tree

1 file changed

+118
-26
lines changed

1 file changed

+118
-26
lines changed

MilwaukeeMakerspaceApi/Jobs/PullMembersFromWildApricot.cs

Lines changed: 118 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)