Пример #1
0
        /// <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;
        }
Пример #2
0
        /// <summary>
        /// Удаляет из цели правило выбора географического региона
        /// </summary>
        /// <param name="target">Цель геолокации</param>
        /// <param name="region">Географический регион</param>
        public void RemoveRegionFromTarget(Target target, Region region)
        {
            RegionRule rule = RegionRuleRepository.FindByTargetAndRegion(target, region);

            if (rule != null)
            {
                RegionRuleRepository.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="region">Географический регион</param>
        /// <param name="kind">Вид правила включения</param>
        public void AddRegionToTarget(Target target, Region region, RuleKind kind)
        {
            RegionRule rule = RegionRuleRepository.FindByTargetAndRegion(target, region);

            if (rule == null)
            {
                rule = new RegionRule()
                {
                    TargetId = target.Id,
                    RegionId = region.Id,
                    Kind = kind
                };

                RegionRuleRepository.Create(rule);
            }
            else if (rule.Kind != kind)
            {
                rule.Kind = kind;
                RegionRuleRepository.Save(rule);
            }
        }