IEnumerable <FileDescriptionShort> IFileRepository.AddFileDescriptions(DataAccess.Model.FileResult fileResult)
        {
            List <string> filenames = new List <string>();

            for (int i = 0; i < fileResult.FileNames.Count(); i++)
            {
                int index     = fileResult.FileNames[i].LastIndexOf("\\", StringComparison.Ordinal);
                var shortName = fileResult.FileNames[i].Substring(index + 1);

                var fileDescription = new FileDescription
                {
                    ContentType      = fileResult.ContentTypes[i],
                    FileName         = shortName,
                    CreatedTimestamp = fileResult.CreatedTimestamp,
                    UpdatedTimestamp = fileResult.UpdatedTimestamp,
                    Description      = fileResult.Description
                };

                filenames.Add(fileResult.FileNames[i]);
                _context.FileDescriptions.Add(fileDescription);
            }

            _context.SaveChanges();
            return(GetNewFiles(filenames));
        }
        public async Task <IActionResult> UploadFiles(FileDescriptionShort fileDescriptionShort)
        {
            var names        = new List <string>();
            var contentTypes = new List <string>();

            if (ModelState.IsValid)
            {
                // http://www.mikesdotnetting.com/article/288/asp-net-5-uploading-files-with-asp-net-mvc-6
                // http://dotnetthoughts.net/file-upload-in-asp-net-5-and-mvc-6/
                foreach (var file in fileDescriptionShort.File)
                {
                    if (file.Length > 0)
                    {
                        var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
                        contentTypes.Add(file.ContentType);

                        names.Add(fileName);

                        // Extension method update RC2 has removed this
                        await file.SaveAsAsync(Path.Combine(_optionsApplicationConfiguration.Value.ServerUploadFolder, fileName));
                    }
                }
            }

            var files = new FileResult
            {
                FileNames        = names,
                ContentTypes     = contentTypes,
                Description      = fileDescriptionShort.Description,
                CreatedTimestamp = DateTime.UtcNow,
                UpdatedTimestamp = DateTime.UtcNow,
            };

            _fileRepository.AddFileDescriptions(files);

            return(RedirectToAction("ViewAllFiles", "FileClient"));
        }