public AdminkaCrudRoutinePageConsumer(PageModel pageModel, Referrer referrer, PageRoutineFeature pageRoutineFeature, Func <User, UserContext> createUserContext, ApplicationSettings applicationSettings, IMemoryCache memoryCache, MemberTag memberTag) : base(pageModel, pageRoutineFeature, getUserAndFailedActionResultInitialisedAsync: (aspRoutineFeature) => AspNetCoreManager.GetUserAndFailedActionResultInitialisedAsync( applicationSettings, memberTag, pageModel, aspRoutineFeature, memoryCache, pageRoutineFeature), getContainerHandler: (aspRoutineFeature, getInput, user, containerFactory) => { var userContext = createUserContext(user); return(MvcAppManager.GetContainerStorageHandler( containerFactory, memberTag, aspRoutineFeature, getInput, userContext, applicationSettings, uc => uc.AuditStamp )); }) { this.Referrer = referrer; }
public ControllerRoutineAnonymousHandlerAsync( ControllerBase controllerBase, Func <AspRoutineFeature, Func <object>, ComplexRoutineHandlerAsync <TServiceContainer, TUserContext> > getContainerHandler) { var aspRoutineFeature = AspNetCoreManager.GetAspRoutineFeature(controllerBase); this.getContainerHandler = () => getContainerHandler( aspRoutineFeature, () => AspNetCoreManager.GetRequest(controllerBase.HttpContext.Request)); }
public PageRoutineAnonymousHandlerAsync( PageModel pageModel, Func <AspRoutineFeature, Func <object>, ComplexRoutineHandlerAsync <TServiceContainer, TUserContext> > getContainerHandler) { var aspRoutineFeature = AspNetCoreManager.GetAspRoutineFeature(pageModel); this.getContainerHandler = () => getContainerHandler( aspRoutineFeature, () => AspNetCoreManager.GetRequest(pageModel.HttpContext.Request)); }
public AdminkaCrudRoutinePageConsumer( PageModel pageModel, Referrer referrer, [CallerMemberName] string member = null) : this(pageModel, referrer, AspNetCoreManager.SetAndGetPageRoutineFeature(pageModel, referrer), u => MvcAppManager.SetAndGetUserContext(pageModel, u), (ApplicationSettings)pageModel.HttpContext.RequestServices.GetService(typeof(ApplicationSettings)), (IMemoryCache)pageModel.HttpContext.RequestServices.GetService(typeof(IMemoryCache)), new MemberTag(pageModel.GetType().Namespace, pageModel.GetType().Name, member)) { }
public IActionResult OnGet() { Referrer referrer = null; var pageRoutineFeature = AspNetCoreManager.SetAndGetPageRoutineFeature(this, referrer); var routine = new PageContainerRoutineHandler(this, pageRoutineFeature); var page = routine.Handle((container, closure) => { var sinceDate = HttpContext.Request.Query.GetNDate("Since", "MM.dd.yyyy"); var tillDate = HttpContext.Request.Query.GetNDate("Till", "MM.dd.yyyy"); var filter = HttpContext.Request.Query.GetString("Filter"); if (sinceDate != null && tillDate != null) { SinceDate = sinceDate.Value.ToString("MM/dd/yyyy"); TillDate = tillDate.Value.ToString("MM/dd/yyyy"); RangeValue = SinceDate + " - " + TillDate; } Filter = filter; return(Page()); } ); return(page); }
public async Task <IActionResult> GetRecords() { var router = new ApiRoutineHandlerAsync(this, applicationSettings, memoryCache); return(await router.HandleAsync(async (PerCallContainer <UserContext> container, Routines.RoutineClosure <UserContext> closure) => { // TODO: priveleges var routine = container.ResolveLoggingDomDbContextHandlerAsync(); return await routine.HandleDbContextAsync( async db => { var formCollection = this.HttpContext.Request.Form; var enUS = new CultureInfo("en-US"); DateTime?since = formCollection.GetNDate("since", "MM/dd/yyyy"); DateTime?till = formCollection.GetNDate("till", "MM/dd/yyyy"); var cachedList = await memoryCache.GetOrCreateAsync( "GetRecords", async c => { c.SetAbsoluteExpiration(TimeSpan.FromSeconds(20)) .SetSlidingExpiration(TimeSpan.FromSeconds(5)); return await db.ActivityRecords.AsNoTracking().Select( e => new { e.ActivityRecordLoggedAt, e.ActivityRecordId, e.FullActionName } ).ToListAsync(); } ); var recordsTotal = cachedList.Count(); var(startPageAtIndex, pageLength, searchValue, columnsOrders, columnsSearches) = AspNetCoreManager.GetJQueryDataTableRequest(this); var queryable = cachedList.Where(e => (string.IsNullOrEmpty(searchValue) || e.FullActionName.ToString() == searchValue || "ID" + e.ActivityRecordId.ToString() == searchValue ) && (since == null || e.ActivityRecordLoggedAt >= since.Value) && (till == null || e.ActivityRecordLoggedAt <= till.Value) ); foreach (var c in columnsOrders) { switch (c.Item1) { case 1: if (c.Item2) { queryable = queryable.OrderByDescending(e => e.ActivityRecordId); } else { queryable = queryable.OrderBy(e => e.ActivityRecordId); } break; case 2: if (c.Item2) { queryable = queryable.OrderByDescending(e => e.ActivityRecordLoggedAt); } else { queryable = queryable.OrderBy(e => e.ActivityRecordLoggedAt); } break; case 3: if (c.Item2) { queryable = queryable.OrderByDescending(e => e.FullActionName); } else { queryable = queryable.OrderBy(e => e.FullActionName); } break; default: queryable = queryable.OrderByDescending(e => e.ActivityRecordLoggedAt); break; } } var list = queryable.ToList(); var recordsFiltered = list.Count(); var json = list .Skip(startPageAtIndex > recordsFiltered ? (recordsFiltered - pageLength < 0 ? 0 : recordsFiltered - pageLength) : startPageAtIndex) .Take(pageLength) .ToJsonAll(new { recordsTotal, recordsFiltered }, getRecordsCachedFormatter, include: chain => chain .Include(e => e.ActivityRecordId) // 1 .Include(e => e.ActivityRecordLoggedAt) // 2 .Include(e => e.FullActionName) // 3 , objectAsArray: true, rootAsProperty: "data", rootPropertyAppender: (j, c) => j.AddNumberProperty("recordsTotal", c.recordsTotal) .AddNumberProperty("recordsFiltered", c.recordsFiltered) ); return new ContentResult { Content = json, ContentType = "application/json" }; }); })); }