コード例 #1
0
        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());
            }
        }
コード例 #2
0
        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());
            }
        }