Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

HomeController.cs 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using Microsoft.AspNetCore.Authorization;
  2. using Microsoft.AspNetCore.Mvc;
  3. using SecureSharing.Business.Dtos;
  4. using SecureSharing.Business.Interfaces;
  5. using SecureSharing.Data.Data;
  6. using SecureSharing.Infrastructure;
  7. using SecureSharing.Models;
  8. namespace SecureSharing.Controllers;
  9. [Authorize]
  10. public sealed class HomeController : Controller
  11. {
  12. private readonly ILogger<HomeController> _logger;
  13. private readonly IMessageService _messageService;
  14. private readonly IModelFactory _modelFactory;
  15. private readonly IWebHostEnvironment _webHostEnvironment;
  16. private const string DefaultPath = "files";
  17. public HomeController(ILogger<HomeController> logger, IMessageService messageService, IModelFactory modelFactory, IWebHostEnvironment webHostEnvironment)
  18. {
  19. _logger = logger;
  20. _messageService = messageService;
  21. _modelFactory = modelFactory;
  22. _webHostEnvironment = webHostEnvironment;
  23. }
  24. public IActionResult Index()
  25. {
  26. return View();
  27. }
  28. [HttpPost]
  29. public async Task<IActionResult> CreateMessage(MessageModel model)
  30. {
  31. var message = new MessageDto { Text = model.Text };
  32. var currentPath = _webHostEnvironment.WebRootPath.Split('/')[0];
  33. // var filePath = $@"{currentPath}\{DefaultPath}\{message.Code}";
  34. var filePath = Path.Combine(currentPath, DefaultPath, message.Code.ToString());
  35. Directory.CreateDirectory(filePath);
  36. foreach (var formFile in model.Files)
  37. {
  38. if (formFile.Length > 0)
  39. {
  40. using var stream = new FileStream(filePath, FileMode.Create);
  41. await formFile.CopyToAsync(stream);
  42. message.FileNames.Add(new FileModel { Name = formFile.Name });
  43. }
  44. }
  45. var code = await _messageService.Create(message, model.ChosenPeriod);
  46. return RedirectToAction("Link", "Home", new { code = code, share = true });
  47. }
  48. [HttpGet]
  49. public async Task<IActionResult> Link(Guid code, bool? share)
  50. {
  51. var model = await _modelFactory.PrepareLinkVM(code, share);
  52. return View(model);
  53. }
  54. public IActionResult Privacy()
  55. {
  56. return View();
  57. }
  58. }