public ActionResult <UserLocationRuleDTO> GetLocationByCampaignAndLocationRuleId(int campaignId, int userLocationRuleId) { if (campaignId < 1 || userLocationRuleId < 1) { return(BadRequest()); } UserLocationRule location = null; if (!_settings.CachingEnabled) { location = _context.Rules .OfType <UserLocationRule>() .SingleOrDefault(c => c.CampaignId == campaignId && c.Id == userLocationRuleId); } else { var options = new CachingOptions(); options.SetAbsoluteExpiration(DateTime.Now.AddMinutes(_settings.MarketingCacheExpirationTimeInMinutes)); location = _context.Rules .OfType <UserLocationRule>() .DeferredSingleOrDefault(c => c.CampaignId == campaignId && c.Id == userLocationRuleId) .FromCache(options); } if (location is null) { return(NotFound()); } return(MapUserLocationRuleModelToDto(location)); }
private UserLocationRuleDTO MapUserLocationRuleModelToDto(UserLocationRule userLocationRule) { return(new UserLocationRuleDTO { Id = userLocationRule.Id, Description = userLocationRule.Description, LocationId = userLocationRule.LocationId }); }
public async Task <ActionResult> DeleteLocationByIdAsync(int campaignId, int userLocationRuleId) { if (campaignId < 1 || userLocationRuleId < 1) { return(BadRequest()); } UserLocationRule locationToDelete = null; if (!_settings.CachingEnabled) { locationToDelete = _context.Rules .OfType <UserLocationRule>() .SingleOrDefault(c => c.CampaignId == campaignId && c.Id == userLocationRuleId); } else { var options = new CachingOptions(); options.SetAbsoluteExpiration(DateTime.Now.AddMinutes(_settings.MarketingCacheExpirationTimeInMinutes)); locationToDelete = await _context.Rules .OfType <UserLocationRule>() .DeferredSingleOrDefault(c => c.CampaignId == campaignId && c.Id == userLocationRuleId) .FromCacheAsync(options); } if (locationToDelete is null) { return(NotFound()); } _context.Rules.Remove(locationToDelete); await _context.SaveChangesAsync(); if (_settings.CachingEnabled) { var cache = _context.GetCache(); await Task.Run(() => cache.Remove(locationToDelete)); } return(NoContent()); }