Пример #1
0
        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());
        }
Пример #4
0
        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());
        }
Пример #6
0
        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));
        }
Пример #7
0
 /// <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));
 }