public async Task <ResultResponse <DocumentDto> > AddDocument([FromForm] DocumentCreateDto dto) { if (await IsInRole(Roles.Admin)) { if (dto != null && ModelState.IsValid) { if (dto.File == null) { if (Request?.HasFormContentType == true && Request?.Form?.Files?.Count != 0) { dto.File = Request.Form.Files[0]; } } if (dto.File == null) { return(ResultResponse <DocumentDto> .GetBadResponse(BussinesLogic.Models.StatusCode.BadRequest, "Необходимо передать файл")); } else { return(await _documentsService.AddDocumentAsync(dto, UserId.Value)); } } return(ResultResponse <DocumentDto> .GetBadResponse(BussinesLogic.Models.StatusCode.BadRequest)); } return(ResultResponse <DocumentDto> .GetBadResponse(BussinesLogic.Models.StatusCode.Forbidden)); }
public async Task <IActionResult> Create([FromBody] DocumentCreateDto document) { if (document == null) { return(BadRequest()); } int attemptsCount = 0; int maxAttemptsCount = 100; string slug; bool isSlugUnique = false; do { slug = document.Title.GenerateSlug(); isSlugUnique = (await _db.Documents.SingleOrDefaultAsync(d => d.Slug == slug)) == null; } while (!isSlugUnique && attemptsCount < maxAttemptsCount); if (!isSlugUnique) { return(BadRequest(new { message = "Cannot generate unique slug" })); } var newDocument = new Documents { ParentDocumentId = document.ParentDocumentId, ProjectId = document.ProjectId, CreatorId = UserId, Slug = slug, Title = document.Title, Subtitle = document.Subtitle, DateCreated = DateTime.UtcNow, IsDraft = document.IsDraft }; _db.Documents.Add(newDocument); await _db.SaveChangesAsync(); await _db.Entry(newDocument).Reference(d => d.Creator).LoadAsync(); var newDocumentText = new DocumentText { DocumentId = newDocument.DocumentId, EditorId = UserId, Content = document.Content, QuillDelta = document.QuillDelta, TimeUpdated = DateTime.UtcNow }; _db.DocumentText.Add(newDocumentText); await _db.SaveChangesAsync(); await this.SaveActivity(newDocument.DocumentId, @"Document created: " + newDocument.Title, new { document_id = newDocument.DocumentId, type = "create" }); return(Ok(await PrepareDocument(newDocument))); }
public async Task <ResultResponse <DocumentDto> > AddDocumentAsync(DocumentCreateDto dto, int userId) { try { var uploader = await _usersRepository.GetAsync(userId); if (uploader == null) { return(ResultResponse <DocumentDto> .GetBadResponse(StatusCode.NotFound, "Не найден пользователь")); } byte[] bytes = new byte[dto.File.Length]; using (var stream = dto.File.OpenReadStream()) { await stream.ReadAsync(bytes, 0, (int)dto.File.Length); } var fileManager = new FileManager.Infrasructure.FileManager( baseAddress: _configurationService.WebAppSettings.BaseAddress, folder: _configurationService.UploadedFilesSettings.DocumentsFilesFolderRelativePath, progressLogger: _progressLogger); var uploadingResult = await fileManager.UploadFileAsync(new FileDto(dto.File.FileName, bytes), new string[] { "png", "jpg", "gif", "jpeg", "bmp" }); if (uploadingResult.IsSuccess) { var document = await _documentsRepository.AddAsync(new Document { length = (int)dto.File.Length, name = dto.Name, native_name = dto.File.FileName, path = uploadingResult.FilePath, created = DateTime.Now, creator_id = userId, }); if (document != null) { var documentView = await _documentViewsRepository.GetAsync(document.id); var documentDto = _mapper.Map <DocumentDto>(documentView); return(ResultResponse <DocumentDto> .GetSuccessResponse(documentDto)); } else { return(ResultResponse <DocumentDto> .GetInternalServerErrorResponse()); } } else { return(ResultResponse <DocumentDto> .GetInternalServerErrorResponse(uploadingResult.ErrorDescription)); } } catch (Exception ex) { _progressLogger.Error(ex, new { dto, userId }, GetType().Name, nameof(AddDocumentAsync)); return(ResultResponse <DocumentDto> .GetInternalServerErrorResponse()); } }
public ActionResult Post([FromBody] DocumentCreateDto documentDto) { Document document = _mapper.Map <Document>(documentDto); document.OwnerId = int.Parse(User.Identity.Name); document.CreatedAt = DateTime.Now; Console.WriteLine(document); try { // save the document if (_documentService.Create(document)) { return(Ok()); } // if it didnt save, it's our fault return(StatusCode(500)); } catch (AppException ex) { return(BadRequest(new { message = ex.Message })); } }