Beispiel #1
0
        public async Task <ActionResult <IImmutableList <SafeLocationModel> > > GetGroupSafeLocationsAsync([FromRoute] Guid groupId)
        {
            var sub    = User.Claims.FirstOrDefault(c => c.Type == "sub")?.Value;
            var query  = new GetGroupSafeLocations(sub, groupId);
            var result = await _mediator.Send(query);

            if (result.IsFailure)
            {
                return(BadRequest());
            }

            return(Ok(result.Value));
        }
Beispiel #2
0
        public async Task <Result <IImmutableList <SafeLocationResponseModel> > > Handle(GetGroupSafeLocations request, CancellationToken cancellationToken)
        {
            var isValid = await _validator.IsValidAsync(request);

            if (!isValid)
            {
                return(Result.Failure <IImmutableList <SafeLocationResponseModel> >("Validation failed"));
            }

            var group = await _context.Groups
                        .Where(g => g.Id == request.GroupId)
                        .Include(g => g.GroupSafeLocations)
                        .FirstOrDefaultAsync(cancellationToken);

            return(group.GroupSafeLocations.Select(gsl => new SafeLocationResponseModel
            {
                Id = gsl.Id,
                Latitude = gsl.Latitude,
                Longitude = gsl.Longitude,
                Name = gsl.Name,
                GroupId = gsl.Group.Id
            }).ToImmutableList());
        }