示例#1
0
        public async Task <IActionResult> UploadReviewed(CompletedProgramReviewable reviewable)
        {
            var entry = await _dbContext.CompletedProgramReviewables.Where(x => x.Id == reviewable.Id).SingleOrDefaultAsync();

            if (entry != null)
            {
                entry.IsReviewed      = true;
                entry.ReviewedComment = reviewable.ReviewedComment;
                await _dbContext.SaveChangesAsync();

                return(Ok("Ok"));
            }
            return(BadRequest("Does not exist"));
        }
 //TODO: add DTOs
 public async Task <sr <bool> > Upload(CompletedProgramReviewable reviewable)
 {
     return(await _base.Put <CompletedProgramReviewable>($"api/CompletedProgramReviewables", reviewable));
 }
示例#3
0
        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());
        }