internal void SetRecRegs(Person p, dynamic a) { var nq = (from name in Names.Keys where Standardrecregnames.Contains(name, StringComparer.OrdinalIgnoreCase) select name).ToList(); foreach (var name in nq) { var rr = p.SetRecReg(); string value = GetStringTrimmed(a.GetValue(name)); switch (name) { case "Mother": rr.Mname = value; break; case "Father": rr.Fname = value; break; case "EmContact": rr.Emcontact = value; break; case "EmPhone": rr.Emphone = value; break; case "Grade": p.Grade = value.ToInt2(); break; case "School": p.SchoolOther = value; break; case "Doctor": rr.Doctor = value; break; case "DocPhone": rr.Docphone = value; break; case "Insurance": rr.Insurance = value; break; case "Policy": rr.Policy = value; break; case "Allergies": rr.MedicalDescription = value; break; } } }
internal void UploadPeople(UploadPeopleRun rt, ExcelWorksheet ws) { var db = DbUtil.Create(Host); Extravaluenames = (from name in Names where !Standardnames.Contains(name.Key, StringComparer.OrdinalIgnoreCase) where !Standardrecregnames.Contains(name.Key) select name.Key).ToList(); Recregnames = (from name in Names where Standardrecregnames.Contains(name.Key) select name.Key).ToList(); if (Names.ContainsKey("Campus")) { var campuslist = (from li in Datalist group li by((string)li.Campus) into campus where campus.Key.HasValue() select campus.Key).ToList(); var dbc = from c in campuslist join cp in db.Campus on c equals cp.Description into j from cp in j.DefaultIfEmpty() select new { cp, c }; var clist = dbc.ToList(); if (clist.Count > 0) { var maxcampusid = 0; if (db.Campus.Any()) { maxcampusid = db.Campus.Max(c => c.Id); } foreach (var i in clist) { if (i.cp == null) { var cp = new Campu { Description = i.c, Id = ++maxcampusid }; if (!Testing) { db.Campus.InsertOnSubmit(cp); } } } } } if (!Testing) { db.SubmitChanges(); } Campuses = db.Campus.ToDictionary(cp => cp.Description, cp => cp.Id); var q = (from li in Datalist group li by li.FamilyId into fam select fam).ToList(); rt.Count = q.Sum(ff => ff.Count()); rt.Description = $"Uploading People {(Testing ? "in testing mode" : "for real")}"; Db2.SubmitChanges(); foreach (var fam in q) { var prevpid = 0; foreach (var a in fam) { if (!Testing) { db.SubmitChanges(); db.Dispose(); db = DbUtil.Create(Host); } Family f = null; var potentialdup = false; int? pid = FindRecord(db, a, ref potentialdup); if (pid == -1) // no data: no first or last name { continue; } var p = pid.HasValue ? UpdateRecord(db, pid.Value, a) : NewRecord(db, ref f, a, prevpid, potentialdup); prevpid = p.PeopleId; if (Recregnames.Any()) { SetRecRegs(p, a); } if (Extravaluenames.Any()) { ProcessExtraValues(db, p, a); } rt.Processed++; Db2.SubmitChanges(); } if (!Testing) { db.SubmitChanges(); } } }