Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            }
        }