Example #1
0
        public async Task <IActionResult> UploadFile(Guid todoId, IFormFile file)
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                _logger.LogError($"Unknown user tried creating an item.");
                return(Unauthorized());
            }

            if (todoId == Guid.Empty)
            {
                _logger.LogError($"Given todoId is empty.");
                return(BadRequest());
            }

            var item = await _todoService.GetItemAsync(todoId);

            if (item == null)
            {
                _logger.LogError($"Item with id {todoId} not found.");
                return(NotFound());
            }

            if (file == null || file?.Length == 0)
            {
                _logger.LogError($"File is null or empty.");
                return(BadRequest(typeof(IFormFile)));
            }

            var path = todoId + "//" + file.FileName;

            await _fileStorageService.CleanDirectoryAsync(todoId.ToString());

            var saved = await _fileStorageService.SaveFileAsync(path, file.OpenReadStream());

            if (!saved)
            {
                return(BadRequest("Couldn't create or replace file"));
            }

            var succeeded = await _todoService.SaveFileAsync(todoId, user, path, file.Length);

            if (!succeeded)
            {
                _logger.LogError("Couldn't create or replace file.");
                return(BadRequest("Couldn't create or replace file."));
            }

            return(CreatedAtAction(nameof(GetItemById), new { Id = todoId }, item));
        }
Example #2
0
        public async Task <IActionResult> UploadFile([FromRoute] Guid todoId, IFormFile file)
        {
            var currentUser = await _userManager.GetUserAsync(User);

            if (currentUser == null)
            {
                return(Challenge());
            }

            if (todoId == null || todoId == Guid.Empty)
            {
                return(BadRequest());
            }

            if (file == null || file?.Length == 0)
            {
                return(BadRequest(typeof(IFormFile)));
            }

            var path = todoId + "//" + file.FileName;

            await _fileStorageService.CleanDirectoryAsync(todoId.ToString());

            var saved = await _fileStorageService.SaveFileAsync(path, file.OpenReadStream());

            if (!saved)
            {
                return(BadRequest("Couldn't create or replace file"));
            }

            var succeeded = await _todoItemService.SaveFileAsync(todoId, currentUser, path, file.Length);

            if (!succeeded)
            {
                return(BadRequest("Couldn't create or replace file"));
            }

            return(RedirectToAction("Details", new { id = todoId }));
        }