/// <summary>
        /// Создание/Обновление объекта недвижимости
        /// </summary>
        /// <returns>bool</returns>
        public async Task <KeyValuePair <bool, string> > SaveObjects(RealtyObject obj)
        {
            var jsonString   = JsonConvert.SerializeObject(obj);
            var jsonResponse = await SaveObjectsAsJson(jsonString);

            var data = JObject.Parse(jsonResponse);

            return(new KeyValuePair <bool, string>((bool)data["Result"], data["Message"].ToString()));
        }
Example #2
0
        /// <summary>
        /// Найти конкретный объект недвижимости.
        /// </summary>
        /// <param name="id">Id объекта недвижимости.</param>
        /// <returns>Найденный объект недвижимости.</returns>
        public override IRealtyObject Find(int id)
        {
            RealtyObject obj = this.Context.RealtyObjects.FirstOrDefault(
                ro => ro.RealtyObjectId == id);

            return(obj != null
                ? new RealtyObjectWrap(obj, this.Context)
                : null);
        }
 /// <summary>
 /// Добавить относительные ссылки на фотографии объекта недвижимости.
 /// </summary>
 /// <param name="realtyObject">Объект недвижимости.</param>
 private void AddPhotos(
     RealtyObject realtyObject)
 {
     foreach (string source in this.GetRelativePhotoPaths())
     {
         realtyObject.Photos.Add(new Photo()
         {
             RelativeSource = source
         });
     }
 }
Example #4
0
        /// <summary>
        /// Прикрепить к контексту обновленный объект недвижимости.
        /// </summary>
        /// <param name="changedEntity">Интерфейс обновленного объекта
        /// недвижимости.</param>
        /// <returns>EF-объект недвижимости, прикрепленный к контексту.</returns>
        private RealtyObject AttachRealtyObject(IRealtyObject changedEntity)
        {
            RealtyObjectWrap wrap = new RealtyObjectWrap(
                changedEntity,
                this.Context);

            RealtyObject rObj = wrap.GetRealObject();

            this.Context.RealtyObjects.Attach(rObj);
            this.Context.Entry(rObj).State = EntityState.Modified;
            return(rObj);
        }
Example #5
0
        /// <summary>
        /// Обновить данные существующего объекта недвижимости.
        /// </summary>
        /// <param name="changedEntity">Объект недвижимости с
        /// обновленными данными.</param>
        /// <returns>Обновленный объект недвижимости.</returns>
        public override IRealtyObject Update(IRealtyObject changedEntity)
        {
            if (!this.Context.RealtyObjects.Any(ro =>
                                                ro.RealtyObjectId == changedEntity.RealtyObjectId))
            {
                throw new InvalidOperationException(
                          "Невозможно обновить данные объекта недвижимости. Объекта с id "
                          + changedEntity.RealtyObjectId + " не существует.");
            }

            RealtyObject rObj = this.AttachRealtyObject(changedEntity);

            this.UpdateProperties(rObj);

            return(new RealtyObjectWrap(rObj, this.Context));
        }
        /// <summary>
        /// Получить объект недвижимости, включая все свойства
        /// и фотографии, для дальнейшего сохранения в БД.
        /// </summary>
        /// <returns>Объект недвижимости.</returns>
        public RealtyObject GetDbCompatibleFullObject()
        {
            RealtyObject ro = new RealtyObject
            {
                Date             = this.Date.GetDateTime(),
                Cost             = this.Price.GetIntegerPrice(),
                Note             = this.Comments,
                AdditionalInfo   = this.AdditionalInfo,
                RealtyObjectType = this.GetRealtyObjectDBType()
            };

            foreach (PropertyValue value in this.CreateSpecificProperties())
            {
                ro.PropertyValues.Add(value);
            }

            this.AddPhotos(ro);

            return(ro);
        }
