public async Task <ActionResult <ClimbingRouteResponse> > Post([FromRoute] string siteId, [FromBody] CreateClimbingRouteRequest request) { ClimbingSite site = await this.documentSession.LoadAsync <ClimbingSite>(siteId); if (site == null) { return(NotFound()); } ClimbingRoute route = this.mapper.Map <ClimbingRoute>(request); route.ImageUri = $"api/v1/images/{route.Id}"; site.Routes.Add(route); await this.documentSession.SaveChangesAsync(); // TODO create the task with a queue or async task handler var labels = new Dictionary <string, string> { { ClimbingRoutesConstants.CLIMBING_ROUTE_ID_LABEL, route.Id }, }; await this.imageRecognitionApi.CreateTarget(request.Name, request.Description, labels, request.Image.Base64); await this.mediaApi.UploadImage(route.Id, request.Image.Base64); var response = this.mapper.Map <ClimbingRouteResponse>(route); return(CreatedAtRoute("GetClimbingRoute", new { siteId, id = response.Id }, response)); }
public async Task <ActionResult <ClimbingRouteDto> > Post([FromRoute] string siteId, [FromBody] CreateClimbingRouteDto request) { ClimbingSite site = await this.documentSession.LoadAsync <ClimbingSite>(siteId); if (site == null) { return(NotFound()); } ClimbingRoute route = this.mapper.Map <ClimbingRoute>(request); site.Routes.Add(route); await this.documentSession.SaveChangesAsync(); var response = this.mapper.Map <ClimbingRouteDto>(route); return(CreatedAtRoute("GetClimbingRoute", new { siteId, id = response.Id }, response)); }
public async Task <ActionResult> Delete([FromRoute] string siteId, [FromRoute] string id) { ClimbingSite site = await this.documentSession.LoadAsync <ClimbingSite>(siteId); if (site == null) { return(NoContent()); } ClimbingRoute route = site.Routes.FirstOrDefault(r => string.Equals(r.Id, id, StringComparison.OrdinalIgnoreCase)); if (route != null) { site.Routes.Remove(route); await this.documentSession.SaveChangesAsync(); } return(NoContent()); }
public async Task <ActionResult <ClimbingRouteResponse> > Get([FromRoute] string siteId, [FromRoute] string id) { ClimbingSite site = await this.documentSession.LoadAsync <ClimbingSite>(siteId); if (site == null) { return(NotFound()); } ClimbingRoute route = site.Routes.FirstOrDefault(r => string.Equals(r.Id, id, StringComparison.InvariantCultureIgnoreCase)); if (route == null) { return(NotFound()); } var response = this.mapper.Map <ClimbingRouteResponse>(route); return(Ok(response)); }
public async Task <ActionResult> Put([FromRoute] string siteId, [FromRoute] string id, [FromBody] UpdateClimbingRouteDto request) { ClimbingSite site = await this.documentSession.LoadAsync <ClimbingSite>(siteId); if (site == null) { return(NotFound()); } ClimbingRoute route = site.Routes.FirstOrDefault(r => string.Equals(r.Id, id, StringComparison.OrdinalIgnoreCase)); if (route == null) { return(NotFound()); } this.mapper.Map(request, route); await this.documentSession.SaveChangesAsync(); return(NoContent()); }
public async Task <ActionResult> Query([FromBody] QueryRequest query) { QueryResponse result = new QueryResponse(); Services.ImageRecognition.QueryResponse response = await this.imageRecognition.Query(query.Image.Base64); QueryResult match = response.Results.OrderByDescending(r => r.Score).FirstOrDefault(r => r.Score > 0.85); if (match != null) { this.logger.LogInformation("Found a matching target"); match.Target.Labels.TryGetValue(ClimbingRoutesConstants.CLIMBING_ROUTE_ID_LABEL, out string climbingRouteId); ClimbingSite site = await this.documentSession.Query <ClimbingSite>() .FirstOrDefaultAsync(s => s.Routes.Any(r => r.Id == climbingRouteId)); if (site != null) { ClimbingRoute route = site.Routes.Single(r => r.Id == climbingRouteId); result.Result = QueryResultType.Match; result.ClimbingRoute = this.mapper.Map <ClimbingRouteMatch>(route); result.ClimbingRoute.Site = this.mapper.Map <ClimbingSiteMatch>(site); return(Ok(result)); } } result.Result = QueryResultType.NoMatch; result.ClimbingRoute = new ClimbingRouteMatch() { Site = new ClimbingSiteMatch(), }; return(Ok(result)); }
/// <summary> /// Method to save a Climbing Route to database /// </summary> /// <param name="climbingRoute">Climbing Route to save</param> public static int SaveClimbingRoute(ClimbingRoute climbingRoute) { return(INSTANCE.climbingRouteDB.SaveItem <ClimbingRoute>(climbingRoute)); }