/// <summary> /// Находит географический округ с указанным названием /// или создает новый /// </summary> /// <param name="name">Название округа</param> /// <returns></returns> public Area GetOrCreateArea(string name) { Area area = AreaRepository.FindByName(name); if (area == null) { area = new Area() { Name = name }; AreaRepository.Create(area); } return area; }
/// <summary> /// Удаляет из цели правило выбора географического округа /// </summary> /// <param name="target">Цель геолокации</param> /// <param name="area">Географический округ</param> public void RemoveAreaFromTarget(Target target, Area area) { AreaRule rule = AreaRuleRepository.FindByTargetAndArea(target, area); if (rule != null) { AreaRuleRepository.Delete(rule); } }
/// <summary> /// Находит географический регион с указанным названием /// или создает новый /// </summary> /// <param name="name">Название региона</param> /// <param name="area">Географический округ, в котором располагается регион</param> /// <returns></returns> public Region GetOrCreateRegion(string name, Area area) { Region region = RegionRepository.FindByNameAndArea(name, area); if (region == null) { region = new Region() { Name = name, AreaId = area.Id }; RegionRepository.Create(region); } return region; }
/// <summary> /// Добавляет к цели правило выбора географического округа /// </summary> /// <param name="target">Цель геолокации</param> /// <param name="area">Географический округ</param> /// <param name="kind">Вид правила включения</param> public void AddAreaToTarget(Target target, Area area, RuleKind kind) { AreaRule rule = AreaRuleRepository.FindByTargetAndArea(target, area); if (rule == null) { rule = new AreaRule() { TargetId = target.Id, AreaId = area.Id, Kind = kind }; AreaRuleRepository.Create(rule); } else if (rule.Kind != kind) { rule.Kind = kind; AreaRuleRepository.Save(rule); } }