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 <ClimbingSiteDto> > Get(Guid id) { ClimbingSite site = await this.documentSession.LoadAsync <ClimbingSite>(id.ToString()); if (site == null) { return(NotFound()); } return(Ok(this.mapper.Map <ClimbingSiteDto>(site))); }
public async Task <ActionResult <ClimbingSiteResponse> > Post([FromBody] CreateClimbingSiteRequest request) { ClimbingSite site = this.mapper.Map <ClimbingSite>(request); await this.documentSession.StoreAsync(site); await this.documentSession.SaveChangesAsync(); var response = this.mapper.Map <ClimbingSiteResponse>(site); return(CreatedAtRoute("GetClimbingSite", new { id = response.Id }, response)); }
public async Task <ActionResult <ClimbingSiteResponse> > Get([FromRoute] string id) { ClimbingSite site = await this.documentSession.LoadAsync <ClimbingSite>(id); if (site == null) { return(NotFound()); } var response = this.mapper.Map <ClimbingSiteResponse>(site); return(Ok(response)); }
public async Task <ActionResult> Delete([FromRoute] string id) { ClimbingSite site = await this.documentSession.LoadAsync <ClimbingSite>(id); if (site == null) { return(NoContent()); } this.documentSession.Delete(site); await this.documentSession.SaveChangesAsync(); return(NoContent()); }
public async Task <ActionResult> Put([FromRoute] string id, [FromBody] UpdateClimbingSiteRequest request) { ClimbingSite site = await this.documentSession.LoadAsync <ClimbingSite>(id); if (site == null) { return(NotFound()); } this.mapper.Map(request, site); await this.documentSession.SaveChangesAsync(); return(NoContent()); }
public async Task <ActionResult <IEnumerable <ClimbingRouteDto> > > Get(string siteId, [FromQuery] PagingParameters paging) { ClimbingSite site = await this.documentSession.LoadAsync <ClimbingSite>(siteId); if (site == null) { return(NotFound()); } var routes = site.Routes.OrderBy(s => s.Name) .Skip(paging.Skip ?? 0) .Take(paging.Take ?? 10) .AsEnumerable(); var result = this.mapper.Map <IEnumerable <ClimbingRouteDto> >(routes); return(Ok(result)); }
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 <ClimbingRouteDto> > Get(string siteId, string id) { ClimbingSite site = await this.documentSession.LoadAsync <ClimbingSite>(siteId); if (site == null) { return(NotFound()); } var routes = site.Routes.OrderBy(s => s.Name) .AsEnumerable(); var route = routes.SingleOrDefault(r => string.Equals(r.Id, id, StringComparison.OrdinalIgnoreCase)); if (route == null) { return(NotFound()); } var result = this.mapper.Map <ClimbingRouteDto>(route); return(Ok(result)); }
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)); }