Beispiel #1
0
        public ApiResponse <FindByIdCategoryRequest, Categories> Get(FindByIdCategoryRequest request)
        {
            var validate = _findByIdCategoryValidations.Validate(request);

            if (!validate.IsValid)
            {
                Log.Error(validate.ToString(""));

                return(new ApiResponse <FindByIdCategoryRequest, Categories>()
                {
                    status = false,
                    error_code = "validations_error",
                    error_message = validate.ToString("~"),
                    request = request
                });
            }

            var response = _repository.FindById(request);

            Log.Information("Category returned...");

            return(new ApiResponse <FindByIdCategoryRequest, Categories>()
            {
                status = true,
                request = request,
                response = response
            });
        }
        public Categories FindById(FindByIdCategoryRequest request)
        {
            int        key = request.category_id;
            Categories category;
            string     json;

            try
            {
                var categoryFromCache = _distibutedCache.Get(key.ToString());
                if (categoryFromCache != null)
                {
                    json = Encoding.UTF8.GetString(categoryFromCache);
                    Log.Information(request.category_id + " getting from cache...");
                    return(JsonConvert.DeserializeObject <Categories>(json));
                }
                else
                {
                    category          = _context.Categories.Where(w => w.category_id == request.category_id).FirstOrDefault();
                    json              = JsonConvert.SerializeObject(category);
                    categoryFromCache = Encoding.UTF8.GetBytes(json);

                    var options = new DistributedCacheEntryOptions()
                                  .SetSlidingExpiration(TimeSpan.FromHours(1))
                                  .SetAbsoluteExpiration(DateTime.Now.AddHours(2));

                    _distibutedCache.Set(key.ToString(), categoryFromCache, options);

                    Log.Information(request.category_id + " added to cache...");
                }
            }
            catch (Exception ex)
            {
                category = _context.Categories.Where(w => w.category_id == request.category_id).FirstOrDefault();

                Log.Error(ex.Message);
            }


            return(category);
        }