public async Task <ActionResult> QueryRadius(RadiusQuery query) { if (!ModelState.IsValid) { return(Json("Bad Request", JsonRequestBehavior.AllowGet)); } var centerPoint = new GeoPoint(query.Lat, query.Lng); var radius = query.RadiusInMeters; var attributesToGet = new List <string> { _config.RangeKeyAttributeName, _config.GeoJsonAttributeName, "schoolName" }; var radReq = new QueryRadiusRequest(centerPoint, radius); radReq.QueryRequest.AttributesToGet = attributesToGet; var result = await _geoDataManager.QueryRadiusAsync(radReq); var dtos = GetResultsFromQuery(result); return(Json(dtos, JsonRequestBehavior.AllowGet)); }
private static async Task TestAsync(Config config) { var connection = new IS24Connection { ConsumerKey = config.ConsumerKey, ConsumerSecret = config.ConsumerSecret, AccessToken = config.AccessToken, AccessTokenSecret = config.AccessSecret, BaseUrlPrefix = @"https://rest.sandbox-immobilienscout24.de/restapi/api" }; var searchResource = new SearchResource(connection); var query = new RadiusQuery { Latitude = 52.49023, Longitude = 13.35939, Radius = 1, RealEstateType = RealEstateType.APARTMENT_RENT, Parameters = new { Price = new DecimalRange { Max = 1000 }, LivingSpace = new DecimalRange { Min = 100 }, NumberOfRooms = new DecimalRange { Min = 4 }, Equipment = "balcony" }, Channel = new HomepageChannel("me") }; var results = await searchResource.Search(query); var api = new ImportExportClient(connection); RealtorContactDetails contact = null; try { contact = await api.Contacts.GetAsync("Hans Meiser", isExternal : true); } catch (IS24Exception ex) { if (ex.Messages.Message.First().MessageCode != MessageCode.ERROR_RESOURCE_NOT_FOUND) { throw; } } if (contact == null) { contact = new RealtorContactDetails { Lastname = "Meiser", Firstname = "Hans", Address = new Address { Street = "Hauptstraße", HouseNumber = "1", Postcode = "10827", City = "Berlin", InternationalCountryRegion = new CountryRegion { Country = CountryCode.DEU, Region = "Berlin" } }, Email = "*****@*****.**", ExternalId = "Hans Meiser" }; await api.Contacts.CreateAsync(contact); contact.Address.HouseNumber = "1a"; await api.Contacts.UpdateAsync(contact); } IRealEstate realEstate = null; try { realEstate = await api.RealEstates.GetAsync("Hauptstraße 1", isExternal : true); } catch (IS24Exception ex) { if (ex.Messages.Message.First().MessageCode != MessageCode.ERROR_RESOURCE_NOT_FOUND) { throw; } } if (realEstate == null) { var re = new ApartmentRent { Contact = new RealEstateContact { Id = contact.Id }, ExternalId = "Hauptstraße 1", Title = "IS24RestApi Test", Address = new Wgs84Address { Street = "Hauptstraße", HouseNumber = "1", City = "Berlin", Postcode = "10827" }, BaseRent = 500.0, LivingSpace = 100.0, NumberOfRooms = 4.0, ShowAddress = true, Courtage = new CourtageInfo { HasCourtage = YesNoNotApplicableType.NO } }; await api.RealEstates.CreateAsync(re); re.BaseRent += 100.0; await api.RealEstates.UpdateAsync(re); realEstate = new RealEstateItem(re, connection); } else { var re = (ApartmentRent)realEstate.RealEstate; re.BaseRent += 100.0; await api.RealEstates.UpdateAsync(re); re.BaseRent -= 100.0; await api.RealEstates.UpdateAsync(re); } var projects = await api.RealEstateProjects.GetAllAsync(); if (projects.RealEstateProject.Any()) { var project = projects.RealEstateProject.First(); var entries = await api.RealEstateProjects.GetAllAsync(project.Id.Value); if (!entries.RealEstateProjectEntry.Any(e => e.RealEstateId.Value == realEstate.RealEstate.Id.Value)) { await api.RealEstateProjects.AddAsync(project.Id.Value, realEstate.RealEstate); } } var placement = await realEstate.PremiumPlacements.GetAsync(); var a1 = new KeyValuePair <Attachment, string>(new Picture { Title = "Zimmer 1", Floorplan = false, TitlePicture = true }, @"..\..\..\test.jpg"); var a2 = new KeyValuePair <Attachment, string>(new Picture { Title = "Zimmer 2" }, @"..\..\..\test.jpg"); var a3 = new KeyValuePair <Attachment, string>(new Picture { Title = "Zimmer 3" }, @"..\..\..\test.jpg"); var pdf = new KeyValuePair <Attachment, string>(new PDFDocument { Title = "Test" }, @"..\..\..\test.pdf"); var video = new KeyValuePair <Attachment, string>(new StreamingVideo { Title = "Video" }, @"..\..\..\test.avi"); var link = new KeyValuePair <Attachment, string>(new Link { Title = "Test", Url = "http://www.example.com/" }, null); var atts = new[] { video, a1, pdf, a2, link, a3 }; await realEstate.Attachments.UpdateAsync(atts); var res = new List <RealEstate>(); await api.RealEstates.GetAsync().ForEachAsync(x => res.Add(x.RealEstate)); }
public async Task Search_Get_RequestsCorrectResource() { RestClient.RespondWith(r => { Assert.Equal(Method.GET, r.Method); var url = "https://rest.sandbox-immobilienscout24.de/restapi/api/search/v1.0/search/radius"; Assert.Equal(url, RestClient.BuildUri(r).GetLeftPart(UriPartial.Path)); var parms = RestClient.BuildUri(r).ParseQueryString(); Assert.Equal("apartmentrent", parms["realestatetype"]); Assert.Equal("1.00;2.00;10", parms["geocoordinates"]); Assert.Equal("full text", parms["fulltext"]); Assert.Equal("2000-01-02T00:00:00", parms["lastmodification"]); Assert.Equal("2001-03-04T00:00:00", parms["publishedafter"]); Assert.Equal("2002-05-06T00:00:00", parms["firstactivation"]); Assert.Equal("1", parms["apisearchfield1"]); Assert.Equal("2", parms["apisearchfield2"]); Assert.Equal("3", parms["apisearchfield3"]); Assert.Equal("-1000.00", parms["price"]); Assert.Equal("rentpermonth", parms["pricetype"]); Assert.Equal("true", parms["freeofcourtageonly"]); Assert.Equal("-distance", parms["sort"]); Assert.Equal("hp", parms["channel"]); Assert.Equal("user", parms["username"]); return(new IS24RestApi.Search.ResultList.Resultlist { ResultlistEntries = { new ResultlistEntries { ResultlistEntry = { new ResultlistEntry { RealEstate = new ApartmentRent{ Id = 4711 } }, new ResultlistEntry { RealEstate = new ApartmentRent{ Id = 4712 } }, } } } }); }); var query = new RadiusQuery { RealEstateType = Common.RealEstateType.APARTMENT_RENT, Latitude = 1.0, Longitude = 2.0, Radius = 10, FullText = "full text", LastModification = new DateTime(2000, 1, 2), PublishedAfter = new DateTime(2001, 3, 4), FirstActivation = new DateTime(2002, 5, 6), ApiSearchField1 = "1", ApiSearchField2 = "2", ApiSearchField3 = "3", Channel = new HomepageChannel("user"), Parameters = new { Price = new DecimalRange { Max = 1000 }, PriceType = "rentpermonth", FreeOfCourtageOnly = true, }, Sort = Sorting.Distance, SortDirection = ListSortDirection.Descending }; var res = await Client.Search(query); Assert.Equal(2, res.ResultlistEntries[0].ResultlistEntry.Count); Assert.Equal(4711, res.ResultlistEntries[0].ResultlistEntry[0].RealEstate.Id); Assert.Equal(4712, res.ResultlistEntries[0].ResultlistEntry[1].RealEstate.Id); }