public async Task <GetListingWrapper> Post([FromBody] Area area) { List <Task> tasks = new List <Task>(); tasks.Add(Task.Factory.StartNew(() => { this.service.Create(area).Wait(); })); GetListingWrapper listings = this.service.GetListing(area).Result; Task.WaitAll(tasks.ToArray()); return(listings); }
public async Task <GetAreaListingWrapper> GetArea(string id, string north = null, string east = null, string south = null, string west = null, string beds = null, string bathsFull = null, string bathsHalf = null, string propertyAddressId = null, string averageValue = null, string averageRent = null) { DateTime startQueryTime = DateTime.Now; List <AreaMaster> listingArea = new List <AreaMaster>(); List <List <Property> > areaProperties = new List <List <Property> >(); Dictionary <string, Condition> areaKeyConditions = new Dictionary <string, Condition>(); Dictionary <string, Condition> areaQueryFilter = new Dictionary <string, Condition>(); areaKeyConditions.Add("AreaID", new Condition() { ComparisonOperator = "EQ", AttributeValueList = new List <AttributeValue>() { new AttributeValue(id) } }); areaQueryFilter.Add("IsPredefine", new Condition() { ComparisonOperator = "EQ", AttributeValueList = new List <AttributeValue>() { new AttributeValue() { N = "1" } } }); QueryRequest queryRequest = new QueryRequest() { TableName = areaMasterTableName, ReturnConsumedCapacity = "TOTAL", KeyConditions = areaKeyConditions, QueryFilter = areaQueryFilter }; var result = dynamoDBClient.QueryAsync(queryRequest).Result; listingArea = AreaMaster.ConvertToEntity(result.Items); DateTime endQueryTime = DateTime.Now; if (listingArea.Count() > 0) { var tempArea = new Area() { EncodedPolygon = listingArea.First().EncodedPolygon, Points = GooglePoints.DecodeBase64(listingArea.First().EncodedPolygon).Select(x => new LocationPoint(x.Latitude, x.Longitude)).ToList() }; GetListingWrapper output = await GetListing(tempArea, north, east, south, west, beds, bathsFull, bathsHalf, propertyAddressId, averageValue, averageRent, listingArea.First().EncodedCompletedTiles, listingArea.First().EncodedPartialTiles); foreach (var area in listingArea) { area.EncodedPolygon = ASCIIEncoding.ASCII.GetString(Convert.FromBase64String(area.EncodedPolygon)); area.EncodedCompletedTiles = null; area.EncodedPartialTiles = null; } return(new GetAreaListingWrapper { PropertyCount = output.PropertyCount, ScanCount = output.ScanCount, ConsumedCapacityCount = output.ConsumedCapacityCount, TotalQueryExecutionTime = output.TotalQueryExecutionTime, TotalLambdaExecutionTime = output.TotalLambdaExecutionTime, TotalContainsExecutionTime = output.TotalContainsExecutionTime, TotalAreaQueryTime = (endQueryTime - startQueryTime).TotalMilliseconds, Properties = output.Properties, Area = listingArea, }); } else { return(null); } }