Esempio n. 1
0
        public void sendLoginCode()
        {
            if (Db.People.Any(
                    p => p.EmailAddress == email || p.EmailAddress2 == email ||
                    (p.CellPhone.Length > 0 && p.CellPhone == phone)
                    ))
            {
                var code = createQuickSignInCode(device, instance, key, email, build);

                if (!code.HasValue())
                {
                    results = Results.CommonCodeCreationFailed;
                    return;
                }

                var church = Db.Setting("NameOfChurch", Db.Host);

                if (phone.HasValue())
                {
                    var systemSMSGroup = TwilioHelper.GetSystemSMSGroup(Db);
                    if (TwilioHelper.IsConfigured(Db) && systemSMSGroup?.Count > 0)
                    {
                        var index      = new Random().Next(0, systemSMSGroup.Count);
                        var fromNumber = systemSMSGroup[index];
                        var message    = Db.Setting("MobileQuickSignInCodeSMS", "{code} is your one-time sign in code for {church}");
                        message = message.Replace("{code}", code).Replace("{church}", church);
                        if (!TwilioHelper.SendSMS(Db, phone, fromNumber, message))
                        {
                            Db.LogActivity($"SMS send failed to {phone} from {fromNumber.Number}");
                            results = Results.CommonSMSSendFailed;
                        }
                        else
                        {
                            results = Results.CommonSMSSent;
                        }
                    }
                    else
                    {
                        results = Results.CommonSMSNotConfigured;
                    }
                }
                else
                {
                    List <MailAddress> mailAddresses = new List <MailAddress>();
                    mailAddresses.Add(new MailAddress(email));

                    var message = @"<h3>Here's your one-time mobile sign in code for {church}:</h3><h4 style=""text-align:center;font-family:monospace"">{code}</h4>";
                    var body    = Db.ContentHtml("MobileQuickSignInCodeEmailBody", message);

                    body = body.Replace("{code}", code).Replace("{church}", church);

                    Db.SendEmail(new MailAddress(DbUtil.AdminMail, DbUtil.AdminMailName), Db.Setting("MobileQuickSignInCodeSubject", "Mobile Sign In Code"), body, mailAddresses);
                    results = Results.CommonEmailSentCode;
                }
            }
            else
            {
                results = Results.DeepLinkNoPeopleFound;
            }
        }