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 ChampionshipTextPreparation_When_executed_return_dto() { TournamentTeamDto dto = new TournamentTeamDto { TeamId = 25, Game1TimeId = 7, Game2TimeId = 15, LocationId = 50 }; Teams team = new Teams { Id = 25, Name = "Bulls" }; CalendarTimes startTime = new CalendarTimes { Id = 6, TimeHour = "8:30 AM" }; CalendarTimes firstTime = new CalendarTimes { Id = 7, TimeHour = "9:00 AM" }; CalendarTimes secondTime = new CalendarTimes { Id = 15, TimeHour = "1:00 PM" }; Locations location = new Locations { Id = 50, Name = "H. H. Poole Middle School", Street = "800 Eustace Road", City = "Stafford", State = "VA", Zip = "22554" }; ReferenceWorker.TournamentDetails expected = new ReferenceWorker.TournamentDetails { TeamName = "Bulls", FirstGameTime = "9:00 AM", SecondGameTime = "1:00 PM", StartTime = "8:30 AM", LocationName = "H. H. Poole Middle School", LocationAddress = "800 Eustace Road", LocationCity = "Stafford", LocationState = "VA", LocationZip = "22554" }; _mockReferenceRepository.Setup(repository => repository.GetTeamByTeamId(25)).ReturnsAsync(team); _mockReferenceRepository.Setup(repository => repository.GetTimeByTimeId(6)).ReturnsAsync(startTime); _mockReferenceRepository.Setup(repository => repository.GetTimeByTimeId(7)).ReturnsAsync(firstTime); _mockReferenceRepository.Setup(repository => repository.GetTimeByTimeId(15)).ReturnsAsync(secondTime); _mockReferenceRepository.Setup(repository => repository.GetLocationByLocationId(50)).ReturnsAsync(location); var message = "Bulls competition will be at H. H. Poole Middle School, everyone should arrive at 8:30 AM "; CoachTextDto actual = _worker.ChampionshipTextPreparation(dto); Assert.Equal(4, actual.SportId); Assert.Equal(dto.TeamId, actual.TeamId); Assert.True(actual.Selected); Assert.Equal(message, actual.Message); }