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)); } }
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)); } }
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> Just a reminder you are the Deacon on Duty for {{month}},<br><br> 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> 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); }
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); }
public ReferenceRepositoryTest() { var options = new DbContextOptionsBuilder <PwsodbContext>(). UseInMemoryDatabase(databaseName: "ReferenceRepository") .Options; _context = new PwsodbContext(options); }
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); }
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); }
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); }
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; }
public CalendarRepository(PwsodbContext context) { _context = context; }
public TrainingRepository(PwsodbContext context) { _context = context; }
public OrganizationRepository(PwsodbContext context) { _calendarContext = context; }