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;
 }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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))
 {
 }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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"
                    };
                });
            }));
        }