public ActionResult FileUploadTicket(int?ticketId) { if (ticketId is null) { return(RedirectToDashError()); } var ticket = DbContext.Tickets.FirstOrDefault(tckt => tckt.Id == ticketId); if (ticket is null) { return(RedirectToDashError()); } if (TicketHelper.UserCanAccessTicket(User, ticket)) { var file = new UploadFileTicketViewModel() { TicketId = (int)ticketId }; return(View(file)); } else { return(RedirectToDashError()); } }
public ActionResult FileUploadTicket(UploadFileTicketViewModel formData) { if (formData is null) { return(RedirectToDashError()); } var ticket = DbContext.Tickets.FirstOrDefault(tckt => tckt.Id == formData.TicketId); if (ticket is null) { return(RedirectToDashError()); } if (TicketHelper.UserCanAccessTicket(User, ticket) && formData.Media != null) { var uploadFolder = Server.MapPath("~/Upload/"); var user = UserManager.FindById(User.Identity.GetUserId()); // If the Upload directory doesn't exist, create it. if (!Directory.Exists(uploadFolder)) { Directory.CreateDirectory(uploadFolder); } // New file name, random gen. var fileNameGen = Guid.NewGuid(); // The GUID ensure no file will have the same name. var fullFilePathWName = uploadFolder + fileNameGen + Path.GetExtension(formData.Media.FileName); // Save file to Upload folder formData.Media.SaveAs(fullFilePathWName); // Set media URL to later access the file. Then save to DB. // Have an object storing the name of the file, short URL to the file, and the path of the file. ticket.Files.Add(new TicketFile() { MediaUrl = "~/Upload/" + fileNameGen + Path.GetExtension(formData.Media.FileName), FileName = fileNameGen.ToString() + Path.GetExtension(formData.Media.FileName), Title = formData.Media.FileName, TicketId = ticket.Id, UserId = user.Id }); // Notify users of added file TicketHelper.SendNotificationsToUsers(ticket, "File added"); DbContext.SaveChanges(); return(RedirectToAction("DetailsTicket", "Ticket", new { ticketId = ticket.Id })); } else { return(RedirectToDashError()); } }