Пример #1
0
        public async Task <IActionResult> Create([FromForm] UploadQueueItemVm data)
        {
            var files = Request.Form.Files;

            if (files.Count < 1)
            {
                return(BadRequest(new { message = nameof(Resource.NoFilesAttached) }));
            }
            await _svc.CreateAsync(files, data, User.GetUserId());

            return(Ok());
        }
Пример #2
0
        public async Task CreateAsync(IFormFileCollection files, UploadQueueItemVm data, string userId)
        {
            var today = DateTime.Now;
            var path  = Path.Combine(
                Path.GetFullPath(_rootPath),
                _uploadDir,
                today.Year.ToString(),
                today.Month.ToString(),
                today.Day.ToString());

            try
            {
                Directory.CreateDirectory(path);
                foreach (var file in files)
                {
                    var filePath = Path.Combine(path, Guid.NewGuid().ToString());
                    using (var fileStream = new FileStream(filePath, FileMode.Create))
                    {
                        await file.CopyToAsync(fileStream);

                        _dbContext.DataSourceQueues.Add(new DataSourceQueue
                        {
                            UserId             = userId,
                            DataSourcePath     = filePath,
                            DataSourceFileName = file.FileName,
                            DataSourceId       = data.DataSourceId,
                            Description        = data.Description,
                            StartImportDate    = today,
                            EndImportDate      = DateTime.Now,
                            Status             = DataSourceQueueStatuses.InQueue,
                        });
                    }
                }
                await _dbContext.SaveChangesAsync();
            }
            catch (Exception e)
            {
                throw new BadRequestException(nameof(Resource.CantStoreFile), e);
            }
        }