public async Task <IActionResult> Get(int id) { // TODO: need to check if user can get unpublished or not return(await TryOk(async() => { var program = await _slideDeckProgramRepo.GetFirst(id); var activeAvatar = await _userAvatar.GetActiveInContext(); if (program.AccessLevel == Shared.Models.Enums.AccessLevel.Premium && (_userService.GetAccessLevel() != Shared.Models.Enums.UserRole.Premium || activeAvatar.PersonalProgramAccess.Count(x => x.SlideDeckProgramId == program.Id) == 0)) { // does not have access. return dummy deck! var dummy = await RepoBase.Get(10); dummy.Title = program.Title; dummy.Description = program.Description + Environment.NewLine + Environment.NewLine + dummy.Description; return dummy; } return program; })); //return await Get<SlideDeckProgram>(_slideDeckProgramRepo.GetFirst(id)); }
public async Task <IActionResult> Get(int id) { // TODO: need to check if user can get unpublished or not //return await TryOk(() => _slideDeckRepo.Get(id)); return(await TryOk(async() => { var deck = await _slideDeckRepo.Get(id); var activeAvatar = await _userAvatar.GetActiveInContext(); if (deck.AccessLevel == Shared.Models.Enums.AccessLevel.Premium && (_userService.GetAccessLevel() != Shared.Models.Enums.UserRole.Premium)) //|| activeAvatar.PersonalProgramAccess.Count(x => x.SlideDeckProgramId == deck.Id) == 0) { // does not have access. return dummy deck! var dummy = await _slideDeckRepo.Get(10); dummy.Title = deck.Title; dummy.Description = deck.Description + Environment.NewLine + Environment.NewLine + dummy.Description; return dummy; } foreach (var slide in deck.Slides.Where(s => !string.IsNullOrWhiteSpace(s.TextContent))) { var k = slide.TextContent.Split("scr="); for (int i = 1; i < k.Length; i++) { var url = k[i].Split(" ").First().Replace("\"", ""); var sasurl = _azureRepo.GetSasUriForBlob(new Uri(url)).ToString(); //.Replace("&", "&"); k[i] = "scr=" + k[i].Replace(url, sasurl); } slide.TextContent = string.Join(null, k); } return deck; })); }
public async Task <IActionResult> GetActiveForUser() { return(await TryOk(() => _userAvatarRepo.GetActiveInContext())); }
public async Task <IActionResult> ReceiveFile() { if (!MultipartRequestHelper.IsMultipartContentType(Request.ContentType)) { throw new Exception("Not a multipart request"); } var boundary = MultipartRequestHelper.GetBoundary(MediaTypeHeaderValue.Parse(Request.ContentType), _defaultFormOptions.MultipartBoundaryLengthLimit); var reader = new MultipartReader(boundary, Request.Body); // note: this is for a single file, you could also process multiple files var section = await reader.ReadNextSectionAsync(); if (section == null) { return(BadRequest()); } Request.Headers.TryGetValue("CompletedSlideDeckProgram", out Microsoft.Extensions.Primitives.StringValues programIdStringValue); var reviewable = new CompletedProgramReviewable(); reviewable.CompletedSlideDeckProgramId = int.Parse(programIdStringValue.ToString()); var activeUserAvatar = await _userAvatarRepo.GetActiveInContext(); reviewable.UserAvatarId = activeUserAvatar.Id; var i = 0; do { if (!ContentDispositionHeaderValue.TryParse(section.ContentDisposition, out var contentDisposition)) { throw new Exception("No content disposition in multipart defined"); } var fileName2 = contentDisposition.FileNameStar.ToString(); if (string.IsNullOrEmpty(fileName2)) { fileName2 = contentDisposition.FileName.ToString(); } var fileName = _userService.GetUserId().ToString() + "_" + programIdStringValue.ToString() + "_" + activeUserAvatar.Id + "_" + i + "." + fileName2.Split('.').Last(); if (string.IsNullOrEmpty(fileName2)) { throw new Exception("No filename defined."); } using var fileStream = section.Body; var uri = await _azureRepo.NewBlobFromStream(fileStream, "dfghdfh", fileName); reviewable.Content.Add(new Shared.DbModels.AzureBlob() { Uri = uri.ToString(), Name = fileName2, Mime = contentDisposition.Name.ToString() }); i++; section = await reader.ReadNextSectionAsync(); } while (section != null); await _dbContext.CompletedProgramReviewables.AddAsync(reviewable); await _dbContext.SaveChangesAsync(); //await SendFileSomewhere(fileStream); return(Ok()); }