public async Task <IActionResult> Index(CancellationToken token) { if (!Request.Query.ContainsKey("companyId") || !Request.Query.ContainsKey("filmSessionId")) { return(NotFound()); } Request.Query.TryGetValue("companyId", out var companyId); var company = await _companyRepository.FindByIdAsync(long.Parse(companyId), token); Request.Query.TryGetValue("filmSessionId", out var filmSessionId); var currentFilmSession = await _filmSessionRepository.FindByIdAsync(long.Parse(filmSessionId), token); var poster = _blobRepository.Get(currentFilmSession.Film.Id); var tickets = (await _ticketRepository.FindByFilmSessionIdAsync(currentFilmSession.Id, token)).ToArray(); var unavailableSeats = new long[tickets.Length][]; for (var i = 0; i < tickets.Length; i++) { unavailableSeats[i] = new[] { tickets[i].Row, tickets[i].Column }; } var viewModel = new BookingViewModel { Company = company, Film = currentFilmSession.Film, FilmSession = currentFilmSession, Poster = poster, UnavailableSeats = JsonConvert.SerializeObject(unavailableSeats) }; return(View(viewModel)); }
public async Task WhenContainer_FullLiveCycle_ShouldPass() { var container = new BlobRepository(_blobStore); await container.CreateContainer(_workContext); IReadOnlyList <string> filePaths = await container.List(_workContext, "*"); await filePaths.ForEachAsync(x => container.Delete(_workContext, x)); const string filePath = "testBlob"; const string data = "This is data"; await container.Set(_workContext, filePath, data); filePaths = await container.List(_workContext, "*"); filePaths.Should().NotBeNull(); filePaths.Count.Should().Be(1); filePaths[0].Should().Be(filePath); string readData = await container.Get(_workContext, filePath); readData.Should().NotBeNullOrWhiteSpace(); readData.Should().Be(data); await container.Delete(_workContext, filePath); filePaths = await container.List(_workContext, "*"); filePaths.Should().NotBeNull(); filePaths.Count.Should().Be(0); }
public async Task <IActionResult> Index(CancellationToken token) { if (!Request.Query.ContainsKey("companyId") || !Request.Query.ContainsKey("filmId")) { return(NotFound()); } Request.Query.TryGetValue("companyId", out var companyId); var company = await _companyRepository.FindByIdAsync(long.Parse(companyId), token); Request.Query.TryGetValue("filmId", out var filmId); var currentFilm = await _filmRepository.FindByIdAsync(long.Parse(filmId), token); var poster = _blobRepository.Get(currentFilm.Id); var posters = new Dictionary <long, string>(); var upcomingFilms = (await _filmRepository.FindByCompanyIdAsync(company.Id, token)) .Where(p => p.IsActive && p.ReleaseDate > DateTime.Now).ToList(); foreach (var film in upcomingFilms) { posters[film.Id] = _blobRepository.Get(film.Id); } var filmSessions = (await _filmSessionRepository.FindByFilmIdAsync(currentFilm.Id, token)) .Where(p => p.StartTime > DateTime.Now); var groupedSessions = filmSessions.GroupBy(p => p.Hall.Cinema.Name); var viewModel = new FilmViewModel { Company = company, Film = currentFilm, Poster = poster, GroupedSessions = groupedSessions.ToList(), UpcomingFilms = upcomingFilms, Posters = posters }; return(View(viewModel)); }
public async Task <IActionResult> Index(CancellationToken token) { if (!Request.Query.ContainsKey("companyId")) { return(NotFound()); } Request.Query.TryGetValue("companyId", out var companyId); var company = await _companyRepository.FindByIdAsync(long.Parse(companyId), token); var posters = new Dictionary <long, string>(); var currentFilms = (await _filmRepository.FindByCompanyIdAsync(company.Id, token)) .Where(p => p.IsActive && p.ReleaseDate < DateTime.Now).ToList(); foreach (var film in currentFilms) { posters[film.Id] = _blobRepository.Get(film.Id); } var upcomingFilms = (await _filmRepository.FindByCompanyIdAsync(company.Id, token)) .Where(p => p.IsActive && p.ReleaseDate > DateTime.Now).ToList(); foreach (var film in upcomingFilms) { posters[film.Id] = _blobRepository.Get(film.Id); } var viewModel = new HomeViewModel { Company = company, CurrentFilms = currentFilms, UpcomingFilms = upcomingFilms, Posters = posters }; return(View(viewModel)); }
public async Task GivenFileDoesNotExist_WhenGet_ShouldThrow() { var container = new BlobRepository(_blobStore); await container.CreateContainer(_workContext); IReadOnlyList <string> filePaths = await container.List(_workContext, "*"); await filePaths.ForEachAsync(x => container.Delete(_workContext, x)); const string filePath = "testBlob"; Func <Task> act = async() => await container.Get(_workContext, filePath); await act.Should().ThrowAsync <RequestFailedException>(); }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger LyricCreatorFunction processed a request."); // Can call function to warm it up if (!string.IsNullOrEmpty(req.Query["warmup"])) { return(new OkObjectResult("OK")); } int lines; if (!int.TryParse(req.Query["lines"], out lines)) { lines = 10; } var suffix = string.Empty; if (string.IsNullOrEmpty(req.Query["profanities"]) || req.Query["profanities"] == "false") { suffix = "Clean"; } var prefix = string.Empty; if (!string.IsNullOrEmpty(req.Query["genre"])) { var genres = (Genre[])Enum.GetValues(typeof(Genre)); if (genres.Any(g => g.ToString() == req.Query["genre"])) { prefix = req.Query["genre"]; } } var chain1Name = $"{prefix}MarkovChainOrder1{suffix}"; var chain2Name = $"{prefix}MarkovChainOrder2{suffix}"; var lineLengthDistName = $"{prefix}LineLengthDistribution"; var output = new List <string>(); log.LogInformation("Loading Markov Data"); var markovModel = await BlobRepository <MarkovChain> .Get(chain1Name); var markovOrder2Model = await BlobRepository <MarkovChain> .Get(chain2Name); var lineLengthDistribution = await BlobRepository <LineLengthDistribution> .Get(lineLengthDistName); for (int i = 0; i < Math.Min(lines, 200); i++) { var lyricLine = new List <string>(); var rand = new Random(); string pred1 = null; var pred2 = Word.StartOfLine; string successor = null; var endOfLine = false; log.LogInformation("Building lyric"); while (!endOfLine) { var lineEndProbability = lineLengthDistribution.GetLineEndProbability(lyricLine.Count); // Use first order markov for beginning if (pred1 == null) { successor = GetNextSuccessor(rand, markovModel, pred2, lineEndProbability); } else { // Use 2nd order markov successor = GetNextSuccessor(rand, markovOrder2Model, $"{pred1} {pred2}", lineEndProbability); // if 2nd order fails, fall back to first order if (string.IsNullOrEmpty(successor)) { successor = GetNextSuccessor(rand, markovModel, pred2, lineEndProbability); } } if (successor == Environment.NewLine || lyricLine.Count > 50) { endOfLine = true; } else { lyricLine.Add(successor); pred1 = pred2; pred2 = successor.ToLowerInvariant(); } } output.Add(string.Join(" ", lyricLine)); } return(new JsonResult(output)); }