/// <summary> /// Обновляет или создает диапазон ip-адресов с указанными данными /// </summary> /// <param name="start">Начало диапазона ip-адресов</param> /// <param name="end">Конец диапазона ip-адресов</param> /// <param name="description">Интервал ip-адресов в понятном виде</param> /// <param name="country">Двухсимвольный код страны</param> /// <param name="location">Географическая локация</param> /// <returns></returns> public Range UpdateOrCreateRange(long start, long end, string description, string country, Location location) { Range range = RangeRepository.FindByStartAndEnd(start, end); if (range == null) { range = new Range() { Start = start, End = end, Description = description, Country = country, Location = location }; RangeRepository.Create(range); } else if ((range.Description != description) || (range.Country != country) || (range.Location != location)) { range.Description = description; range.Country = country; range.Location = location; RangeRepository.Save(range); } return range; }
/// <summary> /// Удаляет из цели правило выбора географической локации /// </summary> /// <param name="target">Цель геолокации</param> /// <param name="location">Географическая локация</param> public void RemoveLocationFromTarget(Target target, Location location) { LocationRule rule = LocationRuleRepository.FindByTargetAndLocation(target, location); if (rule != null) { LocationRuleRepository.Delete(rule); } }
/// <summary> /// Обновляет или создает географическую локацию с указанными данными /// </summary> /// <param name="id">Идентификатор локации</param> /// <param name="name">Название локации</param> /// <param name="latitude">Герграфическая широта центра локации</param> /// <param name="longitude">Герграфическая долгота центра локации</param> /// <param name="region">Географический регион, в котором располагается локация</param> /// <returns></returns> public Location UpdateOrCreateLocation(Int32 id, string name, Decimal latitude, Decimal longitude, Region region) { Location location = LocationRepository.FindById(id); if (location == null) { location = new Location() { Id = id, Name = name, Latitude = latitude, Longitude = longitude, RegionId = region.Id }; LocationRepository.Create(location); } else if ((location.Name != name) || (location.Latitude != latitude) || (location.Longitude != latitude) || (location.RegionId != region.Id)) { location.Name = name; location.Latitude = latitude; location.Longitude = longitude; location.RegionId = region.Id; LocationRepository.Save(location); } return location; }
/// <summary> /// Добавляет к цели правило выбора географической локации /// </summary> /// <param name="target">Цель геолокации</param> /// <param name="location">Географическая локация</param> /// <param name="kind">Вид правила включения</param> public void AddLocationToTarget(Target target, Location location, RuleKind kind) { LocationRule rule = LocationRuleRepository.FindByTargetAndLocation(target, location); if (rule == null) { rule = new LocationRule() { TargetId = target.Id, LocationId = location.Id, Kind = kind }; LocationRuleRepository.Create(rule); } else if (rule.Kind != kind) { rule.Kind = kind; LocationRuleRepository.Save(rule); } }