using System; using System.Linq; using System.Web.Mvc; using System.Web.Routing; using log4net; using LeafWeb.Core.DAL; using Umbraco.Web.Mvc; namespace LeafWeb.WebCms.Controllers { public class BaseController : SurfaceController { protected readonly DataService DataService = new DataService(); protected override void Dispose(bool disposing) { DataService.Dispose(); base.Dispose(disposing); } protected override void OnException(ExceptionContext filterContext) { if (filterContext?.Exception != null) { var loggerName = LoggerName(filterContext.RouteData); LogManager.GetLogger(loggerName).Error(filterContext.Exception); } base.OnException(filterContext); } protected string LoggerName(RouteData routeData) { var controller = RouteData.Values["controller"].ToString(); var action = RouteData.Values["action"].ToString(); return $"LeafWeb.WebCms.Controllers.{controller}Controller.{action}"; } // Status messages to pages protected enum StatusType { Info, Success, Error } protected void SetStatusMessage(string msg, StatusType statusType = StatusType.Info) { TempData["StatusMessage"] = msg; switch (statusType) { case StatusType.Success: TempData["StatusMessage-Type"] = "alert-success"; break; case StatusType.Error: TempData["StatusMessage-Type"] = "alert-error"; break; case StatusType.Info: break; default: throw new ArgumentOutOfRangeException(nameof(statusType), statusType, null); } } protected SelectList GetPhotosynthesisTypeSelectList() { return new SelectList(DataService.GetPhotosynthesisTypes().ToList(), "Id", "Name"); } } }