Beispiel #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.");

            var     requestBody  = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic sportMessage = JsonConvert.DeserializeObject <CoachTextDto>(requestBody);


            try
            {
                var                 accountSid         = System.Environment.GetEnvironmentVariable("AccountSid");
                var                 authToken          = System.Environment.GetEnvironmentVariable("AuthToken");
                var                 fromPhone          = System.Environment.GetEnvironmentVariable("FromPhone");
                ISmsRepository      smsRepository      = new SmsRepository(accountSid, authToken, fromPhone);
                var                 connectionString   = System.Environment.GetEnvironmentVariable("SQLAZURECONNSTR_TrainingModel");
                var                 options            = new DbContextOptionsBuilder <PwsodbContext>().UseSqlServer(connectionString ?? throw new InvalidOperationException()).Options;
                var                 context            = new PwsodbContext(options);
                ITrainingRepository trainingRepository = new TrainingRepository(context);
                var                 worker             = new TextWorker(trainingRepository, smsRepository);
                var                 numOfSms           = await worker.SendSmsForSport(sportMessage);

                return((ActionResult) new OkObjectResult(numOfSms));
            }
            catch (Exception ex)
            {
                return((ActionResult) new BadRequestObjectResult(ex));
            }
        }
Beispiel #2
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());
        }
        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.");

            string  requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic sportEmail  = JsonConvert.DeserializeObject <CoachEmailDto>(requestBody);


            try
            {
                var apiKey = System.Environment.GetEnvironmentVariable("ApiKey");
                IEmailRepository emailRepository       = new EmailRepository(apiKey);
                var                 connectionString   = System.Environment.GetEnvironmentVariable("SQLAZURECONNSTR_TrainingModel");
                var                 options            = new DbContextOptionsBuilder <PwsodbContext>().UseSqlServer(connectionString).Options;
                PwsodbContext       context            = new PwsodbContext(options);
                ITrainingRepository trainingRepository = new TrainingRepository(context);
                EmailWorker         worker             = new EmailWorker(trainingRepository, emailRepository);
                var                 numOfEmails        = await worker.SendEmailsForSport(sportEmail);

                return((ActionResult) new OkObjectResult(numOfEmails));
            }
            catch (Exception ex)
            {
                return((ActionResult) new BadRequestObjectResult(ex));
            }
        }
Beispiel #4
0
        public void SendEmailsForSport_WithoutMock(int sportId, int?locationId, int?categoryId, int?teamId, bool?selected, bool?volunteerOnly, int expected)

        {
            IConfiguration config           = new ConfigurationBuilder().AddJsonFile("appsettings.test.json").Build();
            var            connectionString = config["TrainingDatabase"];
            var            options          = new DbContextOptionsBuilder <PwsodbContext>().UseSqlServer(connectionString).Options;

            PwsodbContext context = new PwsodbContext(options);

            var           fromEmail        = config["FromEmail"];
            const string  subject          = "Sending with SendGrid is Fun";
            const string  plainTextContent = "and easy to do anywhere, even with C#";
            const string  htmlContent      = "<br>Hi {{deacon}}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;Just a reminder you are the Deacon on Duty for {{month}},<br><br>&nbsp;&nbsp;&nbsp;&nbsp;You will responsible to lock up the church on Sundays after worship. If you are not going to be there then it is your responsibility to get another Deacon to close up for you. You are responsible for taking out the trash. Also make sure the offering baskets are out for the next week.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;If you are going to miss more than one Sunday in {{month}} please change with another deacon";
            CoachEmailDto message          = new CoachEmailDto
            {
                SportId          = sportId,
                From             = fromEmail,
                HtmlContent      = htmlContent,
                PlainTextContent = plainTextContent,
                Subject          = subject,
                IsVolunteer      = volunteerOnly,
                Selected         = selected,
                ProgramId        = locationId,
                SportTypeId      = categoryId,
                TeamId           = teamId
            };
            ITrainingRepository trainingRepository = new TrainingRepository(context);
            var apiKey = config["ApiKey"];
            IEmailRepository emailRepository = new EmailRepository(apiKey);
            EmailWorker      worker          = new EmailWorker(trainingRepository, emailRepository);


            //var actual = worker.SendEmailsForSport(message);
            //Assert.Equal(expected, actual.Result);
        }
