Exemple #1
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            try
            {
                string requestBody  = await new StreamReader(req.Body).ReadToEndAsync();
                var    registrantDb = JsonSerializer.Deserialize <RegistrantDb>(requestBody);
                var    organizationConnectionString            = System.Environment.GetEnvironmentVariable("SQLCONNSTR_OrganizationModel");
                var    organizationOptions                     = new DbContextOptionsBuilder <PwsoContext>().UseSqlServer(organizationConnectionString ?? throw new InvalidOperationException()).Options;
                var    organizationContext                     = new PwsoContext(organizationOptions);
                IOrganizationRepository organizationRepository = new OrganizationRepository(organizationContext);
                var athlete = await organizationRepository.FindAthleteByName(registrantDb.FirstName, registrantDb.LastName);

                var worker                             = new RegistrantMessageWorker(registrantDb);
                var registrantSQL                      = worker.BuildRegistrant();
                var trainingConnectionString           = System.Environment.GetEnvironmentVariable("SQLAZURECONNSTR_TrainingModel");
                var trainingOptions                    = new DbContextOptionsBuilder <PwsodbContext>().UseSqlServer(trainingConnectionString ?? throw new InvalidOperationException()).Options;
                var trainingContext                    = new PwsodbContext(trainingOptions);
                ITrainingRepository trainingRepository = new TrainingRepository(trainingContext);
                await trainingRepository.AddRegistrant(registrantSQL);
            }
            catch (Exception e)
            {
                log.LogInformation(e.ToString());
                return(new BadRequestResult());
            }


            return(new OkResult());
        }
Exemple #2
0
        public void BuildRegistantModelTest_1_Email_1_Phone_check_phone()
        {
            var registrant = new RegistrantDb
            {
                Emails = new List <string> {
                    "*****@*****.**"
                },
                FirstName   = "Dick",
                LastName    = "Grayson",
                Sport       = "Track",
                IsVolunteer = false,
                ProgramName = "Woodbridge",
                SportId     = 8,
                ProgramId   = 11,
                Size        = "small",
            };

            registrant.Phones = new List <RegistrantPhone>();
            registrant.Phones.Add(new RegistrantPhone {
                CanText = true, Phone = "7035551212"
            });


            _worker = new RegistrantMessageWorker(registrant);
            var actual = _worker.BuildRegistrant();

            Assert.Equal(1, actual.RegistrantPhone.Count);
        }
Exemple #3
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            [TwilioSms(AccountSidSetting = "AccountSid", AuthTokenSetting = "AuthToken")] IAsyncCollector <CreateMessageOptions> messages,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");
            try
            {
                var requestBody  = await new StreamReader(req.Body).ReadToEndAsync();
                var registrantDb = JsonSerializer.Deserialize <RegistrantDb>(requestBody);
                var worker       = new RegistrantMessageWorker(registrantDb, System.Environment.GetEnvironmentVariable("FromPhone"));

                var textMessageList = worker.PrepareRegistrationText();
                foreach (var textMessage in textMessageList)
                {
                    await messages.AddAsync(textMessage);
                }
            }
            catch (Exception e)
            {
                log.LogInformation(e.ToString());
                return(new BadRequestResult());
            }



            return(new OkResult());
        }
Exemple #4
0
        public void BuildRegistantModelTest_medical_check_1_athlete_fields()
        {
            var registrant = new RegistrantDb
            {
                Emails = new List <string> {
                    "*****@*****.**"
                },
                FirstName   = "Dick",
                LastName    = "Grayson",
                Sport       = "Track",
                IsVolunteer = true,
                ProgramName = "Woodbridge",
                SportId     = 8,
                ProgramId   = 11,
                NickName    = "Robin",
                AthleteId   = 123
            };

            registrant.Phones = new List <RegistrantPhone>();
            registrant.Phones.Add(new RegistrantPhone {
                CanText = true, Phone = "7035551212"
            });
            registrant.Phones.Add(new RegistrantPhone {
                CanText = false, Phone = "2125551212"
            });
            registrant.Phones.Add(new RegistrantPhone {
                CanText = false, Phone = "3015551212"
            });
            registrant.Emails.Add("*****@*****.**");

            _worker = new RegistrantMessageWorker(registrant);
            var actual = _worker.BuildRegistrant();

            Assert.Equal(1, actual.RegisteredAthlete.Count);
        }
