using Microsoft.AspNetCore.Http; using zero.Core.Api; using zero.Core.Entities; using zero.Core.Routing; namespace zero.Web.ViewHelpers { public class ZeroViewContext : IZeroViewContext { protected IApplicationContext ApplicationContext { get; private set; } protected HttpContext HttpContext { get; private set; } public ZeroViewContext(IApplicationContext applicationContext, IHttpContextAccessor httpContextAccessor, IZeroMediaHelper mediaHelper) { ApplicationContext = applicationContext; HttpContext = httpContextAccessor.HttpContext; Application = ApplicationContext.App; AppId = ApplicationContext.AppId; if (HttpContext.Request.RouteValues.TryGetValue("zero.route", out object route)) { ResolvedRoute = (IResolvedRoute)route; Route = ResolvedRoute.Route; } Media = mediaHelper; } /// public IApplication Application { get; } /// public string AppId { get; } /// public IRoute Route { get; } /// public IResolvedRoute ResolvedRoute { get; } /// public IZeroMediaHelper Media { get; } } public interface IZeroViewContext { /// /// Currently active application /// IApplication Application { get; } /// /// Currently active application id /// string AppId { get; } /// /// Matching path route /// IRoute Route { get; } /// /// Matching resolved route /// IResolvedRoute ResolvedRoute { get; } /// /// Media helper functions /// public IZeroMediaHelper Media { get; } } }