public async Task <ActionResult> CreateLocationAsync(int campaignId, [FromBody] UserLocationRuleDTO locationRuleDto)
        {
            if (campaignId < 1 || locationRuleDto is null)
            {
                return(BadRequest());
            }

            var locationRule = MapUserLocationRuleDtoToModel(locationRuleDto);

            locationRule.CampaignId = campaignId;

            await _context.Rules.AddAsync(locationRule);

            await _context.SaveChangesAsync();

            if (_settings.CachingEnabled)
            {
                var cache = _context.GetCache();

                var options = new CachingOptions();
                options.SetAbsoluteExpiration(DateTime.Now.AddMinutes(_settings.MarketingCacheExpirationTimeInMinutes));
                await Task.Run(() => cache.Insert(locationRule, out string cacheKey, options));
            }

            return(CreatedAtAction(nameof(GetLocationByCampaignAndLocationRuleId),
                                   new { campaignId = campaignId, userLocationRuleId = locationRule.Id }, null));
        }
 private UserLocationRule MapUserLocationRuleDtoToModel(UserLocationRuleDTO userLocationRuleDto)
 {
     return(new UserLocationRule
     {
         Id = userLocationRuleDto.Id,
         Description = userLocationRuleDto.Description,
         LocationId = userLocationRuleDto.LocationId
     });
 }
        public async Task <ActionResult> CreateLocationAsync(int campaignId, [FromBody] UserLocationRuleDTO locationRuleDto)
        {
            if (campaignId < 1 || locationRuleDto is null)
            {
                return(BadRequest());
            }

            var locationRule = MapUserLocationRuleDtoToModel(locationRuleDto);

            locationRule.CampaignId = campaignId;

            await _context.Rules.AddAsync(locationRule);

            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetLocationByCampaignAndLocationRuleId),
                                   new { campaignId = campaignId, userLocationRuleId = locationRule.Id }, null));
        }