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); }
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); }
//[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); }