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")); }
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()); }
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")); }
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)); }
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")); }