Ejemplo n.º 1
0
        public async Task <IActionResult> EditForumEndpoint(string EndpointId)
        {
            var endpoint = await(from e in DBContext.ForumEndpoints.Include(f => f.PinnedFiles)
                                 where e.Id.ToString() == EndpointId
                                 select e).FirstOrDefaultAsync();
            var model = new EditForumEndpointViewModel()
            {
                EndpointName = endpoint.Name,
                EndpointId   = endpoint.Id.ToString(),
                EndpointText = endpoint.Text.Replace("<br>", "\n"),
                PinnedFiles  = endpoint.PinnedFiles,
                CreatorEmail = endpoint.CreatorEmail
            };

            return(View(model));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> EditForumEndpoint(EditForumEndpointViewModel model)
        {
            if (ModelState.IsValid)
            {
                var endpoint = await(from e in DBContext.ForumEndpoints.Include(f => f.PinnedFiles)
                                     where e.Id.ToString() == model.EndpointId
                                     select e).FirstOrDefaultAsync();
                if ((model.EndpointText.IndexOf("<script>") != -1) || (model.EndpointText.IndexOf("</script>") != -1))
                {
                    ModelState.AddModelError("scripts", "Теги <script> запрещены!");
                    return(View(model));
                }
                DBContext.ForumEndpoints.Update(endpoint).Entity.Name = model.EndpointName;
                var safeText = model.EndpointText.Replace("<script>", "");//на всякий
                safeText = safeText.Replace("\n", "<br>");
                DBContext.ForumEndpoints.Update(endpoint).Entity.Text = safeText;
                if (model.UploadedFiles != null)
                {
                    string outfolder;
                    if ((endpoint.PinnedFiles != null) && (endpoint.PinnedFiles.Count > 0))
                    {
                        outfolder = endpoint.PinnedFiles[0].Path.Replace(endpoint.PinnedFiles[0].Name, String.Empty);
                    }
                    else
                    {
                        outfolder = environment.WebRootPath + "/ForumFiles/EPFiles/" + model.EndpointName + "_"
                                    + System.DateTime.Now.ToString("s").Replace(":", "-") + "/";
                        if (!Directory.Exists(outfolder))
                        {
                            Directory.CreateDirectory(outfolder);
                        }
                    }
                    foreach (IFormFile file in model.UploadedFiles)
                    {
                        if (file.Length >= 10485760)
                        {
                            ModelState.AddModelError("FileTooBig", "Нельзя загружать файлы свыше 10 Мегабайт.");
                            return(View(model));
                        }
                        var outpath = outfolder + file.FileName;
                        using (var fileStream = new FileStream(outpath, FileMode.Create))
                        {
                            await file.CopyToAsync(fileStream);
                        }
                        var efile = new EForumFile()
                        {
                            Name          = file.FileName,
                            Path          = outpath,
                            TypeOfParent  = 1,
                            ForumEndpoint = endpoint
                        };
                        DBContext.ForumFiles.Add(efile);
                        DBContext.ForumEndpoints.Update(endpoint).Entity.PinnedFiles.Add(efile);
                    }
                }
                await DBContext.SaveChangesAsync();

                return(RedirectToAction("ForumEndpoint", new { EndpointId = model.EndpointId }));
            }
            return(View(model));
        }