Beispiel #5
0
        public void SendEmailsForSport_WithoutMock(int sportId, int?locationId, int?categoryId, int?teamId, bool?selected, bool?volunteerOnly, int expected)

        {
            IConfiguration config           = new ConfigurationBuilder().AddJsonFile("appsettings.test.json").Build();
            var            connectionString = config["TrainingDatabase"];
            var            options          = new DbContextOptionsBuilder <PwsodbContext>().UseSqlServer(connectionString).Options;

            PwsodbContext context = new PwsodbContext(options);

            const string plainTextContent = "testing PWSO sending text messages";
            CoachTextDto message          = new CoachTextDto
            {
                SportId     = sportId,
                Message     = plainTextContent,
                IsVolunteer = volunteerOnly,
                Selected    = selected,
                ProgramId   = locationId,
                SportTypeId = categoryId,
                TeamId      = teamId
            };
            ITrainingRepository trainingRepository = new TrainingRepository(context);
            var            accountSid      = config["AccountSid"];
            var            authToken       = config["AuthToken"];
            var            fromPhone       = config["FromPhone"];
            ISmsRepository emailRepository = new SmsRepository(accountSid, authToken, fromPhone);
            TextWorker     worker          = new TextWorker(trainingRepository, emailRepository);


            //var actual = worker.SendSmsForSport(message);
            //Assert.Equal(expected, actual.Result);
        }
Beispiel #6
0
        public ReferenceRepositoryTest()
        {
            var options = new DbContextOptionsBuilder <PwsodbContext>().
                          UseInMemoryDatabase(databaseName: "ReferenceRepository")
                          .Options;

            _context = new PwsodbContext(options);
        }
Beispiel #7
0
        public OrganizationRepositoryTest()
        {
            var options = new DbContextOptionsBuilder <PwsoContext>().
                          UseInMemoryDatabase(databaseName: "OrganizationRepository")
                          .Options;

            _context = new PwsoContext(options);

            var calendarOptions = new DbContextOptionsBuilder <PwsodbContext>().
                                  UseInMemoryDatabase(databaseName: "CalendarRepository")
                                  .Options;

            _calendarContext = new PwsodbContext(calendarOptions);
        }
Beispiel #8
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# PWSO receive sms message process.");

            var requestBody = await new StreamReader(req.Body).ReadToEndAsync();

            log.LogInformation(requestBody);
            var formValues = requestBody.Split('&')
                             .Select(value => value.Split('='))
                             .ToDictionary(pair => Uri.UnescapeDataString(pair[0]).Replace("+", " "),
                                           pair => Uri.UnescapeDataString(pair[1]).Replace("+", " "));
            var dto = new EventTextDto
            {
                Message = formValues["Body"],
                From    = formValues["From"],
                Zip     = formValues["FromZip"],
                City    = formValues["FromCity"]
            };
            //var dto = new EventTextDto{Message = "Track", From = "17035901821", Zip = "22193", City = "Dale City"} ;
            string responseMessage;

            try
            {
                var connectionString      = System.Environment.GetEnvironmentVariable("SQLAZURECONNSTR_TrainingModel");
                var azureConnectionString = System.Environment.GetEnvironmentVariable("AzureStorageConnectionString");
                var options = new DbContextOptionsBuilder <PwsodbContext>().UseSqlServer(connectionString ?? throw new InvalidOperationException()).Options;
                var context = new PwsodbContext(options);
                ITrainingRepository trainingRepository = new TrainingRepository(context);
                IRefRepository      refRepository      = new RefRepository(azureConnectionString);
                var worker       = new RegistrantWorker(trainingRepository, refRepository);
                var notification = worker.AddNumberForEvent(dto);
                responseMessage = notification.Result.Message;
            }
            catch (Exception e)
            {
                log.LogError("Fatal Error: " + e.ToString());

                throw;
            }

            responseMessage += ". This message is from the PWSO Notification System.";
            return(new OkObjectResult(responseMessage));
        }
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string  requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic teams       = JsonConvert.DeserializeObject <TournamentDto>(requestBody);


            try
            {
                var apiKey = System.Environment.GetEnvironmentVariable("ApiKey");
                IEmailRepository emailRepository         = new EmailRepository(apiKey);
                var                  connectionString    = System.Environment.GetEnvironmentVariable("SQLAZURECONNSTR_TrainingModel");
                var                  options             = new DbContextOptionsBuilder <PwsodbContext>().UseSqlServer(connectionString).Options;
                PwsodbContext        context             = new PwsodbContext(options);
                ITrainingRepository  trainingRepository  = new TrainingRepository(context);
                IReferenceRepository referenceRepository = new ReferenceRepository(context);
                ReferenceWorker      refWorker           = new ReferenceWorker(referenceRepository);
                EmailWorker          emailWorker         = new EmailWorker(trainingRepository, emailRepository);
                var                  accountSid          = System.Environment.GetEnvironmentVariable("AccountSid");
                var                  authToken           = System.Environment.GetEnvironmentVariable("AuthToken");
                var                  fromPhone           = System.Environment.GetEnvironmentVariable("FromPhone");
                ISmsRepository       smsRepository       = new SmsRepository(accountSid, authToken, fromPhone);
                var                  textWorker          = new TextWorker(trainingRepository, smsRepository);

                foreach (var team in teams.Teams)
                {
                    var emailMessage = refWorker.ChampionshipEmailPreparation(team);
                    var textMessage  = refWorker.ChampionshipTextPreparation(team);
                    var numOfEmails  = await emailWorker.SendEmailsForSport(emailMessage);

                    var numOfSms = await textWorker.SendSmsForSport(textMessage);
                }

                return((ActionResult) new OkObjectResult(1));
            }
            catch (Exception ex)
            {
                return((ActionResult) new BadRequestObjectResult(ex));
            }
        }
        public void GetRegistrantsForSport_WithoutMock(int sportId, int expected)

        {
            IConfiguration config = new ConfigurationBuilder().AddJsonFile("appsettings.test.json").Build();
            var            trainingConnectionString     = config["TrainingDatabase"];
            var            organizationConnectionString = config["OrganizationDatabase"];
            var            trainingOptions     = new DbContextOptionsBuilder <PwsodbContext>().UseSqlServer(trainingConnectionString).Options;
            var            organizationOptions = new DbContextOptionsBuilder <PwsoContext>().UseSqlServer(organizationConnectionString).Options;

            PwsodbContext           trainingContext        = new PwsodbContext(trainingOptions);
            PwsoContext             organizationContext    = new PwsoContext(organizationOptions);
            ITrainingRepository     trainingRepository     = new TrainingRepository(trainingContext);
            IOrganizationRepository organizationRepository = new OrganizationRepository(organizationContext);
            RegistrantWorker        worker = new RegistrantWorker(trainingRepository, organizationRepository);


            //var actual = worker.GetRegistrantsForSport(sportId);
            //Assert.Equal(expected, actual.Result.Count);
        }
