public async Task <IHttpActionResult> GetLocation(int id) { SpacesHandler SH = new SpacesHandler(db); TrackerLocationsHandler TLH = new TrackerLocationsHandler(db); StoreysHandler StH = new StoreysHandler(db); TrackerLocation loc = TLH.GetTrackerLocation(id); Dictionary <string, double> Options = new Dictionary <string, double>(); Stream stream = new MemoryStream(loc.Options); BinaryFormatter binfor = new BinaryFormatter(); Options = (Dictionary <string, double>)binfor.Deserialize(stream); List <Option> options = new List <Option>(); foreach (KeyValuePair <string, double> kv in Options) { Space space = SH.GetSpace(Guid.Parse(kv.Key)); Guid spaceID = space.ID; Guid storeyID = space.Storey.ID; Guid buildingID = space.Storey.Building.ID; Option option = new Option(spaceID, storeyID, buildingID, kv.Value); options.Add(option); } KeyValuePair <DateTime, List <Option> > result = new KeyValuePair <DateTime, List <Option> >(loc.TimeStamp, options); return(Json(result)); }
public async Task <IHttpActionResult> PostKnnTrainingFile() { StoreysHandler SH = new StoreysHandler(db); SpacesHandler SpH = new SpacesHandler(db); KnnsHandler KH = new KnnsHandler(db); var provider = new MultipartMemoryStreamProvider(); await Request.Content.ReadAsMultipartAsync(provider); var file = provider.Contents[0]; string filename = file.Headers.ContentDisposition.FileName.Trim('\"'); //Bytes from the binary reader stored in BlobValue array byte[] TrainingSet = file.ReadAsByteArrayAsync().Result; //reader.ReadBytes((int)file.Length); string trainingString = System.Text.Encoding.UTF8.GetString(TrainingSet); //KVP<LabelMap, knnByte>,First label ID> KeyValuePair <KeyValuePair <byte[], byte[]>, string> LabelMapKnn = KnnGenerate.GenerateTemplateTrainingFile(trainingString); //Generate the files from the generate template method within the template method. save those 3 to db //Storey storey = BC.GetBeaconStorey(BeaconID); //Knn knn = new Knn(); //Once trainingSets generated, Space Guid will be saved in the LabelMapKnn string. Guid storeyId = SpH.GetSpaceStorey(Guid.Parse(LabelMapKnn.Value)).ID; Storey storey = SH.GetStorey(storeyId); byte[] LabelMap = LabelMapKnn.Key.Value; byte[] Knn = LabelMapKnn.Key.Key; Knn knn = new Knn(storey, TrainingSet, LabelMap, Knn); KH.PostKnn(knn); return(Ok(storey)); }
public async Task <IHttpActionResult> PostBIM() { // string[] buildings = resultString.Split(new string[] { "BuildingStoreys" }, StringSplitOptions.None); SpacesHandler SH = new SpacesHandler(db); StoreysHandler STH = new StoreysHandler(db); BuildingsHandler BH = new BuildingsHandler(db); AddressesHandler AH = new AddressesHandler(db); Building building = JsonConvert.DeserializeObject <Building>(Request.Content.ReadAsStringAsync().Result); Models.Building b = new Models.Building(building.ID, building.Name); BH.PostBuilding(b); double?longitude = building.Address.Longitude; double?latitude = building.Address.Latitude; Models.Address address = new Models.Address(building.Address.Street, building.Address.Number, building.Address.Town, building.Address.PostalCode, building.Address.Region, building.Address.Country, longitude, latitude, b); AH.PostAddress(address); List <BuildingStorey> storeys = building.BuildingStoreys; foreach (BuildingStorey storey in storeys) { Models.Storey st = new Models.Storey(storey.ID, storey.Name, b); STH.PostStorey(st); foreach (Space space in storey.Spaces) { Models.Space s = new Models.Space(space.ID, space.Name, st); SH.PostSpace(s); } } List <Space> spaces = storeys[0].Spaces; return(Ok(building)); }
public async Task <IHttpActionResult> PutStatus() { TrackerTraining newStatus = JsonConvert.DeserializeObject <TrackerTraining>(Request.Content.ReadAsStringAsync().Result); TrackersHandler TH = new TrackersHandler(db); SpacesHandler SH = new SpacesHandler(db); TH.SetStatus(newStatus.ID, SH.GetSpace(newStatus.SpaceID), newStatus.Status); return(Ok()); }
public async Task <IHttpActionResult> PutSpace() { SpacesHandler SH = new SpacesHandler(db); List <Models.Space> SpaceList = JsonConvert.DeserializeObject <List <Models.Space> >(Request.Content.ReadAsStringAsync().Result); foreach (Models.Space Space in SpaceList) { Models.Space s = new Models.Space(Space.ID, Space.Name); if (!SH.PutSpace(s)) { return(Content(HttpStatusCode.Conflict, Space.ID.ToString())); } } return(Ok()); }
public async Task <IHttpActionResult> PostLocation() { DateTime time = DateTime.Now; TrackersHandler TH = new TrackersHandler(db); TrackerLocationsHandler TLH = new TrackerLocationsHandler(db); SpacesHandler SH = new SpacesHandler(db); KnnsHandler KH = new KnnsHandler(db); string resultString = Request.Content.ReadAsStringAsync().Result.Trim(); KeyValuePair <int, KeyValuePair <Guid, List <double> > > coordinates = LocationParser(resultString); Knn Knn = KH.GetKnn(coordinates.Value.Key); byte[] options = Classify.ClassifyTemplate(coordinates.Value.Value, Knn); Tracker tracker = TH.GetTracker(coordinates.Key); TrackerLocation loc = new TrackerLocation(time, options, tracker); TLH.PostTrackerLocation(loc); return(Ok(Classify.ClassifyTemplate(coordinates.Value.Value, Knn))); }
public async Task <IHttpActionResult> PostStoreyKnn() { Guid storeyID = JsonConvert.DeserializeObject <Guid>(Request.Content.ReadAsStringAsync().Result); StoreysHandler SH = new StoreysHandler(db); SpacesHandler SpH = new SpacesHandler(db); TrackersHandler TH = new TrackersHandler(db); TrainingValuesHandler TVH = new TrainingValuesHandler(db); KnnsHandler KH = new KnnsHandler(db); IQueryable <TrainingValue> values = TVH.GetTrainingValuesFromStorey(storeyID); KeyValuePair <KeyValuePair <byte[], byte[]>, string> LabelMapKnn = KnnGenerate.GenerateTemplateTrainingValues(values); Storey storey = SH.GetStorey(storeyID); byte[] LabelMap = LabelMapKnn.Key.Value; byte[] Knn = LabelMapKnn.Key.Key; Knn knn = new Knn(storey, LabelMap, Knn); KH.PostKnn(knn); return(Ok()); }