Esempio n. 1
0
        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));
        }