Esempio n. 1
0
        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)));
        }