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));
        }
Beispiel #2
0
        public async Task <ActionResult> CreateCampaignAsync([FromBody] CampaignDTO campaignDto)
        {
            if (campaignDto is null)
            {
                return(BadRequest());
            }

            var campaign = MapCampaignDtoToModel(campaignDto);

            await _context.Campaigns.AddAsync(campaign);

            await _context.SaveChangesAsync();

            if (_settings.CachingEnabled)
            {
                var cache          = _context.GetCache();
                var cachingOptions = new CachingOptions();
                cachingOptions.SetAbsoluteExpiration(DateTime.Now.AddMinutes(_settings.MarketingCacheExpirationTimeInMinutes));
                await Task.Run(() => cache.Insert(campaign, out string cacheKey, cachingOptions));
            }

            return(CreatedAtAction(nameof(GetCampaignByIdAsync), new { id = campaign.Id }, null));
        }