public HttpResponseMessage GetAllPlaces( [ValueProvider(typeof(HeaderValueProviderFactory<string>))] string sessionKey) { var responseMsg = this.PerformOperationAndHandleExceptions( () => { PlacesContext context = new PlacesContext(); using (context) { UsersController.GetUserBySessionKey(context, sessionKey); var placeModels = new HashSet<PlaceGetModel>(); foreach (var place in GetAllPlaces(context)) { var model = new PlaceGetModel() { Id = place.Id, Name = place.Name, Town = new TownModel() { Id = place.Town.Id, Name = place.Town.Name, CountryId = place.Town.Country.Id }, Country = new CountrySmallModel() { Id = place.Town.Country.Id, Name = place.Town.Country.Name }, Content = place.Content, ImageUrls = place.Images.Select(i => i.Url), Comments = (from comment in place.Comments select new CommentModel() { Content = comment.Content, Date = comment.Date, PostedBy = comment.User.Nickname }) }; placeModels.Add(model); } return this.Request.CreateResponse(HttpStatusCode.OK, placeModels); } }); return responseMsg; }
public HttpResponseMessage GetPlaceById( int placeId, [ValueProvider(typeof(HeaderValueProviderFactory<string>))] string sessionKey) { var responseMsg = this.PerformOperationAndHandleExceptions( () => { PlacesContext context = new PlacesContext(); using (context) { UsersController.GetUserBySessionKey(context, sessionKey); var place = GetAllPlaces(context).FirstOrDefault(p => p.Id == placeId); if (place == null) { throw new ArgumentNullException("place", "A place with the specified ID does not exist."); } var model = new PlaceGetModel() { Id = place.Id, Name = place.Name, Town = new TownModel() { Id = place.Town.Id, Name = place.Town.Name, CountryId = place.Town.Country.Id }, Country = new CountrySmallModel() { Id = place.Town.Country.Id, Name = place.Town.Country.Name }, Content = place.Content, ImageUrls = place.Images.Select(i => i.Url), Comments = (from comment in place.Comments select new CommentModel() { Content = comment.Content, Date = comment.Date, PostedBy = comment.User.Nickname }).OrderByDescending(c => c.Date) }; return this.Request.CreateResponse(HttpStatusCode.OK, model); } }); return responseMsg; }