Exemple #5
0
        public void BuildEmailFromTest_email_email_matches()
        {
            var registrant = new RegistrantDb {
                Sender = "*****@*****.**"
            };

            _worker = new RegistrantMessageWorker(_message, registrant);
            _worker.BuildEmailFrom();
            Assert.Equal(registrant.Sender, _message.From.Email);
        }
Exemple #6
0
        public void BuildEmailFromTest_no_email_email_default()
        {
            var registrant            = new RegistrantDb {
            };
            const string defaultEmail = "*****@*****.**";

            _worker = new RegistrantMessageWorker(_message, registrant);
            _worker.BuildEmailFrom();
            Assert.Equal(_message.From.Email, defaultEmail);
        }
Exemple #7
0
        public void BuildEmailCopyTest_from_eq_cc()
        {
            var registrant = new RegistrantDb {
                FirstName = "Dick", LastName = "Grayson", NickName = "Robin", Sport = "Track", ProgramName = "Gainesville", IsVolunteer = false, Sender = "*****@*****.**", AthleteId = 0
            };

            _message.From = new EmailAddress(registrant.Sender);
            _message.AddTo("*****@*****.**");
            _worker = new RegistrantMessageWorker(_message, registrant);
            _worker.BuildEmailCopy();
            Assert.Equal(registrant.Sender, _message.Personalizations[0].Ccs[0].Email);
        }
Exemple #8
0
        public void BuildEmailMedicalToTest_No_Found_Email_email_matches()
        {
            var registrant = new RegistrantDb {
                Emails = new List <string> {
                    "*****@*****.**"
                }
            };

            _worker = new RegistrantMessageWorker(_message, registrant);
            _worker.BuildEmailMedicalTo();
            Assert.Equal("*****@*****.**", _message.Personalizations[0].Tos[0].Email);
        }
Exemple #9
0
        public void BuildEmailCopyTest_when_from_eq__to_no_cc()
        {
            var registrant = new RegistrantDb {
                FirstName = "Dick", LastName = "Grayson", NickName = "Robin", Sport = "Track", ProgramName = "Gainesville", IsVolunteer = true, Sender = "*****@*****.**"
            };

            _message.From = new EmailAddress(registrant.Sender);
            _message.AddTo(registrant.Sender);
            _worker = new RegistrantMessageWorker(_message, registrant);
            _worker.BuildEmailCopy();
            Assert.Null(_message.Personalizations[0].Ccs);
        }
Exemple #10
0
        public void BuildEmailToTest_2_Email_email_matches()
        {
            var registrant = new RegistrantDb {
                Emails = new List <string> {
                    "*****@*****.**", "*****@*****.**"
                }
            };

            _worker = new RegistrantMessageWorker(_message, registrant);
            _worker.BuildEmailTo();
            Assert.Equal(_message.Personalizations[0].Tos[0].Email, registrant.Emails[0]);
            Assert.Equal(_message.Personalizations[0].Tos[1].Email, registrant.Emails[1]);
        }
