| var message = new MessageDto { Text = model.Text }; | var message = new MessageDto { Text = model.Text }; | ||||
| await UploadFiles(model, message); | |||||
| var code = await _messageService.Create(message, model.ChosenPeriod); | |||||
| return RedirectToAction("Link", "Home", new { code = code, share = true }); | |||||
| } | |||||
| private async Task UploadFiles(MessageModel model, MessageDto message) | |||||
| { | |||||
| var basePath = Path.Combine(_webHostEnvironment.WebRootPath.Split('/')[0], DefaultPath, message.Code.ToString()); | var basePath = Path.Combine(_webHostEnvironment.WebRootPath.Split('/')[0], DefaultPath, message.Code.ToString()); | ||||
| var basePathTemporary = Path.Combine(_webHostEnvironment.WebRootPath.Split('/')[0], DefaultPathTmp); | var basePathTemporary = Path.Combine(_webHostEnvironment.WebRootPath.Split('/')[0], DefaultPathTmp); | ||||
| Directory.CreateDirectory(basePath); | Directory.CreateDirectory(basePath); | ||||
| var directoryNames = model.FilesAsText | var directoryNames = model.FilesAsText | ||||
| .Split(';') | .Split(';') | ||||
| .Select(x => x.Split(':')[0]) | .Select(x => x.Split(':')[0]) | ||||
| foreach (var file in fileNames) | foreach (var file in fileNames) | ||||
| { | { | ||||
| message.FileNames.Add(new FileModel {Name = file}); | |||||
| message.FileNames.Add(new FileModel { Name = file }); | |||||
| } | } | ||||
| foreach (var directoryName in directoryNames) | foreach (var directoryName in directoryNames) | ||||
| { | { | ||||
| var directoryPath = Path.Combine(basePathTemporary, directoryName); | var directoryPath = Path.Combine(basePathTemporary, directoryName); | ||||
| System.IO.File.Move(filePath, newFilePath); | System.IO.File.Move(filePath, newFilePath); | ||||
| } | } | ||||
| } | } | ||||
| foreach (var directory in directoryNames) | foreach (var directory in directoryNames) | ||||
| { | { | ||||
| Directory.Delete(Path.Combine(basePathTemporary, directory), true); | Directory.Delete(Path.Combine(basePathTemporary, directory), true); | ||||
| foreach (var formFile in model.Files) | foreach (var formFile in model.Files) | ||||
| { | { | ||||
| if (formFile.Length <= 0) | |||||
| if (formFile.Length <= 0) | |||||
| continue; | continue; | ||||
| var filePath = Path.Combine(basePath, formFile.FileName); | var filePath = Path.Combine(basePath, formFile.FileName); | ||||
| await using var stream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite); | await using var stream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite); | ||||
| await formFile.CopyToAsync(stream); | await formFile.CopyToAsync(stream); | ||||
| message.FileNames.Add(new FileModel { Name = formFile.FileName }); | message.FileNames.Add(new FileModel { Name = formFile.FileName }); | ||||
| } | } | ||||
| var code = await _messageService.Create(message, model.ChosenPeriod); | |||||
| return RedirectToAction("Link", "Home", new { code = code, share = true }); | |||||
| } | } | ||||
| public async Task<FileStreamResult> Download(string filename, Guid code) | public async Task<FileStreamResult> Download(string filename, Guid code) |