Example #7
0
        /// <summary>
        /// Обновить все свойства в контексте EF.
        /// </summary>
        /// <param name="rObj">Обновленный EF-объект недвижимости.</param>
        private void UpdateProperties(RealtyObject rObj)
        {
            int[] newPropTypeIds =
                rObj.PropertyValues.Select(pv => pv.PropertyTypeId)
                .ToArray();

            int id = rObj.RealtyObjectId;

            List <PropertyValue> oldProps = this.Context.PropertyValues
                                            .Where(pv => pv.RealtyObjectId == id)
                                            .ToList();

            List <PropertyValue> removedProps = oldProps
                                                .Where(pv => !newPropTypeIds.Contains(pv.PropertyTypeId))
                                                .ToList();

            foreach (PropertyValue oldProp in removedProps)
            {
                this.Context.PropertyValues.Remove(oldProp);
            }

            this.UpdatePropertyStates(rObj.PropertyValues, oldProps);
        }
        /// <summary>
        /// Создать несколько тестовых объектов в БД.
        /// </summary>
        public void CreateFewObjects()
        {
            // фирмы и агенты
            Firm newFirm = this.context.Firms.Add(new Firm()
            {
                Name    = "Фирма \"У Васи\"",
                Address = "Улица Мира 52",
                Phone   = "11-22-33fdsf"
            });

            Agent vasya = this.context.Agents.Add(new Agent()
            {
                Firm        = newFirm,
                Name        = "Вася",
                IsFirmAdmin = true,
                Addres      = "Ленина 25",
                LastName    = "Пупкин",
                PhoneNumber = "33 - 33-3(0)"
            });

            Password vasyaPassword = new Password()
            {
                Login     = "******",
                Password1 = "12345v"
            };

            vasya.Passwords.Add(vasyaPassword);

            Agent petya = this.context.Agents.Add(new Agent()
            {
                Firm        = newFirm,
                Name        = "Петя",
                IsFirmAdmin = false,
                Addres      = "Карла Маркса 25",
                LastName    = "Сидоров",
                PhoneNumber = "2222-22"
            });

            Password petyaPassword = new Password()
            {
                Login     = "******",
                Password1 = "12345p"
            };

            petya.Passwords.Add(petyaPassword);

            // квартиры
            RealtyObject vasyasAppartment1 = this.context.RealtyObjects.Add(new RealtyObject()
            {
                RealtyObjectType = this.context.RealtyObjectTypes
                                   .First(type => type.TypeName == "Квартиры"),
                Agent          = vasya,
                Cost           = 1000,
                Date           = new DateTime(2016, 5, 6, 0, 0, 0, DateTimeKind.Local).ToUniversalTime(),
                AdditionalInfo = "Хорошая квартира"
            });

            new List <PropertyValue>(new[]
            {
                new PropertyValue()
                {
                    PropertyType = this.context.PropertyTypes.First(prType => prType.PropertyName == "Улица"),
                    StringValue  = "Ленина"
                },
                new PropertyValue()
                {
                    PropertyType = this.context.PropertyTypes.First(prType => prType.PropertyName == "Дом"),
                    StringValue  = "11"
                },
            })
            .ForEach(value => vasyasAppartment1.PropertyValues.Add(value));

            RealtyObject vasyasAppartment2 = this.context.RealtyObjects.Add(new RealtyObject()
            {
                RealtyObjectType = this.context.RealtyObjectTypes
                                   .FirstOrDefault(type => type.TypeName == "Квартиры"),
                Agent          = vasya,
                Cost           = 1100,
                Date           = new DateTime(2016, 5, 16, 0, 0, 0, DateTimeKind.Local).ToUniversalTime(),
                AdditionalInfo = "Хорошая еще одна квартира"
            });

            new List <PropertyValue>(new[]
            {
                new PropertyValue()
                {
                    PropertyType = this.context.PropertyTypes.First(prType => prType.PropertyName == "Улица"),
                    StringValue  = "Ленина"
                },
                new PropertyValue()
                {
                    PropertyType = this.context.PropertyTypes.First(prType => prType.PropertyName == "Дом"),
                    StringValue  = "11"
                }
            })
            .ForEach(value => vasyasAppartment2.PropertyValues.Add(value));

            RealtyObject petyasAppartment1 = this.context.RealtyObjects.Add(new RealtyObject()
            {
                RealtyObjectType = this.context.RealtyObjectTypes
                                   .FirstOrDefault(type => type.TypeName == "Квартиры"),
                Agent          = petya,
                Cost           = 2000,
                Date           = new DateTime(2015, 5, 6, 0, 0, 0, DateTimeKind.Local).ToUniversalTime(),
                AdditionalInfo = "Так себе квартира",
                Note           = "Кот остается"
            });

            new List <PropertyValue>(new[]
            {
                new PropertyValue()
                {
                    PropertyType = this.context.PropertyTypes.First(prType => prType.PropertyName == "Улица"),
                    StringValue  = "English Street"
                },
                new PropertyValue()
                {
                    PropertyType = this.context.PropertyTypes.First(prType => prType.PropertyName == "Дом"),
                    StringValue  = "111"
                }
            })
            .ForEach(value => petyasAppartment1.PropertyValues.Add(value));

            RealtyObject petyasAppartment2 = this.context.RealtyObjects.Add(new RealtyObject()
            {
                RealtyObjectType = this.context.RealtyObjectTypes
                                   .FirstOrDefault(type => type.TypeName == "Квартиры"),
                Agent          = petya,
                Cost           = 3000,
                Date           = new DateTime(2017, 5, 6, 0, 0, 0, DateTimeKind.Local).ToUniversalTime(),
                AdditionalInfo = "Уже лучше квартира",
                Note           = "Мебель остается, балкон, ж/д"
            });

            new List <PropertyValue>(new[]
            {
                new PropertyValue()
                {
                    PropertyType = this.context.PropertyTypes.First(prType => prType.PropertyName == "Улица"),
                    StringValue  = "Московский проспект"
                },
                new PropertyValue()
                {
                    PropertyType = this.context.PropertyTypes.First(prType => prType.PropertyName == "Дом"),
                    StringValue  = "99"
                }
            })
            .ForEach(value => petyasAppartment2.PropertyValues.Add(value));

            RealtyObject petyasAppartment3 = this.context.RealtyObjects.Add(new RealtyObject()
            {
                RealtyObjectType = this.context.RealtyObjectTypes
                                   .FirstOrDefault(type => type.TypeName == "Квартиры"),
                Agent          = petya,
                Cost           = 3500,
                Date           = new DateTime(2015, 5, 6, 0, 0, 0, DateTimeKind.Local).ToUniversalTime(),
                AdditionalInfo = "Балкон, ж/д, пласт.окна",
                Note           = "Вообще всё норм"
            });

            new List <PropertyValue>(new[]
            {
                new PropertyValue()
                {
                    PropertyType = this.context.PropertyTypes.First(prType => prType.PropertyName == "Улица"),
                    StringValue  = "Московский проспект"
                },
                new PropertyValue()
                {
                    PropertyType = this.context.PropertyTypes.First(prType => prType.PropertyName == "Дом"),
                    StringValue  = "99"
                }
            })
            .ForEach(value => petyasAppartment3.PropertyValues.Add(value));
        }