Ejemplo n.º 1
0
        public async Task <IActionResult> Remove(string viewName)
        {
            BaseViewOverride viewOverride = db.ViewOverrides.FirstOrDefault(x => x.View == viewName);

            if (viewOverride == null)
            {
                HttpContext.Items["ErrorMessage"] = "Не удалось найти переписанную вами страницу";
                return(RedirectToAction("Index"));
            }

            _logger.LogDebug($"Remove overridable view with viewname = {viewOverride.View}");

            var fileInfo = new FileInfo(viewOverride.Path);

            _logger.LogDebug("Try to delete view file");

            if (fileInfo.Exists)
            {
                fileInfo.Delete();
            }

            _logger.LogDebug("Try to delete view from database");
            db.ViewOverrides.Remove(viewOverride);
            await db.SaveChangesAsync();

            _logger.LogDebug("Successfully remove overridable view");
            HttpContext.Items["SuccessMessage"] = "Удаление страницы произведено успешно";

            return(RedirectToAction("Index"));
        }
Ejemplo n.º 2
0
        public IActionResult Delete(string viewName)
        {
            BaseViewOverride viewOverride = db.ViewOverrides.FirstOrDefault(x => x.View == viewName);

            if (viewOverride == null)
            {
                HttpContext.Items["ErrorMessage"] = "Не удалось найти переписанную вами страницу.";
                return(RedirectToAction("Index"));
            }

            var model = new DeleteBaseViewOverride
            {
                ChoosenView = viewOverride.View,
                Enable      = viewOverride.Enable
            };

            return(View());
        }
Ejemplo n.º 3
0
        public IActionResult EnableView(string view, bool enable)
        {
            BaseViewOverride viewOverride = db.ViewOverrides.FirstOrDefault(x => x.View == view);

            if (viewOverride == null)
            {
                HttpContext.Items["ErrorMessage"] = "Не удалось найти переписанную вами страницу.";
                return(RedirectToAction("Index"));
            }

            _logger.LogDebug("Enable view action start for view = {@viewOverrid}", viewOverride);
            viewOverride.Enable = enable;

            db.ViewOverrides.Update(viewOverride);
            db.SaveChanges();

            _logger.LogInformation("View = {@view}, was switch enable state to {enable}", viewOverride, enable);

            return(RedirectToAction("Index"));
        }
Ejemplo n.º 4
0
        public IActionResult Edit(string view)
        {
            BaseViewOverride viewOverride = db.ViewOverrides.FirstOrDefault(x => x.View == view);

            if (viewOverride == null)
            {
                HttpContext.Items["ErrorMessage"] = "Не удалось найти переписанную вами страницу.";
                return(RedirectToAction("Index"));
            }

            EditBaseViewOverride model = new EditBaseViewOverride
            {
                ChoosenView = view,
                OldView     = viewOverride.View,
                Enable      = viewOverride.Enable,
                Code        = ReadFromFile(viewOverride.Path),
                Views       = new SelectList(GetNotOverrideViews())
            };

            return(View(model));
        }
Ejemplo n.º 5
0
        public IActionResult Create(CreateReplaceViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model.Views = new SelectList(GetNotOverrideViews());
                return(View(model));
            }

            IEnumerable <string> temp = GetNotOverrideViews();

            if (!temp.Contains(model.ChoosenView))
            {
                ModelState.AddModelError("ChoosenView", "Нельяза переписать данное представление.");
                model.Views = new SelectList(temp);
                return(View(model));
            }

            _logger.LogDebug("Create overridable view action started");
            var viewsPath = _configuration.GetSection("Views")["NewBaseViewsPath"];

            viewsPath = viewsPath[0] == '/' ? viewsPath : viewsPath.Insert(0, "/");
            viewsPath = viewsPath.Last() == '/' ? viewsPath : viewsPath.Append('/').ToString();

            _logger.LogDebug("Check directory existance");
            if (!Directory.Exists(_environment.ContentRootPath + viewsPath))
            {
                Directory.CreateDirectory(_environment.ContentRootPath + viewsPath);
            }

            var fileInfo = new FileInfo($"{_environment.ContentRootPath}{viewsPath}{model.ChoosenView}.cshtml");

            if (fileInfo.Exists)
            {
                HttpContext.Items["ErrorMessage"] = "Файл перезаписи для данного представления уже существует.";
                return(RedirectToAction("Index"));
            }

            if (!Directory.Exists($"{_environment.ContentRootPath + viewsPath}/{model.ChoosenView.Split('/')[0]}"))
            {
                Directory.CreateDirectory($"{_environment.ContentRootPath + viewsPath}/{model.ChoosenView.Split('/')[0]}");
            }

            _logger.LogDebug("Try to create file");
            try
            {
                StreamWriter sw = fileInfo.CreateText();
                sw.Write(model.Code);
                sw.Close();
            }
            catch (Exception)
            {
                HttpContext.Items["ErrorMessage"] = "Не удалось записать в новый файл ваш код. Проверьте ваши права в системе.";
                return(RedirectToAction("Index"));
            }
            _logger.LogDebug("File successfully created, create view entity model");

            var viewOverride = new BaseViewOverride
            {
                View   = model.ChoosenView,
                Path   = $"{viewsPath}{model.ChoosenView}.cshtml",
                Enable = model.Enable
            };

            db.ViewOverrides.Add(viewOverride);
            db.SaveChanges();
            _logger.LogInformation("New overridable page created! View = {@view}", viewOverride);

            if (model.Enable)
            {
                HttpContext.Items["SuccessMessage"] = $"Перезапись представления \"{model.ChoosenView}\" успешно создана и активирована!";
            }
            else
            {
                HttpContext.Items["SuccessMessage"] = $"Перезапись представления \"{model.ChoosenView}\" успешно создана! Вы можете активировать её в любой момент.";
            }

            return(RedirectToAction("Index"));
        }