Beispiel #11
0
        public void ProcessEventCancelation_without_mock()

        {
            IConfiguration config = new ConfigurationBuilder().AddJsonFile("appsettings.test.json").Build();
            var            trainingConnectionString = config["TrainingDatabase"];
            var            trainingOptions          = new DbContextOptionsBuilder <PwsodbContext>().UseSqlServer(trainingConnectionString).Options;

            PwsodbContext        trainingContext     = new PwsodbContext(trainingOptions);
            ICalendarRepository  calendarRepository  = new CalendarRepository(trainingContext);
            IReferenceRepository referenceRepository = new ReferenceRepository(trainingContext);
            CalendarWorker       worker = new CalendarWorker(calendarRepository, referenceRepository);

            CancelEventDto cancelEvent = new CancelEventDto
            {
                CancelNote   = "practice is cancel due to snow",
                CancelReason = "weather",
                PracticeId   = 41598,
            };


            //var actual = worker.ProcessEventCancelation(cancelEvent);
            //Assert.Equal("*****@*****.**", actual.Result.From);
        }
Beispiel #12
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string sport = req.Query["sportid"];

            var     requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data        = JsonConvert.DeserializeObject(requestBody);

            sport = sport ?? data?.name;
            var sportId = int.Parse(sport);

            try
            {
                var trainingConnectionString     = System.Environment.GetEnvironmentVariable("SQLAZURECONNSTR_TrainingModel");
                var organizationConnectionString = System.Environment.GetEnvironmentVariable("SQLCONNSTR_OrganizationModel");
                var trainingOptions     = new DbContextOptionsBuilder <PwsodbContext>().UseSqlServer(trainingConnectionString ?? throw new InvalidOperationException()).Options;
                var organizationOptions = new DbContextOptionsBuilder <PwsoContext>().UseSqlServer(organizationConnectionString ?? throw new InvalidOperationException()).Options;

                var trainingContext     = new PwsodbContext(trainingOptions);
                var organizationContext = new PwsoContext(organizationOptions);
                ITrainingRepository     trainingRepository     = new TrainingRepository(trainingContext);
                IOrganizationRepository organizationRepository = new OrganizationRepository(organizationContext);
                var worker = new RegistrantWorker(trainingRepository, organizationRepository);

                var registrantList = await worker.GetRegistrantsForSport(sportId);

                return((ActionResult) new OkObjectResult(registrantList));
            }
            catch (Exception ex)
            {
                return((ActionResult) new BadRequestObjectResult(ex));
            }
        }
 public ReferenceRepository(PwsodbContext context)
 {
     _context = context;
 }
Beispiel #14
0
 public CalendarRepository(PwsodbContext context)
 {
     _context = context;
 }
 public TrainingRepository(PwsodbContext context)
 {
     _context = context;
 }
Beispiel #16
0
 public OrganizationRepository(PwsodbContext context)
 {
     _calendarContext = context;
 }