Esempio n. 1
0
 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));
 }
Esempio n. 2
0
        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)));
        }
Esempio n. 3
0
        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 }));
            }
        }