public async Task <IActionResult> getallservicecategories()
        {
            List <ServiceCategory> servicecategories = null;
            ServiceCategoryError   e = new ServiceCategoryError();

            CancellationTokenSource cts;

            cts = new CancellationTokenSource();
            cts.CancelAfter(settings.Value.redisCancellationToken);

            Redis  redis = new Redis(settings, cache);
            string key   = "all_service_categories";

            //check redis cache for details
            try
            {
                servicecategories = await redis.getservicecategories(key, cts.Token);

                if (servicecategories != null && servicecategories.Count > 0)
                {
                    return(CreatedAtAction("getallservicecategories", servicecategories));
                }
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }

            //Get billers from Mongo
            try
            {
                //billercategories = await billercategoryMongoRepo.GetAllBillerCategories();
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }

            //Get Billers from Sql
            try
            {
                servicecategories = await billercategorySqlRepo.GetAllServiceCategories();
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }

            //Write to Redis
            try
            {
                if (servicecategories != null && servicecategories.Count > 0)
                {
                    await redis.setservicecategories(key, servicecategories, cts.Token);
                }
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }
            return(CreatedAtAction("getallservicecategories", servicecategories));
        }
        public async Task <IActionResult> addservicecategory([FromBody] ServiceCategory servicecategory)
        {
            ServiceCategory        _servicecategory  = null;
            List <ServiceCategory> servicecategories = null;
            ServiceCategoryError   e = new ServiceCategoryError();
            Redis redis = new Redis(settings, cache);

            CancellationTokenSource cts;

            cts = new CancellationTokenSource();
            cts.CancelAfter(settings.Value.redisCancellationToken);

            servicecategory.created_on = DateTime.Now;


            //validate request
            if (!ModelState.IsValid)
            {
                var modelErrors = new List <ServiceCategoryError>();
                var eD          = new List <string>();
                foreach (var modelState in ModelState.Values)
                {
                    foreach (var modelError in modelState.Errors)
                    {
                        eD.Add(modelError.ErrorMessage);
                    }
                }
                e.error        = ((int)HttpStatusCode.BadRequest).ToString();
                e.errorDetails = eD;

                return(BadRequest(e));
            }

            //Add to mongo
            try
            {
                //_billercategory = await billercategoryMongoRepo.AddBillerCategory(billercategory);
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }

            //Add to sql server
            try
            {
                if (servicecategory.id == 0)
                {
                    _servicecategory = await billercategorySqlRepo.AddServiceCategory(servicecategory);
                }
                else if (servicecategory.id > 0)
                {
                    _servicecategory = await billercategorySqlRepo.UpdateServiceCategory(servicecategory);
                }
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }

            //Write to Redis
            try
            {
                string key = "all_service_category:" + _servicecategory.id;

                if (_servicecategory != null)
                {
                    await redis.setservicecategory(key, _servicecategory, cts.Token);
                }
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }

            return(CreatedAtAction("addservicecategory", _servicecategory));
        }