예제 #1
0
        private object GetAdvertFullModel(Advert existingAdvert)
        {
            var model = new AdvertFullModel
            {
                Id       = existingAdvert.Id,
                PostDate = existingAdvert.PostDate,
                Headline = existingAdvert.Headline,
                Pictures =
                    (from pic in existingAdvert.Pictures
                     select pic.Url),
                Price   = existingAdvert.Price,
                Town    = existingAdvert.Town.Name,
                Text    = existingAdvert.Text,
                Address = existingAdvert.Address,
                Tags    =
                    (from t in existingAdvert.Tags
                     select t.Name)
            };

            return(model);
        }
예제 #2
0
        public HttpResponseMessage Add([FromBody] AdvertFullModel advertModel, string sessionKey)
        {
            var responseMsg = this.PerformOperationAndHandleExceptions(() =>
            {
                var context = new RealEstateContext();

                var user = context.Users.FirstOrDefault(usr => usr.SessionKey == sessionKey);

                if (user == null)
                {
                    throw new InvalidOperationException("Invalid user");
                }

                if (advertModel.Headline == null || advertModel.Headline.Length < HeadlineMinLength)
                {
                    throw new ArgumentException(
                        string.Format("Advert headline should be at least {0} characters long", HeadlineMinLength));
                }

                var advertEntity = GenerateAdvertEntity(advertModel, context, user);

                context.Adverts.Add(advertEntity);
                context.SaveChanges();

                var resultAdvertModel = new AdvertResponseModel()
                {
                    Id       = advertEntity.Id,
                    Headline = advertEntity.Headline
                };

                var response = this.Request.CreateResponse(HttpStatusCode.Created, resultAdvertModel);

                return(response);
            });

            return(responseMsg);
        }
예제 #3
0
        //[ActionName("comment")]
        //[HttpPut]


        //private static IQueryable<AdvertFullModel> GetById(System.Data.Entity.DbSet<Advert> advertEntities)
        //{
        //    var models =
        //        from post in advertEntities
        //        select new PostFullModel
        //        {
        //            Id = post.Id,
        //            PostDate = post.PostDate,
        //            PostedBy = post.PostedBy,
        //            Text = post.Text,
        //            Title = post.Title,
        //            Comments =
        //                (from c in post.Comments
        //                 select new CommentModel
        //                 {
        //                     CommentedBy = c.CommentedBy,
        //                     PostDate = c.PostDate,
        //                     Text = c.Text
        //                 }),
        //            Tags =
        //                (from t in post.Tags
        //                 select t.Name)
        //        };
        //    return models;
        //}

        private static Advert GenerateAdvertEntity(AdvertFullModel advertModel, RealEstateContext context, User user)
        {
            var splittedTags = advertModel.TagsString.Split(SplitSymbols, StringSplitOptions.RemoveEmptyEntries);

            var advertEntity = new Advert()
            {
                Headline = advertModel.Headline,
                Text     = advertModel.Text,
                User     = user,
                PostDate = DateTime.Now,
                Address  = advertModel.Address,
                Tags     = AddOrUpdateTags(splittedTags, context, advertModel.Headline),
                Town     = AddOrUpdateTown(context, advertModel.Town),
                //Pictures =
                //    (from pic in advertModel.Pictures
                //     select new Picture
                //     {
                //         Url = pic
                //     }).ToList(),
                Price = advertModel.Price,
            };

            return(advertEntity);
        }