public async Task <IActionResult> Get() { OperationEntity[] entities = new OperationEntity[0]; Byte[] result = await Cache.GetAsync("operations"); if ((result?.Length ?? 0) > 0) { entities = EntityExtensions.GetEntities <OperationEntity[]>(result); var todayEntities = await Context.Operations .Where(e => e.CreatedOn.HasValue && e.CreatedOn.Value.Date >= DateTime.UtcNow.Date) .ToArrayAsync(); if ((todayEntities?.Count() ?? 0) > 0) { entities = entities.Union(todayEntities).ToArray(); } } else { entities = await Context.Operations.ToArrayAsync(); var olderEntities = entities .Where(e => !e.CreatedOn.HasValue || e.CreatedOn.Value.Date < DateTime.UtcNow.Date) .ToArray(); if ((olderEntities?.Count() ?? 0) > 0) { await Cache.SetAsync("operations", olderEntities.ToByteArray(), new DistributedCacheEntryOptions { AbsoluteExpiration = DateTimeOffset.Now.Date.AddDays(1), }); } } return(new ObjectResult(Mapper.Map <IEnumerable <OperationModel> >(entities))); }