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)); }
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()); }