예제 #1
0
        /// <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;
        }
예제 #2
0
        /// <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);
            }
        }
예제 #3
0
        /// <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;
        }
예제 #4
0
        /// <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);
            }
        }