public Guid?CreatePrecisionSampleUser(RouterContact routerContact) { GloshareDbContext db = new GloshareDbContext(); var existingPS = db.RouterContactPrecisionSamples.FirstOrDefault(p => p.RouterContactId == routerContact.RouterContactId); if (existingPS != null) { return(existingPS.UserGuid); } var ps = new PrecisionSample(); var leads = db.OptInLeads.Where(o => o.EmailAddress == routerContact.Email).ToList(); FormUrlEncodedContent content = null; if (leads.Any()) { OptInLead lead = leads.First(); if (leads.Count == 2) { lead = MergeLeads(leads); } content = ps.CreatePostContent(routerContact, lead); } //use the mobile lead over the opt in lead if both emails exist var mobileleads = db.MobilelLeads.Where(m => m.EmailAddress == routerContact.Email); if (mobileleads.Any()) { content = ps.CreatePostContent(routerContact, mobileleads.First()); } bool error = false; string userguid = ps.CreateUser(routerContact, content, out error); if (error) { OnProgress(new ProgressEventArgs(new string('=', 50))); OnProgress(new ProgressEventArgs($"Failed Creating Precision Sample User:{routerContact.Email}{Environment.NewLine}")); //contains raw message on fail OnProgress(new ProgressEventArgs($"{userguid}")); return(null); } RouterContactPrecisionSample rcps = new RouterContactPrecisionSample { UserGuid = Guid.Parse(userguid), RouterContactId = routerContact.RouterContactId }; db.RouterContactPrecisionSamples.Add(rcps); db.SaveChanges(); return(Guid.Parse(userguid)); }