Пример #1
0
        private async Task AddDocumentToFileSystemAndDb(int id, MultipartMemoryStreamProvider provider)
        {
            for (int i = 0; i < provider.Contents.Count - 1; i++)
            {
                var file = provider.Contents[i];

                if (file.Headers.ContentDisposition.FileName != null)
                {
                    var dir = FilePaths.WriteSupportingDoc + FilePaths.FolderFromUniqueId(id);
                    if (!System.IO.Directory.Exists(dir))
                    {
                        System.IO.Directory.CreateDirectory(dir);
                    }

                    // For an unknown reason, the FileName has an extra '\' everywhere, that's why it's replaced with string.Empty
                    var writePath = dir + file.Headers.ContentDisposition.FileName.Replace("\"", string.Empty);

                    var dataStream = await file.ReadAsByteArrayAsync();

                    using (var saveFile = File.OpenWrite(writePath))
                    {
                        await saveFile.WriteAsync(dataStream, 0, dataStream.Length);
                    }

                    var dateModified = await FileDates.StreamToString(provider.Contents[i + 1]);
                    await AddFileReferenceToDatabase(id, dateModified, writePath);
                }
            }
        }
Пример #2
0
        private async Task DuplicatePoInFileSystem(int oldId, int newId)
        {
            var dir = FilePaths.WriteSupportingDoc + FilePaths.FolderFromUniqueId(newId);
            var supportingDocuments = _context.Documents
                                      .Where(d => d.PoFormId == oldId)
                                      .Where(d => d.TypeOfDocument == Data.Services.TypeOfDocument.Supporting)
                                      .ToList();

            var newPoWritePath = FilePaths.WritePoForm + newId + ".pdf";

            if (!Directory.Exists(dir) && !File.Exists(newPoWritePath))
            {
                Directory.CreateDirectory(dir);
                foreach (var doc in supportingDocuments)
                {
                    File.Copy(doc.FilePath, dir + Path.GetFileName(doc.FilePath));
                }

                await WriteToFileSystem(newId);
            }
        }