Exemple #11
0
        public void BuildPhoneListTest_1_phone_0_text_0_list()
        {
            var registrant = new RegistrantDb();

            registrant.Phones = new List <RegistrantPhone>();
            registrant.Phones.Add(new RegistrantPhone {
                CanText = false, Phone = "7035551212"
            });
            _worker = new RegistrantMessageWorker(registrant, "20255512121");
            List <string> actual = _worker.BuildPhoneList();

            Assert.Equal(0, actual.Count);
        }
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            [SendGrid(ApiKey = "CustomSendGridKeyAppSettingName")] IAsyncCollector <SendGridMessage> messageCollector,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");
            try
            {
                var requestBody      = await new StreamReader(req.Body).ReadToEndAsync();
                var registrantDb     = JsonSerializer.Deserialize <RegistrantDb>(requestBody);
                var message          = new SendGridMessage();
                var worker           = new RegistrantMessageWorker(message, registrantDb);
                var connectionString = System.Environment.GetEnvironmentVariable("AzureWebJobsStorage");
                BlobServiceClient   blobServiceClient = new BlobServiceClient(connectionString);
                BlobContainerClient containerClient   = blobServiceClient.GetBlobContainerClient("forms");
                BlobClient          blobMedical       = containerClient.GetBlobClient("Athlete_Registration,_Release_and_Medical_Form4.pdf");
                BlobDownloadInfo    downloadMedical   = await blobMedical.DownloadAsync();

                BlobClient       blobInstructions     = containerClient.GetBlobClient("Instructions for Area 23 Medical Forms_0.docx");
                BlobDownloadInfo downloadInstructions = await blobInstructions.DownloadAsync();

                //Stream myBlob = downloadMedical.Content;
                //var length = downloadMedical.ContentLength;
                await messageCollector.AddAsync(worker.PrepareRegistrationEmail(downloadMedical, downloadInstructions));

                if (!registrantDb.IsVolunteer && registrantDb.AthleteId == 0)
                {
                    var medMessage = new SendGridMessage();
                    var medWorker  = new RegistrantMessageWorker(medMessage, registrantDb)
                    {
                        MedicalEmail = System.Environment.GetEnvironmentVariable("MedicalEmail")
                    };
                    await messageCollector.AddAsync(medWorker.PrepareMedicalEmail());
                }
            }
            catch (Exception e)
            {
                log.LogInformation(e.ToString());
                return(new BadRequestResult());
            }


            return(new OkResult());
        }
Exemple #13
0
        public void BuildRegistantModelTest_2_Email_3_Phone_check_regrant_fields()
        {
            var registrant = new RegistrantDb
            {
                Emails = new List <string> {
                    "*****@*****.**"
                },
                FirstName   = "Dick",
                LastName    = "Grayson",
                Sport       = "Track",
                IsVolunteer = true,
                ProgramName = "Woodbridge",
                SportId     = 8,
                ProgramId   = 11,
                NickName    = "Robin"
            };

            registrant.Phones = new List <RegistrantPhone>();
            registrant.Phones.Add(new RegistrantPhone {
                CanText = true, Phone = "7035551212"
            });
            registrant.Phones.Add(new RegistrantPhone {
                CanText = false, Phone = "2125551212"
            });
            registrant.Phones.Add(new RegistrantPhone {
                CanText = false, Phone = "3015551212"
            });
            registrant.Emails.Add("*****@*****.**");

            _worker = new RegistrantMessageWorker(registrant);
            var actual = _worker.BuildRegistrant();

            Assert.Equal(registrant.FirstName, actual.FirstName);
            Assert.Equal(registrant.LastName, actual.LastName);
            Assert.Equal(0, actual.Id);
            Assert.Equal(registrant.IsVolunteer, actual.IsVolunteer);
            Assert.Equal(registrant.ProgramId, actual.ProgramId);
            Assert.Equal(registrant.Size, actual.Size);
            Assert.Equal(registrant.SportId, actual.SportId);
            Assert.Equal(registrant.NickName, actual.NickName);
            Assert.Equal(3, actual.RegistrantPhone.Count);
            Assert.Equal(2, actual.RegistrantEmail.Count);
        }
Exemple #14
0
        public void BuildPhoneListTest_3_phone_3_text_3_list()
        {
            var registrant = new RegistrantDb();

            registrant.Phones = new List <RegistrantPhone>();
            registrant.Phones.Add(new RegistrantPhone {
                CanText = true, Phone = "7035551212"
            });
            registrant.Phones.Add(new RegistrantPhone {
                CanText = true, Phone = "2125551212"
            });
            registrant.Phones.Add(new RegistrantPhone {
                CanText = true, Phone = "3015551212"
            });
            _worker = new RegistrantMessageWorker(registrant, "20255512121");
            List <string> actual = _worker.BuildPhoneList();

            Assert.Equal(3, actual.Count);
            Assert.Equal("+17035551212", actual[0]);
            Assert.Equal("+12125551212", actual[1]);
            Assert.Equal("+13015551212", actual[2]);
        }